From 21ebb16fb7d29cf5c1c05ccc3dc77c4f4200fc24 Mon Sep 17 00:00:00 2001 From: tpstn23 Date: Fri, 30 Oct 2026 11:00:46 +0900 Subject: [PATCH] =?UTF-8?q?SPipe=20=EB=8D=B0=EB=AA=A8=20v2=20(2026-10-30)?= =?UTF-8?q?=20=EC=84=9C=EB=B2=84=20=EB=B0=B0=ED=8F=AC=EB=B3=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SPipe_server_2026-10-30.zip 내용을 풀어서 등록 (압축 파일은 올리지 않음) - README에 데모 v2 서버 업데이트 순서 추가, 저장소에 없는 문서 목차 정리 - 패치내역을 docs/로 이동, _worklog.md 추가 - 임시 파일(backend/temp.*)과 API 키가 든 파일은 제외 --- .dockerignore | 17 + .env.example | 5 + .gitignore | 33 + 64bit/epanet2.dll | Bin 0 -> 464896 bytes README.md | 409 + SERVER_SETUP.md | 93 + _worklog.md | 13 + backend/__init__.py | 1 + backend/batch.py | 332 + backend/blocksys/__init__.py | 11 + backend/blocksys/__main__.py | 6 + backend/blocksys/boundary.py | 83 + backend/blocksys/cli.py | 170 + backend/blocksys/config.example.yaml | 43 + backend/blocksys/config.py | 114 + backend/blocksys/graph.py | 70 + backend/blocksys/io.py | 122 + backend/blocksys/partition.py | 64 + backend/blocksys/tests/__init__.py | 0 backend/blocksys/tests/conftest.py | 37 + backend/blocksys/tests/test_boundary.py | 59 + backend/blocksys/tests/test_graph.py | 39 + backend/blocksys/tests/test_partition.py | 46 + backend/blocksys/tests/test_validate.py | 73 + backend/blocksys/validate.py | 171 + backend/columnar.py | 72 + backend/dem.py | 432 + backend/epanet.py | 266 + backend/gisio.py | 119 + backend/gisops.py | 233 + backend/jobs.py | 724 ++ backend/main.py | 743 ++ backend/requirements-api.txt | 12 + backend/requirements.txt | 8 + backend/tests/__init__.py | 0 backend/tests/test_api.py | 155 + backend/tests/test_batch.py | 87 + backend/tests/test_calibrate.py | 70 + backend/tests/test_dem.py | 131 + backend/tests/test_gisio.py | 69 + backend/tests/test_gisops.py | 111 + backend/tests/test_hydro.py | 59 + backend/tests/test_jobs_analysis.py | 60 + compose.yaml | 24 + deploy/Dockerfile | 30 + deploy/README.md | 26 + deploy/nginx.conf | 30 + docs/SPipe_패치내역_v2_2026-10-30.txt | 104 + index.html | 14 + package-lock.json | 2403 +++++ package.json | 34 + public/EXAMPLE_NETWORKS.md | 33 + public/Net1.inp | 174 + public/Net2.inp | 308 + public/Net3.inp | 479 + public/fonts/Noto Sans Regular/0-255.pbf | Bin 0 -> 76580 bytes .../fonts/Noto Sans Regular/12288-12543.pbf | Bin 0 -> 147462 bytes public/fonts/Noto Sans Regular/256-511.pbf | Bin 0 -> 127219 bytes public/fonts/Noto Sans Regular/512-767.pbf | Bin 0 -> 95728 bytes public/fonts/Noto Sans Regular/768-1023.pbf | Bin 0 -> 74752 bytes public/fonts/Noto Sans Regular/8192-8447.pbf | Bin 0 -> 34070 bytes public/fonts/Noto Sans Regular/8448-8703.pbf | Bin 0 -> 42129 bytes public/fonts/Noto Sans Regular/8704-8959.pbf | Bin 0 -> 40857 bytes public/korean_cp949_network.inp | 53 + public/sample_gis_pipes.geojson | 118 + public/sample_pressure_network.inp | 139 + public/synthetic_large_network_5179.inp | 8057 +++++++++++++++++ public/test_water_network.zip | Bin 0 -> 832 bytes pytest.ini | 6 + src/AddElementModal.tsx | 402 + src/AddressSearch.tsx | 145 + src/AnalysisPanel.tsx | 500 + src/AnalysisSections.tsx | 531 ++ src/App.tsx | 2194 +++++ src/AttributeTable.tsx | 1364 +++ src/BackupModal.tsx | 65 + src/BatchPropertyEditor.tsx | 734 ++ src/BottomPanel.tsx | 172 + src/CalibrationPanel.tsx | 295 + src/ContextMenu.tsx | 505 ++ src/ControlEditor.tsx | 283 + src/CurveEditorModal.tsx | 167 + src/DemSection.tsx | 273 + src/DemandTableModal.tsx | 219 + src/EditToolsSection.tsx | 190 + src/ElementExtrasEditor.tsx | 269 + src/EnergyReactionOptions.tsx | 85 + src/EngineComparisonPanel.tsx | 105 + src/ExportMenu.tsx | 107 + src/FullAttributeTableModal.tsx | 1223 +++ src/GisFeatureInspector.tsx | 74 + src/GisToolsSection.tsx | 342 + src/HeaderCenter.tsx | 127 + src/HglProfileViewer.tsx | 133 + src/HydraulicTableViewer.tsx | 544 ++ src/ImportWizardModal.tsx | 485 + src/InpTextModal.tsx | 97 + src/LayerLabelModal.tsx | 318 + src/LayerPanel.tsx | 905 ++ src/LayerStyleModal.tsx | 393 + src/Legend.tsx | 230 + src/LinkInspector.tsx | 625 ++ src/Map.tsx | 2629 ++++++ src/MapContextMenu.tsx | 111 + src/MapHeader.tsx | 132 + src/NetworkSummary.tsx | 219 + src/NodeInspector.tsx | 350 + src/NumberField.tsx | 46 + src/OptimizeSections.tsx | 236 + src/OptionEditor.tsx | 548 ++ src/PatternEditor.tsx | 245 + src/ProfilePanel.tsx | 280 + src/ProjectMenu.tsx | 212 + src/ResultCharts.tsx | 264 + src/ScenarioBatchPanel.tsx | 118 + src/SessionRecoveryModal.tsx | 69 + src/StatusBar.tsx | 131 + src/StyleSettingsPanel.tsx | 223 + src/TimeSeriesChart.tsx | 223 + src/ToolRail.tsx | 207 + src/TopologyPanel.tsx | 187 + src/analysisTools.ts | 277 + src/api.ts | 198 + src/assets.ts | 78 + src/attributeTableValidation.ts | 213 + src/backupStore.ts | 69 + src/blockIsolation.ts | 151 + src/calibration.ts | 224 + src/columnar.ts | 137 + src/comparisonEngine.ts | 330 + src/convergence.ts | 195 + src/crs.ts | 372 + src/csvExport.ts | 81 + src/curveTools.ts | 58 + src/demTools.ts | 93 + src/dxfExport.ts | 178 + src/editActions.ts | 391 + src/editTools.ts | 288 + src/excelExport.ts | 261 + src/exportActions.ts | 155 + src/extrasActions.ts | 212 + src/fileAnalysisActions.ts | 341 + src/gisImport.ts | 401 + src/gisLayerActions.ts | 149 + src/gisLayers.ts | 642 ++ src/gisTools.ts | 197 + src/index.css | 852 ++ src/inpEncoding.ts | 75 + src/inpExtras.ts | 333 + src/inpModel.ts | 2368 +++++ src/legendScale.ts | 95 + src/main.tsx | 10 + src/mapSelection.ts | 123 + src/mapServices.ts | 250 + src/networkClipboard.ts | 300 + src/networkGroups.ts | 73 + src/networkTools.ts | 143 + src/profilePath.ts | 58 + src/projectFile.ts | 85 + src/pumpEnergy.ts | 76 + src/resultPostProcess.ts | 72 + src/resultSync.ts | 273 + src/scenarioActions.ts | 207 + src/sessionStore.ts | 183 + src/shapefileExport.ts | 498 + src/styles/tokens.css | 274 + src/types.ts | 266 + src/unitSystem.ts | 783 ++ src/useDualEngine.ts | 51 + src/useGlobalShortcuts.ts | 245 + src/useResultInsights.ts | 151 + src/useSessionPersistence.ts | 272 + src/useViewPreferences.ts | 96 + src/worker.ts | 344 + start-gispipe.bat | 112 + start-lan.ps1 | 38 + stop-gispipe.bat | 55 + tests/fixes.test.ts | 847 ++ tests/regression.test.ts | 3934 ++++++++ tsconfig.json | 22 + vite.config.ts | 27 + 181 files changed, 57207 insertions(+) create mode 100644 .dockerignore create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 64bit/epanet2.dll create mode 100644 README.md create mode 100644 SERVER_SETUP.md create mode 100644 _worklog.md create mode 100644 backend/__init__.py create mode 100644 backend/batch.py create mode 100644 backend/blocksys/__init__.py create mode 100644 backend/blocksys/__main__.py create mode 100644 backend/blocksys/boundary.py create mode 100644 backend/blocksys/cli.py create mode 100644 backend/blocksys/config.example.yaml create mode 100644 backend/blocksys/config.py create mode 100644 backend/blocksys/graph.py create mode 100644 backend/blocksys/io.py create mode 100644 backend/blocksys/partition.py create mode 100644 backend/blocksys/tests/__init__.py create mode 100644 backend/blocksys/tests/conftest.py create mode 100644 backend/blocksys/tests/test_boundary.py create mode 100644 backend/blocksys/tests/test_graph.py create mode 100644 backend/blocksys/tests/test_partition.py create mode 100644 backend/blocksys/tests/test_validate.py create mode 100644 backend/blocksys/validate.py create mode 100644 backend/columnar.py create mode 100644 backend/dem.py create mode 100644 backend/epanet.py create mode 100644 backend/gisio.py create mode 100644 backend/gisops.py create mode 100644 backend/jobs.py create mode 100644 backend/main.py create mode 100644 backend/requirements-api.txt create mode 100644 backend/requirements.txt create mode 100644 backend/tests/__init__.py create mode 100644 backend/tests/test_api.py create mode 100644 backend/tests/test_batch.py create mode 100644 backend/tests/test_calibrate.py create mode 100644 backend/tests/test_dem.py create mode 100644 backend/tests/test_gisio.py create mode 100644 backend/tests/test_gisops.py create mode 100644 backend/tests/test_hydro.py create mode 100644 backend/tests/test_jobs_analysis.py create mode 100644 compose.yaml create mode 100644 deploy/Dockerfile create mode 100644 deploy/README.md create mode 100644 deploy/nginx.conf create mode 100644 docs/SPipe_패치내역_v2_2026-10-30.txt create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/EXAMPLE_NETWORKS.md create mode 100644 public/Net1.inp create mode 100644 public/Net2.inp create mode 100644 public/Net3.inp create mode 100644 public/fonts/Noto Sans Regular/0-255.pbf create mode 100644 public/fonts/Noto Sans Regular/12288-12543.pbf create mode 100644 public/fonts/Noto Sans Regular/256-511.pbf create mode 100644 public/fonts/Noto Sans Regular/512-767.pbf create mode 100644 public/fonts/Noto Sans Regular/768-1023.pbf create mode 100644 public/fonts/Noto Sans Regular/8192-8447.pbf create mode 100644 public/fonts/Noto Sans Regular/8448-8703.pbf create mode 100644 public/fonts/Noto Sans Regular/8704-8959.pbf create mode 100644 public/korean_cp949_network.inp create mode 100644 public/sample_gis_pipes.geojson create mode 100644 public/sample_pressure_network.inp create mode 100644 public/synthetic_large_network_5179.inp create mode 100644 public/test_water_network.zip create mode 100644 pytest.ini create mode 100644 src/AddElementModal.tsx create mode 100644 src/AddressSearch.tsx create mode 100644 src/AnalysisPanel.tsx create mode 100644 src/AnalysisSections.tsx create mode 100644 src/App.tsx create mode 100644 src/AttributeTable.tsx create mode 100644 src/BackupModal.tsx create mode 100644 src/BatchPropertyEditor.tsx create mode 100644 src/BottomPanel.tsx create mode 100644 src/CalibrationPanel.tsx create mode 100644 src/ContextMenu.tsx create mode 100644 src/ControlEditor.tsx create mode 100644 src/CurveEditorModal.tsx create mode 100644 src/DemSection.tsx create mode 100644 src/DemandTableModal.tsx create mode 100644 src/EditToolsSection.tsx create mode 100644 src/ElementExtrasEditor.tsx create mode 100644 src/EnergyReactionOptions.tsx create mode 100644 src/EngineComparisonPanel.tsx create mode 100644 src/ExportMenu.tsx create mode 100644 src/FullAttributeTableModal.tsx create mode 100644 src/GisFeatureInspector.tsx create mode 100644 src/GisToolsSection.tsx create mode 100644 src/HeaderCenter.tsx create mode 100644 src/HglProfileViewer.tsx create mode 100644 src/HydraulicTableViewer.tsx create mode 100644 src/ImportWizardModal.tsx create mode 100644 src/InpTextModal.tsx create mode 100644 src/LayerLabelModal.tsx create mode 100644 src/LayerPanel.tsx create mode 100644 src/LayerStyleModal.tsx create mode 100644 src/Legend.tsx create mode 100644 src/LinkInspector.tsx create mode 100644 src/Map.tsx create mode 100644 src/MapContextMenu.tsx create mode 100644 src/MapHeader.tsx create mode 100644 src/NetworkSummary.tsx create mode 100644 src/NodeInspector.tsx create mode 100644 src/NumberField.tsx create mode 100644 src/OptimizeSections.tsx create mode 100644 src/OptionEditor.tsx create mode 100644 src/PatternEditor.tsx create mode 100644 src/ProfilePanel.tsx create mode 100644 src/ProjectMenu.tsx create mode 100644 src/ResultCharts.tsx create mode 100644 src/ScenarioBatchPanel.tsx create mode 100644 src/SessionRecoveryModal.tsx create mode 100644 src/StatusBar.tsx create mode 100644 src/StyleSettingsPanel.tsx create mode 100644 src/TimeSeriesChart.tsx create mode 100644 src/ToolRail.tsx create mode 100644 src/TopologyPanel.tsx create mode 100644 src/analysisTools.ts create mode 100644 src/api.ts create mode 100644 src/assets.ts create mode 100644 src/attributeTableValidation.ts create mode 100644 src/backupStore.ts create mode 100644 src/blockIsolation.ts create mode 100644 src/calibration.ts create mode 100644 src/columnar.ts create mode 100644 src/comparisonEngine.ts create mode 100644 src/convergence.ts create mode 100644 src/crs.ts create mode 100644 src/csvExport.ts create mode 100644 src/curveTools.ts create mode 100644 src/demTools.ts create mode 100644 src/dxfExport.ts create mode 100644 src/editActions.ts create mode 100644 src/editTools.ts create mode 100644 src/excelExport.ts create mode 100644 src/exportActions.ts create mode 100644 src/extrasActions.ts create mode 100644 src/fileAnalysisActions.ts create mode 100644 src/gisImport.ts create mode 100644 src/gisLayerActions.ts create mode 100644 src/gisLayers.ts create mode 100644 src/gisTools.ts create mode 100644 src/index.css create mode 100644 src/inpEncoding.ts create mode 100644 src/inpExtras.ts create mode 100644 src/inpModel.ts create mode 100644 src/legendScale.ts create mode 100644 src/main.tsx create mode 100644 src/mapSelection.ts create mode 100644 src/mapServices.ts create mode 100644 src/networkClipboard.ts create mode 100644 src/networkGroups.ts create mode 100644 src/networkTools.ts create mode 100644 src/profilePath.ts create mode 100644 src/projectFile.ts create mode 100644 src/pumpEnergy.ts create mode 100644 src/resultPostProcess.ts create mode 100644 src/resultSync.ts create mode 100644 src/scenarioActions.ts create mode 100644 src/sessionStore.ts create mode 100644 src/shapefileExport.ts create mode 100644 src/styles/tokens.css create mode 100644 src/types.ts create mode 100644 src/unitSystem.ts create mode 100644 src/useDualEngine.ts create mode 100644 src/useGlobalShortcuts.ts create mode 100644 src/useResultInsights.ts create mode 100644 src/useSessionPersistence.ts create mode 100644 src/useViewPreferences.ts create mode 100644 src/worker.ts create mode 100644 start-gispipe.bat create mode 100644 start-lan.ps1 create mode 100644 stop-gispipe.bat create mode 100644 tests/fixes.test.ts create mode 100644 tests/regression.test.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..8fd94ab --- /dev/null +++ b/.dockerignore @@ -0,0 +1,17 @@ +* +!package.json +!package-lock.json +!tsconfig.json +!vite.config.ts +!index.html +!src/ +!src/** +!public/ +!public/** +!backend/ +!backend/__init__.py +!backend/main.py +!backend/epanet.py +!backend/columnar.py +!deploy/ +!deploy/** diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..7dbeb9b --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +# 지도 서비스 키 (이 파일을 .env.local 로 복사해 값을 채움. .env.local 은 커밋 금지) +# 브이월드 배경지도 API 키 +VITE_VWORLD_API_KEY= +# 카카오 JavaScript 키 (주소 검색). 콘솔의 JavaScript SDK 도메인에 접속 주소를 등록해야 함 +VITE_KAKAO_JS_KEY= diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..963c944 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +node_modules/ +dist/ +.venv/ +__pycache__/ +*.pyc +*.rpt +*.out +.vite/ + +# wntr / EPANET scratch outputs +backend/temp.* +temp.bin +temp.inp + +# Local-only material (never part of the deployable app) +promo-video/ +.qa-tmp/ +.claude/ +*.log +*.hwp +*.hwpx +*.pdf +samples/ +# Real customer network data stays off the repository +1.0상리*.inp + +# Server-side DEM store (uploaded rasters) +data/ + +# Map service keys (copy .env.example to .env.local) +.env +.env.local +.env.*.local diff --git a/64bit/epanet2.dll b/64bit/epanet2.dll new file mode 100644 index 0000000000000000000000000000000000000000..f57b5ad36abfb45f96188bce489a1a89f8972a00 GIT binary patch literal 464896 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

$EGHSYx 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�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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c716a6 --- /dev/null +++ b/README.md @@ -0,0 +1,409 @@ +# SPipe + +## 데모 v2 서버 업데이트 (2026-10-30) + +이전 배포: 데모 v1 (2026-10-15). 변경 내역은 `docs/SPipe_패치내역_v2_2026-10-30.txt`를 확인합니다. + +1. 저장소의 소스와 실행 파일을 기존 SPipe 폴더에 반영합니다. 기존 `.venv`, `node_modules`, `data`와 `.env.local`은 유지합니다. +2. SPipe 폴더에서 새 라이브러리를 설치합니다. scipy, rasterio 등이 추가되었으므로 반드시 실행합니다. + +```powershell +.\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt +``` + +3. 화면을 다시 빌드하면서 서버를 켭니다. `-Rebuild` 없이 실행하면 예전 화면이 남을 수 있습니다. + +```powershell +powershell -ExecutionPolicy Bypass -File .\start-lan.ps1 -Rebuild +``` + +처음 설치하는 서버 PC는 `SERVER_SETUP.md` 순서를 따릅니다. 패치내역에서 (시험)으로 표시된 기능은 기존 방식과 결과를 비교해 사용합니다. + +## 프로젝트 개요 + +웹 브라우저에서 쓰는 상수도 관망 수리해석·관리 플랫폼. +EPANET 2.3.5 엔진으로 관망을 해석하고, GIS·DEM·자산 정보를 한 화면에서 함께 다룬다. + +주요 기능: + +- EPANET INP 관망 불러오기·편집·해석 (Native DLL과 WASM 두 엔진 교차 검증) +- 지도 기반 관망 편집 (절점·관로·밸브·펌프, 꺾임점, 분할·병합) +- 해석 결과 지도·그래프·종단·보고서, 실측 보정 +- 분석 도구: 소화전 모의, 관로 중요도, 급수 구역, VSP, 등치선, 에너지 비용, 자동 보정, 펌프 운전 최적화 +- GIS 연동: SHP·DXF·DGN·MIF·GML·KML·GPKG 불러오기·내보내기, 좌표계 변환, 도형 연산 +- DEM 기반 절점 표고 입력·검증, 유역·하천 분석, 3D 보기 +- 프로젝트 파일(.spipe), 시나리오, 자동 백업 + +## 웹 기반으로 만드는 이유 + +### 기존 운영 방식 + +설치형 프로그램(EPANET, GISpipe 등)을 PC마다 설치하고, 관망 파일·GIS 자료·DEM·엑셀 자료를 파일 단위로 주고받으며 작업하는 구조. + +### 기존 문제 + +- PC마다 프로그램 설치·버전 관리 필요 +- 관망 INP, GIS 레이어, 표고 자료, 자산 대장이 서로 다른 프로그램·파일에 분산 +- 같은 관망을 여러 사람이 볼 때 파일 사본이 늘어나고 최신본 확인이 어려움 +- 수리해석 결과를 지도·자산 정보와 함께 보려면 여러 프로그램을 오가야 함 + +### 웹 기반 통합의 필요성 + +사내망 서버 한 곳에 해석 엔진과 GIS 처리를 두고, 사용자는 브라우저로 접속해 같은 기능을 쓴다. +관망 모델(INP)을 기준으로 GIS·DEM·자산 정보를 연결해 하나의 작업 흐름으로 관리한다. + +### 기대 효과 + +- 설치 없이 브라우저 접속만으로 사용 +- 관망·지도·표고·자산 정보를 한 화면에서 확인 +- 해석 결과를 두 엔진으로 교차 검증해 신뢰도 확보 +- 분석 결과를 표준 형식(INP, SHP, GPKG, CSV)으로 내보내 기존 업무와 연계 + +## 핵심 용어 + +| 용어 | 의미 | +|---|---| +| INP | EPANET 관망 입력 파일. SPipe 관망 모델의 원본 형식 | +| 절점 / 링크 | 접합점·배수지·탱크(절점)와 관로·펌프·밸브(링크) | +| EPS | 연장 기간 해석. 시간대별 수요 패턴에 따라 여러 시점을 해석 | +| Native / WASM 엔진 | 서버의 EPANET DLL과 브라우저의 epanet-js. 같은 관망을 둘 다 해석해 결과를 비교 | +| 시나리오 | 원본 관망에서 갈라져 나온 대안 관망 | +| 자산 속성 | INP에 없는 관재질·설치년도·매설깊이·소블록 등 관리 정보 | +| DEM | 수치표고모델. 절점 표고 입력과 유역 분석에 사용 | +| 일괄 해석(Job) | 관로 중요도·소화전 모의처럼 해석을 여러 번 반복하는 서버 작업 | +| .spipe | 관망·시나리오·GIS 레이어·스타일·보정 자료를 묶은 프로젝트 파일 | + +## 처리 흐름 + +``` +INP 불러오기 또는 GIS 레이어로 관망 만들기 + ↓ +지도에서 관망 편집 · 자산 속성 · DEM 표고 입력 + ↓ +수리해석 (Native DLL + WASM 동시 실행, 결과 비교) + ↓ +결과 확인 (지도 · 그래프 · 종단 · 보고서 · 실측 보정) + ↓ +분석 도구로 검토 (중요도 · 급수 구역 · 소화전 · 최적화 ...) + ↓ +INP · SHP · 엑셀 · .spipe 로 저장·공유 +``` + +핵심 원칙: + +- 관망 모델의 원본은 INP 구조이며, 편집은 모두 INP로 다시 생성 가능한 형태로 저장 +- INP에 없는 정보(자산 속성, 화면 설정)는 별도 저장소에 두고 요소 ID로만 연결 +- 해석 결과는 엔진 출력이 원본이며, 화면은 단위 변환만 수행 +- 모든 편집은 실행 취소(Ctrl+Z) 가능 + +이 문서는 저장소의 시작점입니다. 상세 설계와 점검 기록은 별도 문서에 두고, 여기에는 실행·검증·배포 순서와 문서 선택 기준을 정리합니다. + +--- + +## 1. 빠른 시작 + +### 로컬 실행 (Windows) + +필요 조건: + +- Node.js 24.x (검증 버전 24.14.1) +- Python 3.12 64비트 +- EPANET 2.3.5 (`64bit/epanet2.dll` 포함) + +```powershell +npm install +py -3.12 -m venv .venv +.\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt pytest httpx +``` + +가장 간단한 실행 방법은 `start-gispipe.bat` 더블클릭입니다. 해석 API(8000)와 웹 개발 서버(5173)를 함께 띄우고 브라우저를 엽니다. 종료는 `stop-gispipe.bat`. + +수동 실행: + +```powershell +npm run api +``` + +```powershell +npm run dev +``` + +접속 주소: + +- Web: http://127.0.0.1:5173 +- 해석 API: http://127.0.0.1:8000 +- API 상태 확인: http://127.0.0.1:8000/api/health + +지도 서비스 키 설정 (`.env.example`을 `.env.local`로 복사해 값 입력. 없으면 배경지도·주소 검색만 동작하지 않음): + +```powershell +Copy-Item .env.example .env.local +``` + +개발 서버는 `127.0.0.1`에만 바인딩됩니다. 사내망에 공개할 때는 아래 "8. 사내 서버 배포"를 따릅니다. + +### 로컬 검증 + +```powershell +npm run typecheck +``` + +```powershell +npm test +``` + +```powershell +npm run test:api +``` + +```powershell +npm run build +``` + +- `npm test`: 모델·단위·비교 로직, 편집·분석 도구 회귀 테스트 (Node 테스트) +- `npm run test:api`: FastAPI·EPANET DLL·GIS·DEM 테스트 (pytest) + +CI는 `.github/workflows/ci.yml` (windows-latest). + +## 2. 서비스 구조 + +``` +브라우저 + │ + ▼ +Web (React + Vite) 지도·편집·결과 화면, WASM 해석(Web Worker) + │ /api 프록시 + ▼ +해석 API (FastAPI) EPANET DLL(ctypes) 해석, 일괄 해석, GIS·DEM 처리 + ├─▶ 64bit/epanet2.dll EPANET 2.3.5 엔진 (프로세스 풀) + ├─▶ GDAL (pyogrio, rasterio) 벡터·래스터 입출력 + └─▶ data/dem 업로드한 DEM 보관 + +외부 연동(브라우저에서 직접 호출): 브이월드 배경지도 · 카카오 주소 검색 · Open-Meteo 표고(90m) · OpenStreetMap 건물 +``` + +| 구성요소 | 책임 | 기본 포트 | +|---|---|---| +| `src/` Web | 관망 편집, 결과 표시, WASM 해석, 엔진 결과 비교 | 5173 개발 / 8080 사내 | +| `backend/` 해석 API | 해석, 일괄 분석 Job, GIS 변환·연산, DEM | 8000 (내부 전용) | +| `64bit/epanet2.dll` | EPANET 2.3.5 엔진 | - | +| `data/dem/` | 서버 DEM 보관 (최근 8개) | - | + +## 3. 데이터와 원본 원칙 + +관망의 원본은 **INP 구조**입니다. 화면 편집은 내부 모델(`src/inpModel.ts`)을 바꾸고, 해석·저장 시 항상 INP로 다시 생성합니다. + +INP로 저장되는 것: + +- 절점·관로·펌프·밸브, 패턴·곡선·컨트롤·규칙, 해석 옵션 +- 다중 수요, 이미터, 수질·수원, 탱크 혼합, 에너지, 초기 상태, 반응 계수, 지도 라벨 +- 관로 꺾임점(`[VERTICES]`) — 이름 변경·삭제·분할·방향 전환을 따라감 + +INP 밖에 별도로 두는 것: + +- 자산 속성(관재질·설치년도·매설깊이·소블록 등): 요소 ID로 연결, `.spipe`에 함께 저장 +- 화면 설정(레이어 스타일·범례·라벨): `.spipe`에 저장 +- DEM 원본: 서버 `data/dem`에 보관, 브라우저에는 식별자만 보관 + +원칙: + +- 해석 결과는 엔진 출력을 그대로 쓰고, 화면은 표시 단위 변환만 수행 +- 재생성한 INP가 원본 INP와 같은 해석 결과를 내는지 회귀 테스트로 확인 +- 실무 관망 원본 파일(INP)은 저장소에 커밋하지 않음 + +## 4. 해석 흐름 + +1. 사용자가 해석 실행을 누르면 현재 모델로 INP를 생성합니다. +2. 같은 INP를 서버(Native DLL)와 브라우저(WASM)에서 동시에 해석합니다. +3. 두 결과를 시간대별·요소별로 비교해 허용오차 안에서 일치하는지 표시합니다 (`src/comparisonEngine.ts`). +4. EPANET 경고 코드(1~6)와 비정상 압력을 별도로 점검해 표시합니다 (`src/convergence.ts`). +5. 분석 탭의 일괄 해석(관로 중요도, 소화전, 보정 등)은 서버 Job으로 실행합니다 (`backend/jobs.py`). + +관련 구현 위치: + +- INP 파싱·생성: `src/inpModel.ts`, `src/inpExtras.ts` +- 서버 해석: `backend/main.py`, `backend/epanet.py` +- 일괄 해석 프레임워크: `backend/batch.py`, `backend/jobs.py` +- WASM 해석: `src/worker.ts` + +## 5. 주요 기능 사용 가이드 + +### 관망 편집 + +상단 [편집] 모드에서 절점·관로를 추가하고 지도에서 끌어 옮깁니다. 관로를 선택하면 꺾임점 핸들이 나타나며, 주황 점을 끌면 이동, 흰 점을 끌면 추가, 더블클릭하면 삭제됩니다. 속성창 아래 "추가 속성"에서 다중 수요·이미터·수질·탱크 혼합·펌프 에너지를 편집합니다. + +### 결과 확인 + +[결과] 창에서 표·시계열·누적 빈도·종단(시간별)·실측 보정을 확인합니다. 표의 행을 누르면 지도가 해당 요소로 이동합니다. + +### 분석 탭 + +| 분석 | 내용 | +|---|---| +| 소화전 모의 | 시간대별 소화 유량 추가 해석, 확보 가능 유량 | +| 관로 중요도 | 관로를 하나씩 닫아 영향 절점·수요 순위 | +| 급수 구역 | 배수지별 공급 비율 추적 | +| 흐름 방향 | 역류·무흐름 관로 | +| VSP | 목표 압력용 시간별 펌프 회전수 | +| 등치선 | 압력·동수두·표고 등치선 | +| 에너지 비용 | 펌프별 가동률·효율·원단위·전력비 | +| 관로 통계 | 관경·재질·설치 연대별 집계 | +| 자동 보정 (시험) | 실측값으로 그룹별 C값 배율·관벽 계수 추정 | +| 펌프 운전 최적화 (시험) | 압력·탱크 조건을 지키는 저비용 운전 일정 | +| 편집 도구 | 이동·회전·2점 보정, 분할, 절점 병합, 관로 점검, 추적 | +| 지형(DEM) | DEM 표고 입력·검증, 인터넷 90m 표고, TIN, 유역·하천, 3D | +| GIS 도구 | 레이어 좌표계·내보내기, 도형 연산, 밸브·계량기·소블록 반영 | + +### 저장과 백업 + +프로젝트 메뉴에서 `.spipe`로 저장하면 관망·시나리오·레이어·보정 자료가 한 파일에 담깁니다. 수정 중에는 10분마다 브라우저에 자동 백업되며(최근 30개), 프로젝트 메뉴 > 백업 기록에서 복원합니다. + +## 6. API + +브라우저는 Web 서버의 `/api` 프록시를 통해 해석 API를 호출합니다. 해석 API 포트는 외부에 공개하지 않습니다. + +| 메서드 | 경로 | 설명 | +|---|---|---| +| GET | `/api/health` | 상태 확인 | +| POST | `/api/analyze` | multipart `file`(.inp) → 전체 EPS 해석 결과 JSON (`?format=columnar` 압축 형식) | +| POST | `/api/jobs/{name}` | 일괄 해석: `fireflow`, `criticality`, `servicearea`, `vsp`, `energy`, `calibrate`, `pumpschedule` | +| POST | `/api/gis/vector` | GDAL 벡터 파일 → WGS84 GeoJSON | +| POST | `/api/gis/export` | 레이어 → SHP·GPKG·DXF·GeoJSON·KML (좌표계 지정) | +| POST | `/api/gis/op` | 버퍼·병합·잘라내기·차이·보로노이·격자 | +| POST | `/api/gis/reproject` | 레이어 좌표계 다시 지정 | +| POST | `/api/dem` | DEM 업로드 (GeoTIFF·ASC·IMG, zip) | +| GET | `/api/dem/{id}/preview.png` | DEM 음영 미리보기 | +| GET | `/api/dem/{id}/terrain/{z}/{x}/{y}.png` | 3D 지형 타일 (terrarium) | +| POST | `/api/dem/{id}/sample` | 지점 표고 (쌍선형 보간) | +| POST | `/api/dem/{id}/hydro` | 하천선 추출 / 유역 | +| POST | `/api/dem/from-points` | 점 표고로 DEM 생성 (TIN) | + +해석 결과의 필드 정의는 `src/types.ts`의 `SimulationResult`를 기준으로 합니다. 오류는 `{"detail": "..."}` 형식입니다. + +| 상태 | 의미 | +|---|---| +| 400 | 입력 형식 오류 (확장자, 파라미터, 좌표계) | +| 413 | 업로드 한도 또는 해석 규모 상한 초과 | +| 500 | EPANET 입력·해석 오류 | +| 504 | 해석 시간 초과 | + +## 7. 환경변수와 비밀값 + +| 변수 | 기본값 | 의미 | +|---|---|---| +| `SPIPE_MAX_UPLOAD_MB` | 20 | INP·GIS 업로드 한도. nginx `client_max_body_size`와 맞출 것 | +| `SPIPE_MAX_DEM_MB` | 300 | DEM 업로드 한도. nginx `location /api/dem`과 맞출 것 | +| `SPIPE_ANALYZE_TIMEOUT_S` | 120 | 해석 1건 시간 제한 | +| `SPIPE_JOB_TIMEOUT_S` | 900 | 일괄 해석 1건 시간 제한 | +| `SPIPE_MAX_PERIODS` | 10000 | 수리 스텝 수 상한 | +| `SPIPE_MAX_RESULT_CELLS` | 50000000 | (노드+링크) × 스텝 상한 | +| `SPIPE_WORKERS` | min(4, CPU-1) | 해석 프로세스 수 | +| `SPIPE_DEM_DIR` | `data/dem` | DEM 보관 폴더 | +| `SPIPE_DEM_KEEP` | 8 | 보관할 DEM 개수 | +| `EPANET_LIBRARY_PATH` | `64bit/epanet2.dll` | EPANET 라이브러리 경로 | + +비밀값 원칙: + +- API 키·토큰은 저장소에 커밋하지 않습니다. +- 지도 서비스 키는 `.env.local`(커밋 제외)에 넣습니다. `.env.example`을 복사해 채우고 다시 빌드합니다. + - `VITE_VWORLD_API_KEY`: 브이월드 배경지도 + - `VITE_KAKAO_JS_KEY`: 카카오 주소 검색 (콘솔의 JavaScript SDK 도메인에 접속 주소 등록 필요) +- 이 키들은 빌드된 화면 코드에 포함되어 브라우저에 노출되므로, 각 콘솔에서 사용 도메인을 제한합니다. +- 이전 커밋 기록에는 키가 남아 있습니다. 저장소를 공개하려면 키를 재발급합니다. +- 실무 관망 INP, HWP·PDF 보고서, 화면 캡처는 커밋하지 않습니다 (`.gitignore` 참고). + +## 8. 사내 서버 배포 + +### Windows 서버 PC (현재 운영 방식) + +저장소의 파일(또는 배포용 압축 파일 `SPipe_server_*.zip`)을 서버 PC의 SPipe 폴더에 반영하고 다음 순서로 실행합니다. 최초 설치 절차는 `SERVER_SETUP.md`를 따릅니다. + +```powershell +.\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt +``` + +```powershell +powershell -ExecutionPolicy Bypass -File .\start-lan.ps1 -Rebuild +``` + +- 웹 화면: `http://<서버 IP>:8080` (사내망 공개) +- 해석 API: `127.0.0.1:8000` (서버 내부 전용, 웹 서버가 `/api`만 전달) +- 코드 갱신 후에는 반드시 `-Rebuild`로 화면을 다시 빌드합니다. + +### Docker (nginx + API) + +```bash +docker compose up -d --build +``` + +- 구성: `compose.yaml`, `deploy/Dockerfile`, `deploy/nginx.conf` +- DEM 보관 폴더는 컨테이너의 `/app/data/dem` (필요하면 볼륨으로 유지) +- 업로드 한도를 바꿀 때는 환경변수와 nginx 설정을 함께 바꿉니다. + +배포 전 확인: + +```powershell +git status +``` + +```powershell +npm run typecheck +``` + +```powershell +npm test +``` + +```powershell +npm run test:api +``` + +```powershell +npm run build +``` + +## 9. 문제 해결 순서 + +1. 브라우저 주소가 `127.0.0.1:5173`(개발)인지 `<서버 IP>:8080`(사내)인지 확인합니다. +2. `/api/health`가 `{"status":"ok"}`를 돌려주는지 확인합니다. 아니면 해석 API가 꺼진 상태입니다. +3. 해석 오류는 메시지의 `Error 2xx` 줄(EPANET 입력 오류)을 먼저 확인합니다. +4. 지도가 엉뚱한 곳에 그려지면 상단 좌표계 설정과 GIS 레이어의 원본 좌표계를 확인합니다. +5. 새 기능이 화면에 안 보이면 `start-lan.ps1 -Rebuild`로 다시 빌드했는지 확인합니다. +6. DEM·GIS 기능이 서버 오류를 내면 `pip install -r backend\requirements.txt`를 다시 실행했는지 확인합니다. +7. 인터넷 표고(90m)·OSM 건물·배경지도만 실패하면 사용자 PC의 외부 인터넷 차단 여부를 확인합니다. + +자료가 이상하다고 관망 파일이나 백업을 지우지 않습니다. 먼저 프로젝트 메뉴 > 백업 기록과 실행 취소로 되돌릴 수 있는지 확인합니다. + +## 10. 상세 문서 목차 + +- `SERVER_SETUP.md`: 다른 Windows PC를 사내 서버로 설치하는 절차 +- `deploy/README.md`: Docker·nginx 배포 +- `docs/SPipe_패치내역_v2_2026-10-30.txt`: 데모 v2 변경 내역 (공지·첨부용) +- `public/EXAMPLE_NETWORKS.md`: 예제 관망 설명 +- `_worklog.md`: 배포본 등록·변경 작업 기록 + +## 11. 저장소 구조 + +``` +src/ React 웹 앱 + App.tsx 상태와 화면 조립 + inpModel.ts INP 파싱·생성, 편집 함수 + inpExtras.ts 다중 수요·수질·에너지 등 구조화 섹션 + worker.ts WASM 해석 (Web Worker) + Map.tsx 지도 표시·편집 (MapLibre) + *Section.tsx 분석 탭 화면 (편집 도구, DEM, GIS, 최적화 ...) + *Tools.ts 분석·편집·GIS 순수 로직 (Node 테스트 대상) +backend/ FastAPI 해석 API + main.py API 진입점 + epanet.py EPANET DLL ctypes 바인딩 + batch.py, jobs.py 일괄 해석 프레임워크와 분석 Job + gisio.py, gisops.py GIS 입출력·연산 (GDAL) + dem.py DEM 보관·표고·지형 타일·유역 + blocksys/ 블록 분할 CLI + tests/ pytest +64bit/ EPANET 2.3.5 DLL +public/ 예제 관망 (Net1~3, 한글 CP949, 합성망) +tests/ Node 회귀 테스트 +deploy/ Dockerfile, nginx.conf +data/ 서버 실행 중 생성 (DEM 보관, 커밋 제외) +``` diff --git a/SERVER_SETUP.md b/SERVER_SETUP.md new file mode 100644 index 0000000..c08ec87 --- /dev/null +++ b/SERVER_SETUP.md @@ -0,0 +1,93 @@ +# SPipe 사내 서버 설치 안내 + +다른 Windows PC를 SPipe 서버로 쓰기 위한 절차입니다. 사내 사용자는 브라우저에서 `http://<서버 IP>:8080` 으로 접속합니다. + +- 웹 화면: 서버의 8080 포트 (사내망에 공개) +- 해석 API: 서버 내부 127.0.0.1:8000 (외부 비공개, 웹 서버가 `/api` 요청만 전달) + +## 1. 준비물 + +| 항목 | 버전 / 비고 | +|---|---| +| Windows x64 PC | 해석 엔진 `64bit/epanet2.dll` 사용 | +| Node.js | 24.x (검증 버전 24.14.1) | +| Python | 3.12 64비트 (검증 버전 3.12.10), Python Launcher(`py`) 포함 | +| 인터넷 | 최초 패키지 설치, 배경지도·주소 검색 | + +## 2. 설치 (최초 1회) + +전달받은 `SPipe_server_*.zip`을 `C:\SPipe`에 압축 해제한 뒤 PowerShell에서 실행합니다. 경로는 원하는 위치로 바꿔도 됩니다. + +```powershell +cd C:\SPipe + +npm.cmd ci +py -3.12 -m venv .venv +.\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt +.\.venv\Scripts\python.exe -m pip check + +Copy-Item .env.example .env.local +notepad .env.local + +npm.cmd test +npm.cmd run build +``` + +`.env.local`에는 브이월드 API 키와 카카오 JavaScript 키를 넣습니다. 키는 저장소·압축 파일에 들어 있지 않으니 담당자에게 따로 받습니다. 키를 넣지 않으면 브이월드 배경지도와 주소 검색만 동작하지 않고, 키를 바꾼 뒤에는 다시 빌드(`npm.cmd run build` 또는 `start-lan.ps1 -Rebuild`)해야 반영됩니다. + +`npm test`가 모두 통과하고 빌드가 성공하면 다음 단계로 넘어갑니다. + +## 3. 방화벽 (관리자 PowerShell, 최초 1회) + +같은 사내 서브넷에서만 8080 포트 접속을 허용합니다. 회사 네트워크가 "공용"으로 잡혀 있어도 적용되도록 세 프로필을 모두 지정합니다. + +```powershell +New-NetFirewallRule -DisplayName "SPipe 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Domain,Private,Public -RemoteAddress LocalSubnet +``` + +다른 층·지사 등 서브넷이 다른 곳에서도 접속해야 하면 `LocalSubnet` 대신 사내 IP 대역(예: `10.0.0.0/8`)을 넣습니다. 8000 포트는 열지 않습니다. + +## 4. 실행 + +```powershell +cd C:\SPipe +powershell -ExecutionPolicy Bypass -File .\start-lan.ps1 +``` + +화면에 표시되는 `http://<서버 IP>:8080` 주소를 사내에 공유합니다. 창을 닫거나 Ctrl+C를 누르면 웹·API 서버가 함께 종료됩니다. + +재부팅 후 자동으로 켜려면 작업 스케줄러에 "로그온 시" 트리거로 위 명령을 등록합니다. + +## 5. 카카오 주소 검색 도메인 등록 + +주소 검색은 카카오 JavaScript 키를 쓰며, **등록된 주소에서만 동작합니다.** 카카오 개발자 콘솔 → 앱 → 플랫폼 키 → JavaScript 키 → "JavaScript SDK 도메인"에 서버 주소를 추가합니다. + +- 예: `http://10.12.30.5:8080` (서버의 실제 IP) +- 서버 PC에서 직접 열 경우: `http://localhost:8080` + +서버 IP가 바뀌면 이 등록도 바꿔야 하므로, 서버 PC는 고정 IP를 받아 두는 것을 권장합니다. + +## 6. 업데이트 + +새 zip을 받으면 서버를 끄고(Ctrl+C), `C:\SPipe`에 덮어써 압축을 푼 뒤 실행합니다. `.venv`, `node_modules` 폴더는 지우지 않아도 됩니다. + +```powershell +cd C:\SPipe +npm.cmd ci +.\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt +powershell -ExecutionPolicy Bypass -File .\start-lan.ps1 -Rebuild +``` + +`start-lan.ps1`은 `dist` 폴더가 있으면 기존 빌드를 그대로 씁니다. 코드를 받은 뒤에는 반드시 `-Rebuild`를 붙입니다. + +## 7. 사용자 안내 사항 + +- 작업 내용 자동 저장은 각자의 브라우저에만 남습니다. 서버에 저장되지 않으므로 INP와 결과물은 파일로 보관합니다. +- 배경지도·주소 검색·표고 조회는 외부 인터넷이 필요합니다. +- `.net` 내보내기는 지원하지 않습니다. `.inp`로 저장합니다. +- 로그인 기능이 없어 사내망의 누구나 접속할 수 있습니다. + +## 8. 알려진 보류 항목 (2026-10-15 점검) + +- `vite preview`는 상시 운영용 서버가 아닙니다. 사용자가 늘면 nginx 구성(`deploy/`)으로 옮깁니다. +- API 업로드 의존성(python-multipart 0.0.20, Starlette 0.47.3)에 알려진 보안 문제가 있어 수정 버전으로 갱신이 예정되어 있습니다. 갱신 전까지는 사내망에서만 운영합니다. diff --git a/_worklog.md b/_worklog.md new file mode 100644 index 0000000..d4d59d0 --- /dev/null +++ b/_worklog.md @@ -0,0 +1,13 @@ +# SPipe 작업 기록 + +## 2026-10-30 데모 v2 배포본 등록 + +- 원본: `SPipe_server_2026-10-30.zip` (파일 181개). 압축은 저장소에 올리지 않고 풀어서 등록 +- 변경 내역: `docs/SPipe_패치내역_v2_2026-10-30.txt` (이전 배포 데모 v1, 2026-10-15) +- 등록 제외 + - `backend/temp.bin`, `backend/temp.inp`: 해석 중 생기는 임시 파일 + - `.env.local`, 배포 전달 메모: 브이월드·카카오 API 키 포함 + - 실데이터(상리 INP), HWP, 화면 캡처, 테스트 DEM: 배포본에 포함되지 않음 +- README: 원본 README에 데모 v2 서버 업데이트 순서를 추가하고, 저장소에 없는 문서 목차를 정리 +- 서버 반영: 기존 폴더에 덮어쓰기(`.venv`·`node_modules`·`data`·`.env.local` 유지) → `pip install -r backend\requirements.txt` → `start-lan.ps1 -Rebuild` +- 남은 일: 서버 PC IP 확정 시 카카오 JavaScript SDK 도메인에 `http://<서버 IP>:8080` 추가 diff --git a/backend/__init__.py b/backend/__init__.py new file mode 100644 index 0000000..4164a3b --- /dev/null +++ b/backend/__init__.py @@ -0,0 +1 @@ +# backend module diff --git a/backend/batch.py b/backend/batch.py new file mode 100644 index 0000000..a5c0dd1 --- /dev/null +++ b/backend/batch.py @@ -0,0 +1,332 @@ +"""Repeated-solve helper for batch analyses (fire flow, criticality, VSP, +calibration ...). + +`Network` opens one INP with the EPANET 2.3 DLL and keeps it open, so an +analysis can change values (demands, statuses, settings, controls) and +re-solve hydraulics many times without re-reading the file. Results are +returned at the reporting periods only ([TIMES] REPORT START / REPORT STEP), +the same periods the main /api/analyze endpoint reports, as numpy arrays. + +Runs inside the API process pool (one Network per call, never shared). +""" +from __future__ import annotations + +import ctypes +import os +import tempfile +from dataclasses import dataclass, field + +import numpy as np + +from .epanet import EN, EpanetAPI, EpanetException + +_api: EpanetAPI | None = None + + +def get_api() -> EpanetAPI: + """One DLL handle per process (ctypes handles must not cross processes).""" + global _api + if _api is None: + _api = EpanetAPI() + return _api + + +class BatchError(Exception): + """User-facing input problem (unknown ID, bad parameter).""" + + +@dataclass +class SimResult: + times: list[int] + nodes: dict[int, np.ndarray] = field(default_factory=dict) # prop -> [period, node] + links: dict[int, np.ndarray] = field(default_factory=dict) # prop -> [period, link] + warnings: list[tuple[int, int]] = field(default_factory=list) # (time, code) + + +def _decode(raw: bytes) -> str: + try: + return raw.decode("utf-8") + except UnicodeDecodeError: + return raw.decode("cp949", errors="replace") + + +class Network: + def __init__(self, inp_bytes: bytes): + self.api = get_api() + self.lib = self.api.lib + self._tmp = tempfile.TemporaryDirectory() + inp = os.path.join(self._tmp.name, "n.inp") + with open(inp, "wb") as f: + f.write(inp_bytes) + self.ph = self.api.EN_Project() + self.lib.EN_createproject(ctypes.byref(self.ph)) + self._opened = False + try: + self._opened = True + self.lib.EN_open(self.ph, inp.encode(), os.path.join(self._tmp.name, "n.rpt").encode(), b"") + except EpanetException as e: + self.close() + raise BatchError(str(e)) from e + + n, l = ctypes.c_int(), ctypes.c_int() + self.lib.EN_getcount(self.ph, EN.NODECOUNT, ctypes.byref(n)) + self.lib.EN_getcount(self.ph, EN.LINKCOUNT, ctypes.byref(l)) + self.node_count, self.link_count = n.value, l.value + buf = ctypes.create_string_buffer(256) + t = ctypes.c_int() + self.node_ids: list[str] = [] + self.node_types: list[int] = [] + for i in range(1, self.node_count + 1): + self.lib.EN_getnodeid(self.ph, i, buf) + self.node_ids.append(_decode(buf.value)) + self.lib.EN_getnodetype(self.ph, i, ctypes.byref(t)) + self.node_types.append(t.value) + self.link_ids: list[str] = [] + self.link_types: list[int] = [] + self.link_nodes: list[tuple[int, int]] = [] + a, b = ctypes.c_int(), ctypes.c_int() + for i in range(1, self.link_count + 1): + self.lib.EN_getlinkid(self.ph, i, buf) + self.link_ids.append(_decode(buf.value)) + self.lib.EN_getlinktype(self.ph, i, ctypes.byref(t)) + self.link_types.append(t.value) + self.lib.EN_getlinknodes(self.ph, i, ctypes.byref(a), ctypes.byref(b)) + self.link_nodes.append((a.value, b.value)) + self._node_index = {nid: i + 1 for i, nid in enumerate(self.node_ids)} + self._link_index = {lid: i + 1 for i, lid in enumerate(self.link_ids)} + + self.duration = self.time_param(EN.DURATION) + self.hyd_step = self.time_param(EN.HYDSTEP) + self.report_step = max(1, self.time_param(EN.REPORTSTEP)) + self.report_start = self.time_param(EN.REPORTSTART) + self.pattern_step = max(1, self.time_param(EN.PATTERNSTEP)) + + # ---- lifecycle ---- + def close(self) -> None: + if getattr(self, "ph", None) is None: + return + try: + if self._opened: + self.lib.EN_close(self.ph) + except EpanetException: + pass + try: + self.lib.EN_deleteproject(self.ph) + except EpanetException: + pass + self.ph = None + self._tmp.cleanup() + + def __enter__(self) -> "Network": + return self + + def __exit__(self, *exc) -> None: + self.close() + + # ---- lookups ---- + def node_index(self, node_id: str) -> int: + try: + return self._node_index[node_id] + except KeyError: + raise BatchError(f"절점 {node_id}가 모델에 없습니다.") from None + + def link_index(self, link_id: str) -> int: + try: + return self._link_index[link_id] + except KeyError: + raise BatchError(f"링크 {link_id}가 모델에 없습니다.") from None + + def junction_indices(self) -> list[int]: + return [i + 1 for i, t in enumerate(self.node_types) if t == EN.JUNCTION] + + # ---- values ---- + def time_param(self, code: int) -> int: + v = ctypes.c_long() + self.lib.EN_gettimeparam(self.ph, code, ctypes.byref(v)) + return v.value + + def set_time_param(self, code: int, value: int) -> None: + self.lib.EN_settimeparam(self.ph, code, int(value)) + + def get_node(self, index: int, prop: int) -> float: + v = ctypes.c_double() + self.lib.EN_getnodevalue(self.ph, index, prop, ctypes.byref(v)) + return v.value + + def set_node(self, index: int, prop: int, value: float) -> None: + self.lib.EN_setnodevalue(self.ph, index, prop, float(value)) + + def get_link(self, index: int, prop: int) -> float: + v = ctypes.c_double() + self.lib.EN_getlinkvalue(self.ph, index, prop, ctypes.byref(v)) + return v.value + + def set_link(self, index: int, prop: int, value: float) -> None: + self.lib.EN_setlinkvalue(self.ph, index, prop, float(value)) + + def add_pattern(self, pid: str, values: list[float]) -> None: + """Create the pattern, or overwrite its values if the ID already exists.""" + idx = ctypes.c_int() + try: + self.lib.EN_getpatternindex(self.ph, pid.encode(), ctypes.byref(idx)) + except EpanetException: + self.lib.EN_addpattern(self.ph, pid.encode()) + self.lib.EN_getpatternindex(self.ph, pid.encode(), ctypes.byref(idx)) + arr = (ctypes.c_double * len(values))(*values) + self.lib.EN_setpattern(self.ph, idx.value, arr, len(values)) + + def window_pattern(self, pid: str, start_s: int, end_s: int) -> None: + """Pattern that is 1 on [start, end) and 0 elsewhere, over the duration.""" + # EPANET uses period (t + PATTERN START) // PATTERN STEP, so period k + # starts at simulation time k * step - pattern_start. + pstart = self.time_param(EN.PATTERNSTART) + n = max(1, -(-(max(self.duration, 1) + pstart) // self.pattern_step) + 1) + vals = [] + for k in range(n): + t0 = k * self.pattern_step - pstart + vals.append(1.0 if start_s <= t0 < end_s else 0.0) + self.add_pattern(pid, vals) + + def add_demand(self, index: int, base: float, pattern: str = "", name: str = "") -> int: + """Adds a demand category; returns its 1-based category index.""" + self.lib.EN_adddemand(self.ph, index, float(base), pattern.encode(), name.encode()) + k = ctypes.c_int() + self.lib.EN_getnumdemands(self.ph, index, ctypes.byref(k)) + return k.value + + def delete_demand(self, index: int, category: int) -> None: + self.lib.EN_deletedemand(self.ph, index, category) + + def add_timer_control(self, link_index: int, setting: float, at_s: int) -> int: + """setting: 0 = CLOSED, 1 = OPEN (pipes) or a speed/valve setting.""" + out = ctypes.c_int() + self.lib.EN_addcontrol(self.ph, EN.TIMER, link_index, float(setting), 0, float(at_s), ctypes.byref(out)) + return out.value + + def delete_control(self, index: int) -> None: + self.lib.EN_deletecontrol(self.ph, index) + + # ---- solve ---- + def run_quality(self, nodes: list[int] | None = None) -> tuple[list[int], np.ndarray]: + """Quality run on hydraulics saved by EN_solveH; QUALITY at report periods [period, node].""" + node_idx = nodes if nodes is not None else list(range(1, self.node_count + 1)) + t, tstep = ctypes.c_long(), ctypes.c_long(1) + v = ctypes.c_double() + times: list[int] = [] + rows: list[list[float]] = [] + ph, get_n = self.ph, self.lib.EN_getnodevalue + self.lib.EN_openQ(ph) + try: + self.lib.EN_initQ(ph, EN.NOSAVE) + while True: + self.lib.EN_runQ(ph, ctypes.byref(t)) + if self.is_report_time(t.value) and (not times or times[-1] != t.value): + times.append(t.value) + row = [] + for i in node_idx: + get_n(ph, i, EN.QUALITY, ctypes.byref(v)) + row.append(v.value) + rows.append(row) + self.lib.EN_nextQ(ph, ctypes.byref(tstep)) + if tstep.value <= 0: + break + finally: + self.lib.EN_closeQ(ph) + return times, np.asarray(rows, dtype=float).reshape(len(times), len(node_idx)) + + def pattern_value(self, pattern_index: int, t: int, pattern_start: int = 0) -> float: + """Multiplier of a pattern at simulation time t (1.0 without a pattern).""" + if pattern_index <= 0: + return 1.0 + n = ctypes.c_int() + self.lib.EN_getpatternlen(self.ph, pattern_index, ctypes.byref(n)) + if n.value <= 0: + return 1.0 + period = ((t + pattern_start) // self.pattern_step) % n.value + v = ctypes.c_double() + self.lib.EN_getpatternvalue(self.ph, pattern_index, period + 1, ctypes.byref(v)) + return v.value + + def option(self, code: int) -> float: + v = ctypes.c_double() + self.lib.EN_getoption(self.ph, code, ctypes.byref(v)) + return v.value + + def is_report_time(self, t: int) -> bool: + return t >= self.report_start and (t - self.report_start) % self.report_step == 0 + + def simulate( + self, + node_props: tuple[int, ...] = (EN.PRESSURE,), + link_props: tuple[int, ...] = (), + nodes: list[int] | None = None, + links: list[int] | None = None, + max_periods: int = 20000, + ) -> SimResult: + """Run an EPS and record the given properties at reporting periods. + + `nodes`/`links` are 1-based indices (default: all). Arrays are + [period, element] in the order of the given index lists. + """ + node_idx = nodes if nodes is not None else list(range(1, self.node_count + 1)) + link_idx = links if links is not None else list(range(1, self.link_count + 1)) + rows_n: dict[int, list[list[float]]] = {p: [] for p in node_props} + rows_l: dict[int, list[list[float]]] = {p: [] for p in link_props} + times: list[int] = [] + warnings: list[tuple[int, int]] = [] + t, tstep = ctypes.c_long(), ctypes.c_long(1) + v = ctypes.c_double() + get_n, get_l, ph = self.lib.EN_getnodevalue, self.lib.EN_getlinkvalue, self.ph + self.lib.EN_openH(ph) + try: + self.lib.EN_initH(ph, EN.NOSAVE) + while True: + code = self.lib.EN_runH(ph, ctypes.byref(t)) + if 0 < code <= 10: + warnings.append((t.value, code)) + if self.is_report_time(t.value): + times.append(t.value) + for p in node_props: + row = [] + for i in node_idx: + get_n(ph, i, p, ctypes.byref(v)) + row.append(v.value) + rows_n[p].append(row) + for p in link_props: + row = [] + for i in link_idx: + get_l(ph, i, p, ctypes.byref(v)) + row.append(v.value) + rows_l[p].append(row) + if len(times) > max_periods: + raise BatchError(f"보고 시간대가 {max_periods}개를 넘습니다.") + self.lib.EN_nextH(ph, ctypes.byref(tstep)) + if tstep.value <= 0: + break + finally: + self.lib.EN_closeH(ph) + return SimResult( + times=times, + nodes={p: np.asarray(r, dtype=float).reshape(len(times), len(node_idx)) for p, r in rows_n.items()}, + links={p: np.asarray(r, dtype=float).reshape(len(times), len(link_idx)) for p, r in rows_l.items()}, + warnings=warnings, + ) + + +def hhmm(seconds: int) -> str: + return f"{seconds // 3600}:{(seconds % 3600) // 60:02d}" + + +def parse_time(value, default: int = 0) -> int: + """Seconds from a number of hours, 'h:mm', or None.""" + if value is None or value == "": + return default + if isinstance(value, (int, float)): + return int(round(float(value) * 3600)) + s = str(value).strip() + if ":" in s: + parts = [float(x) for x in s.split(":")] + while len(parts) < 3: + parts.append(0.0) + return int(round(parts[0] * 3600 + parts[1] * 60 + parts[2])) + return int(round(float(s) * 3600)) diff --git a/backend/blocksys/__init__.py b/backend/blocksys/__init__.py new file mode 100644 index 0000000..deec701 --- /dev/null +++ b/backend/blocksys/__init__.py @@ -0,0 +1,11 @@ +"""상수도 블록시스템 자동 분할 도구. + +「지방상수도 현대화사업 업무편람」(환경부, 2021) 2편 Ⅰ.8 블록시스템 구축계획 수립의 +구축절차 ①~④를 지원한다. 절차 ⑤(블록고립 현장조사)와 최종 경계 확정은 범위 밖이며 +사람이 판단한다. + +현재 구현 범위(MVP, Step 1~6): 네트워크 로드, 기준 수리해석, 가중 그래프 구성, +블록 분할, 경계밸브/유량계 산정, 분할안 수리적 검증까지. +""" + +__version__ = "0.1.0" diff --git a/backend/blocksys/__main__.py b/backend/blocksys/__main__.py new file mode 100644 index 0000000..a742c52 --- /dev/null +++ b/backend/blocksys/__main__.py @@ -0,0 +1,6 @@ +import sys + +from .cli import main + +if __name__ == "__main__": + sys.exit(main()) diff --git a/backend/blocksys/boundary.py b/backend/blocksys/boundary.py new file mode 100644 index 0000000..b4aa826 --- /dev/null +++ b/backend/blocksys/boundary.py @@ -0,0 +1,83 @@ +"""Step 7 — 경계 관로 추출 및 밸브/유량계 배정, Step 8 — 모델에 반영.""" + +from __future__ import annotations + +import copy +from dataclasses import dataclass + +import networkx as nx +import wntr + +from .validate import BaselineResult + + +@dataclass +class BoundaryLink: + pipe_id: str + from_node: str + to_node: str + block_a: int + block_b: int + action: str # 'close' | 'meter' + baseline_flow: float + diameter: float + + +def find_boundary_links(G: nx.Graph, labels: dict[str, int]) -> list[BoundaryLink]: + """경계 엣지 = 양 끝 노드의 블록 라벨이 다른 엣지. 병렬관은 개별 pipe_id로 전개.""" + boundary: list[BoundaryLink] = [] + for u, v, data in G.edges(data=True): + if u not in labels or v not in labels: + continue + block_a, block_b = labels[u], labels[v] + if block_a == block_b: + continue + for pipe_id in data.get("pipe_ids", []): + boundary.append( + BoundaryLink( + pipe_id=pipe_id, + from_node=u, + to_node=v, + block_a=block_a, + block_b=block_b, + action="close", + baseline_flow=0.0, + diameter=data.get("diameter", 0.0), + ) + ) + return boundary + + +def assign_valve_or_meter( + boundary: list[BoundaryLink], + baseline: BaselineResult, + inlets_per_block: int = 1, +) -> list[BoundaryLink]: + """블록별 유입 경로: baseline 유량 상위 inlets_per_block개는 유량계, 나머지는 차단.""" + for link in boundary: + link.baseline_flow = baseline.link_flow_mean_abs.get(link.pipe_id, 0.0) + + by_block: dict[int, list[BoundaryLink]] = {} + for link in boundary: + by_block.setdefault(link.block_a, []).append(link) + by_block.setdefault(link.block_b, []).append(link) + + meter_pipe_ids: set[str] = set() + for links in by_block.values(): + ranked = sorted(links, key=lambda l: l.baseline_flow, reverse=True) + meter_pipe_ids.update(l.pipe_id for l in ranked[:inlets_per_block]) + + for link in boundary: + link.action = "meter" if link.pipe_id in meter_pipe_ids else "close" + + return boundary + + +def apply_blocks_to_model( + wn: "wntr.network.WaterNetworkModel", boundary: list[BoundaryLink] +) -> "wntr.network.WaterNetworkModel": + wn_blocked = copy.deepcopy(wn) + for link in boundary: + if link.action == "close": + wn_blocked.get_link(link.pipe_id).initial_status = "Closed" + return wn_blocked diff --git a/backend/blocksys/cli.py b/backend/blocksys/cli.py new file mode 100644 index 0000000..fcc427d --- /dev/null +++ b/backend/blocksys/cli.py @@ -0,0 +1,170 @@ +"""CLI: python -m blocksys run --inp network.inp --config config.yaml [--k K] --out ./result + +MVP(Step 1~6) 범위: 로드 -> 기준 수리해석 -> 가중 그래프 -> 분할 -> 경계밸브/유량계 -> +분할안 수리적 검증. balance/refine, score.py, report.html, valve_segment_analysis는 +아직 구현되지 않았다. +""" + +from __future__ import annotations + +import argparse +import csv +import logging +import math +import sys +from pathlib import Path + +import wntr + +from .boundary import BoundaryLink, apply_blocks_to_model, assign_valve_or_meter, find_boundary_links +from .config import Config +from .graph import apply_hard_constraints, build_weighted_graph +from .io import load_network +from .partition import partition +from .validate import ValidationResult, baseline_simulation, hydraulic_validation + +logger = logging.getLogger("blocksys") + +DISCLAIMER = ( + "본 결과는 블록분할 검토 초안이며, 최종 블록 경계는 업무편람 구축절차 ⑤ " + "블록고립 현장조사를 거쳐 확정한다." +) + + +def build_arg_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(prog="blocksys") + sub = parser.add_subparsers(dest="command", required=True) + + run = sub.add_parser("run", help="블록 분할 대안 생성 및 수리적 검증 (MVP: Step 1~6)") + run.add_argument("--inp", required=True, type=Path, help="EPANET .inp 파일 경로") + run.add_argument("--config", type=Path, default=None, help="config.yaml 경로 (생략 시 기본값)") + run.add_argument("--connections", type=Path, default=None, help="connections.csv 경로 (선택)") + run.add_argument("--k", type=int, default=None, help="단일 대안만 생성. 미지정 시 k_min~k_max 스윕") + run.add_argument("--out", type=Path, default=Path("./result"), help="출력 디렉터리") + + return parser + + +def _ensure_utf8_stdio() -> None: + # Windows 콘솔 기본 코드페이지(cp949 등)에서 한글 로그가 깨지는 것을 방지. + for stream in (sys.stdout, sys.stderr): + try: + stream.reconfigure(encoding="utf-8") + except (AttributeError, ValueError): + pass + + +def run_command(args: argparse.Namespace) -> int: + _ensure_utf8_stdio() + logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s") + + cfg = Config.from_yaml(args.config) if args.config else Config() + args.out.mkdir(parents=True, exist_ok=True) + + logger.info("네트워크 로드: %s", args.inp) + bundle = load_network(args.inp, args.connections) + + logger.info("기준 수리해석(baseline) 실행 중...") + baseline = baseline_simulation(bundle.wn, cfg) + + Gw = build_weighted_graph(bundle.graph, baseline, cfg) + Gw = apply_hard_constraints(Gw, cfg) + + k_values = [args.k] if args.k is not None else list(range(cfg.partition.k_min, cfg.partition.k_max + 1)) + + summary_rows = [] + for k in k_values: + logger.info("k=%d 대안 생성 중...", k) + try: + labels = partition(Gw, k, cfg) + except ValueError as exc: + logger.warning("k=%d 분할 실패: %s", k, exc) + continue + + boundary = find_boundary_links(Gw, labels) + boundary = assign_valve_or_meter(boundary, baseline, inlets_per_block=cfg.boundary.inlets_per_block) + wn_blocked = apply_blocks_to_model(bundle.wn, boundary) + validation = hydraulic_validation(wn_blocked, baseline, cfg) + + _write_boundary_csv(args.out / f"boundary_valves_k{k}.csv", boundary) + wntr.network.io.write_inpfile(wn_blocked, str(args.out / f"alt_{k}.inp")) + + summary_rows.append(_summarize(k, Gw, boundary, validation)) + logger.info( + "k=%d: valve=%d meter=%d status=%s", + k, + sum(1 for b in boundary if b.action == "close"), + sum(1 for b in boundary if b.action == "meter"), + validation.status, + ) + + _write_summary_csv(args.out / "validation.csv", summary_rows) + + logger.info("완료. 결과 디렉터리: %s", args.out) + logger.info(DISCLAIMER) + return 0 + + +def _summarize(k: int, Gw, boundary: list[BoundaryLink], validation: ValidationResult) -> dict: + boundary_length = sum( + Gw[b.from_node][b.to_node].get("length", 0.0) for b in boundary if Gw.has_edge(b.from_node, b.to_node) + ) + return { + "k": k, + "n_valves": sum(1 for b in boundary if b.action == "close"), + "n_meters": sum(1 for b in boundary if b.action == "meter"), + "boundary_pipe_length_m": round(boundary_length, 1), + "min_pressure_m": _fmt(validation.min_pressure_m), + "pressure_violations": len(validation.pressure_low_violations) + len(validation.pressure_high_violations), + "isolated_nodes": len(validation.isolated_nodes), + "max_water_age_h": _fmt(validation.max_water_age_h), + "status": validation.status, + "rejection_reason": validation.rejection_reason or "", + } + + +def _fmt(value: float) -> str: + return "" if value is None or math.isnan(value) else round(value, 2) + + +def _write_boundary_csv(path: Path, boundary: list[BoundaryLink]) -> None: + fieldnames = ["pipe_id", "from_node", "to_node", "block_a", "block_b", "action", "baseline_flow", "diameter"] + with path.open("w", newline="", encoding="utf-8-sig") as f: + writer = csv.DictWriter(f, fieldnames=fieldnames) + writer.writeheader() + for b in boundary: + writer.writerow( + { + "pipe_id": b.pipe_id, + "from_node": b.from_node, + "to_node": b.to_node, + "block_a": b.block_a, + "block_b": b.block_b, + "action": b.action, + "baseline_flow": b.baseline_flow, + "diameter": b.diameter, + } + ) + + +def _write_summary_csv(path: Path, rows: list[dict]) -> None: + if not rows: + logger.warning("유효한 대안이 없어 validation.csv를 생성하지 않았습니다") + return + with path.open("w", newline="", encoding="utf-8-sig") as f: + writer = csv.DictWriter(f, fieldnames=list(rows[0].keys())) + writer.writeheader() + writer.writerows(rows) + + +def main(argv: list[str] | None = None) -> int: + parser = build_arg_parser() + args = parser.parse_args(argv) + if args.command == "run": + return run_command(args) + parser.print_help() + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/backend/blocksys/config.example.yaml b/backend/blocksys/config.example.yaml new file mode 100644 index 0000000..526a355 --- /dev/null +++ b/backend/blocksys/config.example.yaml @@ -0,0 +1,43 @@ +crs: EPSG:5186 + +partition: + level: small # large | medium | small + k_min: 4 # 블록 수 탐색 하한 + k_max: 20 # 상한 + method: spectral # spectral | louvain + flow_weight_alpha: 0.7 # 엣지 가중치에서 유량 비중 (나머지는 관경) + +constraints: + connections_per_block: + min: 500 # TODO: 편람에 수치 규정 없음. 사내 관행값 확정 필요 + max: 3000 + max_pipe_length_per_block: 30000 # m, TODO + demand_per_block: + max_cmd: null # m3/day, null이면 미적용 + elevation_band_m: 30 # 표고차 이 값 초과 시 경계 선호 + large_consumer_demand_lps: 5.0 # 이상이면 대수용가로 태깅, TODO + large_consumer_policy: isolate # isolate | keep_together + sources_in_separate_blocks: true + +hydraulics: + duration_hours: 24 + timestep_minutes: 60 + min_pressure_m: 15.0 # TODO: 수도법·상수도설계기준 확인 후 확정 + max_pressure_m: 71.0 # TODO + max_water_age_hours: 48 # TODO + allow_isolated_nodes: false + +refine: + max_iterations: 20 + moves_per_iteration: 50 + +boundary: + inlets_per_block: 1 # TODO: 통상 1개, 예비 포함 2개 + +scoring: + weights: + n_valves: 0.25 + n_meters: 0.15 + pressure_violations: 0.30 + max_water_age: 0.15 + boundary_pipe_length: 0.15 diff --git a/backend/blocksys/config.py b/backend/blocksys/config.py new file mode 100644 index 0000000..f7b6c1f --- /dev/null +++ b/backend/blocksys/config.py @@ -0,0 +1,114 @@ +"""설정파일(config.yaml) 스키마와 로더. + +사내 관행값·발주처 기준이 필요한 TODO 항목은 §9 표를 참고. 전부 이 모듈의 +기본값으로 노출되어 있으며, config.yaml로 덮어쓴다. +""" + +from __future__ import annotations + +import dataclasses +from dataclasses import dataclass, field +from pathlib import Path +from typing import Any, Optional + +import yaml + + +@dataclass +class ConnectionsPerBlock: + min: int = 500 # TODO: 편람에 수치 규정 없음. 사내 관행값 확정 필요 + max: int = 3000 + + +@dataclass +class DemandPerBlock: + max_cmd: Optional[float] = None # m3/day, null이면 미적용 + + +@dataclass +class PartitionConfig: + level: str = "small" # large | medium | small + k_min: int = 4 + k_max: int = 20 + method: str = "spectral" # spectral | louvain + flow_weight_alpha: float = 0.7 + + +@dataclass +class ConstraintsConfig: + connections_per_block: ConnectionsPerBlock = field(default_factory=ConnectionsPerBlock) + max_pipe_length_per_block: float = 30000.0 # m, TODO + demand_per_block: DemandPerBlock = field(default_factory=DemandPerBlock) + elevation_band_m: float = 30.0 + large_consumer_demand_lps: float = 5.0 # TODO + large_consumer_policy: str = "isolate" # isolate | keep_together + sources_in_separate_blocks: bool = True + + +@dataclass +class HydraulicsConfig: + duration_hours: int = 24 + timestep_minutes: int = 60 + min_pressure_m: float = 15.0 # TODO: 수도법 시행규칙 / 상수도설계기준 확인 후 확정 + max_pressure_m: float = 71.0 # TODO + max_water_age_hours: float = 48.0 # TODO + allow_isolated_nodes: bool = False + + +@dataclass +class RefineConfig: + max_iterations: int = 20 + moves_per_iteration: int = 50 + + +@dataclass +class ScoringWeights: + n_valves: float = 0.25 + n_meters: float = 0.15 + pressure_violations: float = 0.30 + max_water_age: float = 0.15 + boundary_pipe_length: float = 0.15 + + +@dataclass +class ScoringConfig: + weights: ScoringWeights = field(default_factory=ScoringWeights) + + +@dataclass +class BoundaryConfig: + # 블록당 유입지점(유량계) 목표 개수. 편람에 수치 없음, 통상 1개 예비 포함 2개. TODO + inlets_per_block: int = 1 + + +@dataclass +class Config: + crs: str = "EPSG:5186" + partition: PartitionConfig = field(default_factory=PartitionConfig) + constraints: ConstraintsConfig = field(default_factory=ConstraintsConfig) + hydraulics: HydraulicsConfig = field(default_factory=HydraulicsConfig) + refine: RefineConfig = field(default_factory=RefineConfig) + scoring: ScoringConfig = field(default_factory=ScoringConfig) + boundary: BoundaryConfig = field(default_factory=BoundaryConfig) + + @classmethod + def from_yaml(cls, path: str | Path) -> "Config": + raw = yaml.safe_load(Path(path).read_text(encoding="utf-8")) or {} + return cls.from_dict(raw) + + @classmethod + def from_dict(cls, raw: dict[str, Any]) -> "Config": + cfg = cls() + _apply(cfg, raw) + return cfg + + +def _apply(instance: Any, data: dict[str, Any]) -> None: + for key, value in data.items(): + if not hasattr(instance, key): + continue + current = getattr(instance, key) + if dataclasses.is_dataclass(current) and isinstance(value, dict): + _apply(current, value) + else: + setattr(instance, key, value) diff --git a/backend/blocksys/graph.py b/backend/blocksys/graph.py new file mode 100644 index 0000000..45f9eaa --- /dev/null +++ b/backend/blocksys/graph.py @@ -0,0 +1,70 @@ +"""Step 3 — 가중 그래프 구성, Step 4 — 하드 제약(강한 선호)을 가중치에 반영.""" + +from __future__ import annotations + +import networkx as nx + +from .config import Config +from .validate import BaselineResult + + +def build_weighted_graph(G: nx.Graph, baseline: BaselineResult, cfg: Config) -> nx.Graph: + """엣지 가중치 = '이 관로를 자르기 싫은 정도'. 클수록 절단 회피.""" + Gw = G.copy() + alpha = cfg.partition.flow_weight_alpha + + flows: dict[tuple, float] = {} + for u, v, data in Gw.edges(data=True): + pipe_ids = data.get("pipe_ids", []) + flows[(u, v)] = max((baseline.link_flow_mean_abs.get(pid, 0.0) for pid in pipe_ids), default=0.0) + + max_flow = max(flows.values(), default=0.0) + max_diameter = max((data.get("diameter", 0.0) for _, _, data in Gw.edges(data=True)), default=0.0) + + for u, v, data in Gw.edges(data=True): + q_norm = (flows[(u, v)] / max_flow) if max_flow > 0 else 0.0 + d_norm = (data.get("diameter", 0.0) / max_diameter) if max_diameter > 0 else 0.0 + w = alpha * q_norm + (1 - alpha) * d_norm + data["w"] = float(min(max(w, 1e-6), 1.0)) + + return Gw + + +def apply_hard_constraints(Gw: nx.Graph, cfg: Config) -> nx.Graph: + c = cfg.constraints + + # 1. 표고대 분리 + for u, v, data in Gw.edges(data=True): + eu = Gw.nodes[u].get("elevation", 0.0) + ev = Gw.nodes[v].get("elevation", 0.0) + if abs(eu - ev) > c.elevation_band_m: + data["w"] *= 0.1 + + # 2. 대수용가 (base_demand는 SI[m3/s], 기준값은 L/s로 주어짐) + threshold_m3s = c.large_consumer_demand_lps / 1000.0 + large_consumers = { + n for n, ndata in Gw.nodes(data=True) if ndata.get("base_demand", 0.0) >= threshold_m3s + } + for n in Gw.nodes: + Gw.nodes[n]["is_large_consumer"] = n in large_consumers + + factor = 0.1 if c.large_consumer_policy == "isolate" else 5.0 + for n in large_consumers: + for _, _, data in Gw.edges(n, data=True): + data["w"] *= factor + + # 3. 수원 분리: Reservoir/Tank 노드쌍 간 최단경로(연장 기준) 상 엣지 + if c.sources_in_separate_blocks: + sources = [n for n, ndata in Gw.nodes(data=True) if ndata.get("node_type") in ("Reservoir", "Tank")] + for i, s1 in enumerate(sources): + for s2 in sources[i + 1 :]: + if not nx.has_path(Gw, s1, s2): + continue + path = nx.shortest_path(Gw, s1, s2, weight="length") + for a, b in zip(path[:-1], path[1:]): + Gw[a][b]["w"] *= 0.5 + + for _, _, data in Gw.edges(data=True): + data["w"] = float(min(max(data["w"], 1e-6), 1.0)) + + return Gw diff --git a/backend/blocksys/io.py b/backend/blocksys/io.py new file mode 100644 index 0000000..84eaaf0 --- /dev/null +++ b/backend/blocksys/io.py @@ -0,0 +1,122 @@ +"""Step 1 — EPANET 모델 로드 및 단순 그래프 변환.""" + +from __future__ import annotations + +import logging +from dataclasses import dataclass +from pathlib import Path +from typing import Optional + +import networkx as nx +import pandas as pd +import wntr + +logger = logging.getLogger(__name__) + + +@dataclass +class NetworkBundle: + wn: "wntr.network.WaterNetworkModel" + graph: nx.Graph + isolated_nodes: list[str] + connectivity_warning: Optional[str] = None + + +def load_network(inp_path: str | Path, connections_csv: Optional[str | Path] = None) -> NetworkBundle: + wn = wntr.network.WaterNetworkModel(str(inp_path)) + + G = _build_simple_graph(wn) + _inject_node_attributes(wn, G) + _load_connections(G, connections_csv) + + isolated = [n for n in G.nodes if G.degree(n) == 0] + if isolated: + logger.warning("%d개 노드가 어떤 관로에도 연결되어 있지 않습니다: %s", len(isolated), isolated[:10]) + + connectivity_warning = None + if G.number_of_nodes() > 0 and not nx.is_connected(G): + n_components = nx.number_connected_components(G) + connectivity_warning = f"네트워크가 {n_components}개의 연결되지 않은 구성요소로 나뉘어 있습니다" + logger.warning(connectivity_warning) + + return NetworkBundle(wn=wn, graph=G, isolated_nodes=isolated, connectivity_warning=connectivity_warning) + + +def _build_simple_graph(wn: "wntr.network.WaterNetworkModel") -> nx.Graph: + multi = wn.to_graph() # MultiDiGraph, 노드 좌표 등 기본 속성 포함 + + G = nx.Graph() + G.add_nodes_from(multi.nodes) + + grouped: dict[tuple[str, str], list[str]] = {} + for u, v, key in multi.edges(keys=True): + pair = (u, v) if u <= v else (v, u) + grouped.setdefault(pair, []).append(key) + + for (u, v), link_names in grouped.items(): + lengths, diameters, roughness = [], [], [] + for name in link_names: + link = wn.get_link(name) + lengths.append(getattr(link, "length", 0.0) or 0.0) + diameters.append(getattr(link, "diameter", 0.0) or 0.0) + roughness.append(getattr(link, "roughness", 0.0) or 0.0) + + if len(link_names) == 1: + length, diameter, rough = lengths[0], diameters[0], roughness[0] + else: + # 병렬관 등가화: 단면적(D^2) 합산 기준 등가관경, 연장은 최단 경로 기준 최소값. + # 실제 수리해석은 원본 wn(EPANET 엔진)으로 수행하므로 여기서는 분할 가중치용 근사치. + length = min(lengths) if lengths else 0.0 + diameter = (sum(d**2 for d in diameters)) ** 0.5 if diameters else 0.0 + rough = max(roughness) if roughness else 0.0 + + G.add_edge(u, v, length=length, diameter=diameter, roughness=rough, pipe_ids=list(link_names)) + + return G + + +def _inject_node_attributes(wn: "wntr.network.WaterNetworkModel", G: nx.Graph) -> None: + for node_name in G.nodes: + node = wn.get_node(node_name) + + elevation = getattr(node, "elevation", None) + if elevation is None: + elevation = getattr(node, "base_head", 0.0) # Reservoir + + base_demand = 0.0 + for demand in getattr(node, "demand_timeseries_list", []) or []: + base_demand += demand.base_value + + G.nodes[node_name]["elevation"] = float(elevation or 0.0) + G.nodes[node_name]["base_demand"] = float(base_demand) + G.nodes[node_name]["coordinates"] = node.coordinates + G.nodes[node_name]["node_type"] = type(node).__name__ + G.nodes[node_name]["connections"] = None + G.nodes[node_name]["is_large_consumer_csv"] = False + + +def _load_connections(G: nx.Graph, connections_csv: Optional[str | Path]) -> None: + if not connections_csv: + logger.warning( + "connections.csv가 제공되지 않았습니다. 급수전수 기반 제약" + "(constraints.connections_per_block)은 이번 실행에서 평가되지 않습니다." + ) + return + + df = pd.read_csv(connections_csv, dtype={"node_id": str}) + missing = {"node_id", "connections"} - set(df.columns) + if missing: + raise ValueError(f"connections.csv에 필수 컬럼이 없습니다: {sorted(missing)}") + + unknown = 0 + for _, row in df.iterrows(): + node_id = str(row["node_id"]) + if node_id not in G.nodes: + unknown += 1 + continue + G.nodes[node_id]["connections"] = float(row["connections"]) + if "is_large_consumer" in df.columns and not pd.isna(row["is_large_consumer"]): + G.nodes[node_id]["is_large_consumer_csv"] = bool(row["is_large_consumer"]) + + if unknown: + logger.warning("connections.csv의 %d개 행이 네트워크 노드와 일치하지 않아 무시되었습니다", unknown) diff --git a/backend/blocksys/partition.py b/backend/blocksys/partition.py new file mode 100644 index 0000000..c4a9ba8 --- /dev/null +++ b/backend/blocksys/partition.py @@ -0,0 +1,64 @@ +"""Step 5 — 블록 분할 (MVP: partition만. balance_check/refine은 범위 밖).""" + +from __future__ import annotations + +import networkx as nx +import numpy as np +from sklearn.cluster import SpectralClustering + +from .config import Config + + +def partition(Gw: nx.Graph, k: int, cfg: Config) -> dict[str, int]: + if k < 1: + raise ValueError(f"k는 1 이상이어야 합니다: {k}") + if Gw.number_of_nodes() < k: + raise ValueError(f"노드 수({Gw.number_of_nodes()})가 k({k})보다 적습니다") + + method = cfg.partition.method + if method == "spectral": + return _partition_spectral(Gw, k) + if method == "louvain": + return _partition_louvain(Gw, k) + raise ValueError(f"알 수 없는 분할 방법: {method}") + + +def _partition_spectral(Gw: nx.Graph, k: int) -> dict[str, int]: + nodes = list(Gw.nodes) + A = nx.to_numpy_array(Gw, nodelist=nodes, weight="w") + np.fill_diagonal(A, 0.0) + + model = SpectralClustering( + n_clusters=k, + affinity="precomputed", + assign_labels="kmeans", + random_state=0, + ) + labels = model.fit_predict(A) + return {n: int(label) for n, label in zip(nodes, labels)} + + +def _partition_louvain(Gw: nx.Graph, k: int, max_steps: int = 30) -> dict[str, int]: + lo, hi = 0.01, 10.0 + best_communities: list[set] | None = None + best_diff = None + + for _ in range(max_steps): + r = (lo + hi) / 2 + communities = nx.community.louvain_communities(Gw, weight="w", resolution=r, seed=0) + n_found = len(communities) + diff = abs(n_found - k) + if best_diff is None or diff < best_diff: + best_diff, best_communities = diff, communities + if n_found == k: + break + if n_found < k: + lo = r + else: + hi = r + + labels: dict[str, int] = {} + for i, community in enumerate(best_communities or []): + for n in community: + labels[n] = i + return labels diff --git a/backend/blocksys/tests/__init__.py b/backend/blocksys/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/blocksys/tests/conftest.py b/backend/blocksys/tests/conftest.py new file mode 100644 index 0000000..8640b85 --- /dev/null +++ b/backend/blocksys/tests/conftest.py @@ -0,0 +1,37 @@ +"""공통 픽스처. wntr 동봉 Net3.inp를 개발용 데이터로 사용 (§7).""" + +from __future__ import annotations + +import pytest +import wntr + +from blocksys.config import Config +from blocksys.graph import apply_hard_constraints, build_weighted_graph +from blocksys.io import load_network +from blocksys.validate import baseline_simulation + +NET3_PATH = wntr.library.model_library.get_filepath("Net3") + + +@pytest.fixture(scope="session") +def cfg() -> Config: + c = Config() + c.hydraulics.duration_hours = 6 # 테스트 속도를 위해 24 -> 6시간으로 단축 + c.hydraulics.timestep_minutes = 60 + return c + + +@pytest.fixture(scope="session") +def bundle(): + return load_network(NET3_PATH) + + +@pytest.fixture(scope="session") +def baseline(bundle, cfg): + return baseline_simulation(bundle.wn, cfg) + + +@pytest.fixture(scope="session") +def weighted_graph(bundle, baseline, cfg): + Gw = build_weighted_graph(bundle.graph, baseline, cfg) + return apply_hard_constraints(Gw, cfg) diff --git a/backend/blocksys/tests/test_boundary.py b/backend/blocksys/tests/test_boundary.py new file mode 100644 index 0000000..2198ca4 --- /dev/null +++ b/backend/blocksys/tests/test_boundary.py @@ -0,0 +1,59 @@ +from __future__ import annotations + +from blocksys.boundary import apply_blocks_to_model, assign_valve_or_meter, find_boundary_links +from blocksys.partition import partition + + +def test_boundary_matches_differing_labels(weighted_graph, cfg): + labels = partition(weighted_graph, 6, cfg) + boundary = find_boundary_links(weighted_graph, labels) + + expected_pairs = { + (u, v) + for u, v in weighted_graph.edges + if u in labels and v in labels and labels[u] != labels[v] + } + actual_pairs = {(b.from_node, b.to_node) for b in boundary} + assert actual_pairs == expected_pairs + + +def test_each_boundary_link_has_a_real_pipe_id(weighted_graph, bundle, cfg): + labels = partition(weighted_graph, 6, cfg) + boundary = find_boundary_links(weighted_graph, labels) + for b in boundary: + assert b.pipe_id in bundle.wn.link_name_list + + +def test_assign_valve_or_meter_gives_every_block_an_inlet(weighted_graph, baseline, cfg): + labels = partition(weighted_graph, 6, cfg) + boundary = find_boundary_links(weighted_graph, labels) + boundary = assign_valve_or_meter(boundary, baseline, inlets_per_block=cfg.boundary.inlets_per_block) + + assert {b.action for b in boundary} <= {"close", "meter"} + + blocks_touched = {b.block_a for b in boundary} | {b.block_b for b in boundary} + for block in blocks_touched: + links = [b for b in boundary if b.block_a == block or b.block_b == block] + assert any(b.action == "meter" for b in links) + + +def test_apply_blocks_to_model_only_closes_marked_links(weighted_graph, bundle, baseline, cfg): + labels = partition(weighted_graph, 6, cfg) + boundary = find_boundary_links(weighted_graph, labels) + boundary = assign_valve_or_meter(boundary, baseline, inlets_per_block=cfg.boundary.inlets_per_block) + + already_closed = { + name for name, link in bundle.wn.links() if str(link.initial_status) == "Closed" + } + wn_blocked = apply_blocks_to_model(bundle.wn, boundary) + + newly_closed_expected = {b.pipe_id for b in boundary if b.action == "close"} + closed_actual = { + name for name, link in wn_blocked.links() if str(link.initial_status) == "Closed" + } + assert closed_actual == already_closed | newly_closed_expected + # 원본 모델은 변경되지 않아야 한다 + assert all( + str(bundle.wn.get_link(pid).initial_status) != "Closed" + for pid in newly_closed_expected - already_closed + ) diff --git a/backend/blocksys/tests/test_graph.py b/backend/blocksys/tests/test_graph.py new file mode 100644 index 0000000..70ccaae --- /dev/null +++ b/backend/blocksys/tests/test_graph.py @@ -0,0 +1,39 @@ +from __future__ import annotations + + +def test_node_preservation(bundle, weighted_graph): + assert set(weighted_graph.nodes) == set(bundle.graph.nodes) + + +def test_edge_preservation(bundle, weighted_graph): + assert weighted_graph.number_of_edges() == bundle.graph.number_of_edges() + + +def test_weight_range(weighted_graph): + weights = [d["w"] for _, _, d in weighted_graph.edges(data=True)] + assert weights, "가중치가 부여된 엣지가 없습니다" + assert all(0.0 < w <= 1.0 for w in weights) + + +def test_large_consumer_edges_suppressed(bundle, weighted_graph, baseline, cfg): + from blocksys.graph import build_weighted_graph + + large_nodes = [n for n, d in weighted_graph.nodes(data=True) if d.get("is_large_consumer")] + if not large_nodes: + return # Net3 기본 설정(5 L/s)에는 대수용가가 없을 수 있음 + + plain = build_weighted_graph(bundle.graph, baseline, cfg) + # 대수용가 인접 엣지는 제약 반영 전보다 가중치가 낮아야 한다(isolate 기본 정책) + for n in large_nodes: + for u, v, d in weighted_graph.edges(n, data=True): + assert d["w"] <= plain[u][v]["w"] + + +def test_reproducibility(bundle, baseline, cfg): + from blocksys.graph import apply_hard_constraints, build_weighted_graph + + g1 = apply_hard_constraints(build_weighted_graph(bundle.graph, baseline, cfg), cfg) + g2 = apply_hard_constraints(build_weighted_graph(bundle.graph, baseline, cfg), cfg) + + for u, v, d in g1.edges(data=True): + assert g2[u][v]["w"] == d["w"] diff --git a/backend/blocksys/tests/test_partition.py b/backend/blocksys/tests/test_partition.py new file mode 100644 index 0000000..c44a577 --- /dev/null +++ b/backend/blocksys/tests/test_partition.py @@ -0,0 +1,46 @@ +from __future__ import annotations + +import networkx as nx +import pytest + +from blocksys.partition import partition + +K_VALUES = [4, 6, 8] + + +@pytest.mark.parametrize("k", K_VALUES) +def test_node_preservation(weighted_graph, cfg, k): + labels = partition(weighted_graph, k, cfg) + assert set(labels.keys()) == set(weighted_graph.nodes) + + +@pytest.mark.parametrize("k", K_VALUES) +def test_block_connectivity(weighted_graph, cfg, k): + labels = partition(weighted_graph, k, cfg) + blocks: dict[int, list] = {} + for n, label in labels.items(): + blocks.setdefault(label, []).append(n) + + for label, nodes in blocks.items(): + sub = weighted_graph.subgraph(nodes) + assert nx.is_connected(sub), f"block {label} is not a single connected component" + + +def test_reproducibility(weighted_graph, cfg): + labels1 = partition(weighted_graph, 6, cfg) + labels2 = partition(weighted_graph, 6, cfg) + assert labels1 == labels2 + + +def test_k_too_large_raises(weighted_graph, cfg): + with pytest.raises(ValueError): + partition(weighted_graph, weighted_graph.number_of_nodes() + 1, cfg) + + +def test_louvain_method(weighted_graph, cfg): + cfg.partition.method = "louvain" + try: + labels = partition(weighted_graph, 6, cfg) + assert set(labels.keys()) == set(weighted_graph.nodes) + finally: + cfg.partition.method = "spectral" diff --git a/backend/blocksys/tests/test_validate.py b/backend/blocksys/tests/test_validate.py new file mode 100644 index 0000000..3ac7dba --- /dev/null +++ b/backend/blocksys/tests/test_validate.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +import math + +from blocksys.boundary import BoundaryLink, apply_blocks_to_model +from blocksys.validate import hydraulic_validation + + +def test_baseline_simulation_has_all_nodes(bundle, baseline): + assert set(baseline.node_pressure_mean.keys()) == set(bundle.wn.node_name_list) + assert set(baseline.link_flow_mean_abs.keys()) == set(bundle.wn.link_name_list) + + +def test_baseline_pressures_are_finite(baseline): + assert all(math.isfinite(v) for v in baseline.node_pressure_mean.values()) + + +def test_hydraulic_validation_runs_on_unmodified_network(bundle, baseline, cfg): + result = hydraulic_validation(bundle.wn, baseline, cfg) + assert result.status in ("ok", "violated") + assert not result.isolated_nodes + + +def test_isolation_is_detected_and_rejected(bundle, baseline, cfg): + graph = bundle.graph + source_names = set(bundle.wn.reservoir_name_list) | set(bundle.wn.tank_name_list) + + leaf = next(n for n in graph.nodes if graph.degree(n) == 1 and n not in source_names) + _, neighbor, edge_data = next(iter(graph.edges(leaf, data=True))) + pipe_id = edge_data["pipe_ids"][0] + + boundary = [ + BoundaryLink( + pipe_id=pipe_id, + from_node=leaf, + to_node=neighbor, + block_a=0, + block_b=1, + action="close", + baseline_flow=0.0, + diameter=0.0, + ) + ] + wn_blocked = apply_blocks_to_model(bundle.wn, boundary) + + result = hydraulic_validation(wn_blocked, baseline, cfg) + assert leaf in result.isolated_nodes + assert result.status == "rejected" + assert result.rejection_reason + + +def test_allow_isolated_nodes_still_simulates(bundle, baseline, cfg): + graph = bundle.graph + source_names = set(bundle.wn.reservoir_name_list) | set(bundle.wn.tank_name_list) + leaf = next(n for n in graph.nodes if graph.degree(n) == 1 and n not in source_names) + _, neighbor, edge_data = next(iter(graph.edges(leaf, data=True))) + pipe_id = edge_data["pipe_ids"][0] + + boundary = [ + BoundaryLink( + pipe_id=pipe_id, from_node=leaf, to_node=neighbor, block_a=0, block_b=1, + action="close", baseline_flow=0.0, diameter=0.0, + ) + ] + wn_blocked = apply_blocks_to_model(bundle.wn, boundary) + + cfg.hydraulics.allow_isolated_nodes = True + try: + result = hydraulic_validation(wn_blocked, baseline, cfg) + assert leaf in result.isolated_nodes + assert result.status == "violated" + finally: + cfg.hydraulics.allow_isolated_nodes = False diff --git a/backend/blocksys/validate.py b/backend/blocksys/validate.py new file mode 100644 index 0000000..6572bf8 --- /dev/null +++ b/backend/blocksys/validate.py @@ -0,0 +1,171 @@ +"""Step 2 — 기준 수리해석, Step 9 — 분할안 수리적 검증.""" + +from __future__ import annotations + +import copy +import logging +import math +from dataclasses import dataclass, field +from typing import Optional + +import networkx as nx +import wntr + +from .config import Config + + +def _run_epanet(wn): + """Run wntr's EPANET simulator in a private temp dir. + + EpanetSimulator writes temp.inp/temp.rpt/temp.bin into the *current + directory* by default, which left stray files in backend/ on every run. + """ + import os + import tempfile + + with tempfile.TemporaryDirectory(prefix="spipe_blocksys_") as tmp: + return wntr.sim.EpanetSimulator(wn).run_sim(file_prefix=os.path.join(tmp, "sim")) + +logger = logging.getLogger(__name__) + + +@dataclass +class BaselineResult: + node_pressure_mean: dict[str, float] + node_pressure_min: dict[str, float] + link_flow_mean_abs: dict[str, float] + link_flow_max_abs: dict[str, float] + node_demand_mean: dict[str, float] + node_age_max: dict[str, float] # hours + + +@dataclass +class ValidationResult: + pressure_low_violations: list[str] = field(default_factory=list) + pressure_high_violations: list[str] = field(default_factory=list) + isolated_nodes: list[str] = field(default_factory=list) + water_age_violations: list[str] = field(default_factory=list) + min_pressure_m: float = math.nan + max_water_age_h: float = math.nan + pressure_drop: dict[str, float] = field(default_factory=dict) + status: str = "ok" # ok | violated | rejected + rejection_reason: Optional[str] = None + + @property + def is_ok(self) -> bool: + return self.status == "ok" + + +def _configure_time(wn: "wntr.network.WaterNetworkModel", cfg: Config) -> None: + duration = cfg.hydraulics.duration_hours * 3600 + step = cfg.hydraulics.timestep_minutes * 60 + wn.options.time.duration = duration + wn.options.time.hydraulic_timestep = step + wn.options.time.report_timestep = step + wn.options.time.quality_timestep = min(wn.options.time.quality_timestep, step) + + +def baseline_simulation(wn: "wntr.network.WaterNetworkModel", cfg: Config) -> BaselineResult: + wn_sim = copy.deepcopy(wn) + _configure_time(wn_sim, cfg) + + results = _run_epanet(wn_sim) + pressure = results.node["pressure"] + flow = results.link["flowrate"].abs() + demand = results.node["demand"] + + return BaselineResult( + node_pressure_mean=pressure.mean().to_dict(), + node_pressure_min=pressure.min().to_dict(), + link_flow_mean_abs=flow.mean().to_dict(), + link_flow_max_abs=flow.max().to_dict(), + node_demand_mean=demand.mean().to_dict(), + node_age_max=_run_water_age(wn, cfg), + ) + + +def _run_water_age(wn: "wntr.network.WaterNetworkModel", cfg: Config) -> dict[str, float]: + wn_age = copy.deepcopy(wn) + _configure_time(wn_age, cfg) + wn_age.options.quality.parameter = "AGE" + + results = _run_epanet(wn_age) + age_hours = results.node["quality"] / 3600.0 # EPANET AGE는 초 단위(SI)로 보고됨 + return age_hours.max().to_dict() + + +def _open_link_graph(wn: "wntr.network.WaterNetworkModel") -> nx.Graph: + G = nx.Graph() + G.add_nodes_from(wn.node_name_list) + for _, link in wn.links(): + if link.initial_status == wntr.network.LinkStatus.Closed: + continue + G.add_edge(link.start_node_name, link.end_node_name) + return G + + +def _find_isolated_nodes(G: nx.Graph, source_names: list[str]) -> list[str]: + sources = [s for s in source_names if s in G] + if not sources: + return [] + reachable: set[str] = set() + for source in sources: + reachable |= nx.node_connected_component(G, source) + return sorted(n for n in G.nodes if n not in reachable) + + +def hydraulic_validation( + wn_blocked: "wntr.network.WaterNetworkModel", + baseline: BaselineResult, + cfg: Config, +) -> ValidationResult: + source_names = list(wn_blocked.reservoir_name_list) + list(wn_blocked.tank_name_list) + isolated = _find_isolated_nodes(_open_link_graph(wn_blocked), source_names) + + if isolated and not cfg.hydraulics.allow_isolated_nodes: + return ValidationResult( + isolated_nodes=isolated, + status="rejected", + rejection_reason=f"{len(isolated)}개 노드가 수원으로부터 고립되었습니다 (구축절차 ④ 위반)", + ) + + try: + wn_sim = copy.deepcopy(wn_blocked) + _configure_time(wn_sim, cfg) + results = _run_epanet(wn_sim) + pressure = results.node["pressure"] + age_max = _run_water_age(wn_blocked, cfg) + except Exception as exc: # EPANET 엔진 수렴 실패 등 + logger.warning("수리해석 실패: %s", exc) + return ValidationResult( + isolated_nodes=isolated, + status="rejected", + rejection_reason=f"수리해석 실패: {exc}", + ) + + pressure_min = pressure.min() + pressure_max = pressure.max() + + pressure_low = sorted(pressure_min[pressure_min < cfg.hydraulics.min_pressure_m].index) + pressure_high = sorted(pressure_max[pressure_max > cfg.hydraulics.max_pressure_m].index) + age_violations = sorted(n for n, v in age_max.items() if v > cfg.hydraulics.max_water_age_hours) + + pressure_min_dict = pressure_min.to_dict() + pressure_drop = { + n: baseline.node_pressure_min[n] - pressure_min_dict[n] + for n in pressure_min_dict + if n in baseline.node_pressure_min + } + + violated = bool(pressure_low or pressure_high or age_violations or (isolated and cfg.hydraulics.allow_isolated_nodes)) + + return ValidationResult( + pressure_low_violations=pressure_low, + pressure_high_violations=pressure_high, + isolated_nodes=isolated, + water_age_violations=age_violations, + min_pressure_m=float(pressure_min.min()) if len(pressure_min) else math.nan, + max_water_age_h=max(age_max.values()) if age_max else math.nan, + pressure_drop=pressure_drop, + status="violated" if violated else "ok", + ) diff --git a/backend/columnar.py b/backend/columnar.py new file mode 100644 index 0000000..a515f6e --- /dev/null +++ b/backend/columnar.py @@ -0,0 +1,72 @@ +"""Compact wire format for /api/analyze results (``?format=columnar``). + +The object format repeats every key per node/link and writes each float as +~18 characters of JSON (9.5 MB for a 2,000-node, 25-step network). Here the +time series are packed per variable into one little-endian float64 array per +element kind, base64-encoded (~10.7 bytes per value), so full double precision +is kept -- the Native-vs-WASM comparison tolerances (rel 1e-8) still apply. + +Layout of each packed series: element-major, i.e. element ``i``'s values are +``data[i * steps:(i + 1) * steps]`` in the order of ``ids``. +src/api.ts (decodeColumnarResult) turns it back into the object format. +""" +import base64 +import sys +from array import array + +FORMAT = "spipe-columnar-1" +NODE_SERIES = ("demand", "head", "pressure", "quality") +LINK_SERIES = ("flow", "velocity", "headloss", "quality") +PUMP_FIELDS = ("energy", "efficiency", "totalKwh", "peakKw", "avgKw", "utilization") + + +def _pack(items: dict, ids: list, key: str, steps: int): + """Packed base64 series, or None when any element lacks a full series + (e.g. no water-quality run) -- the decoder then leaves it empty.""" + flat = array("d") + for element_id in ids: + series = items[element_id]["timeSeries"].get(key) or [] + if len(series) != steps: + return None + flat.extend(series) + if sys.byteorder != "little": + flat.byteswap() + return base64.b64encode(flat.tobytes()).decode("ascii") + + +def to_columnar(result: dict) -> dict: + steps = len(result.get("timeSteps") or []) + nodes, links = result["nodes"], result["links"] + node_ids, link_ids = list(nodes), list(links) + + # Pump series and the pump's scalar fields (initial energy/efficiency, kWh + # totals) use distinct keys -- they share names in the object format. + pumps = { + lid: { + "energySeries": links[lid]["timeSeries"].get("energy") or [], + "efficiencySeries": links[lid]["timeSeries"].get("efficiency") or [], + **{f: links[lid].get(f) for f in PUMP_FIELDS if f in links[lid]}, + } + for lid in link_ids + if "totalKwh" in links[lid] + } + + return { + "format": FORMAT, + **{k: v for k, v in result.items() if k not in ("nodes", "links")}, + "nodes": { + "ids": node_ids, + "types": [nodes[i]["type"] for i in node_ids], + "coordinates": [nodes[i]["coordinates"] for i in node_ids], + "series": {k: _pack(nodes, node_ids, k, steps) for k in NODE_SERIES}, + }, + "links": { + "ids": link_ids, + "types": [links[i]["type"] for i in link_ids], + "fromNodes": [links[i]["fromNode"] for i in link_ids], + "toNodes": [links[i]["toNode"] for i in link_ids], + "vertices": [links[i]["vertices"] for i in link_ids], + "series": {k: _pack(links, link_ids, k, steps) for k in LINK_SERIES}, + "pumps": pumps, + }, + } diff --git a/backend/dem.py b/backend/dem.py new file mode 100644 index 0000000..2cbe982 --- /dev/null +++ b/backend/dem.py @@ -0,0 +1,432 @@ +"""DEM (digital elevation model) store: upload once, preview, sample, build from points. + +Rasters are kept under SPIPE_DEM_DIR (default: /data/dem) as GeoTIFF, +keyed by a random id; only the newest SPIPE_DEM_KEEP files are retained. +Elevations are returned in the raster's own units (normally metres). +""" +from __future__ import annotations + +import json +import os +import shutil +import uuid +import warnings +import zipfile +from pathlib import Path + +import numpy as np +import rasterio +import shapely +import shapely.geometry +from rasterio.enums import Resampling +from rasterio.io import MemoryFile +from rasterio.transform import from_origin +from pyproj import CRS, Transformer + +from .batch import BatchError + +DEM_DIR = Path(os.environ.get("SPIPE_DEM_DIR", Path(__file__).resolve().parents[1] / "data" / "dem")) +DEM_KEEP = int(os.environ.get("SPIPE_DEM_KEEP", "8")) +RASTER_EXTENSIONS = (".tif", ".tiff", ".asc", ".img", ".dem", ".bil", ".flt", ".hgt", ".vrt") +MAX_CELLS_FROM_POINTS = 25_000_000 +_ID_OK = set("0123456789abcdef") + + +def _path(dem_id: str) -> Path: + if len(dem_id) != 32 or not set(dem_id) <= _ID_OK: + raise BatchError("DEM id가 올바르지 않습니다.") + p = DEM_DIR / f"{dem_id}.tif" + if not p.exists(): + raise BatchError("DEM을 찾을 수 없습니다. 다시 불러오세요 (서버가 오래된 DEM을 정리했을 수 있습니다).") + return p + + +def _trim() -> None: + files = sorted(DEM_DIR.glob("*.tif"), key=lambda p: p.stat().st_mtime, reverse=True) + for old in files[DEM_KEEP:]: + old.unlink(missing_ok=True) + old.with_suffix(".json").unlink(missing_ok=True) + + +def _crs_of(user: str | None) -> CRS: + if not user: + raise BatchError("좌표계가 필요합니다 (로컬 좌표계에서는 DEM을 쓸 수 없습니다).") + try: + return CRS.from_user_input(user) + except Exception as e: # pyproj raises several types + raise BatchError(f"좌표계를 읽을 수 없습니다: {user[:60]}") from e + + +def _info(dem_id: str, src, name: str) -> dict: + if src.crs is None: + raise BatchError("DEM에 좌표계 정보가 없습니다 (.prj 또는 GeoTIFF 좌표계를 넣어 주세요).") + band = src.read(1, masked=True, out_shape=(min(src.height, 1024), min(src.width, 1024)), resampling=Resampling.nearest) + to_wgs = Transformer.from_crs(src.crs, "EPSG:4326", always_xy=True) + l, b, r, t = src.bounds + corners = [list(to_wgs.transform(x, y)) for x, y in ((l, t), (r, t), (r, b), (l, b))] + return { + "id": dem_id, + "name": name, + "crs": src.crs.to_string(), + "width": src.width, + "height": src.height, + "resolution": [abs(src.res[0]), abs(src.res[1])], + "bounds": [l, b, r, t], + "corners": corners, + "min": float(band.min()) if band.count() else None, + "max": float(band.max()) if band.count() else None, + "nodata": src.nodata, + } + + +def _store(src_path: str, name: str) -> dict: + DEM_DIR.mkdir(parents=True, exist_ok=True) + dem_id = uuid.uuid4().hex + out = DEM_DIR / f"{dem_id}.tif" + try: + with rasterio.open(src_path) as src: + if src.count < 1: + raise BatchError("래스터 밴드가 없습니다.") + profile = src.profile.copy() + profile.update(driver="GTiff", count=1, compress="deflate", tiled=True, blockxsize=256, blockysize=256, BIGTIFF="IF_SAFER") + if src.width < 256 or src.height < 256: + profile.update(tiled=False) + profile.pop("blockxsize", None) + profile.pop("blockysize", None) + with rasterio.open(out, "w", **profile) as dst: + for _, window in src.block_windows(1): + dst.write(src.read(1, window=window), 1, window=window) + with rasterio.open(out) as src: + info = _info(dem_id, src, name) + except rasterio.errors.RasterioIOError as e: + out.unlink(missing_ok=True) + raise BatchError(f"래스터를 읽을 수 없습니다: {e}") from e + except BatchError: + out.unlink(missing_ok=True) + raise + out.with_suffix(".json").write_text(json.dumps(info, ensure_ascii=False), encoding="utf-8") + _trim() + return info + + +def import_dem(upload_path: str, filename: str) -> dict: + """Store an uploaded raster (or a zip holding one, e.g. ASC + PRJ) as a DEM.""" + ext = os.path.splitext(filename.lower())[1] + if ext == ".zip": + try: + with zipfile.ZipFile(upload_path) as z: + names = [n for n in z.namelist() if os.path.splitext(n.lower())[1] in RASTER_EXTENSIONS and not n.startswith("__MACOSX")] + except zipfile.BadZipFile as e: + raise BatchError("zip 파일이 손상되었습니다.") from e + if not names: + raise BatchError(f"zip 안에 래스터({', '.join(RASTER_EXTENSIONS)})가 없습니다.") + return _store("/vsizip/" + upload_path.replace("\\", "/") + "/" + names[0], filename) + if ext not in RASTER_EXTENSIONS: + raise BatchError(f"지원하지 않는 형식입니다: {ext} (GeoTIFF, ASC, IMG 또는 이를 담은 zip)") + # GDAL picks the driver from the extension; keep it on the temp copy. + named = upload_path + ext + shutil.copyfile(upload_path, named) + try: + return _store(named, filename) + finally: + os.remove(named) + + +def dem_info(dem_id: str) -> dict: + p = _path(dem_id) + return json.loads(p.with_suffix(".json").read_text(encoding="utf-8")) + + +def preview_png(dem_id: str, max_size: int = 1600) -> bytes: + """Hillshaded colour relief, transparent where there is no data.""" + with rasterio.open(_path(dem_id)) as src: + k = max(1, int(np.ceil(max(src.width, src.height) / max_size))) + h, w = max(1, src.height // k), max(1, src.width // k) + z = src.read(1, masked=True, out_shape=(h, w), resampling=Resampling.bilinear).astype("float64") + cell = abs(src.res[0]) * src.width / w + geographic = src.crs and src.crs.is_geographic + if geographic: + cell *= 111_000 + mask = np.ma.getmaskarray(z) + zf = z.filled(np.nan) + lo, hi = np.nanpercentile(zf, [2, 98]) if np.isfinite(zf).any() else (0.0, 1.0) + t = np.clip((zf - lo) / max(hi - lo, 1e-9), 0, 1) + # Green -> yellow -> brown -> white elevation ramp. + stops = np.array([[0.0, 64, 140, 80], [0.35, 190, 200, 110], [0.7, 160, 110, 60], [1.0, 245, 245, 240]]) + rgb = np.stack([np.interp(np.nan_to_num(t), stops[:, 0], stops[:, c]) for c in (1, 2, 3)]) + gy, gx = np.gradient(np.nan_to_num(zf, nan=float(np.nanmean(zf)) if np.isfinite(zf).any() else 0.0), cell) + slope = np.arctan(np.hypot(gx, gy)) + aspect = np.arctan2(-gx, gy) + az, alt = np.radians(315), np.radians(45) + shade = np.clip(np.sin(alt) * np.cos(slope) + np.cos(alt) * np.sin(slope) * np.cos(az - aspect), 0, 1) + rgb = rgb * (0.55 + 0.45 * shade) + alpha = np.where(mask | ~np.isfinite(zf), 0, 255) + img = np.concatenate([rgb, alpha[None]]).clip(0, 255).astype("uint8") + with warnings.catch_warnings(): + warnings.simplefilter("ignore", rasterio.errors.NotGeoreferencedWarning) # a plain image + with MemoryFile() as mem: + with mem.open(driver="PNG", width=w, height=h, count=4, dtype="uint8") as dst: + dst.write(img) + return mem.read() + + +def sample(dem_id: str, points: list, points_crs: str | None) -> list: + """Bilinear DEM values at [x, y] points given in `points_crs` (None outside / no data).""" + if not points: + return [] + pts = np.asarray(points, dtype="float64").reshape(-1, 2) + with rasterio.open(_path(dem_id)) as src: + tr = Transformer.from_crs(_crs_of(points_crs), src.crs, always_xy=True) + xs, ys = tr.transform(pts[:, 0], pts[:, 1]) + inv = ~src.transform + xs, ys = np.asarray(xs), np.asarray(ys) + cols, rows = inv.a * xs + inv.b * ys + inv.c, inv.d * xs + inv.e * ys + inv.f + # pixel centres sit at +0.5 + cols, rows = np.asarray(cols) - 0.5, np.asarray(rows) - 0.5 + ok = np.isfinite(cols) & np.isfinite(rows) & (cols >= -0.5) & (rows >= -0.5) & (cols <= src.width - 0.5) & (rows <= src.height - 0.5) + out: list = [None] * len(pts) + if not ok.any(): + return out + c0 = int(max(0, np.floor(cols[ok].min()))); c1 = int(min(src.width - 1, np.floor(cols[ok].max()) + 1)) + r0 = int(max(0, np.floor(rows[ok].min()))); r1 = int(min(src.height - 1, np.floor(rows[ok].max()) + 1)) + win = rasterio.windows.Window(c0, r0, c1 - c0 + 1, r1 - r0 + 1) + if win.width * win.height > 400_000_000: + raise BatchError("지점들이 너무 넓게 퍼져 있습니다. 나눠서 실행하세요.") + z = src.read(1, window=win, masked=True).astype("float64").filled(np.nan) + for k in np.where(ok)[0]: + c, r = cols[k] - c0, rows[k] - r0 + ci, ri = int(np.clip(np.floor(c), 0, z.shape[1] - 1)), int(np.clip(np.floor(r), 0, z.shape[0] - 1)) + cj, rj = min(ci + 1, z.shape[1] - 1), min(ri + 1, z.shape[0] - 1) + fc, fr = float(np.clip(c - ci, 0, 1)), float(np.clip(r - ri, 0, 1)) + q = np.array([z[ri, ci], z[ri, cj], z[rj, ci], z[rj, cj]]) + wts = np.array([(1 - fc) * (1 - fr), fc * (1 - fr), (1 - fc) * fr, fc * fr]) + good = np.isfinite(q) & (wts > 0) + if good.any(): + out[k] = round(float(np.sum(q[good] * wts[good]) / np.sum(wts[good])), 3) + elif np.isfinite(q[0]): + out[k] = round(float(q[0]), 3) + return out + + +def from_points(points: list, points_crs: str | None, cell: float, name: str = "점 표고 DEM", target_crs: str | None = None) -> dict: + """TIN-style DEM: linear interpolation over the Delaunay triangulation of [x, y, z] points.""" + from scipy.interpolate import LinearNDInterpolator + + pts = np.asarray(points, dtype="float64").reshape(-1, 3) + pts = pts[np.all(np.isfinite(pts), axis=1)] + if len(pts) < 3: + raise BatchError("표고 점이 3개 이상 필요합니다.") + crs = _crs_of(points_crs) + if target_crs: + # e.g. GIS points arrive in WGS84; grid them in the model's plane CRS. + dst = _crs_of(target_crs) + x, y = Transformer.from_crs(crs, dst, always_xy=True).transform(pts[:, 0], pts[:, 1]) + pts = np.column_stack([x, y, pts[:, 2]]) + crs = dst + if crs.is_geographic: + raise BatchError("경위도 좌표계 점으로는 만들 수 없습니다. 평면 좌표계를 쓰세요.") + if not (cell > 0): + raise BatchError("격자 크기는 0보다 커야 합니다.") + x0, y0 = pts[:, 0].min(), pts[:, 1].min() + x1, y1 = pts[:, 0].max(), pts[:, 1].max() + w, h = int(np.ceil((x1 - x0) / cell)) + 1, int(np.ceil((y1 - y0) / cell)) + 1 + if w * h > MAX_CELLS_FROM_POINTS: + raise BatchError(f"격자가 너무 큽니다 ({w}x{h}). 격자 크기를 키우세요.") + try: + interp = LinearNDInterpolator(pts[:, :2], pts[:, 2]) + except Exception as e: # Qhull errors on collinear input + raise BatchError("점들이 한 줄 위에 있어 삼각망을 만들 수 없습니다.") from e + gx = x0 + (np.arange(w) + 0.5) * cell + gy = y1 - (np.arange(h) + 0.5) * cell + xx, yy = np.meshgrid(gx, gy) + z = interp(xx, yy).astype("float32") + nodata = -9999.0 + z[~np.isfinite(z)] = nodata + DEM_DIR.mkdir(parents=True, exist_ok=True) + tmp = DEM_DIR / f"tmp_{uuid.uuid4().hex}.tif" + with rasterio.open(tmp, "w", driver="GTiff", width=w, height=h, count=1, dtype="float32", crs=crs.to_wkt(), + transform=from_origin(x0, y1, cell, cell), nodata=nodata, compress="deflate") as dst: + dst.write(z, 1) + try: + return _store(str(tmp), name) + finally: + tmp.unlink(missing_ok=True) + + +def terrain_tile(dem_id: str, z: int, x: int, y: int) -> bytes: + """Web-mercator XYZ tile of the DEM in Mapbox/MapLibre 'terrarium' encoding + (elevation = R*256 + G + B/256 - 32768).""" + from rasterio.warp import reproject + + if not (0 <= z <= 18 and 0 <= x < 2 ** z and 0 <= y < 2 ** z): + raise BatchError("타일 번호가 올바르지 않습니다.") + size = 256 + world = 20037508.342789244 + span = 2 * world / 2 ** z + x0, y1 = -world + x * span, world - y * span + dst = np.full((size, size), np.nan, dtype="float32") + with rasterio.open(_path(dem_id)) as src: + reproject( + source=rasterio.band(src, 1), destination=dst, + dst_transform=from_origin(x0, y1, span / size, span / size), dst_crs="EPSG:3857", + dst_nodata=np.nan, resampling=Resampling.bilinear, + ) + # Outside the DEM: its lowest value, so the terrain does not drop to sea level in a cliff. + fill = float(np.nanmin(dst)) if np.isfinite(dst).any() else float(dem_info(dem_id).get("min") or 0.0) + v = np.nan_to_num(dst, nan=fill).astype("float64") + 32768.0 + r = np.floor(v / 256) + g = np.floor(v - r * 256) + b = np.floor((v - r * 256 - g) * 256) + img = np.stack([r, g, b]).clip(0, 255).astype("uint8") + with warnings.catch_warnings(): + warnings.simplefilter("ignore", rasterio.errors.NotGeoreferencedWarning) + with MemoryFile() as mem: + with mem.open(driver="PNG", width=size, height=size, count=3, dtype="uint8") as d: + d.write(img) + return mem.read() + + +# ---------------------------------------------------------------- hydrology (유역·하천) + +MAX_HYDRO_CELLS = 1_000_000 +_D8 = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)] + + +def _hydro_grid(dem_id: str): + """DEM (downsampled to <= MAX_HYDRO_CELLS) -> D8 receivers and flow accumulation + on a priority-flood filled surface (pits and flats drain).""" + import heapq + + with rasterio.open(_path(dem_id)) as src: + k = max(1, int(np.ceil(np.sqrt(src.width * src.height / MAX_HYDRO_CELLS)))) + h, w = max(2, src.height // k), max(2, src.width // k) + z = src.read(1, masked=True, out_shape=(h, w), resampling=Resampling.average).astype("float64") + transform = src.transform @ src.transform.scale(src.width / w, src.height / h) + crs = src.crs + if crs.is_geographic: + raise BatchError("유역 분석에는 평면 좌표계 DEM이 필요합니다.") + valid = ~np.ma.getmaskarray(z) + filled = np.where(valid, z.filled(np.nan), np.inf) + done = ~valid.copy() + heap: list = [] + edge = np.zeros_like(valid) + edge[0, :] = edge[-1, :] = edge[:, 0] = edge[:, -1] = True + pad = np.pad(~valid, 1, constant_values=True) + near_nodata = np.zeros_like(valid) + for dr, dc in _D8: + near_nodata |= pad[1 + dr:1 + dr + h, 1 + dc:1 + dc + w] + for r, c in zip(*np.where(valid & (edge | near_nodata))): + heapq.heappush(heap, (filled[r, c], int(r), int(c))) + done[r, c] = True + eps = 1e-4 + order = [] + while heap: + e, r, c = heapq.heappop(heap) + order.append(r * w + c) + for dr, dc in _D8: + rr, cc = r + dr, c + dc + if 0 <= rr < h and 0 <= cc < w and not done[rr, cc]: + done[rr, cc] = True + filled[rr, cc] = max(filled[rr, cc], e + eps) + heapq.heappush(heap, (filled[rr, cc], rr, cc)) + n = h * w + flat = filled.ravel() + recv = np.full(n, -1, dtype=np.int64) + best = np.zeros(n) + cell = abs(transform.a) + rows, cols = np.divmod(np.arange(n), w) + for dr, dc in _D8: + rr, cc = rows + dr, cols + dc + ok = (rr >= 0) & (rr < h) & (cc >= 0) & (cc < w) + nb = np.where(ok, rr * w + cc, 0) + with np.errstate(invalid="ignore"): + drop = np.where(ok, (flat - flat[nb]) / (cell * np.hypot(dr, dc)), -np.inf) + drop[~np.isfinite(drop)] = -np.inf + take = drop > best + best[take] = drop[take] + recv[take] = nb[take] + acc = valid.ravel().astype("float64") + for i in reversed(order): # from the highest cell down + j = recv[i] + if j >= 0: + acc[j] += acc[i] + return {"h": h, "w": w, "recv": recv, "acc": acc, "transform": transform, "crs": crs, "cell_area": abs(transform.a * transform.e)} + + +def streams(dem_id: str, min_area_km2: float) -> dict: + """Stream lines (WGS84 GeoJSON): cells draining at least `min_area_km2`.""" + g = _hydro_grid(dem_id) + thr = max(2.0, min_area_km2 * 1e6 / g["cell_area"]) + w, tr = g["w"], g["transform"] + idx = np.where((g["acc"] >= thr) & (g["recv"] >= 0))[0] + if len(idx) > 300_000: + raise BatchError("하천 셀이 너무 많습니다. 최소 유역 면적을 키우세요.") + if not len(idx): + return {"type": "FeatureCollection", "features": []} + + def xy(i): + r, c = divmod(int(i), w) + return tr @ (c + 0.5, r + 0.5) + + segs = np.array([shapely.LineString([xy(i), xy(g["recv"][i])]) for i in idx], dtype=object) + merged = shapely.get_parts(shapely.line_merge(shapely.union_all(segs))) + to_wgs = Transformer.from_crs(g["crs"], "EPSG:4326", always_xy=True) + pts = shapely.points([xy(i) for i in idx]) + tree = shapely.STRtree(pts) + acc_at = g["acc"][idx] + feats = [] + for line in merged: + near = tree.query(line, predicate="dwithin", distance=abs(tr.a) * 0.6) + area = float(acc_at[near].max() * g["cell_area"] / 1e6) if len(near) else 0.0 + coords = np.asarray(line.coords) + x, y = to_wgs.transform(coords[:, 0], coords[:, 1]) + feats.append({"type": "Feature", "properties": {"area_km2": round(area, 3), "length_m": round(float(line.length), 1)}, + "geometry": {"type": "LineString", "coordinates": [[float(a), float(b)] for a, b in zip(x, y)]}}) + return {"type": "FeatureCollection", "features": feats} + + +def watershed(dem_id: str, points: list, points_crs: str | None, snap_m: float = 50.0) -> dict: + """Catchment polygon upstream of each pour point (snapped to the largest flow within snap_m).""" + from rasterio import features as rfeatures + + g = _hydro_grid(dem_id) + h, w, tr = g["h"], g["w"], g["transform"] + to_dem = Transformer.from_crs(_crs_of(points_crs), g["crs"], always_xy=True) + to_wgs = Transformer.from_crs(g["crs"], "EPSG:4326", always_xy=True) + order = np.argsort(g["recv"], kind="stable") + recv_sorted = g["recv"][order] + inv = ~tr + rad = max(1, int(round(snap_m / abs(tr.a)))) + acc2 = g["acc"].reshape(h, w) + feats = [] + for k, p in enumerate(points): + x, y = to_dem.transform(float(p[0]), float(p[1])) + c = inv.a * x + inv.b * y + inv.c + r = inv.d * x + inv.e * y + inv.f + r, c = int(r), int(c) + if not (0 <= r < h and 0 <= c < w): + continue + r0, r1, c0, c1 = max(0, r - rad), min(h, r + rad + 1), max(0, c - rad), min(w, c + rad + 1) + win = acc2[r0:r1, c0:c1] + rr, cc = np.unravel_index(int(np.argmax(win)), win.shape) + start = (r0 + rr) * w + (c0 + cc) + mask = np.zeros(h * w, dtype=bool) + mask[start] = True + stack = [start] + while stack: + j = stack.pop() + lo = np.searchsorted(recv_sorted, j, "left") + hi = np.searchsorted(recv_sorted, j, "right") + for i in order[lo:hi]: + if not mask[i]: + mask[i] = True + stack.append(int(i)) + m2 = mask.reshape(h, w) + polys = [shapely.geometry.shape(geom) for geom, val in rfeatures.shapes(m2.astype("uint8"), mask=m2, transform=tr) if val == 1] + if not polys: + continue + poly = shapely.union_all(np.array(polys, dtype=object)) + poly = shapely.transform(poly, lambda a: np.column_stack(to_wgs.transform(a[:, 0], a[:, 1]))) + feats.append({"type": "Feature", "properties": {"point": k, "area_km2": round(float(mask.sum() * g["cell_area"] / 1e6), 4)}, + "geometry": shapely.geometry.mapping(poly)}) + return {"type": "FeatureCollection", "features": feats} diff --git a/backend/epanet.py b/backend/epanet.py new file mode 100644 index 0000000..b8388b8 --- /dev/null +++ b/backend/epanet.py @@ -0,0 +1,266 @@ +import ctypes +import os + + +class EN: + # EN_CountType + NODECOUNT = 0 + LINKCOUNT = 2 + + # EN_NodeProperty + ELEVATION = 0 + BASEDEMAND = 1 + EMITTER = 3 + TANKLEVEL = 8 + DEMAND = 9 + HEAD = 10 + PRESSURE = 11 + QUALITY = 12 + # EN_LinkProperty + DIAMETER = 0 + LENGTH = 1 + ROUGHNESS = 2 + INITSTATUS = 4 + INITSETTING = 5 + KWALL = 7 + STATUS = 11 + SETTING = 12 + FLOW = 8 + VELOCITY = 9 + HEADLOSS = 10 + ENERGY = 13 + LINKQUAL = 14 + PUMP_EFFIC = 17 + # EN_InitHydOption + NOSAVE = 0 + SAVE = 1 + + # EN_Option + PRESS_UNITS = 25 + + # EN_TimeParameter + DURATION = 0 + HYDSTEP = 1 + REPORTSTEP = 5 + REPORTSTART = 6 + + # EN_TimeParameter (cont.) + PATTERNSTEP = 3 + PATTERNSTART = 4 + + # EN_ControlType + TIMER = 2 + + # EN_QualityType / quality time step + QUAL_TRACE = 3 + QUALSTEP = 2 + + # EN_Option (energy) + GLOBALEFFIC = 8 + GLOBALPRICE = 9 + GLOBALPATTERN = 10 + DEMANDCHARGE = 11 + + # EN_LinkProperty (pump energy) + PUMP_ECOST = 21 + PUMP_EPAT = 22 + + # EN_NodeType / EN_LinkType + JUNCTION = 0 + RESERVOIR = 1 + TANK = 2 + CVPIPE = 0 + PIPE = 1 + PUMP = 2 + +FLOW_UNITS = { + 0: "CFS", 1: "GPM", 2: "MGD", 3: "IMGD", 4: "AFD", + 5: "LPS", 6: "LPM", 7: "MLD", 8: "CMH", 9: "CMD", 10: "CMS" +} + +PRESS_UNITS = { + 0: "psi", 1: "kPa", 2: "m", 3: "bar", 4: "ft" +} +QUAL_TYPES = { + 0: "NONE", 1: "CHEMICAL", 2: "AGE", 3: "TRACE" +} + + +class EpanetException(Exception): + pass + +class EpanetAPI: + def __init__(self): + library_name = "epanet2.dll" if os.name == "nt" else "libepanet2.so" + dll_path = os.environ.get("EPANET_LIBRARY_PATH") or os.path.join(os.path.dirname(os.path.dirname(__file__)), "64bit", library_name) + if not os.path.exists(dll_path): + raise RuntimeError(f"DLL not found: {dll_path}") + + self.lib = ctypes.CDLL(dll_path) + self.EN_Project = ctypes.c_void_p + self._setup() + + def _setup(self): + def _errcheck(result, func, args): + if result > 10: + err_msg = ctypes.create_string_buffer(256) + self.lib.EN_geterror(result, err_msg, 256) + raise EpanetException(f"EPANET Error {result}: {err_msg.value.decode('utf-8').strip()}") + return result + + self.lib.EN_geterror.argtypes = [ctypes.c_int, ctypes.c_char_p, ctypes.c_int] + self.lib.EN_geterror.restype = ctypes.c_int + + self.lib.EN_getversion.argtypes = [ctypes.POINTER(ctypes.c_int)] + self.lib.EN_getversion.restype = ctypes.c_int + self.lib.EN_getversion.errcheck = _errcheck + + self.lib.EN_createproject.argtypes = [ctypes.POINTER(self.EN_Project)] + self.lib.EN_createproject.restype = ctypes.c_int + self.lib.EN_createproject.errcheck = _errcheck + + self.lib.EN_deleteproject.argtypes = [self.EN_Project] + self.lib.EN_deleteproject.restype = ctypes.c_int + self.lib.EN_deleteproject.errcheck = _errcheck + + self.lib.EN_open.argtypes = [self.EN_Project, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p] + self.lib.EN_open.restype = ctypes.c_int + self.lib.EN_open.errcheck = _errcheck + + self.lib.EN_close.argtypes = [self.EN_Project] + self.lib.EN_close.restype = ctypes.c_int + self.lib.EN_close.errcheck = _errcheck + + self.lib.EN_getcount.argtypes = [self.EN_Project, ctypes.c_int, ctypes.POINTER(ctypes.c_int)] + self.lib.EN_getcount.restype = ctypes.c_int + self.lib.EN_getcount.errcheck = _errcheck + + self.lib.EN_getnodeid.argtypes = [self.EN_Project, ctypes.c_int, ctypes.c_char_p] + self.lib.EN_getnodeid.restype = ctypes.c_int + self.lib.EN_getnodeid.errcheck = _errcheck + + self.lib.EN_getnodetype.argtypes = [self.EN_Project, ctypes.c_int, ctypes.POINTER(ctypes.c_int)] + self.lib.EN_getnodetype.restype = ctypes.c_int + self.lib.EN_getnodetype.errcheck = _errcheck + + self.lib.EN_getnodevalue.argtypes = [self.EN_Project, ctypes.c_int, ctypes.c_int, ctypes.POINTER(ctypes.c_double)] + self.lib.EN_getnodevalue.restype = ctypes.c_int + self.lib.EN_getnodevalue.errcheck = _errcheck + + self.lib.EN_getcoord.argtypes = [self.EN_Project, ctypes.c_int, ctypes.POINTER(ctypes.c_double), ctypes.POINTER(ctypes.c_double)] + self.lib.EN_getcoord.restype = ctypes.c_int + self.lib.EN_getcoord.errcheck = _errcheck + + self.lib.EN_getlinkid.argtypes = [self.EN_Project, ctypes.c_int, ctypes.c_char_p] + self.lib.EN_getlinkid.restype = ctypes.c_int + self.lib.EN_getlinkid.errcheck = _errcheck + + self.lib.EN_getlinktype.argtypes = [self.EN_Project, ctypes.c_int, ctypes.POINTER(ctypes.c_int)] + self.lib.EN_getlinktype.restype = ctypes.c_int + self.lib.EN_getlinktype.errcheck = _errcheck + + self.lib.EN_getlinknodes.argtypes = [self.EN_Project, ctypes.c_int, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int)] + self.lib.EN_getlinknodes.restype = ctypes.c_int + self.lib.EN_getlinknodes.errcheck = _errcheck + + self.lib.EN_getlinkvalue.argtypes = [self.EN_Project, ctypes.c_int, ctypes.c_int, ctypes.POINTER(ctypes.c_double)] + self.lib.EN_getlinkvalue.restype = ctypes.c_int + self.lib.EN_getlinkvalue.errcheck = _errcheck + + self.lib.EN_getvertexcount.argtypes = [self.EN_Project, ctypes.c_int, ctypes.POINTER(ctypes.c_int)] + self.lib.EN_getvertexcount.restype = ctypes.c_int + self.lib.EN_getvertexcount.errcheck = _errcheck + + self.lib.EN_getvertex.argtypes = [self.EN_Project, ctypes.c_int, ctypes.c_int, ctypes.POINTER(ctypes.c_double), ctypes.POINTER(ctypes.c_double)] + self.lib.EN_getvertex.restype = ctypes.c_int + self.lib.EN_getvertex.errcheck = _errcheck + + self.lib.EN_getflowunits.argtypes = [self.EN_Project, ctypes.POINTER(ctypes.c_int)] + self.lib.EN_getflowunits.restype = ctypes.c_int + self.lib.EN_getflowunits.errcheck = _errcheck + + self.lib.EN_getoption.argtypes = [self.EN_Project, ctypes.c_int, ctypes.POINTER(ctypes.c_double)] + self.lib.EN_getoption.restype = ctypes.c_int + self.lib.EN_getoption.errcheck = _errcheck + + self.lib.EN_gettimeparam.argtypes = [self.EN_Project, ctypes.c_int, ctypes.POINTER(ctypes.c_long)] + self.lib.EN_gettimeparam.restype = ctypes.c_int + self.lib.EN_gettimeparam.errcheck = _errcheck + + self.lib.EN_openH.argtypes = [self.EN_Project] + self.lib.EN_openH.restype = ctypes.c_int + self.lib.EN_openH.errcheck = _errcheck + + self.lib.EN_initH.argtypes = [self.EN_Project, ctypes.c_int] + self.lib.EN_initH.restype = ctypes.c_int + self.lib.EN_initH.errcheck = _errcheck + + self.lib.EN_runH.argtypes = [self.EN_Project, ctypes.POINTER(ctypes.c_long)] + self.lib.EN_runH.restype = ctypes.c_int + self.lib.EN_runH.errcheck = _errcheck + + + self.lib.EN_nextH.argtypes = [self.EN_Project, ctypes.POINTER(ctypes.c_long)] + self.lib.EN_nextH.restype = ctypes.c_int + self.lib.EN_nextH.errcheck = _errcheck + self.lib.EN_closeH.argtypes = [self.EN_Project] + self.lib.EN_closeH.restype = ctypes.c_int + self.lib.EN_closeH.errcheck = _errcheck + + # Water Quality Analysis Bindings + self.lib.EN_openQ.argtypes = [self.EN_Project] + self.lib.EN_openQ.restype = ctypes.c_int + self.lib.EN_openQ.errcheck = _errcheck + + self.lib.EN_initQ.argtypes = [self.EN_Project, ctypes.c_int] + self.lib.EN_initQ.restype = ctypes.c_int + self.lib.EN_initQ.errcheck = _errcheck + + self.lib.EN_runQ.argtypes = [self.EN_Project, ctypes.POINTER(ctypes.c_long)] + self.lib.EN_runQ.restype = ctypes.c_int + self.lib.EN_runQ.errcheck = _errcheck + + self.lib.EN_nextQ.argtypes = [self.EN_Project, ctypes.POINTER(ctypes.c_long)] + self.lib.EN_nextQ.restype = ctypes.c_int + self.lib.EN_nextQ.errcheck = _errcheck + + self.lib.EN_closeQ.argtypes = [self.EN_Project] + self.lib.EN_closeQ.restype = ctypes.c_int + self.lib.EN_closeQ.errcheck = _errcheck + + self.lib.EN_getqualinfo.argtypes = [ + self.EN_Project, + ctypes.POINTER(ctypes.c_int), + ctypes.c_char_p, + ctypes.c_char_p, + ctypes.POINTER(ctypes.c_int), + ] + self.lib.EN_getqualinfo.restype = ctypes.c_int + self.lib.EN_getqualinfo.errcheck = _errcheck + # ---- Bindings used by batch analyses (backend/batch.py) ---- + P, I, D, L, S = self.EN_Project, ctypes.c_int, ctypes.c_double, ctypes.c_long, ctypes.c_char_p + + def bind(name, argtypes): + fn = getattr(self.lib, name) + fn.argtypes = argtypes + fn.restype = ctypes.c_int + fn.errcheck = _errcheck + + bind("EN_getnodeindex", [P, S, ctypes.POINTER(I)]) + bind("EN_getlinkindex", [P, S, ctypes.POINTER(I)]) + bind("EN_setnodevalue", [P, I, I, D]) + bind("EN_setlinkvalue", [P, I, I, D]) + bind("EN_settimeparam", [P, I, L]) + bind("EN_addpattern", [P, S]) + bind("EN_getpatternindex", [P, S, ctypes.POINTER(I)]) + bind("EN_setpattern", [P, I, ctypes.POINTER(D), I]) + bind("EN_adddemand", [P, I, D, S, S]) + bind("EN_getnumdemands", [P, I, ctypes.POINTER(I)]) + bind("EN_deletedemand", [P, I, I]) + bind("EN_addcontrol", [P, I, I, D, I, D, ctypes.POINTER(I)]) + bind("EN_deletecontrol", [P, I]) + bind("EN_solveH", [P]) + bind("EN_setqualtype", [P, I, S, S, S]) + bind("EN_getpatternlen", [P, I, ctypes.POINTER(I)]) + bind("EN_getpatternvalue", [P, I, I, ctypes.POINTER(D)]) + bind("EN_getcontrol", [P, I, ctypes.POINTER(I), ctypes.POINTER(I), ctypes.POINTER(D), ctypes.POINTER(I), ctypes.POINTER(D)]) diff --git a/backend/gisio.py b/backend/gisio.py new file mode 100644 index 0000000..da2dfe6 --- /dev/null +++ b/backend/gisio.py @@ -0,0 +1,119 @@ +"""Vector GIS input via GDAL (pyogrio): any supported format -> GeoJSON in WGS84. + +Shapefiles must arrive zipped (they are several files); everything else is a +single file. Files are read straight from a temp copy (zip through GDAL's +/vsizip/, never extracted), so archive paths cannot escape the temp dir. +""" +from __future__ import annotations + +import os +import tempfile + +import numpy as np +import pyogrio +import shapely +from pyogrio import raw as ogr_raw +from pyproj import CRS, Transformer +from shapely.geometry import mapping + +from .batch import BatchError + +VECTOR_EXTENSIONS = { + ".zip": "ESRI Shapefile (zip)", + ".geojson": "GeoJSON", + ".json": "GeoJSON", + ".gpkg": "GeoPackage", + ".dxf": "DXF", + ".dgn": "MicroStation DGN", + ".mif": "MapInfo MIF", + ".tab": "MapInfo TAB", + ".gml": "GML", + ".kml": "KML", + ".e00": "ArcInfo E00", + ".csv": "CSV (WKT/X,Y)", +} +MAX_FEATURES = 200_000 + + +def _gdal_path(path: str, ext: str) -> str: + if ext == ".zip": + return "/vsizip/" + path.replace("\\", "/") + return path + + +def _clean(v): + if isinstance(v, (np.floating, float)): + f = float(v) + return None if f != f or f in (float("inf"), float("-inf")) else f + if isinstance(v, np.integer): + return int(v) + if isinstance(v, bytes): + try: + return v.decode("utf-8") + except UnicodeDecodeError: + return v.decode("cp949", errors="replace") + if hasattr(v, "isoformat"): + return v.isoformat() + return v + + +def read_vector(contents: bytes, filename: str, layer: str | None = None, src_epsg: int | None = None, default_crs: str | None = None) -> dict: + """`default_crs` applies only when the file itself carries no CRS (DXF, bare CSV ...).""" + ext = os.path.splitext(filename.lower())[1] + if ext not in VECTOR_EXTENSIONS: + raise BatchError(f"지원하지 않는 형식입니다: {ext or filename}. 지원: {', '.join(sorted(VECTOR_EXTENSIONS))}") + with tempfile.TemporaryDirectory() as tmp: + path = os.path.join(tmp, "input" + ext) + with open(path, "wb") as f: + f.write(contents) + src = _gdal_path(path, ext) + try: + layers = [str(row[0]) for row in pyogrio.list_layers(src)] + except Exception as e: # GDAL raises its own error types + raise BatchError(f"파일을 읽을 수 없습니다: {e}") from e + if not layers: + raise BatchError("파일에 레이어가 없습니다.") + name = layer if layer in layers else layers[0] + try: + info = pyogrio.read_info(src, layer=name, encoding=None) + meta, _fids, geometry, field_data = ogr_raw.read(src, layer=name, max_features=MAX_FEATURES + 1) + except Exception as e: + raise BatchError(f"레이어 {name}을(를) 읽을 수 없습니다: {e}") from e + + count = len(geometry) + if count > MAX_FEATURES: + raise BatchError(f"도형이 {MAX_FEATURES:,}개를 넘습니다.") + + crs_text = meta.get("crs") or info.get("crs") + assumed = False + src_crs = CRS.from_epsg(src_epsg) if src_epsg else (CRS.from_user_input(crs_text) if crs_text else None) + if src_crs is None and default_crs: + try: + src_crs = CRS.from_user_input(default_crs) + assumed = True + except Exception as e: + raise BatchError(f"기본 좌표계를 읽을 수 없습니다: {default_crs[:60]}") from e + src_code = src_crs.to_epsg() if src_crs else None + + geoms = shapely.from_wkb(np.array(geometry, dtype=object)) + if src_crs is not None and not src_crs.equals(CRS.from_epsg(4326)): + tr = Transformer.from_crs(src_crs, CRS.from_epsg(4326), always_xy=True) + geoms = shapely.transform(geoms, lambda xy: np.column_stack(tr.transform(xy[:, 0], xy[:, 1]))) + fields = list(meta.get("fields", [])) + features = [] + for i in range(count): + g = geoms[i] + props = {fields[k]: _clean(field_data[k][i]) for k in range(len(fields))} + features.append({"type": "Feature", "geometry": mapping(g) if g is not None else None, "properties": props}) + + return { + "layers": layers, + "layer": name, + "crs": f"EPSG:{src_code}" if src_code else (src_crs.to_string() if src_crs else None), + "reprojected": src_crs is not None, + "crsAssumed": assumed, + "geometryType": meta.get("geometry_type"), + "count": count, + "fields": fields, + "featureCollection": {"type": "FeatureCollection", "features": features}, + } diff --git a/backend/gisops.py b/backend/gisops.py new file mode 100644 index 0000000..33de630 --- /dev/null +++ b/backend/gisops.py @@ -0,0 +1,233 @@ +"""GIS layer operations: export in any CRS/format, geometry ops, Voronoi, grids. + +Layers travel as GeoJSON FeatureCollections in WGS84 (what the map holds). +Metric operations run in a planar CRS given by the caller (the model's CRS), +and results come back in WGS84. +""" +from __future__ import annotations + +import io +import os +import tempfile +import zipfile + +import numpy as np +import shapely +from pyogrio import raw as ogr_raw +from pyproj import CRS, Transformer +from shapely.geometry import mapping, shape + +from .batch import BatchError + +EXPORT_FORMATS = { + "shp": ("ESRI Shapefile", ".shp"), + "gpkg": ("GPKG", ".gpkg"), + "dxf": ("DXF", ".dxf"), + "geojson": ("GeoJSON", ".geojson"), + "kml": ("KML", ".kml"), +} +WGS84 = CRS.from_epsg(4326) +MAX_FEATURES = 200_000 +MAX_GRID_CELLS = 200_000 + + +def _crs(user: str | None, what: str = "좌표계") -> CRS: + if not user: + raise BatchError(f"{what}가 필요합니다.") + try: + return CRS.from_user_input(user) + except Exception as e: + raise BatchError(f"{what}를 읽을 수 없습니다: {str(user)[:60]}") from e + + +def _planar(user: str | None) -> CRS: + c = _crs(user, "평면 좌표계") + if c.is_geographic: + raise BatchError("거리 계산에는 평면 좌표계(예: EPSG:5186)가 필요합니다.") + return c + + +def _project(geoms: np.ndarray, src: CRS, dst: CRS) -> np.ndarray: + if src.equals(dst): + return geoms + tr = Transformer.from_crs(src, dst, always_xy=True) + return shapely.transform(geoms, lambda xy: np.column_stack(tr.transform(xy[:, 0], xy[:, 1]))) + + +def _read_fc(fc: dict) -> tuple[np.ndarray, list[dict]]: + feats = (fc or {}).get("features") or [] + if len(feats) > MAX_FEATURES: + raise BatchError(f"도형이 {MAX_FEATURES:,}개를 넘습니다.") + geoms, props = [], [] + for f in feats: + g = f.get("geometry") + try: + geoms.append(shape(g) if g else None) + except Exception: + geoms.append(None) + props.append(dict(f.get("properties") or {})) + return np.array(geoms, dtype=object), props + + +def _to_fc(geoms, props: list[dict]) -> dict: + out = [] + for g, p in zip(geoms, props): + if g is None or g.is_empty: + continue + out.append({"type": "Feature", "geometry": mapping(g), "properties": p}) + return {"type": "FeatureCollection", "features": out} + + +# ---------------------------------------------------------------- export + + +def _field_arrays(props: list[dict], fmt: str): + names: list[str] = [] + for p in props: + for k in p: + if k not in names: + names.append(k) + if fmt == "shp": + # dBASE: 10-char unique names + seen, short = set(), [] + for n in names: + base = str(n)[:10] or "F" + s, k = base, 1 + while s in seen: + k += 1 + s = f"{base[:10 - len(str(k))]}{k}" + seen.add(s) + short.append(s) + else: + short = [str(n) for n in names] + arrays = [] + for n in names: + vals = [p.get(n) for p in props] + nums = [v for v in vals if v is not None and v != ""] + if nums and all(isinstance(v, (int, float)) and not isinstance(v, bool) for v in nums): + arrays.append(np.array([float(v) if v is not None and v != "" else np.nan for v in vals], dtype="float64")) + else: + arrays.append(np.array(["" if v is None else str(v) for v in vals], dtype=object)) + return short, arrays + + +def write_vector(fc: dict, target_crs: str | None, fmt: str, name: str) -> tuple[bytes, str, str]: + """FeatureCollection (WGS84) -> file bytes in `fmt` and `target_crs` (shapefile zipped).""" + if fmt not in EXPORT_FORMATS: + raise BatchError(f"지원하지 않는 형식입니다: {fmt}") + driver, ext = EXPORT_FORMATS[fmt] + geoms, props = _read_fc(fc) + keep = [i for i, g in enumerate(geoms) if g is not None and not g.is_empty] + if not keep: + raise BatchError("내보낼 도형이 없습니다.") + geoms, props = geoms[keep], [props[i] for i in keep] + dst = _crs(target_crs) if target_crs else WGS84 + if fmt == "kml": + dst = WGS84 + geoms = _project(geoms, WGS84, dst) + safe = "".join(ch for ch in (name or "layer") if ch.isalnum() or ch in "-_ ").strip() or "layer" + kinds = {g.geom_type.replace("Multi", "") for g in geoms} + if fmt == "shp" and len(kinds) > 1: + raise BatchError("Shapefile은 한 가지 도형(점/선/면)만 담을 수 있습니다. GeoPackage로 내보내세요.") + geometry_type = "Unknown" if len(kinds) > 1 else ("Multi" + kinds.pop() if any(g.geom_type.startswith("Multi") for g in geoms) else geoms[0].geom_type) + # Promote singles to multi when the layer mixes them (pyogrio needs one type). + if geometry_type.startswith("Multi"): + geoms = np.array([g if g.geom_type.startswith("Multi") else getattr(shapely, geometry_type)([g]) for g in geoms], dtype=object) + fields, arrays = _field_arrays(props, fmt) if fmt != "dxf" else ([], []) + with tempfile.TemporaryDirectory() as tmp: + path = os.path.join(tmp, safe + ext) + kwargs = {"encoding": "UTF-8"} if fmt == "shp" else {} + ogr_raw.write(path, shapely.to_wkb(geoms), arrays, fields, driver=driver, geometry_type=geometry_type, + crs=dst.to_wkt() if fmt != "dxf" else None, **kwargs) + if fmt == "shp": + buf = io.BytesIO() + with zipfile.ZipFile(buf, "w", zipfile.ZIP_DEFLATED) as z: + for fn in sorted(os.listdir(tmp)): + z.write(os.path.join(tmp, fn), fn) + return buf.getvalue(), safe + ".zip", "application/zip" + with open(path, "rb") as f: + data = f.read() + media = {"gpkg": "application/geopackage+sqlite3", "dxf": "application/dxf", "geojson": "application/geo+json", "kml": "application/vnd.google-earth.kml+xml"}[fmt] + return data, safe + ext, media + + +# ---------------------------------------------------------------- operations + + +def reproject_fc(fc: dict, src: str, dst: str) -> dict: + """Coordinates that were read as `src` but are really `dst`: fix the layer (WGS84 in/out).""" + a, b = _crs(src, "원래 좌표계"), _crs(dst, "새 좌표계") + geoms, props = _read_fc(fc) + raw = _project(geoms, WGS84, a) # back to the numbers in the file + return _to_fc(_project(raw, b, WGS84), props) + + +def vector_op(op: str, params: dict) -> dict: + planar = _planar(params.get("crs")) + if op == "voronoi": + pts = np.asarray(params.get("points") or [], dtype="float64").reshape(-1, 2) # in planar CRS + ids = [str(i) for i in params.get("ids") or []] + if len(pts) < 3 or len(ids) != len(pts): + raise BatchError("점이 3개 이상 필요합니다.") + margin = float(params.get("margin") or 0) + hull = shapely.MultiPoint(pts).convex_hull + clip = hull.buffer(margin if margin > 0 else max(1.0, 0.05 * np.sqrt(max(hull.area, 1.0)))) + cells = shapely.get_parts(shapely.voronoi_polygons(shapely.MultiPoint(pts), extend_to=clip.envelope)) + tree = shapely.STRtree(shapely.points(pts)) + out_g, out_p = [], [] + for c in cells: + hit = tree.query(c, predicate="contains") + if len(hit) == 0: + continue + g = c.intersection(clip) + if g.is_empty: + continue + k = int(hit[0]) + out_g.append(g) + out_p.append({"node": ids[k], "area_m2": round(float(g.area), 2)}) + return _to_fc(_project(np.array(out_g, dtype=object), planar, WGS84), out_p) + + if op == "grid": + b = params.get("bounds") # planar [minx, miny, maxx, maxy] + cell = float(params.get("cell") or 0) + if not b or cell <= 0: + raise BatchError("범위와 격자 크기가 필요합니다.") + x0, y0, x1, y1 = map(float, b) + nx, ny = int(np.ceil((x1 - x0) / cell)), int(np.ceil((y1 - y0) / cell)) + if nx * ny > MAX_GRID_CELLS: + raise BatchError(f"격자가 {nx * ny:,}칸입니다. 격자 크기를 키우세요 (최대 {MAX_GRID_CELLS:,}).") + gs, ps = [], [] + for j in range(ny): + for i in range(nx): + gs.append(shapely.box(x0 + i * cell, y0 + j * cell, x0 + (i + 1) * cell, y0 + (j + 1) * cell)) + ps.append({"col": i, "row": j, "cell": f"{i}_{j}"}) + return _to_fc(_project(np.array(gs, dtype=object), planar, WGS84), ps) + + geoms, props = _read_fc(params.get("layer") or {}) + if not len(geoms): + raise BatchError("대상 레이어가 비어 있습니다.") + g = _project(geoms, WGS84, planar) + if op == "buffer": + d = float(params.get("distance") or 0) + if d == 0: + raise BatchError("버퍼 거리를 입력하세요.") + res = shapely.buffer(g, d) + return _to_fc(_project(res, planar, WGS84), props) + if op == "dissolve": + field = params.get("field") + groups: dict = {} + for geom, p in zip(g, props): + if geom is None: + continue + groups.setdefault(p.get(field) if field else None, []).append(geom) + out_g = [shapely.union_all(v) for v in groups.values()] + out_p = [{field: k, "count": len(v)} if field else {"count": len(v)} for k, v in groups.items()] + return _to_fc(_project(np.array(out_g, dtype=object), planar, WGS84), out_p) + if op in ("intersection", "difference", "clip"): + other_g, _ = _read_fc(params.get("other") or {}) + if not len(other_g): + raise BatchError("두 번째 레이어가 비어 있습니다.") + mask = shapely.union_all(_project(other_g, WGS84, planar)) + res = shapely.difference(g, mask) if op == "difference" else shapely.intersection(g, mask) + return _to_fc(_project(res, planar, WGS84), props) + raise BatchError(f"알 수 없는 연산입니다: {op}") diff --git a/backend/jobs.py b/backend/jobs.py new file mode 100644 index 0000000..6ac987c --- /dev/null +++ b/backend/jobs.py @@ -0,0 +1,724 @@ +"""Batch analysis jobs exposed as POST /api/jobs/{name}. + +Each job takes the INP bytes and a params dict and returns a JSON-able dict. +Jobs run in the API process pool; raise BatchError for input problems +(reported as HTTP 400). Register new jobs in JOBS at the bottom. +""" +from __future__ import annotations + +import numpy as np + +import ctypes + +from .batch import BatchError, Network, hhmm, parse_time +from .epanet import EN, EpanetException + + +def job_summary(inp: bytes, params: dict) -> dict: + """Framework smoke job: min/max pressure per reporting period.""" + with Network(inp) as net: + junctions = net.junction_indices() + res = net.simulate(node_props=(EN.PRESSURE,), nodes=junctions) + p = res.nodes[EN.PRESSURE] + return { + "times": res.times, + "labels": [hhmm(t) for t in res.times], + "minPressure": p.min(axis=1).round(4).tolist() if p.size else [], + "maxPressure": p.max(axis=1).round(4).tolist() if p.size else [], + "junctions": len(junctions), + "warnings": [{"time": t, "code": c} for t, c in res.warnings], + } + + +def _window_rows(times: list[int], start: int, end: int) -> np.ndarray: + """Reporting periods inside [start, end); falls back to the one nearest start.""" + t = np.asarray(times) + rows = np.where((t >= start) & (t < end))[0] + if rows.size == 0: + rows = np.array([int(np.argmin(np.abs(t - start)))]) + return rows + + +def job_fireflow(inp: bytes, params: dict) -> dict: + """소화전 모의: extra demand at hydrant nodes for a time window. + + params: nodes [ids], flow (model flow units, per hydrant), start/end (h or h:mm), + residual (model pressure units, optional: also find the available flow), + threshold (optional: count junctions whose window-min pressure drops below it). + """ + ids = [str(x) for x in params.get("nodes") or []] + if not ids: + raise BatchError("소화전 절점을 하나 이상 지정하세요.") + flow = float(params.get("flow") or 0) + if flow <= 0: + raise BatchError("소화 유량은 0보다 커야 합니다.") + with Network(inp) as net: + start = parse_time(params.get("start"), 0) + end = parse_time(params.get("end"), max(net.duration, net.report_step)) + if end <= start: + end = start + net.report_step + hyd = [net.node_index(i) for i in ids] + junctions = net.junction_indices() + base = net.simulate(nodes=junctions) + rows = _window_rows(base.times, start, end) + base_min = base.nodes[EN.PRESSURE][rows].min(axis=0) + + net.window_pattern("SPIPE_FIRE", start, end) + cats = [net.add_demand(h, flow, "SPIPE_FIRE", "fire") for h in hyd] + fire = net.simulate(nodes=junctions) + fire_min = fire.nodes[EN.PRESSURE][rows].min(axis=0) + for h, c in zip(hyd, cats): + net.delete_demand(h, c) + + col = {j: k for k, j in enumerate(junctions)} + # Compare the two runs period by period: tank/pump controls can shift + # *when* the daily minimum happens, so "min before vs min after" may + # even show a rise. Report each node at its largest drop instead. + bw = base.nodes[EN.PRESSURE][rows] + fw = fire.nodes[EN.PRESSURE][rows] + drop = fw - bw + worst = np.argmin(drop, axis=0) + cols = np.arange(len(junctions)) + diff = drop[worst, cols] + order = np.argsort(diff) + threshold = params.get("threshold") + out_nodes = [ + { + "id": net.node_ids[junctions[k] - 1], + "basePressure": round(float(bw[worst[k], k]), 3), + "firePressure": round(float(fw[worst[k], k]), 3), + "diff": round(float(diff[k]), 3), + "time": hhmm(base.times[rows[worst[k]]]), + } + for k in order + if abs(diff[k]) > 1e-4 + ] + + residual = params.get("residual") + hydrants = [] + for nid, h in zip(ids, hyd): + entry = {"id": nid} + if h in col: + k = col[h] + # Hydrant: window minimum before/after (what the residual criterion is about). + entry.update(basePressure=round(float(base_min[k]), 3), firePressure=round(float(fire_min[k]), 3)) + if residual not in (None, "") and h in col: + entry["available"] = _available_fire_flow(net, h, col[h], junctions, rows, start, end, float(residual), flow) + hydrants.append(entry) + + return { + "window": [start, end], + "windowLabel": f"{hhmm(start)}~{hhmm(end)}", + "flow": flow, + "hydrants": hydrants, + "nodes": out_nodes, + "belowThreshold": int(np.sum(fire_min < float(threshold))) if threshold not in (None, "") else None, + "belowThresholdBefore": int(np.sum(base_min < float(threshold))) if threshold not in (None, "") else None, + "warnings": [{"time": t, "code": c} for t, c in fire.warnings], + } + + +def _available_fire_flow(net, h, col, junctions, rows, start, end, residual, hint) -> float: + """Largest extra flow at node h keeping its window-min pressure >= residual (bisection).""" + def min_p(q: float) -> float: + net.window_pattern("SPIPE_AFF", start, end) + c = net.add_demand(h, q, "SPIPE_AFF", "aff") + try: + r = net.simulate(nodes=[h]) + finally: + net.delete_demand(h, c) + return float(r.nodes[EN.PRESSURE][rows, 0].min()) + + if min_p(0.0) < residual: + return 0.0 + lo, hi = 0.0, max(hint, 1e-3) + for _ in range(30): # grow until the residual is violated + if min_p(hi) < residual: + break + lo, hi = hi, hi * 2 + else: + return round(hi, 3) + for _ in range(25): + mid = (lo + hi) / 2 + if min_p(mid) >= residual: + lo = mid + else: + hi = mid + if hi - lo <= max(1e-3, 1e-3 * hi): + break + return round(lo, 3) + + +def _window(net: Network, params: dict) -> tuple[int, int]: + start = parse_time(params.get("start"), 0) + end = parse_time(params.get("end"), max(net.duration, net.report_step)) + return start, (end if end > start else start + net.report_step) + + +MAX_CRITICALITY_LINKS = 4000 + + +def job_criticality(inp: bytes, params: dict) -> dict: + """관로 중요도: close each pipe in turn and measure who loses pressure. + + params: links [ids] (default all pipes), threshold (model pressure units), + start/end (window, h). A junction is "affected" when its window-min pressure + falls below the threshold while it was at/above it in the base run. + """ + threshold = float(params.get("threshold") or 0) + with Network(inp) as net: + start, end = _window(net, params) + ids = [str(x) for x in params.get("links") or []] + if ids: + links = [net.link_index(i) for i in ids] + else: + links = [k + 1 for k, t in enumerate(net.link_types) if t in (EN.CVPIPE, EN.PIPE)] + if not links: + raise BatchError("분석할 관로가 없습니다.") + if len(links) > MAX_CRITICALITY_LINKS: + raise BatchError(f"관로가 {len(links)}개입니다. {MAX_CRITICALITY_LINKS}개 이하로 선택해 나눠 실행하세요.") + junctions = net.junction_indices() + base = net.simulate(node_props=(EN.PRESSURE, EN.DEMAND), nodes=junctions) + rows = _window_rows(base.times, start, end) + bmin = base.nodes[EN.PRESSURE][rows].min(axis=0) + bdem = base.nodes[EN.DEMAND][rows].mean(axis=0) + ok_before = bmin >= threshold + out = [] + for li in links: + orig = net.get_link(li, EN.INITSTATUS) + net.set_link(li, EN.INITSTATUS, 0) + entry = {"id": net.link_ids[li - 1]} + try: + r = net.simulate(nodes=junctions) + pmin = r.nodes[EN.PRESSURE][_window_rows(r.times, start, end)].min(axis=0) + affected = np.where((pmin < threshold) & ok_before)[0] + drop = bmin - pmin + order = affected[np.argsort(-drop[affected])] + entry.update( + affectedNodes=int(affected.size), + affectedDemand=round(float(np.sum(np.maximum(bdem[affected], 0))), 4), + minPressure=round(float(pmin.min()), 3), + maxDrop=round(float(drop.max()), 3), + nodes=[net.node_ids[junctions[k] - 1] for k in order[:200]], + warning=any(c in (3, 6) for _, c in r.warnings), + disconnected=bool(pmin.min() < -1000), + ) + except (EpanetException, BatchError) as e: + entry.update(error=str(e), affectedNodes=0, affectedDemand=0.0, minPressure=None, maxDrop=None, nodes=[]) + finally: + net.set_link(li, EN.INITSTATUS, orig) + out.append(entry) + out.sort(key=lambda e: (-e["affectedDemand"], -e["affectedNodes"], -(e["maxDrop"] or 0))) + return { + "window": [start, end], + "windowLabel": f"{hhmm(start)}~{hhmm(end)}", + "threshold": threshold, + "belowBefore": int(np.sum(~ok_before)), + "totalDemand": round(float(np.sum(np.maximum(bdem, 0))), 4), + "links": out, + } + + +def job_servicearea(inp: bytes, params: dict) -> dict: + """급수 구역: source tracing (EPANET TRACE) from each reservoir (tanks optional). + + Returns each node's average share (%) of water from each source over the + analysis window (default: the last 24 h of the run; a run shorter than 24 h + is extended to 72 h so traced water can reach the far ends). + """ + with Network(inp) as net: + notes = [] + if net.duration < 72 * 3600: + # Traced water starts at 0 everywhere; give it time to reach the far ends. + net.set_time_param(EN.DURATION, 72 * 3600) + notes.append(f"해석 기간({net.duration // 3600}시간)을 72시간으로 늘려 추적하고 마지막 24시간을 평균했습니다.") + net.duration = 72 * 3600 + # Default: reservoirs only. A traced tank counts water that merely passed + # through it, so tank shares overlap the reservoir shares (sum > 100%). + kinds = (EN.RESERVOIR, EN.TANK) if params.get("includeTanks") else (EN.RESERVOIR,) + sources = [str(x) for x in params.get("sources") or []] or [ + nid for nid, t in zip(net.node_ids, net.node_types) if t in kinds + ] or [nid for nid, t in zip(net.node_ids, net.node_types) if t == EN.TANK] + if not sources: + raise BatchError("배수지·탱크가 없습니다.") + if len(sources) > 30: + raise BatchError("수원이 30개를 넘습니다. 추적할 수원을 골라 주세요.") + for sid in sources: + net.node_index(sid) + start = parse_time(params.get("start"), max(0, net.duration - 24 * 3600)) + end = parse_time(params.get("end"), net.duration + 1) + net.lib.EN_solveH(net.ph) + shares: dict[str, np.ndarray] = {} + for sid in sources: + net.lib.EN_setqualtype(net.ph, EN.QUAL_TRACE, b"", b"", sid.encode("utf-8")) + times, q = net.run_quality() + rows = _window_rows(times, start, end) + shares[sid] = np.clip(q[rows].mean(axis=0), 0, 100) + mat = np.vstack([shares[s] for s in sources]) # [source, node] + dom = np.argmax(mat, axis=0) + nodes = {} + for k, nid in enumerate(net.node_ids): + col = mat[:, k] + if col.max() < 0.5: + nodes[nid] = {"source": None, "share": 0.0, "shares": {}} + continue + nodes[nid] = { + "source": sources[dom[k]], + "share": round(float(col[dom[k]]), 1), + "shares": {s: round(float(v), 1) for s, v in zip(sources, col) if v >= 0.5}, + } + summary = [] + for sid in sources: + mine = [nid for nid in net.node_ids if nodes[nid]["source"] == sid] + summary.append({"source": sid, "nodes": len(mine), "mixed": sum(1 for nid in mine if nodes[nid]["share"] < 80)}) + return { + "sources": sources, + "window": [start, end], + "windowLabel": f"{hhmm(start)}~{hhmm(end)}", + "nodes": nodes, + "summary": summary, + "unreached": sum(1 for v in nodes.values() if v["source"] is None), + "notes": notes, + } + + +def job_vsp(inp: bytes, params: dict) -> dict: + """VSP: pump speed giving a target pressure at a control node (bisection). + + Each requested hour is solved as a snapshot (DURATION 0, patterns shifted to + that hour, tanks at their initial levels). params: pump, node, target + (model pressure units), hours [list] (default 0..23), minSpeed, maxSpeed. + """ + pump_id, node_id = str(params.get("pump") or ""), str(params.get("node") or "") + target = float(params.get("target") or 0) + lo_s, hi_s = float(params.get("minSpeed") or 0.5), float(params.get("maxSpeed") or 1.2) + if not (0 < lo_s < hi_s): + raise BatchError("속도 범위가 올바르지 않습니다 (0 < 최소 < 최대).") + hours = [float(h) for h in (params.get("hours") or list(range(24)))][:168] + with Network(inp) as net: + pi = net.link_index(pump_id) + if net.link_types[pi - 1] != EN.PUMP: + raise BatchError(f"{pump_id}는 펌프가 아닙니다.") + ni = net.node_index(node_id) + ps0 = net.time_param(EN.PATTERNSTART) + net.set_time_param(EN.DURATION, 0) + + def solve(speed: float) -> tuple[float, float, float]: + net.set_link(pi, EN.INITSTATUS, 1) + net.set_link(pi, EN.INITSETTING, speed) + net.lib.EN_solveH(net.ph) + return net.get_node(ni, EN.PRESSURE), net.get_link(pi, EN.FLOW), net.get_link(pi, EN.ENERGY) + + out = [] + for h in hours: + net.set_time_param(EN.PATTERNSTART, ps0 + int(h * 3600)) + try: + p_hi = solve(hi_s) + p_lo = solve(lo_s) + if p_hi[0] < target: + speed, res, status = hi_s, p_hi, "max" + elif p_lo[0] >= target: + speed, res, status = lo_s, p_lo, "min" + else: + a, b = lo_s, hi_s + for _ in range(30): + m = (a + b) / 2 + if solve(m)[0] >= target: + b = m + else: + a = m + if b - a < 1e-4: + break + speed, res, status = b, solve(b), "ok" + out.append({"hour": h, "speed": round(speed, 4), "pressure": round(res[0], 3), + "flow": round(res[1], 4), "power": round(res[2], 3), "status": status}) + except EpanetException as e: + out.append({"hour": h, "error": str(e)}) + return {"pump": pump_id, "node": node_id, "target": target, "rows": out, + "note": "시간별 정상상태 해석입니다 (탱크는 초기 수위, 그 시각의 시간 제어만 반영)."} + + +# m3/s per model flow unit, by EN_getflowunits code +_M3S = {0: 0.0283168, 1: 6.30902e-5, 2: 0.0438126, 3: 0.0526168, 4: 0.0142764, 5: 1e-3, + 6: 1e-3 / 60, 7: 1e3 / 86400, 8: 1 / 3600, 9: 1 / 86400, 10: 1.0} + + +def job_energy(inp: bytes, params: dict) -> dict: + """에너지 보고서: per-pump utilisation, efficiency, kWh, kWh/m3, peak kW and cost, + integrated over every hydraulic step (prices from [ENERGY] incl. patterns).""" + with Network(inp) as net: + pumps = [k + 1 for k, t in enumerate(net.link_types) if t == EN.PUMP] + if not pumps: + raise BatchError("펌프가 없습니다.") + fu = ctypes.c_int() + net.lib.EN_getflowunits(net.ph, ctypes.byref(fu)) + to_m3s = _M3S.get(fu.value, 1.0) + g_price = net.option(EN.GLOBALPRICE) + g_pat = int(net.option(EN.GLOBALPATTERN)) + d_charge = net.option(EN.DEMANDCHARGE) + g_eff = net.option(EN.GLOBALEFFIC) + ps0 = net.time_param(EN.PATTERNSTART) + price = {p: (net.get_link(p, EN.PUMP_ECOST) or g_price) for p in pumps} + pat = {p: (int(net.get_link(p, EN.PUMP_EPAT)) or g_pat) for p in pumps} + acc = {p: {"on": 0.0, "kwh": 0.0, "m3": 0.0, "effw": 0.0, "peak": 0.0, "cost": 0.0} for p in pumps} + peak_total = 0.0 + total_s = 0.0 + t, tstep = ctypes.c_long(), ctypes.c_long(1) + steady = net.duration == 0 + net.lib.EN_openH(net.ph) + try: + net.lib.EN_initH(net.ph, EN.NOSAVE) + while True: + net.lib.EN_runH(net.ph, ctypes.byref(t)) + now = t.value + # Values at `now` hold until the next hydraulic time. + vals = [(p, abs(net.get_link(p, EN.FLOW)), max(0.0, net.get_link(p, EN.ENERGY)), net.get_link(p, EN.PUMP_EFFIC)) for p in pumps] + net.lib.EN_nextH(net.ph, ctypes.byref(tstep)) + dt = 3600.0 if steady else float(tstep.value) + kw_total = 0.0 + for p, q, kw, eff in vals: + a = acc[p] + if q > 1e-9 and kw > 0: + a["on"] += dt + a["effw"] += eff * dt + a["kwh"] += kw * dt / 3600 + a["m3"] += q * to_m3s * dt + a["peak"] = max(a["peak"], kw) + a["cost"] += kw * dt / 3600 * price[p] * net.pattern_value(pat[p], now, ps0) + kw_total += kw + peak_total = max(peak_total, kw_total) + total_s += dt + if tstep.value <= 0: + break + finally: + net.lib.EN_closeH(net.ph) + total_s = max(total_s, 1.0) + rows = [] + for p in pumps: + a = acc[p] + rows.append({ + "id": net.link_ids[p - 1], + "utilization": round(100 * a["on"] / total_s, 2), + "efficiency": round(100 * a["effw"] / a["on"], 2) if a["on"] else None, # DLL gives a fraction + "kwh": round(a["kwh"], 3), + "kwhPerM3": round(a["kwh"] / a["m3"], 5) if a["m3"] > 0 else None, + "volume": round(a["m3"], 3), + "avgKw": round(a["kwh"] * 3600 / a["on"], 3) if a["on"] else 0.0, + "peakKw": round(a["peak"], 3), + "cost": round(a["cost"], 3), + "costPerDay": round(a["cost"] * 86400 / total_s, 3), + }) + return { + "pumps": rows, + "hours": round(total_s / 3600, 3), + "globalPrice": g_price, + "globalEfficiency": g_eff, + "demandCharge": d_charge, + "peakKw": round(peak_total, 3), + "demandCost": round(peak_total * d_charge, 3), + "totalCost": round(sum(r["cost"] for r in rows) + peak_total * d_charge, 3), + "steady": steady, + } + + +PARAM_PROPS = {"pressure": ("node", EN.PRESSURE), "head": ("node", EN.HEAD), "demand": ("node", EN.DEMAND), + "quality": ("node", EN.QUALITY), "flow": ("link", EN.FLOW), "velocity": ("link", EN.VELOCITY)} + + +def job_calibrate(inp: bytes, params: dict) -> dict: + """자동 보정: per-group pipe roughness multipliers ('roughness') or wall + coefficients ('wall') fitted to observations by bounded least squares. + + params: mode, param, observations [{location, time (s), value (model units)}], + groups {name: [pipe ids]}, bounds [lo, hi], maxEvaluations. + """ + from scipy.optimize import least_squares + + mode = params.get("mode") or "roughness" + param = params.get("param") or "pressure" + if param not in PARAM_PROPS: + raise BatchError(f"보정할 수 없는 항목입니다: {param}") + kind, prop = PARAM_PROPS[param] + if mode == "wall" and param != "quality": + raise BatchError("관벽 반응계수 보정에는 수질(잔류염소) 실측값이 필요합니다.") + if mode == "roughness" and param == "quality": + raise BatchError("조도 보정에는 수압·수두·유량 실측값을 쓰세요.") + obs = [o for o in params.get("observations") or [] if o.get("location") is not None and o.get("value") is not None] + if len(obs) < 2: + raise BatchError("실측값이 2개 이상 필요합니다.") + groups = {str(k): [str(i) for i in v] for k, v in (params.get("groups") or {}).items() if v} + if not groups: + raise BatchError("보정할 관로 그룹이 없습니다.") + if len(groups) > 30: + raise BatchError("그룹이 30개를 넘습니다. 묶음을 줄이세요.") + lo, hi = (float(b) for b in (params.get("bounds") or ((0.5, 1.5) if mode == "roughness" else (-5.0, 0.0)))) + if not lo < hi: + raise BatchError("범위가 올바르지 않습니다.") + max_eval = int(params.get("maxEvaluations") or 200) + + with Network(inp) as net: + locs = sorted({str(o["location"]) for o in obs}) + index = {} + for loc in locs: + index[loc] = net.node_index(loc) if kind == "node" else net.link_index(loc) + cols = {loc: k for k, loc in enumerate(locs)} + o_col = np.array([cols[str(o["location"])] for o in obs]) + o_t = np.array([float(o["time"]) for o in obs]) + o_v = np.array([float(o["value"]) for o in obs]) + g_names = list(groups) + g_links = [[net.link_index(i) for i in groups[g]] for g in g_names] + if mode == "wall": + qt = ctypes.c_int(); tr = ctypes.c_int() + net.lib.EN_getqualinfo(net.ph, ctypes.byref(qt), ctypes.create_string_buffer(64), ctypes.create_string_buffer(64), ctypes.byref(tr)) + if qt.value != 1: + raise BatchError("모델의 수질 해석이 화학물질(CHEMICAL)이 아닙니다. 모델 설정에서 수질 모드를 바꾸세요.") + base = [np.array([net.get_link(li, EN.KWALL) for li in links]) for links in g_links] + x0 = np.array([float(np.clip(np.mean(b) if len(b) else (lo + hi) / 2, lo, hi)) for b in base]) + net.lib.EN_solveH(net.ph) # wall reactions do not change hydraulics + else: + base = [np.array([net.get_link(li, EN.ROUGHNESS) for li in links]) for links in g_links] + x0 = np.clip(np.ones(len(g_names)), lo, hi) + + def apply(x): + for links, b, v in zip(g_links, base, x): + for li, bv in zip(links, b): + net.set_link(li, EN.KWALL if mode == "wall" else EN.ROUGHNESS, v if mode == "wall" else bv * v) + + def simulate_values() -> np.ndarray: + if mode == "wall": + times, q = net.run_quality(nodes=[index[l] for l in locs]) + times = np.asarray(times, dtype=float) + mat = q + else: + r = net.simulate(node_props=(prop,) if kind == "node" else (), link_props=(prop,) if kind == "link" else (), + nodes=[index[l] for l in locs] if kind == "node" else [], links=[index[l] for l in locs] if kind == "link" else []) + times = np.asarray(r.times, dtype=float) + mat = (r.nodes if kind == "node" else r.links)[prop] + if param == "flow": + mat = np.abs(mat) + out = np.empty(len(obs)) + for c in range(len(locs)): + sel = o_col == c + out[sel] = np.interp(o_t[sel], times, mat[:, c]) if len(times) > 1 else mat[0, c] + return out + + evals = {"n": 0} + + def residuals(x): + evals["n"] += 1 + apply(x) + try: + return simulate_values() - o_v + except (EpanetException, BatchError): + return np.full(len(obs), 1e3) + + r0 = residuals(x0) + fit = least_squares(residuals, x0, bounds=(np.full(len(x0), lo), np.full(len(x0), hi)), + diff_step=0.02 if mode == "roughness" else 0.05, max_nfev=max_eval, xtol=1e-4, ftol=1e-6) + r1 = residuals(fit.x) + apply(x0) # leave the network as it was (not strictly needed) + rmse = lambda r: float(np.sqrt(np.mean(r ** 2))) + out_groups = [] + for name, links, b, v in zip(g_names, g_links, base, fit.x): + out_groups.append({ + "name": name, "pipes": len(links), + "value": round(float(v), 4), + "meanBefore": round(float(np.mean(b)), 4) if len(b) else None, + "meanAfter": round(float(np.mean(b * v)) if mode == "roughness" else float(v), 4) if len(b) else None, + "atBound": bool(abs(v - lo) < 1e-6 or abs(v - hi) < 1e-6), + }) + per_loc = [] + for c, loc in enumerate(locs): + sel = o_col == c + per_loc.append({"location": loc, "n": int(sel.sum()), "before": round(rmse(r0[sel]), 4), "after": round(rmse(r1[sel]), 4)}) + return { + "mode": mode, "param": param, "groups": out_groups, "locations": per_loc, + "rmseBefore": round(rmse(r0), 4), "rmseAfter": round(rmse(r1), 4), + "evaluations": evals["n"], "converged": bool(fit.success), "message": str(fit.message), + "observations": len(obs), + } + + +def _pump_controls(net: Network, pump_idx: set) -> list[int]: + """1-based indices of simple controls acting on the given pumps.""" + n = ctypes.c_int() + net.lib.EN_getcount(net.ph, 5, ctypes.byref(n)) + out = [] + t, li, ni = ctypes.c_int(), ctypes.c_int(), ctypes.c_int() + st, lv = ctypes.c_double(), ctypes.c_double() + for k in range(1, n.value + 1): + net.lib.EN_getcontrol(net.ph, k, ctypes.byref(t), ctypes.byref(li), ctypes.byref(st), ctypes.byref(ni), ctypes.byref(lv)) + if li.value in pump_idx: + out.append(k) + return out + + +def job_pumpschedule(inp: bytes, params: dict) -> dict: + """펌프 운전 최적화: hourly (pattern-step) on/off schedules that cut energy cost + while keeping junction pressure >= minPressure and tanks back to their start + level at the end. Existing simple controls on those pumps are ignored. + + params: pumps [ids] (default all), minPressure (model units), maxEvaluations, + tankTolerance (fraction of tank range allowed below the start level at the end). + """ + min_p = float(params.get("minPressure") or 0) + budget = int(params.get("maxEvaluations") or 400) + tank_tol = float(params.get("tankTolerance") if params.get("tankTolerance") is not None else 0.02) + with Network(inp) as net: + all_pumps = [k + 1 for k, t in enumerate(net.link_types) if t == EN.PUMP] + pumps = [net.link_index(str(p)) for p in params.get("pumps") or []] or all_pumps + if not pumps: + raise BatchError("펌프가 없습니다.") + if net.duration < net.pattern_step: + raise BatchError("연장 기간 해석(EPS) 모델이어야 합니다.") + rules = ctypes.c_int() + net.lib.EN_getcount(net.ph, 6, ctypes.byref(rules)) + controls = _pump_controls(net, set(pumps)) + slot = net.pattern_step + n_slots = int(np.ceil(net.duration / slot)) + if n_slots > 168: + raise BatchError("시간 구간이 168개를 넘습니다 (패턴 간격을 늘리세요).") + junctions = net.junction_indices() + tanks = [k + 1 for k, t in enumerate(net.node_types) if t == EN.TANK] + t_min = np.array([net.get_node(t, 20) for t in tanks]) + t_max = np.array([net.get_node(t, 21) for t in tanks]) + t_init = np.array([net.get_node(t, EN.TANKLEVEL) for t in tanks]) # initial level + t_elev = np.array([net.get_node(t, EN.ELEVATION) for t in tanks]) + ps0 = net.time_param(EN.PATTERNSTART) + g_price = net.option(EN.GLOBALPRICE) + g_pat = int(net.option(EN.GLOBALPATTERN)) + price = {p: (net.get_link(p, EN.PUMP_ECOST) or g_price or 1.0) for p in pumps} + ppat = {p: (int(net.get_link(p, EN.PUMP_EPAT)) or g_pat) for p in pumps} + priced = bool(g_price or any(net.get_link(p, EN.PUMP_ECOST) for p in pumps)) + + def evaluate(sched: dict | None) -> dict: + t, tstep = ctypes.c_long(), ctypes.c_long(1) + cost = kwh = 0.0 + pmin = np.inf + level_end = t_init.copy() + net.lib.EN_openH(net.ph) + try: + net.lib.EN_initH(net.ph, EN.NOSAVE) + while True: + net.lib.EN_runH(net.ph, ctypes.byref(t)) + now = t.value + kw = [max(0.0, net.get_link(p, EN.ENERGY)) for p in pumps] + if net.is_report_time(now) and junctions: + pmin = min(pmin, min(net.get_node(j, EN.PRESSURE) for j in junctions)) + if tanks: + # EN_TANKLEVEL reads back the *initial* level; the current one is head - bottom. + level_end = np.array([net.get_node(tk, EN.HEAD) for tk in tanks]) - t_elev + net.lib.EN_nextH(net.ph, ctypes.byref(tstep)) + dt = float(tstep.value) + for p, k in zip(pumps, kw): + kwh += k * dt / 3600 + cost += k * dt / 3600 * price[p] * net.pattern_value(ppat[p], now, ps0) + if tstep.value <= 0: + break + finally: + net.lib.EN_closeH(net.ph) + short = np.maximum(0.0, (t_init - tank_tol * (t_max - t_min)) - level_end) if tanks else np.zeros(0) + violation = max(0.0, min_p - pmin) + float(np.sum(short)) + return {"cost": cost, "kwh": kwh, "minPressure": float(pmin), "violation": violation, "tankEnd": level_end.tolist()} + + base = evaluate(None) + # Baseline schedule = what the existing controls did (pump on in each slot?). + status = {p: np.zeros(n_slots) for p in pumps} + r = net.simulate(node_props=(), link_props=(EN.FLOW,), nodes=[], links=pumps) + for c, p in enumerate(pumps): + for k, tt in enumerate(r.times): + s = min(n_slots - 1, int(tt // slot)) + if abs(r.links[EN.FLOW][k, c]) > 1e-9: + status[p][s] = 1 + # Take control of the pumps: drop their simple controls, drive them by a pattern. + for k in sorted(controls, reverse=True): + net.delete_control(k) + for p in pumps: + pid = f"SPSCH{p}" + net.add_pattern(pid, [1.0] * n_slots) + net.set_link(p, 15, float(_pattern_index(net, pid))) + net.set_link(p, EN.INITSTATUS, 1) + evals = {"n": 0} + + def run(sched): + evals["n"] += 1 + for p in pumps: + net.add_pattern(f"SPSCH{p}", [float(v) for v in sched[p]]) + return evaluate(sched) + + cur = {p: status[p].copy() for p in pumps} + cur_res = run(cur) + if cur_res["violation"] > 1e-6: + # Pattern replay of the control schedule is not feasible (e.g. sub-slot switching): start from all on. + cur = {p: np.ones(n_slots) for p in pumps} + cur_res = run(cur) + start_res = cur_res + slot_price = {p: np.array([price[p] * net.pattern_value(ppat[p], k * slot, ps0) for k in range(n_slots)]) for p in pumps} + + improved = True + while improved and evals["n"] < budget: + improved = False + # 1) switch off the most expensive running slots + cand = sorted(((slot_price[p][k], p, k) for p in pumps for k in range(n_slots) if cur[p][k] > 0), reverse=True) + for _, p, k in cand: + if evals["n"] >= budget: + break + trial = {q: cur[q].copy() for q in pumps} + trial[p][k] = 0 + res = run(trial) + if res["violation"] <= 1e-6 and res["cost"] < cur_res["cost"] - 1e-9: + cur, cur_res, improved = trial, res, True + # 2) move running time from expensive to cheap slots + for p in pumps: + on = [k for k in range(n_slots) if cur[p][k] > 0] + off = [k for k in range(n_slots) if cur[p][k] == 0] + for k_on in sorted(on, key=lambda k: -slot_price[p][k]): + for k_off in sorted(off, key=lambda k: slot_price[p][k]): + if evals["n"] >= budget or slot_price[p][k_off] >= slot_price[p][k_on]: + break + trial = {q: cur[q].copy() for q in pumps} + trial[p][k_on], trial[p][k_off] = 0, 1 + res = run(trial) + if res["violation"] <= 1e-6 and res["cost"] < cur_res["cost"] - 1e-9: + cur, cur_res, improved = trial, res, True + off.remove(k_off) + off.append(k_on) + break + return { + "pumps": [net.link_ids[p - 1] for p in pumps], + "slotSeconds": slot, + "schedules": {net.link_ids[p - 1]: [int(v) for v in cur[p]] for p in pumps}, + "before": {k: round(v, 3) if isinstance(v, float) else v for k, v in base.items()}, + "start": {k: round(v, 3) if isinstance(v, float) else v for k, v in start_res.items()}, + "after": {k: round(v, 3) if isinstance(v, float) else v for k, v in cur_res.items()}, + "priced": priced, + "evaluations": evals["n"], + "removedControls": len(controls), + "rules": rules.value, + "feasible": cur_res["violation"] <= 1e-6, + } + + +def _pattern_index(net: Network, pid: str) -> int: + idx = ctypes.c_int() + net.lib.EN_getpatternindex(net.ph, pid.encode(), ctypes.byref(idx)) + return idx.value + + +JOBS = { + "summary": job_summary, + "fireflow": job_fireflow, + "criticality": job_criticality, + "servicearea": job_servicearea, + "vsp": job_vsp, + "energy": job_energy, + "calibrate": job_calibrate, + "pumpschedule": job_pumpschedule, +} + + +def get_job(name: str): + fn = JOBS.get(name) + if fn is None: + raise BatchError(f"알 수 없는 분석입니다: {name}") + return fn diff --git a/backend/main.py b/backend/main.py new file mode 100644 index 0000000..a128aff --- /dev/null +++ b/backend/main.py @@ -0,0 +1,743 @@ +import asyncio +import ctypes +import json +import logging +import os +import re +import tempfile +from concurrent.futures import ProcessPoolExecutor + +from fastapi import FastAPI, File, Form, HTTPException, Request, UploadFile +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import JSONResponse, Response + +from .batch import BatchError +from .columnar import to_columnar +from .gisio import read_vector +from . import dem as dem_store +from . import gisops +from urllib.parse import quote +from .jobs import get_job +from .epanet import EN, EpanetAPI, EpanetException, FLOW_UNITS, PRESS_UNITS, QUAL_TYPES + +logger = logging.getLogger("spipe") + +# Limits (overridable per deployment). The upload limit must match nginx's +# client_max_body_size; the period/cell caps bound CPU time and response size +# for inputs like DURATION 10000 hrs + HYDRAULIC TIMESTEP 1 sec. +MAX_UPLOAD_BYTES = int(float(os.environ.get("SPIPE_MAX_UPLOAD_MB", "20")) * 1024 * 1024) +# DEM rasters are much larger than INP/GIS files; streamed to disk, never held in memory. +MAX_DEM_BYTES = int(float(os.environ.get("SPIPE_MAX_DEM_MB", "300")) * 1024 * 1024) +ANALYZE_TIMEOUT_S = float(os.environ.get("SPIPE_ANALYZE_TIMEOUT_S", "120")) +MAX_PERIODS = int(os.environ.get("SPIPE_MAX_PERIODS", "10000")) +MAX_RESULT_CELLS = int(os.environ.get("SPIPE_MAX_RESULT_CELLS", "50000000")) +# Batch jobs (criticality, optimisation ...) solve the network many times. +JOB_TIMEOUT_S = float(os.environ.get("SPIPE_JOB_TIMEOUT_S", "900")) +WORKERS = int(os.environ.get("SPIPE_WORKERS", str(max(1, min(4, (os.cpu_count() or 2) - 1))))) + +app = FastAPI() + +app.add_middleware( + CORSMiddleware, + allow_origins=["http://localhost:5173", "http://127.0.0.1:5173"], + allow_methods=["*"], + allow_headers=["*"], +) + +api = EpanetAPI() + +# Analyses run in separate processes: the ctypes loop is CPU-bound and +# synchronous, so running it on the event loop froze every other request +# (health checks waited up to 16 s behind one large network). +_pool = None + + +def _get_pool() -> ProcessPoolExecutor: + global _pool + if _pool is None: + _pool = ProcessPoolExecutor(max_workers=WORKERS) + return _pool + + +@app.middleware("http") +async def reject_oversized_body(request: Request, call_next): + # Starlette spools the whole multipart body before the handler runs, so + # check the declared size first instead of after receiving it all. + # scope["path"] is the routed path; request.url is rebuilt from the Host + # header, so a malformed Host could make the path check miss (GHSA-86qp). + length = request.headers.get("content-length") + path = request.scope.get("path", "") + if (path == "/api/analyze" or path.startswith(("/api/jobs/", "/api/gis/"))) and length and length.isdigit() and int(length) > MAX_UPLOAD_BYTES + 64 * 1024: + return JSONResponse(status_code=413, content={"detail": f"File size exceeds {MAX_UPLOAD_BYTES // (1024 * 1024)} MiB limit"}) + return await call_next(request) + + +def run_job_bytes(name: str, contents: bytes, params: dict) -> dict: + """Process-pool entry point for /api/jobs/{name}; same envelope as analyze_bytes.""" + try: + result = get_job(name)(contents, params) + return {"json": json.dumps(result, ensure_ascii=False, allow_nan=False, separators=(",", ":")).encode("utf-8")} + except BatchError as e: + return {"error": (400, str(e))} + except EpanetException as e: + return {"error": (422, str(e))} + except ValueError as e: + return {"error": (500, f"Result contains non-finite values: {e}")} + + +@app.post("/api/jobs/{name}") +async def run_job(name: str, file: UploadFile = File(...), params: str = Form("{}")): + """Batch analysis over one INP. `params` is a JSON object (see backend/jobs.py).""" + if not (file.filename or "").lower().endswith(".inp"): + raise HTTPException(status_code=400, detail="File must be an .inp file") + try: + parsed = json.loads(params or "{}") + if not isinstance(parsed, dict): + raise ValueError + except ValueError: + raise HTTPException(status_code=400, detail="params must be a JSON object") + contents = await file.read(MAX_UPLOAD_BYTES + 1) + if len(contents) > MAX_UPLOAD_BYTES: + raise HTTPException(status_code=413, detail=f"File size exceeds {MAX_UPLOAD_BYTES // (1024 * 1024)} MiB limit") + loop = asyncio.get_running_loop() + try: + outcome = await asyncio.wait_for( + loop.run_in_executor(_get_pool(), run_job_bytes, name, contents, parsed), + timeout=JOB_TIMEOUT_S, + ) + except asyncio.TimeoutError: + raise HTTPException(status_code=504, detail=f"Analysis exceeded {JOB_TIMEOUT_S:.0f} s time limit") + if "error" in outcome: + status, detail = outcome["error"] + raise HTTPException(status_code=status, detail=detail) + return Response(content=outcome["json"], media_type="application/json") + + +def read_vector_bytes(contents: bytes, filename: str, layer: str | None, src_epsg: int | None, default_crs: str | None = None) -> dict: + try: + result = read_vector(contents, filename, layer, src_epsg, default_crs) + return {"json": json.dumps(result, ensure_ascii=False, allow_nan=False, separators=(",", ":")).encode("utf-8")} + except BatchError as e: + return {"error": (400, str(e))} + + +@app.post("/api/gis/vector") +async def gis_vector(file: UploadFile = File(...), layer: str = Form(""), srcEpsg: str = Form(""), defaultCrs: str = Form("")): + """Any GDAL vector format (zipped SHP, DXF, DGN, MIF, GML, KML, GPKG, E00 ...) -> GeoJSON (WGS84).""" + src_epsg = None + if srcEpsg.strip(): + if not srcEpsg.strip().isdigit(): + raise HTTPException(status_code=400, detail="srcEpsg must be an EPSG number") + src_epsg = int(srcEpsg) + contents = await file.read(MAX_UPLOAD_BYTES + 1) + if len(contents) > MAX_UPLOAD_BYTES: + raise HTTPException(status_code=413, detail=f"File size exceeds {MAX_UPLOAD_BYTES // (1024 * 1024)} MiB limit") + loop = asyncio.get_running_loop() + try: + outcome = await asyncio.wait_for( + loop.run_in_executor(_get_pool(), read_vector_bytes, contents, file.filename or "", layer or None, src_epsg, defaultCrs or None), + timeout=ANALYZE_TIMEOUT_S, + ) + except asyncio.TimeoutError: + raise HTTPException(status_code=504, detail="GIS conversion timed out") + if "error" in outcome: + status, detail = outcome["error"] + raise HTTPException(status_code=status, detail=detail) + return Response(content=outcome["json"], media_type="application/json") + + +def _dem_call(fn, *args): + """Run a DEM operation; BatchError -> 400 (pickle-safe tuple for the pool).""" + try: + return {"ok": fn(*args)} + except dem_store.BatchError as e: + return {"error": (400, str(e))} + + +async def _dem_run(fn, *args, timeout: float = 300): + loop = asyncio.get_running_loop() + try: + outcome = await asyncio.wait_for(loop.run_in_executor(None, _dem_call, fn, *args), timeout=timeout) + except asyncio.TimeoutError: + raise HTTPException(status_code=504, detail="DEM processing timed out") + if "error" in outcome: + status, detail = outcome["error"] + raise HTTPException(status_code=status, detail=detail) + return outcome["ok"] + + +@app.post("/api/dem") +async def dem_upload(file: UploadFile = File(...)): + """Store a DEM raster (GeoTIFF / ASC / IMG, or a zip holding one) and return its metadata.""" + fd, tmp = tempfile.mkstemp(prefix="spipe_dem_") + size = 0 + try: + with os.fdopen(fd, "wb") as f: + while chunk := await file.read(1024 * 1024): + size += len(chunk) + if size > MAX_DEM_BYTES: + raise HTTPException(status_code=413, detail=f"DEM exceeds {MAX_DEM_BYTES // (1024 * 1024)} MiB limit") + f.write(chunk) + return await _dem_run(dem_store.import_dem, tmp, file.filename or "dem.tif") + finally: + try: + os.remove(tmp) + except OSError: + pass + + +@app.get("/api/dem/{dem_id}") +async def dem_get(dem_id: str): + return await _dem_run(dem_store.dem_info, dem_id) + + +@app.get("/api/dem/{dem_id}/preview.png") +async def dem_preview(dem_id: str): + png = await _dem_run(dem_store.preview_png, dem_id) + return Response(content=png, media_type="image/png", headers={"Cache-Control": "private, max-age=86400"}) + + +@app.get("/api/dem/{dem_id}/terrain/{z}/{x}/{y}.png") +async def dem_terrain(dem_id: str, z: int, x: int, y: int): + """Terrarium-encoded terrain tiles for the 3D view.""" + png = await _dem_run(dem_store.terrain_tile, dem_id, z, x, y, timeout=60) + return Response(content=png, media_type="image/png", headers={"Cache-Control": "private, max-age=86400"}) + + +@app.post("/api/dem/{dem_id}/sample") +async def dem_sample(dem_id: str, request: Request): + """Body: {"points": [[x, y], ...], "crs": ""}.""" + body = await request.json() + points = body.get("points") or [] + if len(points) > 500_000: + raise HTTPException(status_code=400, detail="too many points") + return {"values": await _dem_run(dem_store.sample, dem_id, points, body.get("crs"))} + + +@app.post("/api/dem/{dem_id}/hydro") +async def dem_hydro(dem_id: str, request: Request): + """Body: {"op": "streams", "minAreaKm2": 0.1} or {"op": "watershed", "points": [[x, y]], "crs": "...", "snap": m}.""" + body = await request.json() + if body.get("op") == "streams": + return await _dem_run(dem_store.streams, dem_id, float(body.get("minAreaKm2") or 0.1), timeout=600) + if body.get("op") == "watershed": + return await _dem_run(dem_store.watershed, dem_id, body.get("points") or [], body.get("crs"), float(body.get("snap") or 50), timeout=600) + raise HTTPException(status_code=400, detail="op must be streams or watershed") + + +@app.post("/api/dem/from-points") +async def dem_from_points(request: Request): + """Body: {"points": [[x, y, z], ...], "crs": "...", "cell": metres, "name": "..."} -> new DEM.""" + body = await request.json() + points = body.get("points") or [] + if len(points) > 2_000_000: + raise HTTPException(status_code=400, detail="too many points") + return await _dem_run(dem_store.from_points, points, body.get("crs"), float(body.get("cell") or 0), str(body.get("name") or "점 표고 DEM"), body.get("targetCrs")) + + +@app.post("/api/gis/export") +async def gis_export(request: Request): + """Body: {"featureCollection": {...WGS84}, "crs": "", "format": "shp|gpkg|dxf|geojson|kml", "name": "..."}.""" + body = await request.json() + data, filename, media = await _dem_run(gisops.write_vector, body.get("featureCollection"), body.get("crs"), str(body.get("format") or "geojson"), str(body.get("name") or "layer")) + return Response(content=data, media_type=media, headers={"Content-Disposition": f"attachment; filename*=UTF-8''{quote(filename)}"}) + + +@app.post("/api/gis/op") +async def gis_op(request: Request): + """Body: {"op": "buffer|dissolve|intersection|clip|difference|voronoi|grid", "crs": "", ...}.""" + body = await request.json() + return await _dem_run(gisops.vector_op, str(body.get("op") or ""), body) + + +@app.post("/api/gis/reproject") +async def gis_reproject(request: Request): + """Body: {"featureCollection": {...}, "from": "", "to": ""}.""" + body = await request.json() + return await _dem_run(gisops.reproject_fc, body.get("featureCollection"), body.get("from"), body.get("to")) + + +@app.get("/api/health") +def health(): + return {"status": "ok"} + + +def analyze_bytes(contents: bytes, columnar: bool = False) -> dict: + """Process-pool entry point. Returns {"json": bytes} or {"error": (status, detail)} + because HTTPException does not survive pickling back to the parent.""" + try: + with tempfile.TemporaryDirectory() as tmpdir: + inp_path = os.path.join(tmpdir, "network.inp") + rpt_path = os.path.join(tmpdir, "network.rpt") + out_path = os.path.join(tmpdir, "network.out") + with open(inp_path, "wb") as f: + f.write(contents) + result = run_epanet(inp_path, rpt_path, out_path) + if columnar: + result = to_columnar(result) + # Serialise here, in the worker: encoding a 10 MB result on the event + # loop stalled other requests by ~0.5 s per response. + body = json.dumps(result, ensure_ascii=False, allow_nan=False, separators=(",", ":")).encode("utf-8") + return {"json": body} + except HTTPException as e: + return {"error": (e.status_code, e.detail)} + except ValueError as e: # NaN/Inf in results + return {"error": (500, f"Result contains non-finite values: {e}")} + + +@app.post("/api/analyze") +async def analyze(file: UploadFile = File(...), format: str = "object"): + """Full EPS analysis. ``format=columnar`` returns the compact packed time + series (backend/columnar.py); the default keeps the per-element objects.""" + if not (file.filename or "").lower().endswith(".inp"): + raise HTTPException(status_code=400, detail="File must be an .inp file") + + contents = await file.read(MAX_UPLOAD_BYTES + 1) + if len(contents) > MAX_UPLOAD_BYTES: + raise HTTPException(status_code=413, detail=f"File size exceeds {MAX_UPLOAD_BYTES // (1024 * 1024)} MiB limit") + + loop = asyncio.get_running_loop() + try: + outcome = await asyncio.wait_for( + loop.run_in_executor(_get_pool(), analyze_bytes, contents, format == "columnar"), + timeout=ANALYZE_TIMEOUT_S, + ) + except asyncio.TimeoutError: + raise HTTPException(status_code=504, detail=f"Analysis exceeded {ANALYZE_TIMEOUT_S:.0f} s time limit") + if "error" in outcome: + status, detail = outcome["error"] + raise HTTPException(status_code=status, detail=detail) + return Response(content=outcome["json"], media_type="application/json") + + +def decode_id(raw_bytes: bytes) -> str: + try: + return raw_bytes.decode('utf-8') + except UnicodeDecodeError: + try: + return raw_bytes.decode('cp949') + except UnicodeDecodeError: + return raw_bytes.decode('latin1', errors='replace') + +def read_report_errors(rpt_path: str, limit: int = 10) -> list: + """Return the 'Error NNN: ...' lines EPANET wrote to the report file.""" + if not os.path.exists(rpt_path): + return [] + try: + with open(rpt_path, "r", encoding="utf-8", errors="replace") as rf: + lines = [ln.strip() for ln in rf if re.match(r"\s*Error \d+", ln)] + except OSError: + return [] + return lines[:limit] + +def run_epanet(inp_path: str, rpt_path: str, out_path: str): + ph = api.EN_Project() + + # 1. Version check + version = ctypes.c_int() + api.lib.EN_getversion(ctypes.byref(version)) + if version.value != 20305: + raise HTTPException(status_code=500, detail=f"Unsupported EPANET version: {version.value}, expected 20305") + + ph_created = False + ph_opened = False + hydraulics_opened = False + + try: + api.lib.EN_createproject(ctypes.byref(ph)) + ph_created = True + + # open -- a failed EN_open still leaves the input/report files open, so + # EN_close must run in the finally block either way (EN_runproject does + # the same); otherwise Windows can't delete the temp dir afterwards. + ph_opened = True + api.lib.EN_open(ph, inp_path.encode('utf-8'), rpt_path.encode('utf-8'), out_path.encode('utf-8')) + + # get units + flow_unit = ctypes.c_int() + api.lib.EN_getflowunits(ph, ctypes.byref(flow_unit)) + f_unit_str = FLOW_UNITS.get(flow_unit.value, "Unknown") + + press_unit = ctypes.c_double() + api.lib.EN_getoption(ph, EN.PRESS_UNITS, ctypes.byref(press_unit)) + p_unit_str = PRESS_UNITS.get(int(press_unit.value), "Unknown") + + # get counts + node_count = ctypes.c_int() + api.lib.EN_getcount(ph, EN.NODECOUNT, ctypes.byref(node_count)) + + link_count = ctypes.c_int() + api.lib.EN_getcount(ph, EN.LINKCOUNT, ctypes.byref(link_count)) + + # Reject resource-exhausting inputs before solving (a few-KB INP with + # DURATION 10000 hrs / HYDRAULIC TIMESTEP 1 sec asks for 36M periods). + duration, hstep = ctypes.c_long(), ctypes.c_long() + api.lib.EN_gettimeparam(ph, EN.DURATION, ctypes.byref(duration)) + api.lib.EN_gettimeparam(ph, EN.HYDSTEP, ctypes.byref(hstep)) + report_step, report_start = ctypes.c_long(), ctypes.c_long() + api.lib.EN_gettimeparam(ph, EN.REPORTSTEP, ctypes.byref(report_step)) + api.lib.EN_gettimeparam(ph, EN.REPORTSTART, ctypes.byref(report_start)) + planned_periods = duration.value // max(1, hstep.value) + 1 + planned_cells = planned_periods * (node_count.value + link_count.value) + if planned_periods > MAX_PERIODS or planned_cells > MAX_RESULT_CELLS: + raise HTTPException( + status_code=413, + detail=( + f"Simulation too large: {planned_periods} hydraulic periods x " + f"{node_count.value + link_count.value} elements " + f"(limits {MAX_PERIODS} periods, {MAX_RESULT_CELLS} result values). " + "Increase HYDRAULIC TIMESTEP or shorten DURATION." + ), + ) + + # extract node metadata + nodes = {} + node_id_map = {} + for i in range(1, node_count.value + 1): + node_id = ctypes.create_string_buffer(256) + api.lib.EN_getnodeid(ph, i, node_id) + nid = decode_id(node_id.value) + node_id_map[i] = nid + + node_type = ctypes.c_int() + api.lib.EN_getnodetype(ph, i, ctypes.byref(node_type)) + ntype = node_type.value + + x, y = ctypes.c_double(), ctypes.c_double() + coords = None + try: + api.lib.EN_getcoord(ph, i, ctypes.byref(x), ctypes.byref(y)) + coords = {"x": x.value, "y": y.value} + except EpanetException: + pass + + nodes[nid] = { + "id": nid, + "type": ntype, + "coordinates": coords, + } + + # extract link metadata + links = {} + link_id_map = {} + for i in range(1, link_count.value + 1): + link_id = ctypes.create_string_buffer(256) + api.lib.EN_getlinkid(ph, i, link_id) + lid = decode_id(link_id.value) + link_id_map[i] = lid + + link_type = ctypes.c_int() + api.lib.EN_getlinktype(ph, i, ctypes.byref(link_type)) + ltype = link_type.value + + n1, n2 = ctypes.c_int(), ctypes.c_int() + api.lib.EN_getlinknodes(ph, i, ctypes.byref(n1), ctypes.byref(n2)) + + n1_id = ctypes.create_string_buffer(256) + api.lib.EN_getnodeid(ph, n1.value, n1_id) + + n2_id = ctypes.create_string_buffer(256) + api.lib.EN_getnodeid(ph, n2.value, n2_id) + + v_count = ctypes.c_int() + api.lib.EN_getvertexcount(ph, i, ctypes.byref(v_count)) + + vertices = [] + for j in range(1, v_count.value + 1): + vx, vy = ctypes.c_double(), ctypes.c_double() + api.lib.EN_getvertex(ph, i, j, ctypes.byref(vx), ctypes.byref(vy)) + vertices.append({"x": vx.value, "y": vy.value}) + + links[lid] = { + "id": lid, + "type": ltype, + "fromNode": decode_id(n1_id.value), + "toNode": decode_id(n2_id.value), + "vertices": vertices, + } + + # 3. Open hydraulics with EN_SAVE=1 (Save to hyd file so water quality can use it) + api.lib.EN_openH(ph) + hydraulics_opened = True + api.lib.EN_initH(ph, EN.SAVE) + + time_steps = [] + node_series = {nid: {"demand": [], "head": [], "pressure": [], "quality": []} for nid in nodes} + link_series = {lid: {"flow": [], "velocity": [], "headloss": [], "quality": [], "energy": [], "efficiency": []} for lid in links} + + t = ctypes.c_long() + tstep = ctypes.c_long(1) + + engine_warnings = [] + while True: + # Warning codes 1-6 (e.g. 1 unbalanced, 6 negative pressures) are + # returned here, not raised; they only reach the report file when + # [REPORT] MESSAGES is on, so collect them directly. + code = api.lib.EN_runH(ph, ctypes.byref(t)) + if 0 < code <= 10: + engine_warnings.append({"time": t.value, "code": code}) + time_steps.append(t.value) + # Control/tank events add steps beyond DURATION/HYDSTEP; keep the cap hard. + if len(time_steps) > MAX_PERIODS * 2: + raise HTTPException(status_code=413, detail=f"Simulation produced more than {MAX_PERIODS * 2} hydraulic periods") + + for i in range(1, node_count.value + 1): + nid = node_id_map[i] + d, h, p = ctypes.c_double(), ctypes.c_double(), ctypes.c_double() + api.lib.EN_getnodevalue(ph, i, EN.DEMAND, ctypes.byref(d)) + api.lib.EN_getnodevalue(ph, i, EN.HEAD, ctypes.byref(h)) + api.lib.EN_getnodevalue(ph, i, EN.PRESSURE, ctypes.byref(p)) + node_series[nid]["demand"].append(d.value) + node_series[nid]["head"].append(h.value) + node_series[nid]["pressure"].append(p.value) + + for i in range(1, link_count.value + 1): + lid = link_id_map[i] + f, v, hl = ctypes.c_double(), ctypes.c_double(), ctypes.c_double() + api.lib.EN_getlinkvalue(ph, i, EN.FLOW, ctypes.byref(f)) + api.lib.EN_getlinkvalue(ph, i, EN.VELOCITY, ctypes.byref(v)) + api.lib.EN_getlinkvalue(ph, i, EN.HEADLOSS, ctypes.byref(hl)) + link_series[lid]["flow"].append(f.value) + link_series[lid]["velocity"].append(v.value) + link_series[lid]["headloss"].append(hl.value) + + if links[lid]["type"] == EN.PUMP: + e_val, ef_val = ctypes.c_double(), ctypes.c_double() + api.lib.EN_getlinkvalue(ph, i, EN.ENERGY, ctypes.byref(e_val)) + api.lib.EN_getlinkvalue(ph, i, EN.PUMP_EFFIC, ctypes.byref(ef_val)) + link_series[lid]["energy"].append(round(e_val.value, 2)) + # EN_PUMP_EFFIC is a decimal ratio (0.75 for 75%), convert to percent + link_series[lid]["efficiency"].append(round(ef_val.value * 100, 1)) + api.lib.EN_nextH(ph, ctypes.byref(tstep)) + if tstep.value <= 0: + break + + # Close hydraulics before running quality + api.lib.EN_closeH(ph) + hydraulics_opened = False + + # 4. Check and run Water Quality Simulation (Chlorine/Fluoride decay, Water Age, Chemical Tracer) + qual_type = ctypes.c_int(0) + trace_node = ctypes.c_int(0) + chem_name = ctypes.create_string_buffer(256) + chem_units = ctypes.create_string_buffer(256) + quality_info = None + quality_failed = False + quality_error_message = None + try: + api.lib.EN_getqualinfo(ph, ctypes.byref(qual_type), chem_name, chem_units, ctypes.byref(trace_node)) + q_val = qual_type.value + if q_val > 0: + quality_info = { + "qualType": q_val, + "typeName": QUAL_TYPES.get(q_val, "CHEMICAL"), + "chemName": chem_name.value.decode("utf-8", errors="ignore").strip() or ("Age" if q_val == 2 else "Quality"), + "chemUnits": chem_units.value.decode("utf-8", errors="ignore").strip() or ("hours" if q_val == 2 else "mg/L"), + "traceNode": node_id_map.get(trace_node.value, "") if trace_node.value > 0 else "", + "status": "success", + } + except Exception as e: + quality_failed = True + quality_error_message = str(e) + + if quality_info and quality_info["qualType"] > 0: + quality_opened = False + try: + api.lib.EN_openQ(ph) + quality_opened = True + api.lib.EN_initQ(ph, 0) + tQ = ctypes.c_long() + tstepQ = ctypes.c_long(1) + + while True: + api.lib.EN_runQ(ph, ctypes.byref(tQ)) + for i in range(1, node_count.value + 1): + nid = node_id_map[i] + qv = ctypes.c_double() + api.lib.EN_getnodevalue(ph, i, EN.QUALITY, ctypes.byref(qv)) + node_series[nid]["quality"].append(round(qv.value, 4)) + + for i in range(1, link_count.value + 1): + lid = link_id_map[i] + lqv = ctypes.c_double() + api.lib.EN_getlinkvalue(ph, i, EN.LINKQUAL, ctypes.byref(lqv)) + link_series[lid]["quality"].append(round(lqv.value, 4)) + + api.lib.EN_nextQ(ph, ctypes.byref(tstepQ)) + if tstepQ.value <= 0: + break + except Exception as e: + quality_failed = True + quality_error_message = str(e) + quality_info["status"] = "failed" + quality_info["errorMessage"] = quality_error_message + finally: + if quality_opened: + try: + api.lib.EN_closeQ(ph) + except Exception: + pass + + # Assign initial values and full timeSeries + num_steps = len(time_steps) + has_valid_quality = ( + quality_info is not None + and quality_info.get("status") == "success" + and not quality_failed + ) + + for nid in nodes: + if not has_valid_quality or len(node_series[nid]["quality"]) != num_steps: + node_series[nid]["quality"] = [] + nodes[nid]["demand"] = node_series[nid]["demand"][0] if node_series[nid]["demand"] else 0.0 + nodes[nid]["head"] = node_series[nid]["head"][0] if node_series[nid]["head"] else 0.0 + nodes[nid]["pressure"] = node_series[nid]["pressure"][0] if node_series[nid]["pressure"] else 0.0 + nodes[nid]["quality"] = node_series[nid]["quality"][0] if has_valid_quality and node_series[nid]["quality"] else None + nodes[nid]["timeSeries"] = node_series[nid] + + for lid in links: + if not has_valid_quality or len(link_series[lid]["quality"]) != num_steps: + link_series[lid]["quality"] = [] + links[lid]["flow"] = link_series[lid]["flow"][0] if link_series[lid]["flow"] else 0.0 + links[lid]["velocity"] = link_series[lid]["velocity"][0] if link_series[lid]["velocity"] else 0.0 + links[lid]["headloss"] = link_series[lid]["headloss"][0] if link_series[lid]["headloss"] else 0.0 + links[lid]["quality"] = link_series[lid]["quality"][0] if has_valid_quality and link_series[lid]["quality"] else None + links[lid]["timeSeries"] = link_series[lid] + + # 5. Compute Pump Energy Metrics (kWh, peak kW, average efficiency, utilization %) + pump_lids = [lid for lid, link in links.items() if link["type"] == EN.PUMP] + pump_energy_map = {} + total_duration_sec = (time_steps[-1] - time_steps[0]) if len(time_steps) > 1 else 0 + + for lid in pump_lids: + link = links[lid] + energies = link_series[lid].get("energy", []) + effics = link_series[lid].get("efficiency", []) + active_effics = [ef for ef in effics if ef > 0] + + # dt-weighted kWh integration (excluding terminal reading which has no following duration) + pump_kwh = 0.0 + pump_active_sec = 0.0 + if len(time_steps) > 1: + for i in range(len(time_steps) - 1): + dt_hours = max(0.0, float(time_steps[i + 1] - time_steps[i])) / 3600.0 + kw = energies[i] if i < len(energies) else 0.0 + pump_kwh += kw * dt_hours + if kw > 0: + pump_active_sec += max(0.0, float(time_steps[i + 1] - time_steps[i])) + elif energies: + pump_kwh = float(energies[0]) + if energies[0] > 0: + pump_active_sec = 3600.0 + + total_kwh = round(pump_kwh, 2) + peak_kw = round(max(energies, default=0.0), 2) + # Time-weighted (hydraulic steps are not uniform: control/tank events + # insert short steps), i.e. kWh over hours actually running. + avg_kw = round(pump_kwh / (pump_active_sec / 3600.0), 2) if pump_active_sec > 0 else 0.0 + avg_effic = round(sum(active_effics) / len(active_effics), 1) if active_effics else 0.0 + utilization = round((pump_active_sec / total_duration_sec) * 100.0, 1) if total_duration_sec > 0 else (100.0 if energies and energies[0] > 0 else 0.0) + + link["energy"] = energies[0] if energies else 0.0 + link["efficiency"] = effics[0] if effics else 0.0 + link["totalKwh"] = total_kwh + link["peakKw"] = peak_kw + link["avgKw"] = avg_kw + link["utilization"] = utilization + + pump_energy_map[lid] = { + "id": lid, + "fromNode": link["fromNode"], + "toNode": link["toNode"], + "totalKwh": total_kwh, + "peakKw": peak_kw, + "avgKw": avg_kw, + "avgEfficiency": avg_effic, + "utilization": utilization, + } + + # System peak kW is the maximum over all time steps of the simultaneous sum of pump kWs + system_peak_kw = 0.0 + if pump_lids and time_steps: + for i in range(len(time_steps)): + step_sum = sum(link_series[lid]["energy"][i] for lid in pump_lids if i < len(link_series[lid]["energy"])) + if step_sum > system_peak_kw: + system_peak_kw = step_sum + + energy_summary = { + "pumps": pump_energy_map, + "totalKwh": round(sum(p["totalKwh"] for p in pump_energy_map.values()), 2), + "peakKw": round(system_peak_kw, 2), + } if pump_energy_map else None + + if ph_opened: + try: + api.lib.EN_close(ph) + ph_opened = False + except Exception: + pass + report_text = "" + if os.path.exists(rpt_path): + try: + with open(rpt_path, "r", encoding="utf-8", errors="ignore") as rf: + report_text = rf.read() + except Exception: + pass + + return { + "engine": { + "runtime": "native", + "version": "2.3.5" + }, + "timeSeconds": time_steps[0] if time_steps else 0, + "timeSteps": time_steps, + "units": { + "flow": f_unit_str, + "pressure": p_unit_str + }, + "nodes": nodes, + "links": links, + "reportText": report_text, + "qualityInfo": quality_info, + "energySummary": energy_summary, + "engineWarnings": engine_warnings, + "reportStart": report_start.value, + "reportStep": report_step.value, + } + except EpanetException as e: + # The report file usually names the root cause (e.g. "Error 227: invalid + # head curve") that the API code alone (e.g. 110) hides. Close first so + # the report is flushed and readable. + if hydraulics_opened: + try: + api.lib.EN_closeH(ph) + except Exception: + pass + hydraulics_opened = False + if ph_opened: + try: + api.lib.EN_close(ph) + except Exception: + pass + ph_opened = False + detail = str(e) + causes = read_report_errors(rpt_path) + if causes: + detail += " | " + " / ".join(causes) + raise HTTPException(status_code=500, detail=detail) + finally: + if hydraulics_opened: + try: + api.lib.EN_closeH(ph) + except Exception: + pass + if ph_opened: + try: + api.lib.EN_close(ph) + except Exception: + pass + if ph_created: + try: + api.lib.EN_deleteproject(ph) + except Exception: + pass \ No newline at end of file diff --git a/backend/requirements-api.txt b/backend/requirements-api.txt new file mode 100644 index 0000000..7b19beb --- /dev/null +++ b/backend/requirements-api.txt @@ -0,0 +1,12 @@ +# API server (also used by deploy/Dockerfile). Keep pins in this one file. +fastapi==0.143.1 +starlette==1.8.0 +python-multipart==0.0.32 +uvicorn==0.54.0 +numpy==2.5.3 +# GIS / raster (GDAL is bundled in these wheels) +pyogrio==0.13.0 +rasterio==1.5.2 +pyproj==3.8.0 +shapely==2.2.0 +scipy==1.18.1 diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..02632a3 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,8 @@ +-r requirements-api.txt + +# blocksys (상수도 블록시스템 자동 분할 도구) +wntr==1.5.0 +networkx==3.6.1 +scikit-learn==1.9.0 +pandas==3.0.5 +pyyaml==6.0.3 \ No newline at end of file diff --git a/backend/tests/__init__.py b/backend/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/tests/test_api.py b/backend/tests/test_api.py new file mode 100644 index 0000000..41d4d07 --- /dev/null +++ b/backend/tests/test_api.py @@ -0,0 +1,155 @@ +"""HTTP-layer tests for backend/main.py (FastAPI TestClient + real EPANET DLL). + +Run from the repo root: .venv/Scripts/python -m pytest backend/tests -q +""" +from pathlib import Path + +import pytest +from fastapi.testclient import TestClient + +from backend import main +from backend.main import app + +REPO = Path(__file__).resolve().parents[2] +PUBLIC = REPO / "public" + + +@pytest.fixture(scope="module") +def client(): + with TestClient(app, raise_server_exceptions=False) as c: + yield c + + +def post(client, name: str, data: bytes): + return client.post("/api/analyze", files={"file": (name, data, "text/plain")}) + + +SIMPLE = b"""[JUNCTIONS] + J1 10 5 + J2 12 3 +[RESERVOIRS] + R1 50 +[PIPES] + P1 R1 J1 1000 200 100 + P2 J1 J2 1000 150 100 +[OPTIONS] + Units LPS +[END] +""" + + +def test_health(client): + r = client.get("/api/health") + assert r.status_code == 200 + assert r.json() == {"status": "ok"} + + +def test_net1_runs(client): + r = post(client, "Net1.inp", (PUBLIC / "Net1.inp").read_bytes()) + assert r.status_code == 200 + body = r.json() + assert len(body["nodes"]) == 11 and len(body["links"]) == 13 + assert body["units"] == {"flow": "GPM", "pressure": "psi"} + assert body["reportStep"] > 0 + assert body["engineWarnings"] == [] + + +def test_wrong_extension_rejected(client): + assert post(client, "a.txt", SIMPLE).status_code == 400 + + +def test_oversized_upload_rejected(client): + r = post(client, "big.inp", b"x" * (main.MAX_UPLOAD_BYTES + 1)) + assert r.status_code == 413 + + +def test_early_size_check_not_bypassed_by_bad_host(client): + # request.url is rebuilt from Host; the early 413 must not depend on it. + big = str(main.MAX_UPLOAD_BYTES + 10 * 1024 * 1024) + for host in ("localhost", "bad host:abc", "evil.example/../x"): + r = client.post("/api/analyze", headers={"content-length": big, "host": host}, content=b"") + assert r.status_code == 413, (host, r.status_code) + + +def test_invalid_inp_returns_json_with_root_cause(client): + # Previously: EN_open failure leaked the .rpt handle, cleanup raised + # PermissionError on Windows, and the client got plain-text 500. + r = post(client, "bad.inp", b"[JUNCTIONS]\n J1 abc\n[END]\n") + assert r.status_code == 500 + assert r.headers["content-type"].startswith("application/json") + detail = r.json()["detail"] + assert "Error 200" in detail + assert "Error 202" in detail # root cause pulled from the report file + + +def test_warning_codes_collected_even_with_messages_no(client): + # J1 sits above the reservoir head -> negative pressure (warning 6). + inp = SIMPLE.replace(b" J1 10 5", b" J1 100 5").replace( + b"[OPTIONS]", b"[REPORT]\n Messages No\n[OPTIONS]" + ) + r = post(client, "neg.inp", inp) + assert r.status_code == 200 + body = r.json() + assert "WARNING" not in body["reportText"] + assert any(w["code"] == 6 for w in body["engineWarnings"]) + + +def test_step_amplification_rejected_fast(client): + inp = SIMPLE.replace( + b"[OPTIONS]", b"[TIMES]\n Duration 10000:00\n Hydraulic Timestep 0:00:01\n[OPTIONS]" + ) + r = post(client, "dos.inp", inp) + assert r.status_code == 413 + assert "Simulation too large" in r.json()["detail"] + + +def test_columnar_format_carries_identical_values(client): + import base64 + from array import array + + data = (PUBLIC / "Net1.inp").read_bytes() # pump + chlorine: every series kind + obj = client.post("/api/analyze", files={"file": ("Net1.inp", data, "text/plain")}).json() + col = client.post("/api/analyze?format=columnar", files={"file": ("Net1.inp", data, "text/plain")}).json() + assert col["format"] == "spipe-columnar-1" + steps = len(obj["timeSteps"]) + for side, keys in (("nodes", ("demand", "head", "pressure", "quality")), ("links", ("flow", "velocity", "headloss", "quality"))): + ids = col[side]["ids"] + assert ids == list(obj[side]) + for key in keys: + flat = array("d", base64.b64decode(col[side]["series"][key])) + for i, element_id in enumerate(ids): + assert list(flat[i * steps:(i + 1) * steps]) == obj[side][element_id]["timeSeries"][key] + pump = col["links"]["pumps"]["9"] + assert pump["energySeries"] == obj["links"]["9"]["timeSeries"]["energy"] + assert pump["totalKwh"] == obj["links"]["9"]["totalKwh"] + + +def test_overlong_utf8_id_is_engine_error(client): + # 12 Korean chars = 36 UTF-8 bytes > EPANET MAXID (31 bytes) -> Error 252. + long_id = "상리배수지유출관로제일번".encode("utf-8") + inp = SIMPLE.replace(b" J2 12 3", b" " + long_id + b" 12 3").replace(b"J1 J2", b"J1 " + long_id) + r = post(client, "longid.inp", inp) + assert r.status_code == 500 + assert "252" in r.json()["detail"] + + +NET1 = (PUBLIC / "Net1.inp").read_bytes() + + +def post_job(client, name, inp=SIMPLE, params="{}"): + return client.post(f"/api/jobs/{name}", files={"file": ("n.inp", inp, "text/plain")}, data={"params": params}) + + +def test_job_summary_runs(client): + r = post_job(client, "summary", NET1) + assert r.status_code == 200, r.text + body = r.json() + assert body["junctions"] == 9 + assert len(body["times"]) == len(body["minPressure"]) == 25 + assert all(lo <= hi for lo, hi in zip(body["minPressure"], body["maxPressure"])) + + +def test_job_unknown_and_bad_params(client): + assert post_job(client, "nope").status_code == 400 + assert post_job(client, "summary", params="[1]").status_code == 400 + assert post_job(client, "summary", params="not json").status_code == 400 diff --git a/backend/tests/test_batch.py b/backend/tests/test_batch.py new file mode 100644 index 0000000..06c6db0 --- /dev/null +++ b/backend/tests/test_batch.py @@ -0,0 +1,87 @@ +"""backend/batch.py against the real EPANET DLL.""" +from pathlib import Path + +import numpy as np + +from backend.batch import Network, parse_time +from backend.epanet import EN + +NET1 = (Path(__file__).resolve().parents[2] / "public" / "Net1.inp").read_bytes() + + +def test_open_lookup_and_baseline(): + with Network(NET1) as net: + assert net.node_count == 11 and net.link_count == 13 + assert net.node_ids[net.node_index("22") - 1] == "22" + res = net.simulate(node_props=(EN.PRESSURE,), link_props=(EN.FLOW,)) + assert len(res.times) == 25 and res.times[0] == 0 and res.times[-1] == 24 * 3600 + assert res.nodes[EN.PRESSURE].shape == (25, 11) + assert res.links[EN.FLOW].shape == (25, 13) + + +def test_windowed_extra_demand_only_acts_in_window(): + with Network(NET1) as net: + j = net.node_index("22") + base = net.simulate(nodes=[j]).nodes[EN.PRESSURE][:, 0] + net.window_pattern("FIREWIN", 6 * 3600, 9 * 3600) + cat = net.add_demand(j, 500.0, "FIREWIN", "fire") + fire = net.simulate(nodes=[j]).nodes[EN.PRESSURE][:, 0] + hours = np.arange(25) + inside = (hours >= 6) & (hours < 9) + assert np.all(fire[inside] < base[inside] - 1.0) + # Tank levels carry the draw-down a little past the window; before it, nothing changes. + assert np.allclose(fire[hours < 6], base[hours < 6], atol=1e-6) + net.delete_demand(j, cat) + again = net.simulate(nodes=[j]).nodes[EN.PRESSURE][:, 0] + assert np.allclose(again, base, atol=1e-6) + + +def test_timer_control_closes_pipe_in_window(): + with Network(NET1) as net: + p = net.link_index("12") + c1 = net.add_timer_control(p, 0, 3 * 3600) + c2 = net.add_timer_control(p, 1, 5 * 3600) + flow = net.simulate(node_props=(), link_props=(EN.FLOW,), links=[p]).links[EN.FLOW][:, 0] + assert abs(flow[3]) < 1e-6 and abs(flow[4]) < 1e-6 + assert abs(flow[2]) > 1e-3 and abs(flow[6]) > 1e-3 + net.delete_control(c2) + net.delete_control(c1) + + +def test_parse_time(): + assert parse_time("6:30") == 6 * 3600 + 1800 + assert parse_time(2.5) == 9000 + assert parse_time(None, 7) == 7 + + +def test_fireflow_job_and_available_flow(): + from backend.jobs import job_fireflow + + r = job_fireflow(NET1, {"nodes": ["22"], "flow": 500, "start": 6, "end": 9, "residual": 20, "threshold": 50}) + assert r["windowLabel"] == "6:00~9:00" + h = r["hydrants"][0] + assert h["firePressure"] < h["basePressure"] - 1 + assert r["nodes"][0]["diff"] <= r["nodes"][-1]["diff"] # most affected first + # available flow keeps the hydrant at (just above) the residual pressure + q = h["available"] + assert q > 0 + with Network(NET1) as net: + j = net.node_index("22") + net.window_pattern("W", 6 * 3600, 9 * 3600) + c = net.add_demand(j, q, "W", "x") + p = net.simulate(nodes=[j]).nodes[EN.PRESSURE][6:9, 0].min() + assert p >= 20 - 1e-6 + net.delete_demand(j, c) + net.add_demand(j, q * 1.02, "W", "x") + assert net.simulate(nodes=[j]).nodes[EN.PRESSURE][6:9, 0].min() < 20 + 0.5 + + +def test_fireflow_rejects_bad_input(): + import pytest + from backend.batch import BatchError + from backend.jobs import job_fireflow + + with pytest.raises(BatchError): + job_fireflow(NET1, {"nodes": [], "flow": 10}) + with pytest.raises(BatchError): + job_fireflow(NET1, {"nodes": ["NOPE"], "flow": 10}) diff --git a/backend/tests/test_calibrate.py b/backend/tests/test_calibrate.py new file mode 100644 index 0000000..846df10 --- /dev/null +++ b/backend/tests/test_calibrate.py @@ -0,0 +1,70 @@ +"""Automatic calibration (roughness / wall coefficient) and pump scheduling jobs, on Net1 with synthetic truth.""" +import re +from pathlib import Path + +import pytest + +from backend.batch import BatchError, Network +from backend.epanet import EN +from backend.jobs import job_calibrate, job_pumpschedule + +NET1 = (Path(__file__).resolve().parents[2] / "public" / "Net1.inp").read_text() +PIPES = [l.split()[0] for l in re.search(r"\[PIPES\](.*?)\[", NET1, re.S).group(1).splitlines() if l.strip() and not l.strip().startswith(";")] + + +def synthetic(factor=None, wall=None, prop=EN.PRESSURE, locs=("22", "31", "12", "23"), groups=None): + with Network(NET1.encode()) as n: + idx = [n.node_index(l) for l in locs] + for pid in PIPES: + li = n.link_index(pid) + f = factor(pid) if callable(factor) else factor + if f: + n.set_link(li, EN.ROUGHNESS, n.get_link(li, EN.ROUGHNESS) * f) + if wall is not None: + n.set_link(li, EN.KWALL, wall) + if prop == EN.QUALITY: + n.lib.EN_solveH(n.ph) + times, mat = n.run_quality(nodes=idx) + else: + r = n.simulate(node_props=(prop,), nodes=idx) + times, mat = r.times, r.nodes[prop] + return [{"location": l, "time": t, "value": float(mat[k, c])} for k, t in enumerate(times) if k % 2 == 0 for c, l in enumerate(locs)] + + +def test_roughness_recovers_two_group_truth(): + big = {"10", "11", "12", "111", "110"} + obs = synthetic(factor=lambda p: 0.75 if p in big else 1.1, locs=("10", "11", "12", "13", "21", "22", "23", "31", "32")) + groups = {"main": sorted(big), "rest": [p for p in PIPES if p not in big]} + r = job_calibrate(NET1.encode(), {"mode": "roughness", "param": "pressure", "observations": obs, "groups": groups, "bounds": [0.5, 1.5]}) + got = {g["name"]: g["value"] for g in r["groups"]} + assert got["main"] == pytest.approx(0.75, abs=0.02) and got["rest"] == pytest.approx(1.1, abs=0.05) + assert r["rmseAfter"] < 0.05 * r["rmseBefore"] + + +def test_wall_coefficient_from_chlorine(): + obs = synthetic(wall=-0.4, prop=EN.QUALITY) + r = job_calibrate(NET1.encode(), {"mode": "wall", "param": "quality", "observations": obs, "groups": {"all": PIPES}, "bounds": [-3, 0]}) + assert r["groups"][0]["value"] == pytest.approx(-0.4, abs=0.01) and r["groups"][0]["meanBefore"] == -1.0 + + +def test_calibrate_input_errors(): + with pytest.raises(BatchError): + job_calibrate(NET1.encode(), {"mode": "wall", "param": "pressure", "observations": synthetic(), "groups": {"a": PIPES}}) + with pytest.raises(BatchError): + job_calibrate(NET1.encode(), {"observations": [], "groups": {"a": PIPES}}) + with pytest.raises(BatchError): + job_calibrate(NET1.encode(), {"observations": synthetic(), "groups": {}}) + + +def test_pump_schedule_keeps_constraints_and_reports_controls(): + priced = NET1.replace("[PATTERNS]", "[PATTERNS]\n PRICE 0.5 0.5 0.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 0.5") + priced = re.sub(r"Global Price\s+0\.0", "Global Price 0.1\n Global Pattern PRICE", priced) + r = job_pumpschedule(priced.encode(), {"minPressure": 20}) + assert r["pumps"] == ["9"] and r["removedControls"] == 2 and r["slotSeconds"] == 7200 + assert len(r["schedules"]["9"]) == 12 and r["feasible"] + assert r["after"]["violation"] == 0 and r["after"]["minPressure"] >= 20 + assert r["after"]["tankEnd"][0] >= 120 - 0.02 * 50 - 1e-6 + # never worse than the feasible starting schedule + assert r["after"]["cost"] <= r["start"]["cost"] + 1e-9 + # Net1's own controls leave the tank ~4.6 ft lower after a day: reported, not hidden. + assert r["before"]["violation"] > 0 diff --git a/backend/tests/test_dem.py b/backend/tests/test_dem.py new file mode 100644 index 0000000..e056e12 --- /dev/null +++ b/backend/tests/test_dem.py @@ -0,0 +1,131 @@ +"""DEM store: import (GeoTIFF, zipped ASC), bilinear sampling across CRSs, preview, TIN from points, HTTP.""" +import io +import zipfile + +import numpy as np +import pytest +import rasterio +from fastapi.testclient import TestClient +from pyproj import CRS, Transformer +from rasterio.transform import from_origin + +from backend import dem as dem_store +from backend.batch import BatchError +from backend.main import app + +EPSG = "EPSG:5186" +X0, Y0, CELL, W, H = 200_000.0, 550_000.0, 10.0, 60, 40 # top-left corner + + +def plane(x, y): + return 100 + 0.01 * (x - X0) - 0.02 * (Y0 - y) + + +@pytest.fixture(autouse=True) +def store(tmp_path, monkeypatch): + monkeypatch.setattr(dem_store, "DEM_DIR", tmp_path / "dem") + + +def make_tif(path): + xs = X0 + (np.arange(W) + 0.5) * CELL + ys = Y0 - (np.arange(H) + 0.5) * CELL + z = plane(*np.meshgrid(xs, ys)).astype("float32") + z[0, 0] = -9999 + with rasterio.open(path, "w", driver="GTiff", width=W, height=H, count=1, dtype="float32", crs=EPSG, + transform=from_origin(X0, Y0, CELL, CELL), nodata=-9999) as dst: + dst.write(z, 1) + + +def test_import_sample_is_bilinear_and_handles_outside(tmp_path): + src = tmp_path / "up.bin" + make_tif(tmp_path / "a.tif") + src.write_bytes((tmp_path / "a.tif").read_bytes()) + info = dem_store.import_dem(str(src), "a.tif") + assert info["width"] == W and info["resolution"] == [CELL, CELL] and len(info["corners"]) == 4 + pts = [[X0 + 123.4, Y0 - 77.7], [X0 + 300, Y0 - 200], [X0 - 50, Y0 - 50]] + vals = dem_store.sample(info["id"], pts, EPSG) + assert vals[0] == pytest.approx(plane(*pts[0]), abs=1e-3) + assert vals[1] == pytest.approx(plane(*pts[1]), abs=1e-3) + assert vals[2] is None + # Same point given in WGS84 lands on the same value. + lon, lat = Transformer.from_crs(EPSG, "EPSG:4326", always_xy=True).transform(*pts[0]) + assert dem_store.sample(info["id"], [[lon, lat]], "EPSG:4326")[0] == pytest.approx(vals[0], abs=1e-3) + assert dem_store.preview_png(info["id"])[:8] == b"\x89PNG\r\n\x1a\n" + assert dem_store.dem_info(info["id"])["id"] == info["id"] + + +def test_zipped_asc_with_prj(tmp_path): + xs = X0 + (np.arange(W) + 0.5) * CELL + ys = Y0 - (np.arange(H) + 0.5) * CELL + z = plane(*np.meshgrid(xs, ys)) + asc = f"ncols {W}\nnrows {H}\nxllcorner {X0}\nyllcorner {Y0 - H * CELL}\ncellsize {CELL}\nNODATA_value -9999\n" + asc += "\n".join(" ".join(f"{v:.4f}" for v in row) for row in z) + buf = io.BytesIO() + with zipfile.ZipFile(buf, "w") as zf: + zf.writestr("dem/ground.asc", asc) + zf.writestr("dem/ground.prj", CRS.from_user_input(EPSG).to_wkt("WKT1_ESRI")) + up = tmp_path / "up.zip" + up.write_bytes(buf.getvalue()) + info = dem_store.import_dem(str(up), "ground.zip") + p = [X0 + 250, Y0 - 150] + assert dem_store.sample(info["id"], [p], EPSG)[0] == pytest.approx(plane(*p), abs=1e-3) + + +def test_errors(tmp_path): + with pytest.raises(BatchError): + dem_store.dem_info("0" * 32) + with pytest.raises(BatchError): + dem_store.dem_info("../../etc") + bad = tmp_path / "x.bin" + bad.write_bytes(b"not a raster") + with pytest.raises(BatchError): + dem_store.import_dem(str(bad), "x.tif") + with pytest.raises(BatchError): + dem_store.import_dem(str(bad), "x.docx") + + +def test_tin_from_points_reproduces_a_plane(): + rng = np.random.default_rng(1) + xy = np.column_stack([X0 + rng.uniform(0, 500, 300), Y0 - rng.uniform(0, 300, 300)]) + pts = [[x, y, plane(x, y)] for x, y in xy] + pts += [[X0, Y0, plane(X0, Y0)], [X0 + 500, Y0, plane(X0 + 500, Y0)], [X0, Y0 - 300, plane(X0, Y0 - 300)], [X0 + 500, Y0 - 300, plane(X0 + 500, Y0 - 300)]] + info = dem_store.from_points(pts, EPSG, 5.0) + q = [X0 + 211, Y0 - 133] + assert dem_store.sample(info["id"], [q], EPSG)[0] == pytest.approx(plane(*q), abs=0.05) + with pytest.raises(BatchError): + dem_store.from_points([[0, 0, 1], [1, 1, 2], [2, 2, 3]], EPSG, 1.0) # collinear + + +def test_http_roundtrip(tmp_path): + make_tif(tmp_path / "a.tif") + with TestClient(app) as c: + r = c.post("/api/dem", files={"file": ("a.tif", (tmp_path / "a.tif").read_bytes(), "image/tiff")}) + assert r.status_code == 200, r.text + dem_id = r.json()["id"] + assert c.get(f"/api/dem/{dem_id}/preview.png").headers["content-type"] == "image/png" + s = c.post(f"/api/dem/{dem_id}/sample", json={"points": [[X0 + 100, Y0 - 100]], "crs": EPSG}) + assert s.json()["values"][0] == pytest.approx(plane(X0 + 100, Y0 - 100), abs=1e-3) + assert c.get("/api/dem/" + "f" * 32).status_code == 400 + assert c.post("/api/dem", files={"file": ("a.txt", b"x", "text/plain")}).status_code == 400 + + +def test_terrain_tile_terrarium(tmp_path): + make_tif(tmp_path / "a.tif") + up = tmp_path / "up.bin" + up.write_bytes((tmp_path / "a.tif").read_bytes()) + info = dem_store.import_dem(str(up), "a.tif") + import math + lon, lat = Transformer.from_crs(EPSG, "EPSG:4326", always_xy=True).transform(X0 + 300, Y0 - 200) + z = 15 + n = 2 ** z + fx = (lon + 180) / 360 * n + fy = (1 - math.asinh(math.tan(math.radians(lat))) / math.pi) / 2 * n + xt, yt = int(fx), int(fy) + png = dem_store.terrain_tile(info["id"], z, xt, yt) + with rasterio.MemoryFile(png) as mem, mem.open() as ds: + rgb = ds.read().astype(float) + elev = rgb[0] * 256 + rgb[1] + rgb[2] / 256 - 32768 + px, py = int((fx - xt) * 256), int((fy - yt) * 256) + assert elev[py, px] == pytest.approx(plane(X0 + 300, Y0 - 200), abs=0.2) + with pytest.raises(BatchError): + dem_store.terrain_tile(info["id"], 3, 99, 0) diff --git a/backend/tests/test_gisio.py b/backend/tests/test_gisio.py new file mode 100644 index 0000000..abbe9ee --- /dev/null +++ b/backend/tests/test_gisio.py @@ -0,0 +1,69 @@ +"""Vector GIS import (/api/gis/vector) with real GDAL files written on the fly.""" +import io +import os +import tempfile +import zipfile + +import numpy as np +import pytest +import shapely +from fastapi.testclient import TestClient +from pyogrio import raw as ogr_raw + +from backend.main import app + + +@pytest.fixture(scope="module") +def client(): + with TestClient(app, raise_server_exceptions=False) as c: + yield c + + +def _write(path, driver, crs="EPSG:5187"): + geoms = [shapely.LineString([(200000, 300000), (200100, 300050)]), shapely.LineString([(200100, 300050), (200200, 300000)])] + with_fields = driver != "DXF" # DXF has a fixed schema (Layer, EntityHandle ...) + ogr_raw.write( + path, + geometry=np.array(shapely.to_wkb(geoms), dtype=object), + field_data=[np.array([150, 200], dtype=np.int32), np.array(["DCIP", "PE"], dtype=object)] if with_fields else [], + fields=["DIA", "MAT"] if with_fields else [], + geometry_type="LineString", + crs=crs, + driver=driver, + ) + + +def test_zipped_shapefile_reprojected_to_wgs84(client): + with tempfile.TemporaryDirectory() as tmp: + shp = os.path.join(tmp, "pipes.shp") + _write(shp, "ESRI Shapefile") + buf = io.BytesIO() + with zipfile.ZipFile(buf, "w") as z: + for f in os.listdir(tmp): + z.write(os.path.join(tmp, f), f) + r = client.post("/api/gis/vector", files={"file": ("pipes.zip", buf.getvalue(), "application/zip")}) + assert r.status_code == 200, r.text + body = r.json() + assert body["crs"] == "EPSG:5187" and body["count"] == 2 + feat = body["featureCollection"]["features"][0] + assert feat["properties"] == {"DIA": 150, "MAT": "DCIP"} + lon, lat = feat["geometry"]["coordinates"][0] + assert 127 < lon < 132 and 33 < lat < 39 # East Belt -> somewhere in Korea + + +def test_dxf_without_crs_needs_src_epsg(client): + with tempfile.TemporaryDirectory() as tmp: + dxf = os.path.join(tmp, "pipes.dxf") + _write(dxf, "DXF", crs=None) + data = open(dxf, "rb").read() + raw = client.post("/api/gis/vector", files={"file": ("pipes.dxf", data, "application/dxf")}).json() + assert raw["reprojected"] is False and raw["count"] >= 2 + fixed = client.post("/api/gis/vector", files={"file": ("pipes.dxf", data, "application/dxf")}, data={"srcEpsg": "5187"}).json() + lon, lat = fixed["featureCollection"]["features"][0]["geometry"]["coordinates"][0] + assert 127 < lon < 132 and 33 < lat < 39 + + +def test_rejects_unknown_extension_and_bad_epsg(client): + assert client.post("/api/gis/vector", files={"file": ("a.exe", b"MZ", "application/octet-stream")}).status_code == 400 + assert client.post("/api/gis/vector", files={"file": ("a.dxf", b"0", "x")}, data={"srcEpsg": "abc"}).status_code == 400 + assert client.post("/api/gis/vector", files={"file": ("broken.dxf", b"not a dxf", "x")}).status_code == 400 diff --git a/backend/tests/test_gisops.py b/backend/tests/test_gisops.py new file mode 100644 index 0000000..ecf2083 --- /dev/null +++ b/backend/tests/test_gisops.py @@ -0,0 +1,111 @@ +"""GIS layer export / reprojection / geometry operations (/api/gis/export, /op, /reproject).""" +import io +import os +import tempfile +import zipfile + +import numpy as np +import pyogrio +import pytest +import shapely +from fastapi.testclient import TestClient +from pyproj import Transformer + +from backend import gisops +from backend.batch import BatchError +from backend.main import app + +EPSG = "EPSG:5186" +TO_WGS = Transformer.from_crs(EPSG, "EPSG:4326", always_xy=True) + + +def wgs(x, y): + return list(TO_WGS.transform(x, y)) + + +def fc(features): + return {"type": "FeatureCollection", "features": features} + + +SQUARE = fc([{"type": "Feature", "properties": {"name": "블록A", "dia": 150}, "geometry": {"type": "Polygon", "coordinates": [[wgs(200000, 500000), wgs(200100, 500000), wgs(200100, 500100), wgs(200000, 500100), wgs(200000, 500000)]]}}]) +LINES = fc([ + {"type": "Feature", "properties": {"id": "P1", "dia": 150}, "geometry": {"type": "LineString", "coordinates": [wgs(200000, 500000), wgs(200200, 500000)]}}, + {"type": "Feature", "properties": {"id": "P2", "dia": None}, "geometry": {"type": "LineString", "coordinates": [wgs(200200, 500000), wgs(200200, 500200)]}}, +]) + + +@pytest.fixture(scope="module") +def client(): + with TestClient(app, raise_server_exceptions=False) as c: + yield c + + +def _area_m2(feature_collection): + from shapely.geometry import shape + g = gisops._project(np.array([shape(f["geometry"]) for f in feature_collection["features"]], dtype=object), gisops.WGS84, gisops.CRS.from_user_input(EPSG)) + return float(sum(x.area for x in g)) + + +def test_export_shapefile_in_target_crs_with_korean_fields(): + data, name, media = gisops.write_vector(LINES, EPSG, "shp", "관로") + assert name == "관로.zip" and media == "application/zip" + with tempfile.TemporaryDirectory() as tmp: + zipfile.ZipFile(io.BytesIO(data)).extractall(tmp) + shp = [f for f in os.listdir(tmp) if f.endswith(".shp")][0] + df_info = pyogrio.read_info(os.path.join(tmp, shp)) + assert "5186" in df_info["crs"] and df_info["features"] == 2 + meta, _, geom, fields = pyogrio.raw.read(os.path.join(tmp, shp)) + x0 = shapely.from_wkb(geom[0]).coords[0][0] + assert x0 == pytest.approx(200000, abs=0.01) + assert list(meta["fields"]) == ["id", "dia"] + + +def test_export_gpkg_dxf_and_mixed_shapefile_refused(): + gpkg, name, _ = gisops.write_vector(SQUARE, EPSG, "gpkg", "blocks") + assert name == "blocks.gpkg" and gpkg[:15] == b"SQLite format 3" + dxf, _, _ = gisops.write_vector(LINES, EPSG, "dxf", "lines") + assert b"SECTION" in dxf + mixed = fc(SQUARE["features"] + LINES["features"]) + with pytest.raises(BatchError): + gisops.write_vector(mixed, EPSG, "shp", "x") + + +def test_reproject_fixes_a_layer_read_in_the_wrong_crs(): + # Numbers really in EPSG:5186 but read as EPSG:5187: reassign -> lands on the 5186 position. + wrong = Transformer.from_crs("EPSG:5187", "EPSG:4326", always_xy=True) + bad = fc([{"type": "Feature", "properties": {}, "geometry": {"type": "Point", "coordinates": list(wrong.transform(200000, 500000))}}]) + fixed = gisops.reproject_fc(bad, "EPSG:5187", EPSG) + assert fixed["features"][0]["geometry"]["coordinates"] == pytest.approx(wgs(200000, 500000), abs=1e-8) + + +def test_buffer_clip_difference_dissolve(): + buf = gisops.vector_op("buffer", {"crs": EPSG, "layer": LINES, "distance": 10}) + assert len(buf["features"]) == 2 and buf["features"][0]["properties"]["id"] == "P1" + # P1 buffered: 200 x 20 rectangle + two half-discs of r=10 + from shapely.geometry import shape + a = gisops._project(np.array([shape(buf["features"][0]["geometry"])], dtype=object), gisops.WGS84, gisops.CRS.from_user_input(EPSG))[0].area + assert a == pytest.approx(200 * 20 + np.pi * 100, rel=0.01) + clipped = gisops.vector_op("clip", {"crs": EPSG, "layer": LINES, "other": SQUARE}) + assert len(clipped["features"]) == 1 # only P1 crosses the square + diff = gisops.vector_op("difference", {"crs": EPSG, "layer": SQUARE, "other": buf}) + assert _area_m2(diff) < 100 * 100 + dis = gisops.vector_op("dissolve", {"crs": EPSG, "layer": buf, "field": None}) + assert len(dis["features"]) == 1 and dis["features"][0]["properties"]["count"] == 2 + + +def test_voronoi_and_grid(): + pts = [[200000, 500000], [200100, 500000], [200000, 500100], [200100, 500100], [200050, 500050]] + v = gisops.vector_op("voronoi", {"crs": EPSG, "points": pts, "ids": ["A", "B", "C", "D", "E"]}) + assert sorted(f["properties"]["node"] for f in v["features"]) == ["A", "B", "C", "D", "E"] + g = gisops.vector_op("grid", {"crs": EPSG, "bounds": [200000, 500000, 200100, 500050], "cell": 25}) + assert len(g["features"]) == 8 + with pytest.raises(BatchError): + gisops.vector_op("grid", {"crs": "EPSG:4326", "bounds": [0, 0, 1, 1], "cell": 1}) + + +def test_http(client): + r = client.post("/api/gis/export", json={"featureCollection": LINES, "crs": EPSG, "format": "geojson", "name": "관로"}) + assert r.status_code == 200 and "attachment" in r.headers["content-disposition"] + r = client.post("/api/gis/op", json={"op": "buffer", "crs": EPSG, "layer": LINES, "distance": 5}) + assert r.status_code == 200 and len(r.json()["features"]) == 2 + assert client.post("/api/gis/op", json={"op": "nope", "crs": EPSG, "layer": LINES}).status_code == 400 diff --git a/backend/tests/test_hydro.py b/backend/tests/test_hydro.py new file mode 100644 index 0000000..bcd44ad --- /dev/null +++ b/backend/tests/test_hydro.py @@ -0,0 +1,59 @@ +"""DEM hydrology: streams follow a synthetic valley; the outlet's catchment is the whole valley.""" +import numpy as np +import pytest +import rasterio +from pyproj import Transformer +from rasterio.transform import from_origin +from shapely.geometry import shape + +from backend import dem as dem_store + +EPSG = "EPSG:5186" +X0, Y1, CELL, W, H = 200_000.0, 550_000.0, 10.0, 81, 120 # valley axis at column 40 + + +@pytest.fixture(autouse=True) +def store(tmp_path, monkeypatch): + monkeypatch.setattr(dem_store, "DEM_DIR", tmp_path / "dem") + + +def valley(tmp_path): + xs = X0 + (np.arange(W) + 0.5) * CELL + ys = Y1 - (np.arange(H) + 0.5) * CELL + xx, yy = np.meshgrid(xs, ys) + axis = X0 + 40.5 * CELL + z = 100 + 0.05 * np.abs(xx - axis) + 0.01 * (yy - (Y1 - H * CELL)) # V valley draining south + z[30, 40] -= 3 # a pit on the axis must not stop the flow + p = tmp_path / "v.tif" + with rasterio.open(p, "w", driver="GTiff", width=W, height=H, count=1, dtype="float32", crs=EPSG, + transform=from_origin(X0, Y1, CELL, CELL)) as d: + d.write(z.astype("float32"), 1) + up = tmp_path / "up.bin" + up.write_bytes(p.read_bytes()) + return dem_store.import_dem(str(up), "v.tif") + + +def test_streams_follow_the_axis_through_a_pit(tmp_path): + info = valley(tmp_path) + fc = dem_store.streams(info["id"], 0.05) # 0.05 km2 = 500 cells + assert fc["features"] + to_xy = Transformer.from_crs("EPSG:4326", EPSG, always_xy=True) + axis = X0 + 40.5 * CELL + longest = max(fc["features"], key=lambda f: f["properties"]["length_m"]) + xs = [to_xy.transform(*c)[0] for c in longest["geometry"]["coordinates"]] + assert max(abs(x - axis) for x in xs) < CELL * 1.5 + assert longest["properties"]["length_m"] > 0.5 * H * CELL + assert longest["properties"]["area_km2"] == pytest.approx(W * H * CELL * CELL / 1e6, rel=0.1) + + +def test_watershed_of_the_outlet_is_the_whole_valley(tmp_path): + info = valley(tmp_path) + outlet = [X0 + 40.5 * CELL, Y1 - (H - 1) * CELL] + fc = dem_store.watershed(info["id"], [outlet], EPSG, snap_m=30) + (f,) = fc["features"] + assert f["properties"]["area_km2"] == pytest.approx(W * H * CELL * CELL / 1e6, rel=0.05) + assert shape(f["geometry"]).is_valid + # A point halfway up drains only the upper part. + mid = [X0 + 40.5 * CELL, Y1 - (H / 2) * CELL] + half = dem_store.watershed(info["id"], [mid], EPSG, snap_m=30)["features"][0]["properties"]["area_km2"] + assert 0.3 * f["properties"]["area_km2"] < half < 0.7 * f["properties"]["area_km2"] diff --git a/backend/tests/test_jobs_analysis.py b/backend/tests/test_jobs_analysis.py new file mode 100644 index 0000000..dfac125 --- /dev/null +++ b/backend/tests/test_jobs_analysis.py @@ -0,0 +1,60 @@ +"""Criticality, service area (trace), VSP and energy jobs against the real DLL.""" +import re +from pathlib import Path + +import pytest + +from backend.batch import BatchError +from backend.jobs import job_criticality, job_energy, job_servicearea, job_vsp + +PUBLIC = Path(__file__).resolve().parents[2] / "public" +NET1 = (PUBLIC / "Net1.inp").read_bytes() +NET3 = (PUBLIC / "Net3.inp").read_bytes() + + +def test_criticality_ranks_the_supply_main_first(): + r = job_criticality(NET1, {"threshold": 40}) + assert len(r["links"]) == 12 # pipes only, the pump is skipped + top = r["links"][0] + # Pipe 10 is the only path from the source: closing it cuts off every junction. + assert top["id"] == "10" and top["affectedNodes"] == 8 and top["disconnected"] + loops = [e for e in r["links"] if e["id"] in ("111", "112", "121", "122")] + assert all(e["affectedNodes"] == 0 for e in loops) + + +def test_criticality_subset_and_limits(): + r = job_criticality(NET1, {"threshold": 40, "links": ["111"]}) + assert [e["id"] for e in r["links"]] == ["111"] + with pytest.raises(BatchError): + job_criticality(NET1, {"links": ["nope"]}) + + +def test_service_area_shares_sum_to_at_most_100(): + r = job_servicearea(NET3, {}) + assert r["sources"] == ["River", "Lake"] + assert r["unreached"] == 0 and r["notes"] # 24 h run extended to 72 h + assert max(sum(v["shares"].values()) for v in r["nodes"].values()) <= 100.5 + assert r["nodes"]["River"]["source"] == "River" and r["nodes"]["Lake"]["source"] == "Lake" + + +def test_vsp_hits_the_target_or_reports_the_bound(): + r = job_vsp(NET1, {"pump": "9", "node": "31", "target": 125, "hours": [0, 18], "maxSpeed": 1.5}) + by_hour = {row["hour"]: row for row in r["rows"]} + assert by_hour[0]["status"] == "max" and by_hour[0]["pressure"] < 125 + assert by_hour[18]["status"] == "ok" and abs(by_hour[18]["pressure"] - 125) < 0.05 + assert 1.0 < by_hour[18]["speed"] < 1.5 + with pytest.raises(BatchError): + job_vsp(NET1, {"pump": "10", "node": "31", "target": 100}) # a pipe + + +def test_energy_report_matches_epanet_energy_section(): + r = job_energy(NET1, {}) + (p,) = r["pumps"] + # EPANET's own Net1 energy report: 57.71 % utilisation, 75 % efficiency, ~96 kW average. + assert p["utilization"] == pytest.approx(57.71, abs=0.05) + assert p["efficiency"] == pytest.approx(75.0) + assert p["avgKw"] == pytest.approx(96.25, abs=0.5) + assert p["kwhPerM3"] > 0 and r["totalCost"] == 0.0 # Net1 has no price + priced = re.sub(rb"Global Price\s+0\.0", b"Global Price 0.1", NET1) + assert priced != NET1 + assert job_energy(priced, {})["pumps"][0]["cost"] == pytest.approx(p["kwh"] * 0.1, rel=1e-3) diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..bfa23b6 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,24 @@ +name: spipe +services: + api: + build: + context: . + dockerfile: deploy/Dockerfile + target: api + restart: unless-stopped + healthcheck: + test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/api/health', timeout=5)"] + interval: 30s + timeout: 10s + retries: 3 + web: + build: + context: . + dockerfile: deploy/Dockerfile + target: web + ports: + - "${SPIPE_PORT:-80}:80" + restart: unless-stopped + depends_on: + api: + condition: service_healthy diff --git a/deploy/Dockerfile b/deploy/Dockerfile new file mode 100644 index 0000000..955f29f --- /dev/null +++ b/deploy/Dockerfile @@ -0,0 +1,30 @@ +FROM node:24-bookworm-slim AS web-build +WORKDIR /app +COPY package.json package-lock.json ./ +RUN npm ci +COPY tsconfig.json vite.config.ts index.html ./ +COPY src ./src +COPY public ./public +RUN npm run build + +FROM python:3.12-slim-bookworm AS engine-build +RUN apt-get update && apt-get install -y --no-install-recommends git cmake build-essential ca-certificates && rm -rf /var/lib/apt/lists/* +RUN git clone --depth 1 --branch v2.3.5 https://github.com/OpenWaterAnalytics/EPANET.git /engine +RUN cmake -S /engine -B /engine/build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF && cmake --build /engine/build --target epanet2 -j 2 + +FROM python:3.12-slim-bookworm AS api +WORKDIR /app +COPY backend/requirements-api.txt /tmp/requirements-api.txt +RUN pip install --no-cache-dir -r /tmp/requirements-api.txt +COPY --from=engine-build /engine/build/lib/libepanet2.so /app/64bit/libepanet2.so +COPY backend/__init__.py backend/main.py backend/epanet.py backend/columnar.py backend/batch.py backend/jobs.py backend/gisio.py backend/gisops.py backend/dem.py ./backend/ +COPY public/Net1.inp /app/smoke.inp +RUN python -c "from backend.main import run_epanet; import tempfile; from pathlib import Path; t=tempfile.TemporaryDirectory(); p=Path(t.name); r=run_epanet('/app/smoke.inp',str(p/'test.rpt'),str(p/'test.bin')); assert r['nodes'] and r['links']" +RUN useradd --system --uid 10001 spipe && mkdir -p /app/data/dem && chown -R spipe /app/data +ENV SPIPE_DEM_DIR=/app/data/dem +USER spipe +CMD ["python", "-m", "uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"] + +FROM nginx:stable-bookworm AS web +COPY --from=web-build /app/dist /usr/share/nginx/html +COPY deploy/nginx.conf /etc/nginx/conf.d/default.conf diff --git a/deploy/README.md b/deploy/README.md new file mode 100644 index 0000000..0eb7515 --- /dev/null +++ b/deploy/README.md @@ -0,0 +1,26 @@ +# Ubuntu deployment + +The repository is private. Authenticate on the server using `gh auth login` +(GitHub.com, HTTPS, web browser), then run: + +```sh +gh repo clone tpstn23-afk/SPipe +cd SPipe +COMPOSE_PARALLEL_LIMIT=1 docker compose build +docker compose up -d +curl --fail http://127.0.0.1/api/health +``` + +Docker Engine and Compose must already be installed. Check free disk space +before building; the target server originally had about 4 GB free. +Set `SPIPE_PORT=8080` when port 80 is already occupied. + +The API builds the official EPANET v2.3.5 Linux library and runs a Net1 +analysis while building. Source: https://github.com/OpenWaterAnalytics/EPANET/releases/tag/v2.3.5 +Only the web/API dependencies are installed; blocksys is a separate CLI. +The web and API share one origin through nginx. Only the web port is published. +The configuration serves HTTP; domain/TLS setup is a separate server step. +Map service allowed domains may need to include the deployed address. + +Validation: local Windows regression suite; Docker build and live server +checks still required (Docker is unavailable on the development PC). diff --git a/deploy/nginx.conf b/deploy/nginx.conf new file mode 100644 index 0000000..949f477 --- /dev/null +++ b/deploy/nginx.conf @@ -0,0 +1,30 @@ +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + # Keep in sync with SPIPE_MAX_UPLOAD_MB (backend); nginx rejects larger + # bodies before they reach the API. + client_max_body_size 21m; + gzip on; + gzip_types application/json text/plain application/javascript text/css; + gzip_min_length 1024; + # DEM rasters (SPIPE_MAX_DEM_MB, default 300). + location /api/dem { + client_max_body_size 301m; + proxy_request_buffering off; + proxy_pass http://api:8000; + proxy_read_timeout 600s; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } + location /api/ { + proxy_pass http://api:8000; + proxy_read_timeout 300s; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } + location / { + try_files $uri $uri/ /index.html; + } +} diff --git a/docs/SPipe_패치내역_v2_2026-10-30.txt b/docs/SPipe_패치내역_v2_2026-10-30.txt new file mode 100644 index 0000000..f00a613 --- /dev/null +++ b/docs/SPipe_패치내역_v2_2026-10-30.txt @@ -0,0 +1,104 @@ +================================================================ + SPipe 패치 내역 - 데모 v2 (2026-10-30) + 이전 배포: 데모 v1 (2026-10-15) +================================================================ + +※ 새 기능은 대부분 오른쪽 [분석] 탭에 있습니다. +※ 표시가 (시험)인 기능은 결과를 기존 방식과 비교해서 써 주세요. + + +[1] 해석 · 분석 +---------------------------------------------------------------- + + 소화전 모의: 지정 시간대에 소화 유량을 더해 다시 해석하고, + 잔류압력을 지키며 낼 수 있는 최대 소화 유량까지 계산 + + 관로 중요도: 관로를 하나씩 닫아 보고 영향 받는 절점·수요량 순위 + (단절 관로 표시, CSV 저장) + + 급수 구역: 배수지별 공급 비율 추적 (탱크 포함 선택) + + 흐름 방향: 하루 중 흐름이 바뀌는 관로, 흐름 없는 관로 찾기 + + VSP: 제어 절점 목표 압력에 맞는 시간별 펌프 회전수 계산, 패턴으로 적용 + + 등치선: 압력·동수두·표고 등치선을 지도 레이어 또는 GeoJSON으로 + + 에너지 비용: 펌프별 가동률·효율·전력량·원단위(kWh/m³)·전력비 + + 관로 통계: 관경·재질·설치 연대·소블록별 개수, 연장, 최대 유속, 경과년수 + + 관망 그룹, 소블록 고립 확인 + + 자동 보정 (시험): 실측 파일로 관로 그룹별 C값 배율 또는 + 관벽 반응계수를 자동으로 맞춤 + + 펌프 운전 최적화 (시험): 최저압력과 탱크 수위를 지키면서 + 전력비가 낮은 운전 일정 탐색 (최적해 보장 안 함, 참고용) + + +[2] 모델 입력 · 편집 +---------------------------------------------------------------- + + 속성창 "추가 속성": 다중 수요(범주), 이미터(누수), 초기 수질·수원, + 탱크 혼합·반응, 펌프 효율곡선·전력 단가, 초기 상태([STATUS]) + + 수요량 테이블: 전체 절점 수요 한눈에, 엑셀 붙여넣기/CSV 일괄 입력, + 총량 배분(수요 비례·균등), 누수량 이미터 배분 + + 모델 설정: 고급 해석 옵션, 에너지·수질 반응 옵션 + + 곡선 편집: 펌프·효율·체적·손실 곡선 + + 범례 편집: 구간·색 직접 지정, 값에 따라 크기 표시 + + 지도 라벨 추가·편집 (INP [LABELS]로 저장) + + 편집 도구: 이동·회전·축척, 2점 좌표 보정, N등분·간격 분할, + 접속 분할, 절점 제거·병합, 관로 점검·자동 정리, + 상·하류 추적, 두 절점 최단 경로 + + 지도에서 꺾임점 편집: 관로 선택 후 주황 점 끌기(이동), + 흰 점 끌기(추가), 더블클릭(삭제) + + 관로 길이 자동 계산, 새 절점 표고 = 가장 가까운 절점 표고 (편집 옵션) + + 자산 속성(관재질·설치년도·매설깊이·소블록 등) 보관 + + 프로젝트 파일(.spipe): 관망·시나리오·레이어·스타일·보정자료를 한 파일로 + + 자동 백업: 수정 중 10분마다 최근 30개 보관 + (프로젝트 메뉴 > 백업 기록에서 복원, Ctrl+Z로 되돌리기 가능) + + +[3] 지형 (DEM) +---------------------------------------------------------------- + + DEM 파일 불러오기 (GeoTIFF·ASC·IMG, zip 가능, 최대 300MB) + → 국토지리정보원 5m 자료를 받으면 여기에 넣으면 됨 + + 절점 표고 입력: 지반고 또는 관저고(지반고 - 매설깊이) + + 표고 검증: 모델 표고와 DEM 차이가 큰 절점 목록 + + 인터넷 표고 (90m 근사) 일괄 입력: DEM 파일이 없을 때 + + 점 표고로 DEM 만들기 (TIN) + + 유역·하천: 하천선 추출, 선택 절점의 상류 유역 + + +[4] GIS 도구 +---------------------------------------------------------------- + + 불러오기 형식 추가: DXF, DGN, MIF/TAB, GML, KML, GPKG, E00 + (좌표계 없는 파일은 관망 좌표계로 읽음) + + 레이어 좌표계 다시 지정, 원하는 좌표계로 내보내기 + (SHP, GeoPackage, DXF, GeoJSON, KML) + + 도형 연산: 버퍼, 병합, 잘라내기, 빼기 + + 레이어 만들기: 절점 보로노이, 격자, OSM 건물, 엑셀·CSV 좌표 → 점 + + 관망 반영: 점 레이어로 밸브 삽입, 계량기 사용량 배정, + 면 레이어로 소블록 매핑, 자산 속성 엑셀 붙여넣기 + + +[5] 화면 +---------------------------------------------------------------- + + 3D 보기: 지도 기울이기, DEM 지형, 절점 압력·동수두 기둥 + + 이미지 겹치기: 항공사진·도면(PNG/JPG + 월드 파일) + + 결과 그래프: 여러 요소 시계열 비교, 누적 빈도 + + 종단: 평균선, 구간표, 방향 뒤집기 + + 실측 보정 값을 지도에 표시 + + +[6] 버그 수정 +---------------------------------------------------------------- + * 관로 이름 변경 시 꺾임점이 사라지던 문제 + * 관로 분할 시 꺾임점이 한쪽에만 남던 문제 + * 관로 방향 뒤집기 후 선이 지그재그로 그려지던 문제 + * 삭제한 관로의 꺾임점이 남아 같은 ID의 새 관로에 붙던 문제 + * 예제를 열어도 상태줄 파일명이 "Net1.inp"로 남던 문제 + * 로컬 좌표계에서 관로 길이가 잘못 재계산되던 문제 (확인 후 실행) + * 업로드 크기 검사 강화, 서버 라이브러리 보안 업데이트 + + +[7] 서버 설치 · 운영 참고 +---------------------------------------------------------------- + - 업데이트 후 반드시 실행: + .venv\Scripts\python.exe -m pip install -r backend\requirements.txt + (scipy, rasterio 등 새 라이브러리 필요) + - 화면 다시 빌드: start-lan.ps1 -Rebuild + - 올린 DEM은 서버의 data\dem 폴더에 최근 8개만 보관 + - 인터넷 표고(90m), OSM 건물은 사용자 PC에서 인터넷 접속이 필요 + (사내망에서 막히면 이 두 기능만 안 됨) + - 미반영: 탁도 분석(정의 협의 중), .net·DWG 형식(DWG는 DXF로 변환해 사용) +================================================================ diff --git a/index.html b/index.html new file mode 100644 index 0000000..8e2fa1e --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + + spipe + + +

+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8c80aea --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2403 @@ +{ + "name": "spipe", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "spipe", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@types/proj4": "^2.5.6", + "epanet-js": "^0.9.0", + "lucide-react": "^1.42.0", + "maplibre-gl": "^4.7.1", + "proj4": "^2.22.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@types/react": "^18.3.24", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react": "^4.3.4", + "typescript": "^5.8.3", + "vite": "^6.4.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mapbox/geojson-rewind": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", + "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", + "license": "ISC", + "dependencies": { + "get-stream": "^6.0.1", + "minimist": "^1.2.6" + }, + "bin": { + "geojson-rewind": "geojson-rewind" + } + }, + "node_modules/@mapbox/jsonlint-lines-primitives": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.3.tgz", + "integrity": "sha512-0SElaV0uMxEnxzBhhX9WTuPyUeMsAN/SS0i16tjuba4/mio63MG9khjC1a0JAiPGXAwvwm4UfHJURCN7nyudQg==", + "license": "MIT", + "engines": { + "node": ">= 22" + } + }, + "node_modules/@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==", + "license": "ISC" + }, + "node_modules/@mapbox/tiny-sdf": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.2.0.tgz", + "integrity": "sha512-LVL4wgI9YAum5V+LNVQO6QgFBPw7/MIIY4XJPNsPDMrjEwcE+JfKk1LuIl8GnF197ejVdC9QdPaxrx5gfgdGXg==", + "license": "BSD-2-Clause" + }, + "node_modules/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==", + "license": "BSD-2-Clause" + }, + "node_modules/@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "license": "BSD-3-Clause", + "dependencies": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "node_modules/@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", + "license": "ISC", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz", + "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==", + "license": "ISC", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.8", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "tinyqueue": "^3.0.0" + }, + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" + } + }, + "node_modules/@maplibre/maplibre-gl-style-spec/node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "license": "ISC" + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.1.tgz", + "integrity": "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.1.tgz", + "integrity": "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.1.tgz", + "integrity": "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.1.tgz", + "integrity": "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.1.tgz", + "integrity": "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.1.tgz", + "integrity": "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.1.tgz", + "integrity": "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.1.tgz", + "integrity": "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.1.tgz", + "integrity": "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.1.tgz", + "integrity": "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.1.tgz", + "integrity": "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.1.tgz", + "integrity": "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.1.tgz", + "integrity": "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.1.tgz", + "integrity": "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.1.tgz", + "integrity": "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.1.tgz", + "integrity": "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.1.tgz", + "integrity": "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.1.tgz", + "integrity": "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.1.tgz", + "integrity": "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.1.tgz", + "integrity": "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.1.tgz", + "integrity": "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.1.tgz", + "integrity": "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.1.tgz", + "integrity": "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.1.tgz", + "integrity": "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.1.tgz", + "integrity": "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/geojson-vt": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz", + "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/mapbox__point-geometry": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz", + "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==", + "license": "MIT" + }, + "node_modules/@types/mapbox__vector-tile": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz", + "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*", + "@types/mapbox__point-geometry": "*", + "@types/pbf": "*" + } + }, + "node_modules/@types/pbf": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz", + "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==", + "license": "MIT" + }, + "node_modules/@types/proj4": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@types/proj4/-/proj4-2.5.6.tgz", + "integrity": "sha512-zfMrPy9fx+8DchqM0kIUGeu2tTVB5ApO1KGAYcSGFS8GoqRIkyL41xq2yCx/iV3sOLzo7v4hEgViSLTiPI1L0w==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.24.tgz", + "integrity": "sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.21", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.21.tgz", + "integrity": "sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz", + "integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.11.20", + "caniuse-lite": "^1.0.30001810", + "electron-to-chromium": "^1.5.420", + "node-releases": "^2.0.54", + "update-browserslist-db": "^1.3.2" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/earcut": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.2.3.tgz", + "integrity": "sha512-vnS4AVwp1KHAF13i1vp1/2D5evWy3k5u/iW/B81QVsUZtV8cv2tU0b2VNFlqvh4kYwrFMDdjPCfAmfyJW9y14Q==", + "license": "ISC" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.422", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.422.tgz", + "integrity": "sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==", + "dev": true, + "license": "ISC" + }, + "node_modules/epanet-js": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/epanet-js/-/epanet-js-0.9.0.tgz", + "integrity": "sha512-zb+jE3lzzB/mu97jXdEFagk3NDxlG1KOPDwZzFww+0uRHA8oCpG+Qz/9OaOdyWA8gR4ZtSLt82amlpIP1oIAgA==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/geojson-vt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.3.tgz", + "integrity": "sha512-jR1MwkLaZGa8Zftct9ZFruyWFrdl9ZyD2OliXNy9Qq5bBPeg5wHVpBQF9p5GjnicSDQqvBVpysxTPKmWdsfWMA==", + "license": "ISC" + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gl-matrix": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.4.tgz", + "integrity": "sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==", + "license": "MIT" + }, + "node_modules/global-prefix": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", + "license": "MIT", + "dependencies": { + "ini": "^4.1.3", + "kind-of": "^6.0.3", + "which": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-stringify-pretty-compact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz", + "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kdbush": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.1.0.tgz", + "integrity": "sha512-e9vurzrXJQrFX6ckpHP3bvj5l+9CnYzkxDNnNQ1h2QTqdWsUAJgXiKdGNcOa1EY85dU8KbQ+z/FdQdB7P+9yfQ==", + "license": "ISC" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.42.0.tgz", + "integrity": "sha512-b3jprplnoLS8n5etw1z8xODe3hF/yjKATrTitsrKrnjUhCef5BdDct6Ppv3zVvzFwmtfWgLO6XNM3C9fAD93ug==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/maplibre-gl": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.1.tgz", + "integrity": "sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==", + "license": "BSD-3-Clause", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^2.0.6", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@types/geojson": "^7946.0.14", + "@types/geojson-vt": "3.2.5", + "@types/mapbox__point-geometry": "^0.1.4", + "@types/mapbox__vector-tile": "^1.3.4", + "@types/pbf": "^3.0.5", + "@types/supercluster": "^7.1.3", + "earcut": "^3.0.0", + "geojson-vt": "^4.0.2", + "gl-matrix": "^3.4.3", + "global-prefix": "^4.0.0", + "kdbush": "^4.0.2", + "murmurhash-js": "^1.0.0", + "pbf": "^3.3.0", + "potpack": "^2.0.0", + "quickselect": "^3.0.0", + "supercluster": "^8.0.1", + "tinyqueue": "^3.0.0", + "vt-pbf": "^3.1.3" + }, + "engines": { + "node": ">=16.14.0", + "npm": ">=8.1.0" + }, + "funding": { + "url": "https://github.com/maplibre/maplibre-gl-js?sponsor=1" + } + }, + "node_modules/mgrs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz", + "integrity": "sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==", + "license": "MIT" + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.54", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz", + "integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/pbf": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz", + "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/potpack": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.1.0.tgz", + "integrity": "sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==", + "license": "ISC" + }, + "node_modules/proj4": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.22.0.tgz", + "integrity": "sha512-MVvH09QrYm3A235rcX39WDiCKanrBiblu28l0KYIn/B2DofmYhvP/LLS43kE66jNDfx/P1l/nah3JmsAq8UgbQ==", + "license": "MIT", + "dependencies": { + "mgrs": "1.0.0", + "wkt-parser": "^1.5.5" + }, + "funding": { + "url": "https://github.com/sponsors/ahocevar" + }, + "peerDependencies": { + "geotiff": "*" + }, + "peerDependenciesMeta": { + "geotiff": { + "optional": true + } + } + }, + "node_modules/protocol-buffers-schema": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.1.tgz", + "integrity": "sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==", + "license": "MIT" + }, + "node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==", + "license": "ISC" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "license": "MIT", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "node_modules/rollup": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.1.tgz", + "integrity": "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.63.1", + "@rollup/rollup-android-arm64": "4.63.1", + "@rollup/rollup-darwin-arm64": "4.63.1", + "@rollup/rollup-darwin-x64": "4.63.1", + "@rollup/rollup-freebsd-arm64": "4.63.1", + "@rollup/rollup-freebsd-x64": "4.63.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", + "@rollup/rollup-linux-arm-musleabihf": "4.63.1", + "@rollup/rollup-linux-arm64-gnu": "4.63.1", + "@rollup/rollup-linux-arm64-musl": "4.63.1", + "@rollup/rollup-linux-loong64-gnu": "4.63.1", + "@rollup/rollup-linux-loong64-musl": "4.63.1", + "@rollup/rollup-linux-ppc64-gnu": "4.63.1", + "@rollup/rollup-linux-ppc64-musl": "4.63.1", + "@rollup/rollup-linux-riscv64-gnu": "4.63.1", + "@rollup/rollup-linux-riscv64-musl": "4.63.1", + "@rollup/rollup-linux-s390x-gnu": "4.63.1", + "@rollup/rollup-linux-x64-gnu": "4.63.1", + "@rollup/rollup-linux-x64-musl": "4.63.1", + "@rollup/rollup-openbsd-x64": "4.63.1", + "@rollup/rollup-openharmony-arm64": "4.63.1", + "@rollup/rollup-win32-arm64-msvc": "4.63.1", + "@rollup/rollup-win32-ia32-msvc": "4.63.1", + "@rollup/rollup-win32-x64-gnu": "4.63.1", + "@rollup/rollup-win32-x64-msvc": "4.63.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/supercluster": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", + "license": "ISC", + "dependencies": { + "kdbush": "^4.0.2" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyqueue": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==", + "license": "ISC" + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz", + "integrity": "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vt-pbf": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "license": "MIT", + "dependencies": { + "@mapbox/point-geometry": "0.1.0", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, + "node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/wkt-parser": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.5.6.tgz", + "integrity": "sha512-cqHU3lzGt/gt2OqIORP0uVy5yeOX43WABmgFkmJsmcqH3HhQo9PiJG6ftytwGKmpQUbegeX7+pQc2BuNCRfcrw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ahocevar" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..08c25a1 --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "spipe", + "version": "0.1.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc --noEmit && vite build", + "test": "node --experimental-strip-types --test tests/regression.test.ts tests/fixes.test.ts", + "test:api": ".\\.venv\\Scripts\\python.exe -m pytest -q", + "typecheck": "tsc --noEmit", + "preview": "vite preview", + "serve:lan": "vite preview", + "api": ".\\.venv\\Scripts\\python.exe -m uvicorn backend.main:app --host 127.0.0.1 --port 8000" + }, + "license": "MIT", + "dependencies": { + "@types/proj4": "^2.5.6", + "epanet-js": "^0.9.0", + "lucide-react": "^1.42.0", + "maplibre-gl": "^4.7.1", + "proj4": "^2.22.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@types/react": "^18.3.24", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react": "^4.3.4", + "typescript": "^5.8.3", + "vite": "^6.4.3" + } +} diff --git a/public/EXAMPLE_NETWORKS.md b/public/EXAMPLE_NETWORKS.md new file mode 100644 index 0000000..4bc7455 --- /dev/null +++ b/public/EXAMPLE_NETWORKS.md @@ -0,0 +1,33 @@ +# 예제 관망 출처 및 라이선스 (Example Network Sources & License) + +이 폴더의 `Net1.inp`, `Net2.inp`, `Net3.inp`는 GISPipe가 자체 제작한 데이터가 아니라, +**Open Water Analytics(OWA)가 관리하는 공식 EPANET 오픈소스 저장소**에 포함된 표준 예제 +관망 파일을 그대로 가져온 것이다. 상용 GISPipe 또는 그 외 상용 관망해석 소프트웨어의 +샘플 데이터는 어떤 형태로도 사용하지 않았다. + +## 출처 (Source) + +- 저장소: `github.com/OpenWaterAnalytics/EPANET` (dev 브랜치, `example-networks/` 폴더) +- Net1.inp: EPANET Example Network 1 - 염소 소독(bulk/wall reaction) 예제, 절점 9개, 관로 13개, 탱크 1개. +- Net2.inp: EPANET Example Network 2 - 55시간 불소(fluoride) 추적 예제, 절점 36개, 관로 40개, 탱크 1개. +- Net3.inp: EPANET Example Network 3 - 하천(River)·호수(Lake) 이중 수원 대규모 예제, 절점 92개, + 관로 117개, 펌프 2개, 탱크 3개. + +## 라이선스 (License) + +Open Water Analytics의 EPANET 저장소는 원본 USEPA(미국 환경보호청)의 EPANET 소프트웨어를 +계승한 오픈소스 프로젝트로, 저장소 전체가 MIT 라이선스로 배포되며 미국 정부 저작물(공유 +저작물, public domain) 성격의 예제 데이터를 포함한다. 이 예제망들은 EPANET 배포판과 사용자 +매뉴얼에도 동일하게 포함되어 실무·교육용으로 자유롭게 재배포·활용이 허용된다. + +- 프로젝트 라이선스: MIT (`github.com/OpenWaterAnalytics/EPANET/blob/dev/LICENSE`) +- 저작권 관련 불확실성이 있는 데이터, 상용 소프트웨어의 비공개 샘플 데이터는 사용하지 않았다. + +## 용도 + +GISPipe의 Native(OWA-EPANET 2.3.5 C DLL)/WASM(epanet-js) 듀얼 엔진 해석 및 INP +파싱·재생성(round-trip) 신뢰성 회귀 테스트(`tests/regression.test.ts`)와 앱 UI의 +"예제 로드" 선택 기능(Net1/Net2/Net3)에 사용된다. Net2/Net3는 각각 확장 EPS 지속시간, +다중 수요 패턴, 펌프 곡선(`[CURVES]`), 규칙 기반이 아닌 시간/수위 조건 제어 +(`[CONTROLS]`)를 포함하고 있어 Net1보다 더 폭넓은 EPANET 구문 커버리지를 회귀 +테스트에 제공한다. diff --git a/public/Net1.inp b/public/Net1.inp new file mode 100644 index 0000000..3389f8d --- /dev/null +++ b/public/Net1.inp @@ -0,0 +1,174 @@ +[TITLE] + EPANET Example Network 1 +A simple example of modeling chlorine decay. Both bulk and +wall reactions are included. + +[JUNCTIONS] +;ID Elev Demand Pattern + 10 710 0 ; + 11 710 150 ; + 12 700 150 ; + 13 695 100 ; + 21 700 150 ; + 22 695 200 ; + 23 690 150 ; + 31 700 100 ; + 32 710 100 ; + +[RESERVOIRS] +;ID Head Pattern + 9 800 ; + +[TANKS] +;ID Elevation InitLevel MinLevel MaxLevel Diameter MinVol VolCurve + 2 850 120 100 150 50.5 0 ; + +[PIPES] +;ID Node1 Node2 Length Diameter Roughness MinorLoss Status + 10 10 11 10530 18 100 0 Open ; + 11 11 12 5280 14 100 0 Open ; + 12 12 13 5280 10 100 0 Open ; + 21 21 22 5280 10 100 0 Open ; + 22 22 23 5280 12 100 0 Open ; + 31 31 32 5280 6 100 0 Open ; + 110 2 12 200 18 100 0 Open ; + 111 11 21 5280 10 100 0 Open ; + 112 12 22 5280 12 100 0 Open ; + 113 13 23 5280 8 100 0 Open ; + 121 21 31 5280 8 100 0 Open ; + 122 22 32 5280 6 100 0 Open ; + +[PUMPS] +;ID Node1 Node2 Parameters + 9 9 10 HEAD 1 ; + +[VALVES] +;ID Node1 Node2 Diameter Type Setting MinorLoss + +[TAGS] + +[DEMANDS] +;Junction Demand Pattern Category + +[STATUS] +;ID Status/Setting + +[PATTERNS] +;ID Multipliers +;Demand Pattern + 1 1.0 1.2 1.4 1.6 1.4 1.2 + 1 1.0 0.8 0.6 0.4 0.6 0.8 + +[CURVES] +;ID X-Value Y-Value +;PUMP: Pump Curve for Pump 9 + 1 1500 250 + +[CONTROLS] + LINK 9 OPEN IF NODE 2 BELOW 110 + LINK 9 CLOSED IF NODE 2 ABOVE 140 + +[RULES] + +[ENERGY] + Global Efficiency 75 + Global Price 0.0 + Demand Charge 0.0 + +[EMITTERS] +;Junction Coefficient + +[QUALITY] +;Node InitQual + 10 0.5 + 11 0.5 + 12 0.5 + 13 0.5 + 21 0.5 + 22 0.5 + 23 0.5 + 31 0.5 + 32 0.5 + 9 1.0 + 2 1.0 + +[SOURCES] +;Node Type Quality Pattern + +[REACTIONS] +;Type Pipe/Tank Coefficient + Order Bulk 1 + Order Tank 1 + Order Wall 1 + Global Bulk -.5 + Global Wall -1 + Limiting Potential 0.0 + Roughness Correlation 0.0 + +[MIXING] +;Tank Model + +[TIMES] + Duration 24:00 + Hydraulic Timestep 1:00 + Quality Timestep 0:05 + Pattern Timestep 2:00 + Pattern Start 0:00 + Report Timestep 1:00 + Report Start 0:00 + Start ClockTime 12 am + Statistic None + +[REPORT] + Status Yes + Summary No + Page 0 + +[OPTIONS] + Units GPM + Headloss H-W + Specific Gravity 1.0 + Viscosity 1.0 + Trials 40 + Accuracy 0.001 + CHECKFREQ 2 + MAXCHECK 10 + DAMPLIMIT 0 + Unbalanced Continue 10 + Pattern 1 + Demand Multiplier 1.0 + Emitter Exponent 0.5 + Quality Chlorine mg/L + Diffusivity 1.0 + Tolerance 0.01 + +[COORDINATES] +;Node X-Coord Y-Coord + 10 20.00 70.00 + 11 30.00 70.00 + 12 50.00 70.00 + 13 70.00 70.00 + 21 30.00 40.00 + 22 50.00 40.00 + 23 70.00 40.00 + 31 30.00 10.00 + 32 50.00 10.00 + 9 10.00 70.00 + 2 50.00 90.00 + +[VERTICES] +;Link X-Coord Y-Coord + +[LABELS] +;X-Coord Y-Coord Label & Anchor Node + 6.99 73.63 "Source" + 13.48 68.13 "Pump" + 43.85 91.21 "Tank" + +[BACKDROP] + DIMENSIONS 7.00 6.00 73.00 94.00 + UNITS None + FILE + OFFSET 0.00 0.00 + +[END] diff --git a/public/Net2.inp b/public/Net2.inp new file mode 100644 index 0000000..47e3959 --- /dev/null +++ b/public/Net2.inp @@ -0,0 +1,308 @@ +[TITLE] +EPANET Example Network 2 +Example of modeling a 55-hour fluoride tracer study. +Measured fluoride data is contained in the file Net2-FL.dat +and should be registered with the project to produce a +Calibration Report (select Calibration Data from the Project +menu). + +[JUNCTIONS] +;ID Elev Demand Pattern + 1 50 -694.4 2 ; + 2 100 8 ; + 3 60 14 ; + 4 60 8 ; + 5 100 8 ; + 6 125 5 ; + 7 160 4 ; + 8 110 9 ; + 9 180 14 ; + 10 130 5 ; + 11 185 34.78 ; + 12 210 16 ; + 13 210 2 ; + 14 200 2 ; + 15 190 2 ; + 16 150 20 ; + 17 180 20 ; + 18 100 20 ; + 19 150 5 ; + 20 170 19 ; + 21 150 16 ; + 22 200 10 ; + 23 230 8 ; + 24 190 11 ; + 25 230 6 ; + 27 130 8 ; + 28 110 0 ; + 29 110 7 ; + 30 130 3 ; + 31 190 17 ; + 32 110 17 ; + 33 180 1.5 ; + 34 190 1.5 ; + 35 110 0 ; + 36 110 1 ; + +[RESERVOIRS] +;ID Head Pattern + +[TANKS] +;ID Elevation InitLevel MinLevel MaxLevel Diameter MinVol VolCurve + 26 235 56.7 50 70 50 0 ; + +[PIPES] +;ID Node1 Node2 Length Diameter Roughness MinorLoss Status + 1 1 2 2400 12 100 0 Open ; + 2 2 5 800 12 100 0 Open ; + 3 2 3 1300 8 100 0 Open ; + 4 3 4 1200 8 100 0 Open ; + 5 4 5 1000 12 100 0 Open ; + 6 5 6 1200 12 100 0 Open ; + 7 6 7 2700 12 100 0 Open ; + 8 7 8 1200 12 140 0 Open ; + 9 7 9 400 12 100 0 Open ; + 10 8 10 1000 8 140 0 Open ; + 11 9 11 700 12 100 0 Open ; + 12 11 12 1900 12 100 0 Open ; + 13 12 13 600 12 100 0 Open ; + 14 13 14 400 12 100 0 Open ; + 15 14 15 300 12 100 0 Open ; + 16 13 16 1500 8 100 0 Open ; + 17 15 17 1500 8 100 0 Open ; + 18 16 17 600 8 100 0 Open ; + 19 17 18 700 12 100 0 Open ; + 20 18 32 350 12 100 0 Open ; + 21 16 19 1400 8 100 0 Open ; + 22 14 20 1100 12 100 0 Open ; + 23 20 21 1300 8 100 0 Open ; + 24 21 22 1300 8 100 0 Open ; + 25 20 22 1300 8 100 0 Open ; + 26 24 23 600 12 100 0 Open ; + 27 15 24 250 12 100 0 Open ; + 28 23 25 300 12 100 0 Open ; + 29 25 26 200 12 100 0 Open ; + 30 25 31 600 12 100 0 Open ; + 31 31 27 400 8 100 0 Open ; + 32 27 29 400 8 100 0 Open ; + 34 29 28 700 8 100 0 Open ; + 35 22 33 1000 8 100 0 Open ; + 36 33 34 400 8 100 0 Open ; + 37 32 19 500 8 100 0 Open ; + 38 29 35 500 8 100 0 Open ; + 39 35 30 1000 8 100 0 Open ; + 40 28 35 700 8 100 0 Open ; + 41 28 36 300 8 100 0 Open ; + +[PUMPS] +;ID Node1 Node2 Parameters + +[VALVES] +;ID Node1 Node2 Diameter Type Setting MinorLoss + +[TAGS] + +[DEMANDS] +;Junction Demand Pattern Category + +[STATUS] +;ID Status/Setting + +[PATTERNS] +;ID Multipliers +;Demand Pattern + 1 1.26 1.04 .97 .97 .89 1.19 + 1 1.28 .67 .67 1.34 2.46 .97 + 1 .92 .68 1.43 .61 .31 .78 + 1 .37 .67 1.26 1.56 1.19 1.26 + 1 .6 1.1 1.03 .73 .88 1.06 + 1 .99 1.72 1.12 1.34 1.12 .97 + 1 1.04 1.15 .91 .61 .68 .46 + 1 .51 .74 1.12 1.34 1.26 .97 + 1 .82 1.37 1.03 .81 .88 .81 + 1 .81 +;Pump Station Outflow Pattern + 2 .96 .96 .96 .96 .96 .96 + 2 .62 0 0 0 0 0 + 2 .8 1 1 1 1 .15 + 2 0 0 0 0 0 0 + 2 .55 .92 .92 .92 .92 .9 + 2 .9 .45 0 0 0 0 + 2 0 .7 1 1 1 1 + 2 .2 0 0 0 0 0 + 2 0 .74 .92 .92 .92 .92 + 2 .92 +;Pump Station Fluoride Pattern + 3 .98 1.02 1.05 .99 .64 .46 + 3 .35 .35 .35 .35 .35 .35 + 3 .17 .17 .13 .13 .13 .15 + 3 .15 .15 .15 .15 .15 .15 + 3 .15 .12 .1 .08 .11 .09 + 3 .09 .08 .08 .08 .08 .08 + 3 .08 .09 .07 .07 .09 .09 + 3 .09 .09 .09 .09 .09 .09 + 3 .09 .08 .35 .72 .82 .92 + 3 1 + +[CURVES] +;ID X-Value Y-Value + +[CONTROLS] + +[RULES] + +[ENERGY] + Global Efficiency 75 + Global Price 0.0 + Demand Charge 0.0 + +[EMITTERS] +;Junction Coefficient + +[QUALITY] +;Node InitQual + 1 1.0 + 2 1.0 + 3 1.0 + 4 1.0 + 5 1.0 + 6 1.0 + 7 1.0 + 8 1.0 + 9 1.0 + 10 1.0 + 11 1.0 + 12 1.0 + 13 1.0 + 14 1.0 + 15 1.0 + 16 1.0 + 17 1.0 + 18 1.0 + 19 1.0 + 20 1.0 + 21 1.0 + 22 1.0 + 23 1.0 + 24 1.0 + 25 1.0 + 27 1.0 + 28 1.0 + 29 1.0 + 30 1.0 + 31 1.0 + 32 1.0 + 33 1.0 + 34 1.0 + 35 1.0 + 36 1.0 + 26 1.0 + +[SOURCES] +;Node Type Quality Pattern + 1 CONCEN 1.0 3 + +[REACTIONS] +;Type Pipe/Tank Coefficient + +[REACTIONS] + Order Bulk 1 + Order Tank 1 + Order Wall 1 + Global Bulk 0.0 + Global Wall 0.0 + Limiting Potential 0.0 + Roughness Correlation 0.0 + +[MIXING] +;Tank Model + +[TIMES] + Duration 55:00 + Hydraulic Timestep 1:00 + Quality Timestep 0:05 + Pattern Timestep 1:00 + Pattern Start 0:00 + Report Timestep 1:00 + Report Start 0:00 + Start ClockTime 8 am + Statistic None + +[REPORT] + Status No + Summary No + Page 0 + +[OPTIONS] + Units GPM + Headloss H-W + Specific Gravity 1.0 + Viscosity 1.0 + Trials 40 + Accuracy 0.001 + CHECKFREQ 2 + MAXCHECK 10 + DAMPLIMIT 0 + Unbalanced Continue 10 + Pattern 1 + Demand Multiplier 1.0 + Emitter Exponent 0.5 + Quality Fluoride mg/L + Diffusivity 1.0 + Tolerance 0.01 + +[COORDINATES] +;Node X-Coord Y-Coord + 1 21.00 4.00 + 2 19.00 20.00 + 3 11.00 21.00 + 4 14.00 28.00 + 5 19.00 25.00 + 6 28.00 23.00 + 7 36.00 39.00 + 8 38.00 30.00 + 9 36.00 42.00 + 10 37.00 23.00 + 11 37.00 49.00 + 12 39.00 60.00 + 13 38.00 64.00 + 14 38.00 66.00 + 15 37.00 69.00 + 16 27.00 65.00 + 17 27.00 69.00 + 18 23.00 68.00 + 19 21.00 59.00 + 20 45.00 68.00 + 21 51.00 62.00 + 22 54.00 69.00 + 23 35.00 74.00 + 24 37.00 71.00 + 25 35.00 76.00 + 27 39.00 87.00 + 28 49.00 85.00 + 29 42.00 86.00 + 30 47.00 80.00 + 31 37.00 80.00 + 32 23.00 64.00 + 33 56.00 73.00 + 34 56.00 77.00 + 35 43.00 81.00 + 36 53.00 87.00 + 26 33.00 76.00 + +[VERTICES] +;Link X-Coord Y-Coord + +[LABELS] +;X-Coord Y-Coord Label & Anchor Node + 24.00 7.00 "Pump" + 24.00 4.00 "Station" + 26.76 77.42 "Tank" + +[BACKDROP] + DIMENSIONS 8.75 -0.15 58.25 91.15 + UNITS None + FILE + OFFSET 0.00 0.00 + +[END] diff --git a/public/Net3.inp b/public/Net3.inp new file mode 100644 index 0000000..d9070e6 --- /dev/null +++ b/public/Net3.inp @@ -0,0 +1,479 @@ +[TITLE] +EPANET Example Network 3 +Example showing how the percent of Lake water in a dual-source +system changes over time. + +[JUNCTIONS] +;ID Elev Demand Pattern + 10 147 0 ; + 15 32 1 3 ; + 20 129 0 ; + 35 12.5 1 4 ; + 40 131.9 0 ; + 50 116.5 0 ; + 60 0 0 ; + 601 0 0 ; + 61 0 0 ; + 101 42 189.95 ; + 103 43 133.2 ; + 105 28.5 135.37 ; + 107 22 54.64 ; + 109 20.3 231.4 ; + 111 10 141.94 ; + 113 2 20.01 ; + 115 14 52.1 ; + 117 13.6 117.71 ; + 119 2 176.13 ; + 120 0 0 ; + 121 -2 41.63 ; + 123 11 1 2 ; + 125 11 45.6 ; + 127 56 17.66 ; + 129 51 0 ; + 131 6 42.75 ; + 139 31 5.89 ; + 141 4 9.85 ; + 143 -4.5 6.2 ; + 145 1 27.63 ; + 147 18.5 8.55 ; + 149 16 27.07 ; + 151 33.5 144.48 ; + 153 66.2 44.17 ; + 157 13.1 51.79 ; + 159 6 41.32 ; + 161 4 15.8 ; + 163 5 9.42 ; + 164 5 0 ; + 166 -2 2.6 ; + 167 -5 14.56 ; + 169 -5 0 ; + 171 -4 39.34 ; + 173 -4 0 ; + 177 8 58.17 ; + 179 8 0 ; + 181 8 0 ; + 183 11 0 ; + 184 16 0 ; + 185 16 25.65 ; + 187 12.5 0 ; + 189 4 107.92 ; + 191 25 81.9 ; + 193 18 71.31 ; + 195 15.5 0 ; + 197 23 17.04 ; + 199 -2 119.32 ; + 201 0.1 44.61 ; + 203 2 1 5 ; + 204 21 0 ; + 205 21 65.36 ; + 206 1 0 ; + 207 9 69.39 ; + 208 16 0 ; + 209 -2 0.87 ; + 211 7 8.67 ; + 213 7 13.94 ; + 215 7 92.19 ; + 217 6 24.22 ; + 219 4 41.32 ; + 225 8 22.8 ; + 229 10.5 64.18 ; + 231 5 16.48 ; + 237 14 15.61 ; + 239 13 44.61 ; + 241 13 0 ; + 243 14 4.34 ; + 247 18 70.38 ; + 249 18 0 ; + 251 30 24.16 ; + 253 36 54.52 ; + 255 27 40.39 ; + 257 17 0 ; + 259 25 0 ; + 261 0 0 ; + 263 0 0 ; + 265 0 0 ; + 267 21 0 ; + 269 0 0 ; + 271 6 0 ; + 273 8 0 ; + 275 10 0 ; + +[RESERVOIRS] +;ID Head Pattern + River 220.0 ; + Lake 167.0 ; + +[TANKS] +;ID Elevation InitLevel MinLevel MaxLevel Diameter MinVol VolCurve + 1 131.9 13.1 .1 32.1 85 0 ; + 2 116.5 23.5 6.5 40.3 50 0 ; + 3 129.0 29.0 4.0 35.5 164 0 ; + +[PIPES] +;ID Node1 Node2 Length Diameter Roughness MinorLoss Status + 20 3 20 99 99 199 0 Open ; + 40 1 40 99 99 199 0 Open ; + 50 2 50 99 99 199 0 Open ; + 60 River 60 1231 24 140 0 Open ; + 101 10 101 14200 18 110 0 Open ; + 103 101 103 1350 16 130 0 Open ; + 105 101 105 2540 12 130 0 Open ; + 107 105 107 1470 12 130 0 Open ; + 109 103 109 3940 16 130 0 Open ; + 111 109 111 2000 12 130 0 Open ; + 112 115 111 1160 12 130 0 Open ; + 113 111 113 1680 12 130 0 Open ; + 114 115 113 2000 8 130 0 Open ; + 115 107 115 1950 8 130 0 Open ; + 116 113 193 1660 12 130 0 Open ; + 117 263 105 2725 12 130 0 Open ; + 119 115 117 2180 12 130 0 Open ; + 120 119 120 730 12 130 0 Open ; + 121 120 117 1870 12 130 0 Open ; + 122 121 120 2050 8 130 0 Open ; + 123 121 119 2000 30 141 0 Open ; + 125 123 121 1500 30 141 0 Open ; + 129 121 125 930 24 130 0 Open ; + 131 125 127 3240 24 130 0 Open ; + 133 20 127 785 20 130 0 Open ; + 135 127 129 900 24 130 0 Open ; + 137 129 131 6480 16 130 0 Open ; + 145 129 139 2750 8 130 0 Open ; + 147 139 141 2050 8 130 0 Open ; + 149 143 141 1400 8 130 0 Open ; + 151 15 143 1650 8 130 0 Open ; + 153 145 141 3510 12 130 0 Open ; + 155 147 145 2200 12 130 0 Open ; + 159 147 149 880 12 130 0 Open ; + 161 149 151 1020 8 130 0 Open ; + 163 151 153 1170 12 130 0 Open ; + 169 125 153 4560 8 130 0 Open ; + 171 119 151 3460 12 130 0 Open ; + 173 119 157 2080 30 141 0 Open ; + 175 157 159 2910 30 141 0 Open ; + 177 159 161 2000 30 141 0 Open ; + 179 161 163 430 30 141 0 Open ; + 180 163 164 150 14 130 0 Open ; + 181 164 166 490 14 130 0 Open ; + 183 265 169 590 30 141 0 Open ; + 185 167 169 60 8 130 0 Open ; + 186 187 204 99.9 8 130 0 Open ; + 187 169 171 1270 30 141 0 Open ; + 189 171 173 50 30 141 0 Open ; + 191 271 171 760 24 130 0 Open ; + 193 35 181 30 24 130 0 Open ; + 195 181 177 30 12 130 0 Open ; + 197 177 179 30 12 130 0 Open ; + 199 179 183 210 12 130 0 Open ; + 201 40 179 1190 12 130 0 Open ; + 202 185 184 99.9 8 130 0 Open ; + 203 183 185 510 8 130 0 Open ; + 204 184 205 4530. 12 130 0 Open ; + 205 204 185 1325. 12 130 0 Open ; + 207 189 183 1350 12 130 0 Open ; + 209 189 187 500 8 130 0 Open ; + 211 169 269 646 12 130 0 Open ; + 213 191 187 2560 12 130 0 Open ; + 215 267 189 1230 12 130 0 Open ; + 217 191 193 520 12 130 0 Open ; + 219 193 195 360 12 130 0 Open ; + 221 161 195 2300 8 130 0 Open ; + 223 197 191 1150 12 130 0 Open ; + 225 111 197 2790 12 130 0 Open ; + 229 173 199 4000 24 141 0 Open ; + 231 199 201 630 24 141 0 Open ; + 233 201 203 120 24 130 0 Open ; + 235 199 273 725 12 130 0 Open ; + 237 205 207 1200 12 130 0 Open ; + 238 207 206 450 12 130 0 Open ; + 239 275 207 1430 12 130 0 Open ; + 240 206 208 510 12 130 0 Open ; + 241 208 209 885 12 130 0 Open ; + 243 209 211 1210 16 130 0 Open ; + 245 211 213 990 16 130 0 Open ; + 247 213 215 4285 16 130 0 Open ; + 249 215 217 1660 16 130 0 Open ; + 251 217 219 2050 14 130 0 Open ; + 257 217 225 1560 12 130 0 Open ; + 261 213 229 2200 8 130 0 Open ; + 263 229 231 1960 12 130 0 Open ; + 269 211 237 2080 12 130 0 Open ; + 271 237 229 790 8 130 0 Open ; + 273 237 239 510 12 130 0 Open ; + 275 239 241 35 12 130 0 Open ; + 277 241 243 2200 12 130 0 Open ; + 281 241 247 445 10 130 0 Open ; + 283 239 249 430 12 130 0 Open ; + 285 247 249 10 12 130 0 Open ; + 287 247 255 1390 10 130 0 Open ; + 289 50 255 925 10 130 0 Open ; + 291 255 253 1100 10 130 0 Open ; + 293 255 251 1100 8 130 0 Open ; + 295 249 251 1450 12 130 0 Open ; + 297 120 257 645 8 130 0 Open ; + 299 257 259 350 8 130 0 Open ; + 301 259 263 1400 8 130 0 Open ; + 303 257 261 1400 8 130 0 Open ; + 305 117 261 645 12 130 0 Open ; + 307 261 263 350 12 130 0 Open ; + 309 265 267 1580 8 130 0 Open ; + 311 193 267 1170 12 130 0 Open ; + 313 269 189 646 12 130 0 Open ; + 315 181 271 260 24 130 0 Open ; + 317 273 275 2230 8 130 0 Open ; + 319 273 205 645 12 130 0 Open ; + 321 163 265 1200 30 141 0 Open ; + 323 201 275 300 12 130 0 Open ; + 325 269 271 1290 8 130 0 Open ; + 329 61 123 45500 30 140 0 Open ; + 330 60 601 1 30 140 0 Closed ; + 333 601 61 1 30 140 0 Open ; + +[PUMPS] +;ID Node1 Node2 Parameters + 10 Lake 10 HEAD 1 ; + 335 60 61 HEAD 2 ; + +[VALVES] +;ID Node1 Node2 Diameter Type Setting MinorLoss + +[TAGS] + +[DEMANDS] +;Junction Demand Pattern Category + +[STATUS] +;ID Status/Setting + 10 Closed + +[PATTERNS] +;ID Multipliers +;General Default Demand Pattern + 1 1.34 1.94 1.46 1.44 .76 .92 + 1 .85 1.07 .96 1.1 1.08 1.19 + 1 1.16 1.08 .96 .83 .79 .74 + 1 .64 .64 .85 .96 1.24 1.67 +;Demand Pattern for Node 123 + 2 0 0 0 0 0 1219 + 2 0 0 0 1866 1836 1818 + 2 1818 1822 1822 1817 1824 1816 + 2 1833 1817 1830 1814 1840 1859 +;Demand Pattern for Node 15 + 3 620 620 620 620 620 360 + 3 360 0 0 0 0 360 + 3 360 360 360 360 0 0 + 3 0 0 0 0 360 360 +;Demand Pattern for Node 35 + 4 1637 1706 1719 1719 1791 1819 + 4 1777 1842 1815 1825 1856 1801 + 4 1819 1733 1664 1620 1613 1620 + 4 1616 1647 1627 1627 1671 1668 +;Demand Pattern for Node 203 + 5 4439 4531 4511 4582 4531 4582 + 5 4572 4613 4643 4643 4592 4613 + 5 4531 4521 4449 4439 4449 4460 + 5 4439 4419 4368 4399 4470 4480 + +[CURVES] +;ID X-Value Y-Value +;PUMP: Pump Curve for Pump 10 (Lake Source) + 1 0 104. + 1 2000. 92. + 1 4000. 63. +;PUMP: Pump Curve for Pump 335 (River Source) + 2 0 200. + 2 8000. 138. + 2 14000. 86. + +[CONTROLS] +;Lake source operates only part of the day +Link 10 OPEN AT TIME 1 +Link 10 CLOSED AT TIME 15 + +;Pump 335 controlled by level in Tank 1 +;When pump is closed, bypass pipe is opened +Link 335 OPEN IF Node 1 BELOW 17.1 +Link 335 CLOSED IF Node 1 ABOVE 19.1 +Link 330 CLOSED IF Node 1 BELOW 17.1 +Link 330 OPEN IF Node 1 ABOVE 19.1 + +[RULES] + +[ENERGY] + Global Efficiency 75 + Global Price 0.0 + Demand Charge 0.0 + +[EMITTERS] +;Junction Coefficient + +[QUALITY] +;Node InitQual + +[SOURCES] +;Node Type Quality Pattern + +[REACTIONS] +;Type Pipe/Tank Coefficient + +[REACTIONS] + Order Bulk 1 + Order Tank 1 + Order Wall 1 + Global Bulk 0.0 + Global Wall 0.0 + Limiting Potential 0.0 + Roughness Correlation 0.0 + +[MIXING] +;Tank Model + +[TIMES] + Duration 24:00 + Hydraulic Timestep 1:00 + Quality Timestep 0:05 + Pattern Timestep 1:00 + Pattern Start 0:00 + Report Timestep 1:00 + Report Start 0:00 + Start ClockTime 12 am + Statistic None + +[REPORT] + Status Yes + Summary No + Page 0 + +[OPTIONS] + Units GPM + Headloss H-W + Specific Gravity 1.0 + Viscosity 1.0 + Trials 40 + Accuracy 0.001 + CHECKFREQ 2 + MAXCHECK 10 + DAMPLIMIT 0 + Unbalanced Continue 10 + Pattern 1 + Demand Multiplier 1.0 + Emitter Exponent 0.5 + Quality Trace Lake + Diffusivity 1.0 + Tolerance 0.01 + +[COORDINATES] +;Node X-Coord Y-Coord + 10 9.00 27.85 + 15 38.68 23.76 + 20 29.44 26.91 + 35 25.46 10.52 + 40 27.02 9.81 + 50 33.01 3.01 + 60 23.90 29.94 + 601 23.00 29.49 + 61 23.71 29.03 + 101 13.81 22.94 + 103 12.96 21.31 + 105 16.97 21.28 + 107 18.45 20.46 + 109 17.64 18.92 + 111 20.21 17.53 + 113 22.04 16.61 + 115 20.98 19.18 + 117 21.69 21.28 + 119 23.70 22.76 + 120 22.08 23.10 + 121 23.54 25.50 + 123 23.37 27.31 + 125 24.59 25.64 + 127 29.29 26.40 + 129 30.32 26.39 + 131 37.89 29.55 + 139 33.28 24.54 + 141 35.68 23.08 + 143 37.47 21.97 + 145 33.02 19.29 + 147 30.24 20.38 + 149 29.62 20.74 + 151 28.29 21.39 + 153 28.13 22.63 + 157 24.85 20.16 + 159 23.12 17.50 + 161 25.10 15.28 + 163 25.39 14.98 + 164 25.98 15.14 + 166 26.48 15.13 + 167 25.88 12.98 + 169 25.68 12.74 + 171 26.65 11.80 + 173 26.87 11.59 + 177 25.92 10.59 + 179 25.71 10.40 + 181 25.72 10.74 + 183 25.45 10.18 + 184 25.15 9.52 + 185 25.01 9.67 + 187 23.64 11.04 + 189 24.15 11.37 + 191 22.10 14.07 + 193 22.88 14.35 + 195 23.18 14.72 + 197 20.97 15.18 + 199 29.42 8.44 + 201 30.89 8.57 + 203 31.14 8.89 + 204 23.80 10.90 + 205 29.20 6.46 + 206 31.66 6.64 + 207 31.00 6.61 + 208 32.54 6.81 + 209 33.76 6.59 + 211 34.20 5.54 + 213 35.26 6.16 + 215 39.95 8.73 + 217 42.11 8.67 + 219 44.86 9.32 + 225 43.53 7.38 + 229 36.16 3.49 + 231 38.38 2.54 + 237 35.37 3.08 + 239 35.76 2.31 + 241 35.87 2.11 + 243 37.04 0.00 + 247 35.02 2.05 + 249 35.02 1.81 + 251 34.15 1.10 + 253 32.17 1.88 + 255 33.51 2.45 + 257 21.17 23.32 + 259 20.80 23.40 + 261 20.79 21.45 + 263 20.32 21.57 + 265 25.39 13.60 + 267 23.38 12.95 + 269 25.03 12.14 + 271 25.97 11.00 + 273 29.16 7.38 + 275 31.07 8.29 + River 24.15 31.06 + Lake 8.00 27.53 + 1 27.46 9.84 + 2 32.99 3.45 + 3 29.41 27.27 + +[VERTICES] +;Link X-Coord Y-Coord + +[LABELS] +;X-Coord Y-Coord Label & Anchor Node + 8.00 29.42 "LAKE" + 25.00 31.10 "RIVER" + +[BACKDROP] + DIMENSIONS 6.16 -1.55 46.70 32.61 + UNITS None + FILE + OFFSET 0.00 0.00 + +[END] diff --git a/public/fonts/Noto Sans Regular/0-255.pbf b/public/fonts/Noto Sans Regular/0-255.pbf new file mode 100644 index 0000000000000000000000000000000000000000..736ba4a9d68baf1bcf6b16febda81f6670e8310e GIT binary patch literal 76580 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 Onn}whMtZDcv;POI#oD<5 literal 0 HcmV?d00001 diff --git a/public/fonts/Noto Sans Regular/256-511.pbf b/public/fonts/Noto Sans Regular/256-511.pbf new file mode 100644 index 0000000000000000000000000000000000000000..6cc68507f3600c2b4612be4cf808f6aa3701ab58 GIT binary patch literal 127219 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�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 literal 0 HcmV?d00001 diff --git a/public/fonts/Noto Sans Regular/512-767.pbf b/public/fonts/Noto Sans Regular/512-767.pbf new file mode 100644 index 0000000000000000000000000000000000000000..659826ed8ff4f9ed9c8acd2344eb48fd24eadeda GIT binary patch literal 95728 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 literal 0 HcmV?d00001 diff --git a/public/fonts/Noto Sans Regular/768-1023.pbf b/public/fonts/Noto Sans Regular/768-1023.pbf new file mode 100644 index 0000000000000000000000000000000000000000..660c89ea72de3004b904a9c8fd2c72507510093f GIT binary patch literal 74752 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%0AJV74IrTRR0_vDSIZh>KNwCCe^ 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 Rne18*g8jPv>yS->_8$T7YJLC! literal 0 HcmV?d00001 diff --git a/public/fonts/Noto Sans Regular/8448-8703.pbf b/public/fonts/Noto Sans Regular/8448-8703.pbf new file mode 100644 index 0000000000000000000000000000000000000000..fdd8c1e6f59a79cccf160305e80fdd3cb0906c64 GIT binary patch literal 42129 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 SP#_4wgy=MM2G&`UzVpAcGZD!E literal 0 HcmV?d00001 diff --git a/public/fonts/Noto Sans Regular/8704-8959.pbf b/public/fonts/Noto Sans Regular/8704-8959.pbf new file mode 100644 index 0000000000000000000000000000000000000000..6722a219e3e5f158286bfed5feffd9c87e3a3e6b GIT binary patch literal 40857 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 X*-B-$B-Fb;h$rip@MOLH;MV^DPe3ZC literal 0 HcmV?d00001 diff --git a/public/korean_cp949_network.inp b/public/korean_cp949_network.inp new file mode 100644 index 0000000..33f5f23 --- /dev/null +++ b/public/korean_cp949_network.inp @@ -0,0 +1,53 @@ +[TITLE] + Çѱ¹¾î ÁöÀÚü ±޼ö±¸¿ª ¼ö¸®Çؼ® ¸ðµ¨ (CP949 ÀÎÄڵù ǥÁØ °ËÁõº») + ¹è¼öº»°ü ¹× ºí·Ï À¯·®°è °¡¾Ð °ü¸Á + +[JUNCTIONS] +;ID Elev Demand Pattern + Á¤¼öÀåÀ¯Ãâ_J01 25.0 10.0 1 ; Á¦1°¡¾ÐÀå Èí¼ö¶óÀÎ + »ç°Ÿ®ºбâ_J02 28.5 35.0 1 ; Á߾ӷÎ ±³Â÷Á¡ ºбâ + ÁְŴÜÁöÀ¯ÀÔ_J03 32.0 50.0 1 ; ¾ÆÆÄƮ ´ÜÁö ÀÎÀ԰ü + °íÁö´ëÀýÁ¡_J04 45.0 20.0 1 ; ¹è¼ö±¸¿ª ¸»´Ü °¡¾ÐÀýÁ¡ + +[RESERVOIRS] +;ID Head Pattern + Á߾ÓÁ¤¼öÁö_RES 65.0 ; ÁÖ ¼ö¿øÁö ¼öµÎ 65m + +[PIPES] +;ID Node1 Node2 Length Diameter Roughness MinorLoss Status + ¼ۼö°£¼±_P01 Á߾ÓÁ¤¼öÁö_RES Á¤¼öÀåÀ¯Ãâ_J01 500 350 130 0 Open ; ´ÚŸÀÏÁÖö°ü + ¹è¼öº»°ü_P02 Á¤¼öÀåÀ¯Ãâ_J01 »ç°Ÿ®ºбâ_J02 420 300 130 0 Open ; ½ż³ º»°ü + ÁְÅÀÎÀ԰ü_P03 »ç°Ÿ®ºбâ_J02 ÁְŴÜÁöÀ¯ÀÔ_J03 280 200 140 0 Open ; PE°ü + °íÁö´밡¾аü_P04 »ç°Ÿ®ºбâ_J02 °íÁö´ëÀýÁ¡_J04 650 150 110 0 Open ; ÁÖö°ü + +[PATTERNS] +;ID Multipliers + 1 0.70 0.80 1.20 1.60 1.40 1.10 + 1 1.00 0.90 1.30 1.50 1.00 0.70 + +[TIMES] + Duration 24:00 + Hydraulic Timestep 1:00 + Quality Timestep 0:05 + Pattern Timestep 2:00 + Pattern Start 0:00 + Report Timestep 1:00 + Report Start 0:00 + Start ClockTime 12 am + Statistic None + +[OPTIONS] + Units LPS + Headloss H-W + Specific Gravity 1.0 + Accuracy 0.001 + +[COORDINATES] +;Node X-Coord Y-Coord + Á߾ÓÁ¤¼öÁö_RES 954200.00 1945100.00 + Á¤¼öÀåÀ¯Ãâ_J01 954700.00 1945100.00 + »ç°Ÿ®ºбâ_J02 955120.00 1945100.00 + ÁְŴÜÁöÀ¯ÀÔ_J03 955120.00 1945380.00 + °íÁö´ëÀýÁ¡_J04 955770.00 1945100.00 + +[END] diff --git a/public/sample_gis_pipes.geojson b/public/sample_gis_pipes.geojson new file mode 100644 index 0000000..b9d19ea --- /dev/null +++ b/public/sample_gis_pipes.geojson @@ -0,0 +1,118 @@ +{ + "type": "FeatureCollection", + "name": "상수관로_GIS_샘플", + "crs": { + "type": "name", + "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } + }, + "features": [ + { + "type": "Feature", + "properties": { + "PIP_ID": "PIPE_101", + "PIP_DIA": 300, + "PIP_LEN": 450, + "PIP_MAT": "DIP", + "ROUGHNESS": 110, + "LAYER": "상수원관" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [126.9750, 37.5650], + [126.9780, 37.5650] + ] + } + }, + { + "type": "Feature", + "properties": { + "PIP_ID": "PIPE_102", + "PIP_DIA": 200, + "PIP_LEN": 350, + "PIP_MAT": "PE", + "ROUGHNESS": 130, + "LAYER": "배수관" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [126.9780, 37.5650], + [126.9780, 37.5610] + ] + } + }, + { + "type": "Feature", + "properties": { + "PIP_ID": "PIPE_103", + "PIP_DIA": 200, + "PIP_LEN": 380, + "PIP_MAT": "PE", + "ROUGHNESS": 130, + "LAYER": "배수관" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [126.9780, 37.5610], + [126.9740, 37.5610] + ] + } + }, + { + "type": "Feature", + "properties": { + "PIP_ID": "PIPE_104", + "PIP_DIA": 150, + "PIP_LEN": 420, + "PIP_MAT": "PVC", + "ROUGHNESS": 140, + "LAYER": "급수관" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [126.9740, 37.5610], + [126.9750, 37.5650] + ] + } + }, + { + "type": "Feature", + "properties": { + "PIP_ID": "PIPE_105", + "PIP_DIA": 150, + "PIP_LEN": 280, + "PIP_MAT": "DIP", + "ROUGHNESS": 120, + "LAYER": "급수지선" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [126.9780, 37.5650], + [126.9820, 37.5630] + ] + } + }, + { + "type": "Feature", + "properties": { + "PIP_ID": "PIPE_106", + "PIP_DIA": 150, + "PIP_LEN": 310, + "PIP_MAT": "PE", + "ROUGHNESS": 130, + "LAYER": "급수지선" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [126.9820, 37.5630], + [126.9780, 37.5610] + ] + } + } + ] +} diff --git a/public/sample_pressure_network.inp b/public/sample_pressure_network.inp new file mode 100644 index 0000000..274fa35 --- /dev/null +++ b/public/sample_pressure_network.inp @@ -0,0 +1,139 @@ +[TITLE] + Anonymous District Metered Area Water Network (EPSG:5179) + spipe Verification Benchmark Model + +[JUNCTIONS] +;ID Elev Demand Pattern + N01 35.0 15.0 1 ; + N02 36.5 20.0 1 ; + N03 34.0 25.0 1 ; + N04 38.0 18.0 1 ; + N05 33.5 30.0 1 ; + N06 35.0 22.0 1 ; + N07 37.0 16.0 1 ; + N08 39.0 12.0 1 ; + +[RESERVOIRS] +;ID Head Pattern + RES01 85.0 ; + +[TANKS] +;ID Elevation InitLevel MinLevel MaxLevel Diameter MinVol VolCurve + TANK01 50.0 8.0 2.0 12.0 25.0 0 ; + +[PIPES] +;ID Node1 Node2 Length Diameter Roughness MinorLoss Status + PIPE01 RES01 N01 450 300 110 0 Open ; + PIPE02 N01 N02 320 250 120 0 Open ; + PIPE03 N02 N03 280 200 130 0 Open ; + PIPE04 N03 N04 360 200 130 0 Open ; + PIPE05 N04 N05 410 200 130 0 Open ; + PIPE06 N05 N06 290 150 130 0 Open ; + PIPE07 N06 N07 350 150 130 0 Open ; + PIPE08 N07 N08 310 150 130 0 Open ; + PIPE09 N08 TANK01 250 200 120 0 Open ; + PIPE10 N02 N06 520 200 130 0 Open ; + PIPE11 N03 N07 480 150 130 0 Open ; + +[PUMPS] +;ID Node1 Node2 Parameters + +[VALVES] +;ID Node1 Node2 Diameter Type Setting MinorLoss + +[TAGS] + +[DEMANDS] +;Junction Demand Pattern Category + +[STATUS] +;ID Status/Setting + +[PATTERNS] +;ID Multipliers +;Demand Pattern (Residential 2-Peak) + 1 0.60 0.70 0.90 1.40 1.60 1.30 + 1 1.10 1.00 1.20 1.50 1.10 0.80 + +[CURVES] +;ID X-Value Y-Value + +[CONTROLS] + +[RULES] + +[ENERGY] + Global Efficiency 75 + Global Price 0.0 + Demand Charge 0.0 + +[EMITTERS] +;Junction Coefficient + +[QUALITY] +;Node InitQual + +[SOURCES] +;Node Type Quality Pattern + +[REACTIONS] +;Type Pipe/Tank Coefficient + +[MIXING] +;Tank Model + +[TIMES] + Duration 24:00 + Hydraulic Timestep 1:00 + Quality Timestep 0:05 + Pattern Timestep 2:00 + Pattern Start 0:00 + Report Timestep 1:00 + Report Start 0:00 + Start ClockTime 12 am + Statistic None + +[REPORT] + Status Yes + Summary No + Page 0 + +[OPTIONS] + Units LPS + Headloss H-W + Specific Gravity 1.0 + Viscosity 1.0 + Trials 40 + Accuracy 0.001 + CHECKFREQ 2 + MAXCHECK 10 + DAMPLIMIT 0 + Unbalanced Continue 10 + Pattern 1 + Demand Multiplier 1.0 + Emitter Exponent 0.5 + Quality None + Diffusivity 1.0 + Tolerance 0.01 + +[COORDINATES] +;Node X-Coord Y-Coord + RES01 986615.92 1894617.19 + N01 987015.92 1894417.19 + N02 987315.92 1894217.19 + N03 987615.92 1894117.19 + N04 987915.92 1894317.19 + N05 988315.92 1894217.19 + N06 987415.92 1893717.19 + N07 987715.92 1893617.19 + N08 988015.92 1893517.19 + TANK01 988265.92 1893417.19 + +[VERTICES] +;Link X-Coord Y-Coord + +[LABELS] + +[BACKDROP] + +[END] diff --git a/public/synthetic_large_network_5179.inp b/public/synthetic_large_network_5179.inp new file mode 100644 index 0000000..50b2fcc --- /dev/null +++ b/public/synthetic_large_network_5179.inp @@ -0,0 +1,8057 @@ +[TITLE] + Synthetic Large District Metered Network (EPSG:5179, > 2000 Pipes) + Benchmarking Grid for High-Capacity Hydraulic Verification + +[JUNCTIONS] +;ID Elev Demand Pattern + J_00_00 20.00 5.00 1 + J_00_01 20.20 0.00 1 + J_00_02 20.40 0.00 1 + J_00_03 20.60 5.00 1 + J_00_04 20.80 0.00 1 + J_00_05 21.00 0.00 1 + J_00_06 21.20 5.00 1 + J_00_07 21.40 0.00 1 + J_00_08 21.60 0.00 1 + J_00_09 21.80 5.00 1 + J_00_10 22.00 0.00 1 + J_00_11 22.20 0.00 1 + J_00_12 22.40 5.00 1 + J_00_13 22.60 0.00 1 + J_00_14 22.80 0.00 1 + J_00_15 23.00 5.00 1 + J_00_16 23.20 0.00 1 + J_00_17 23.40 0.00 1 + J_00_18 23.60 5.00 1 + J_00_19 23.80 0.00 1 + J_00_20 24.00 0.00 1 + J_00_21 24.20 5.00 1 + J_00_22 24.40 0.00 1 + J_00_23 24.60 0.00 1 + J_00_24 24.80 5.00 1 + J_00_25 25.00 0.00 1 + J_00_26 25.20 0.00 1 + J_00_27 25.40 5.00 1 + J_00_28 25.60 0.00 1 + J_00_29 25.80 0.00 1 + J_00_30 26.00 5.00 1 + J_00_31 26.20 0.00 1 + J_00_32 26.40 0.00 1 + J_00_33 26.60 5.00 1 + J_00_34 26.80 0.00 1 + J_00_35 27.00 0.00 1 + J_00_36 27.20 5.00 1 + J_00_37 27.40 0.00 1 + J_00_38 27.60 0.00 1 + J_00_39 27.80 5.00 1 + J_00_40 28.00 0.00 1 + J_00_41 28.20 0.00 1 + J_00_42 28.40 5.00 1 + J_00_43 28.60 0.00 1 + J_00_44 28.80 0.00 1 + J_01_00 20.20 0.00 1 + J_01_01 20.40 0.00 1 + J_01_02 20.60 5.00 1 + J_01_03 20.80 0.00 1 + J_01_04 21.00 0.00 1 + J_01_05 21.20 5.00 1 + J_01_06 21.40 0.00 1 + J_01_07 21.60 0.00 1 + J_01_08 21.80 5.00 1 + J_01_09 22.00 0.00 1 + J_01_10 22.20 0.00 1 + J_01_11 22.40 5.00 1 + J_01_12 22.60 0.00 1 + J_01_13 22.80 0.00 1 + J_01_14 23.00 5.00 1 + J_01_15 23.20 0.00 1 + J_01_16 23.40 0.00 1 + J_01_17 23.60 5.00 1 + J_01_18 23.80 0.00 1 + J_01_19 24.00 0.00 1 + J_01_20 24.20 5.00 1 + J_01_21 24.40 0.00 1 + J_01_22 24.60 0.00 1 + J_01_23 24.80 5.00 1 + J_01_24 25.00 0.00 1 + J_01_25 25.20 0.00 1 + J_01_26 25.40 5.00 1 + J_01_27 25.60 0.00 1 + J_01_28 25.80 0.00 1 + J_01_29 26.00 5.00 1 + J_01_30 26.20 0.00 1 + J_01_31 26.40 0.00 1 + J_01_32 26.60 5.00 1 + J_01_33 26.80 0.00 1 + J_01_34 27.00 0.00 1 + J_01_35 27.20 5.00 1 + J_01_36 27.40 0.00 1 + J_01_37 27.60 0.00 1 + J_01_38 27.80 5.00 1 + J_01_39 28.00 0.00 1 + J_01_40 28.20 0.00 1 + J_01_41 28.40 5.00 1 + J_01_42 28.60 0.00 1 + J_01_43 28.80 0.00 1 + J_01_44 29.00 5.00 1 + J_02_00 20.40 0.00 1 + J_02_01 20.60 5.00 1 + J_02_02 20.80 0.00 1 + J_02_03 21.00 0.00 1 + J_02_04 21.20 5.00 1 + J_02_05 21.40 0.00 1 + J_02_06 21.60 0.00 1 + J_02_07 21.80 5.00 1 + J_02_08 22.00 0.00 1 + J_02_09 22.20 0.00 1 + J_02_10 22.40 5.00 1 + J_02_11 22.60 0.00 1 + J_02_12 22.80 0.00 1 + J_02_13 23.00 5.00 1 + J_02_14 23.20 0.00 1 + J_02_15 23.40 0.00 1 + J_02_16 23.60 5.00 1 + J_02_17 23.80 0.00 1 + J_02_18 24.00 0.00 1 + J_02_19 24.20 5.00 1 + J_02_20 24.40 0.00 1 + J_02_21 24.60 0.00 1 + J_02_22 24.80 5.00 1 + J_02_23 25.00 0.00 1 + J_02_24 25.20 0.00 1 + J_02_25 25.40 5.00 1 + J_02_26 25.60 0.00 1 + J_02_27 25.80 0.00 1 + J_02_28 26.00 5.00 1 + J_02_29 26.20 0.00 1 + J_02_30 26.40 0.00 1 + J_02_31 26.60 5.00 1 + J_02_32 26.80 0.00 1 + J_02_33 27.00 0.00 1 + J_02_34 27.20 5.00 1 + J_02_35 27.40 0.00 1 + J_02_36 27.60 0.00 1 + J_02_37 27.80 5.00 1 + J_02_38 28.00 0.00 1 + J_02_39 28.20 0.00 1 + J_02_40 28.40 5.00 1 + J_02_41 28.60 0.00 1 + J_02_42 28.80 0.00 1 + J_02_43 29.00 5.00 1 + J_02_44 29.20 0.00 1 + J_03_00 20.60 5.00 1 + J_03_01 20.80 0.00 1 + J_03_02 21.00 0.00 1 + J_03_03 21.20 5.00 1 + J_03_04 21.40 0.00 1 + J_03_05 21.60 0.00 1 + J_03_06 21.80 5.00 1 + J_03_07 22.00 0.00 1 + J_03_08 22.20 0.00 1 + J_03_09 22.40 5.00 1 + J_03_10 22.60 0.00 1 + J_03_11 22.80 0.00 1 + J_03_12 23.00 5.00 1 + J_03_13 23.20 0.00 1 + J_03_14 23.40 0.00 1 + J_03_15 23.60 5.00 1 + J_03_16 23.80 0.00 1 + J_03_17 24.00 0.00 1 + J_03_18 24.20 5.00 1 + J_03_19 24.40 0.00 1 + J_03_20 24.60 0.00 1 + J_03_21 24.80 5.00 1 + J_03_22 25.00 0.00 1 + J_03_23 25.20 0.00 1 + J_03_24 25.40 5.00 1 + J_03_25 25.60 0.00 1 + J_03_26 25.80 0.00 1 + J_03_27 26.00 5.00 1 + J_03_28 26.20 0.00 1 + J_03_29 26.40 0.00 1 + J_03_30 26.60 5.00 1 + J_03_31 26.80 0.00 1 + J_03_32 27.00 0.00 1 + J_03_33 27.20 5.00 1 + J_03_34 27.40 0.00 1 + J_03_35 27.60 0.00 1 + J_03_36 27.80 5.00 1 + J_03_37 28.00 0.00 1 + J_03_38 28.20 0.00 1 + J_03_39 28.40 5.00 1 + J_03_40 28.60 0.00 1 + J_03_41 28.80 0.00 1 + J_03_42 29.00 5.00 1 + J_03_43 29.20 0.00 1 + J_03_44 29.40 0.00 1 + J_04_00 20.80 0.00 1 + J_04_01 21.00 0.00 1 + J_04_02 21.20 5.00 1 + J_04_03 21.40 0.00 1 + J_04_04 21.60 0.00 1 + J_04_05 21.80 5.00 1 + J_04_06 22.00 0.00 1 + J_04_07 22.20 0.00 1 + J_04_08 22.40 5.00 1 + J_04_09 22.60 0.00 1 + J_04_10 22.80 0.00 1 + J_04_11 23.00 5.00 1 + J_04_12 23.20 0.00 1 + J_04_13 23.40 0.00 1 + J_04_14 23.60 5.00 1 + J_04_15 23.80 0.00 1 + J_04_16 24.00 0.00 1 + J_04_17 24.20 5.00 1 + J_04_18 24.40 0.00 1 + J_04_19 24.60 0.00 1 + J_04_20 24.80 5.00 1 + J_04_21 25.00 0.00 1 + J_04_22 25.20 0.00 1 + J_04_23 25.40 5.00 1 + J_04_24 25.60 0.00 1 + J_04_25 25.80 0.00 1 + J_04_26 26.00 5.00 1 + J_04_27 26.20 0.00 1 + J_04_28 26.40 0.00 1 + J_04_29 26.60 5.00 1 + J_04_30 26.80 0.00 1 + J_04_31 27.00 0.00 1 + J_04_32 27.20 5.00 1 + J_04_33 27.40 0.00 1 + J_04_34 27.60 0.00 1 + J_04_35 27.80 5.00 1 + J_04_36 28.00 0.00 1 + J_04_37 28.20 0.00 1 + J_04_38 28.40 5.00 1 + J_04_39 28.60 0.00 1 + J_04_40 28.80 0.00 1 + J_04_41 29.00 5.00 1 + J_04_42 29.20 0.00 1 + J_04_43 29.40 0.00 1 + J_04_44 29.60 5.00 1 + J_05_00 21.00 0.00 1 + J_05_01 21.20 5.00 1 + J_05_02 21.40 0.00 1 + J_05_03 21.60 0.00 1 + J_05_04 21.80 5.00 1 + J_05_05 22.00 0.00 1 + J_05_06 22.20 0.00 1 + J_05_07 22.40 5.00 1 + J_05_08 22.60 0.00 1 + J_05_09 22.80 0.00 1 + J_05_10 23.00 5.00 1 + J_05_11 23.20 0.00 1 + J_05_12 23.40 0.00 1 + J_05_13 23.60 5.00 1 + J_05_14 23.80 0.00 1 + J_05_15 24.00 0.00 1 + J_05_16 24.20 5.00 1 + J_05_17 24.40 0.00 1 + J_05_18 24.60 0.00 1 + J_05_19 24.80 5.00 1 + J_05_20 25.00 0.00 1 + J_05_21 25.20 0.00 1 + J_05_22 25.40 5.00 1 + J_05_23 25.60 0.00 1 + J_05_24 25.80 0.00 1 + J_05_25 26.00 5.00 1 + J_05_26 26.20 0.00 1 + J_05_27 26.40 0.00 1 + J_05_28 26.60 5.00 1 + J_05_29 26.80 0.00 1 + J_05_30 27.00 0.00 1 + J_05_31 27.20 5.00 1 + J_05_32 27.40 0.00 1 + J_05_33 27.60 0.00 1 + J_05_34 27.80 5.00 1 + J_05_35 28.00 0.00 1 + J_05_36 28.20 0.00 1 + J_05_37 28.40 5.00 1 + J_05_38 28.60 0.00 1 + J_05_39 28.80 0.00 1 + J_05_40 29.00 5.00 1 + J_05_41 29.20 0.00 1 + J_05_42 29.40 0.00 1 + J_05_43 29.60 5.00 1 + J_05_44 29.80 0.00 1 + J_06_00 21.20 5.00 1 + J_06_01 21.40 0.00 1 + J_06_02 21.60 0.00 1 + J_06_03 21.80 5.00 1 + J_06_04 22.00 0.00 1 + J_06_05 22.20 0.00 1 + J_06_06 22.40 5.00 1 + J_06_07 22.60 0.00 1 + J_06_08 22.80 0.00 1 + J_06_09 23.00 5.00 1 + J_06_10 23.20 0.00 1 + J_06_11 23.40 0.00 1 + J_06_12 23.60 5.00 1 + J_06_13 23.80 0.00 1 + J_06_14 24.00 0.00 1 + J_06_15 24.20 5.00 1 + J_06_16 24.40 0.00 1 + J_06_17 24.60 0.00 1 + J_06_18 24.80 5.00 1 + J_06_19 25.00 0.00 1 + J_06_20 25.20 0.00 1 + J_06_21 25.40 5.00 1 + J_06_22 25.60 0.00 1 + J_06_23 25.80 0.00 1 + J_06_24 26.00 5.00 1 + J_06_25 26.20 0.00 1 + J_06_26 26.40 0.00 1 + J_06_27 26.60 5.00 1 + J_06_28 26.80 0.00 1 + J_06_29 27.00 0.00 1 + J_06_30 27.20 5.00 1 + J_06_31 27.40 0.00 1 + J_06_32 27.60 0.00 1 + J_06_33 27.80 5.00 1 + J_06_34 28.00 0.00 1 + J_06_35 28.20 0.00 1 + J_06_36 28.40 5.00 1 + J_06_37 28.60 0.00 1 + J_06_38 28.80 0.00 1 + J_06_39 29.00 5.00 1 + J_06_40 29.20 0.00 1 + J_06_41 29.40 0.00 1 + J_06_42 29.60 5.00 1 + J_06_43 29.80 0.00 1 + J_06_44 30.00 0.00 1 + J_07_00 21.40 0.00 1 + J_07_01 21.60 0.00 1 + J_07_02 21.80 5.00 1 + J_07_03 22.00 0.00 1 + J_07_04 22.20 0.00 1 + J_07_05 22.40 5.00 1 + J_07_06 22.60 0.00 1 + J_07_07 22.80 0.00 1 + J_07_08 23.00 5.00 1 + J_07_09 23.20 0.00 1 + J_07_10 23.40 0.00 1 + J_07_11 23.60 5.00 1 + J_07_12 23.80 0.00 1 + J_07_13 24.00 0.00 1 + J_07_14 24.20 5.00 1 + J_07_15 24.40 0.00 1 + J_07_16 24.60 0.00 1 + J_07_17 24.80 5.00 1 + J_07_18 25.00 0.00 1 + J_07_19 25.20 0.00 1 + J_07_20 25.40 5.00 1 + J_07_21 25.60 0.00 1 + J_07_22 25.80 0.00 1 + J_07_23 26.00 5.00 1 + J_07_24 26.20 0.00 1 + J_07_25 26.40 0.00 1 + J_07_26 26.60 5.00 1 + J_07_27 26.80 0.00 1 + J_07_28 27.00 0.00 1 + J_07_29 27.20 5.00 1 + J_07_30 27.40 0.00 1 + J_07_31 27.60 0.00 1 + J_07_32 27.80 5.00 1 + J_07_33 28.00 0.00 1 + J_07_34 28.20 0.00 1 + J_07_35 28.40 5.00 1 + J_07_36 28.60 0.00 1 + J_07_37 28.80 0.00 1 + J_07_38 29.00 5.00 1 + J_07_39 29.20 0.00 1 + J_07_40 29.40 0.00 1 + J_07_41 29.60 5.00 1 + J_07_42 29.80 0.00 1 + J_07_43 30.00 0.00 1 + J_07_44 30.20 5.00 1 + J_08_00 21.60 0.00 1 + J_08_01 21.80 5.00 1 + J_08_02 22.00 0.00 1 + J_08_03 22.20 0.00 1 + J_08_04 22.40 5.00 1 + J_08_05 22.60 0.00 1 + J_08_06 22.80 0.00 1 + J_08_07 23.00 5.00 1 + J_08_08 23.20 0.00 1 + J_08_09 23.40 0.00 1 + J_08_10 23.60 5.00 1 + J_08_11 23.80 0.00 1 + J_08_12 24.00 0.00 1 + J_08_13 24.20 5.00 1 + J_08_14 24.40 0.00 1 + J_08_15 24.60 0.00 1 + J_08_16 24.80 5.00 1 + J_08_17 25.00 0.00 1 + J_08_18 25.20 0.00 1 + J_08_19 25.40 5.00 1 + J_08_20 25.60 0.00 1 + J_08_21 25.80 0.00 1 + J_08_22 26.00 5.00 1 + J_08_23 26.20 0.00 1 + J_08_24 26.40 0.00 1 + J_08_25 26.60 5.00 1 + J_08_26 26.80 0.00 1 + J_08_27 27.00 0.00 1 + J_08_28 27.20 5.00 1 + J_08_29 27.40 0.00 1 + J_08_30 27.60 0.00 1 + J_08_31 27.80 5.00 1 + J_08_32 28.00 0.00 1 + J_08_33 28.20 0.00 1 + J_08_34 28.40 5.00 1 + J_08_35 28.60 0.00 1 + J_08_36 28.80 0.00 1 + J_08_37 29.00 5.00 1 + J_08_38 29.20 0.00 1 + J_08_39 29.40 0.00 1 + J_08_40 29.60 5.00 1 + J_08_41 29.80 0.00 1 + J_08_42 30.00 0.00 1 + J_08_43 30.20 5.00 1 + J_08_44 30.40 0.00 1 + J_09_00 21.80 5.00 1 + J_09_01 22.00 0.00 1 + J_09_02 22.20 0.00 1 + J_09_03 22.40 5.00 1 + J_09_04 22.60 0.00 1 + J_09_05 22.80 0.00 1 + J_09_06 23.00 5.00 1 + J_09_07 23.20 0.00 1 + J_09_08 23.40 0.00 1 + J_09_09 23.60 5.00 1 + J_09_10 23.80 0.00 1 + J_09_11 24.00 0.00 1 + J_09_12 24.20 5.00 1 + J_09_13 24.40 0.00 1 + J_09_14 24.60 0.00 1 + J_09_15 24.80 5.00 1 + J_09_16 25.00 0.00 1 + J_09_17 25.20 0.00 1 + J_09_18 25.40 5.00 1 + J_09_19 25.60 0.00 1 + J_09_20 25.80 0.00 1 + J_09_21 26.00 5.00 1 + J_09_22 26.20 0.00 1 + J_09_23 26.40 0.00 1 + J_09_24 26.60 5.00 1 + J_09_25 26.80 0.00 1 + J_09_26 27.00 0.00 1 + J_09_27 27.20 5.00 1 + J_09_28 27.40 0.00 1 + J_09_29 27.60 0.00 1 + J_09_30 27.80 5.00 1 + J_09_31 28.00 0.00 1 + J_09_32 28.20 0.00 1 + J_09_33 28.40 5.00 1 + J_09_34 28.60 0.00 1 + J_09_35 28.80 0.00 1 + J_09_36 29.00 5.00 1 + J_09_37 29.20 0.00 1 + J_09_38 29.40 0.00 1 + J_09_39 29.60 5.00 1 + J_09_40 29.80 0.00 1 + J_09_41 30.00 0.00 1 + J_09_42 30.20 5.00 1 + J_09_43 30.40 0.00 1 + J_09_44 30.60 0.00 1 + J_10_00 22.00 0.00 1 + J_10_01 22.20 0.00 1 + J_10_02 22.40 5.00 1 + J_10_03 22.60 0.00 1 + J_10_04 22.80 0.00 1 + J_10_05 23.00 5.00 1 + J_10_06 23.20 0.00 1 + J_10_07 23.40 0.00 1 + J_10_08 23.60 5.00 1 + J_10_09 23.80 0.00 1 + J_10_10 24.00 0.00 1 + J_10_11 24.20 5.00 1 + J_10_12 24.40 0.00 1 + J_10_13 24.60 0.00 1 + J_10_14 24.80 5.00 1 + J_10_15 25.00 0.00 1 + J_10_16 25.20 0.00 1 + J_10_17 25.40 5.00 1 + J_10_18 25.60 0.00 1 + J_10_19 25.80 0.00 1 + J_10_20 26.00 5.00 1 + J_10_21 26.20 0.00 1 + J_10_22 26.40 0.00 1 + J_10_23 26.60 5.00 1 + J_10_24 26.80 0.00 1 + J_10_25 27.00 0.00 1 + J_10_26 27.20 5.00 1 + J_10_27 27.40 0.00 1 + J_10_28 27.60 0.00 1 + J_10_29 27.80 5.00 1 + J_10_30 28.00 0.00 1 + J_10_31 28.20 0.00 1 + J_10_32 28.40 5.00 1 + J_10_33 28.60 0.00 1 + J_10_34 28.80 0.00 1 + J_10_35 29.00 5.00 1 + J_10_36 29.20 0.00 1 + J_10_37 29.40 0.00 1 + J_10_38 29.60 5.00 1 + J_10_39 29.80 0.00 1 + J_10_40 30.00 0.00 1 + J_10_41 30.20 5.00 1 + J_10_42 30.40 0.00 1 + J_10_43 30.60 0.00 1 + J_10_44 30.80 5.00 1 + J_11_00 22.20 0.00 1 + J_11_01 22.40 5.00 1 + J_11_02 22.60 0.00 1 + J_11_03 22.80 0.00 1 + J_11_04 23.00 5.00 1 + J_11_05 23.20 0.00 1 + J_11_06 23.40 0.00 1 + J_11_07 23.60 5.00 1 + J_11_08 23.80 0.00 1 + J_11_09 24.00 0.00 1 + J_11_10 24.20 5.00 1 + J_11_11 24.40 0.00 1 + J_11_12 24.60 0.00 1 + J_11_13 24.80 5.00 1 + J_11_14 25.00 0.00 1 + J_11_15 25.20 0.00 1 + J_11_16 25.40 5.00 1 + J_11_17 25.60 0.00 1 + J_11_18 25.80 0.00 1 + J_11_19 26.00 5.00 1 + J_11_20 26.20 0.00 1 + J_11_21 26.40 0.00 1 + J_11_22 26.60 5.00 1 + J_11_23 26.80 0.00 1 + J_11_24 27.00 0.00 1 + J_11_25 27.20 5.00 1 + J_11_26 27.40 0.00 1 + J_11_27 27.60 0.00 1 + J_11_28 27.80 5.00 1 + J_11_29 28.00 0.00 1 + J_11_30 28.20 0.00 1 + J_11_31 28.40 5.00 1 + J_11_32 28.60 0.00 1 + J_11_33 28.80 0.00 1 + J_11_34 29.00 5.00 1 + J_11_35 29.20 0.00 1 + J_11_36 29.40 0.00 1 + J_11_37 29.60 5.00 1 + J_11_38 29.80 0.00 1 + J_11_39 30.00 0.00 1 + J_11_40 30.20 5.00 1 + J_11_41 30.40 0.00 1 + J_11_42 30.60 0.00 1 + J_11_43 30.80 5.00 1 + J_11_44 31.00 0.00 1 + J_12_00 22.40 5.00 1 + J_12_01 22.60 0.00 1 + J_12_02 22.80 0.00 1 + J_12_03 23.00 5.00 1 + J_12_04 23.20 0.00 1 + J_12_05 23.40 0.00 1 + J_12_06 23.60 5.00 1 + J_12_07 23.80 0.00 1 + J_12_08 24.00 0.00 1 + J_12_09 24.20 5.00 1 + J_12_10 24.40 0.00 1 + J_12_11 24.60 0.00 1 + J_12_12 24.80 5.00 1 + J_12_13 25.00 0.00 1 + J_12_14 25.20 0.00 1 + J_12_15 25.40 5.00 1 + J_12_16 25.60 0.00 1 + J_12_17 25.80 0.00 1 + J_12_18 26.00 5.00 1 + J_12_19 26.20 0.00 1 + J_12_20 26.40 0.00 1 + J_12_21 26.60 5.00 1 + J_12_22 26.80 0.00 1 + J_12_23 27.00 0.00 1 + J_12_24 27.20 5.00 1 + J_12_25 27.40 0.00 1 + J_12_26 27.60 0.00 1 + J_12_27 27.80 5.00 1 + J_12_28 28.00 0.00 1 + J_12_29 28.20 0.00 1 + J_12_30 28.40 5.00 1 + J_12_31 28.60 0.00 1 + J_12_32 28.80 0.00 1 + J_12_33 29.00 5.00 1 + J_12_34 29.20 0.00 1 + J_12_35 29.40 0.00 1 + J_12_36 29.60 5.00 1 + J_12_37 29.80 0.00 1 + J_12_38 30.00 0.00 1 + J_12_39 30.20 5.00 1 + J_12_40 30.40 0.00 1 + J_12_41 30.60 0.00 1 + J_12_42 30.80 5.00 1 + J_12_43 31.00 0.00 1 + J_12_44 31.20 0.00 1 + J_13_00 22.60 0.00 1 + J_13_01 22.80 0.00 1 + J_13_02 23.00 5.00 1 + J_13_03 23.20 0.00 1 + J_13_04 23.40 0.00 1 + J_13_05 23.60 5.00 1 + J_13_06 23.80 0.00 1 + J_13_07 24.00 0.00 1 + J_13_08 24.20 5.00 1 + J_13_09 24.40 0.00 1 + J_13_10 24.60 0.00 1 + J_13_11 24.80 5.00 1 + J_13_12 25.00 0.00 1 + J_13_13 25.20 0.00 1 + J_13_14 25.40 5.00 1 + J_13_15 25.60 0.00 1 + J_13_16 25.80 0.00 1 + J_13_17 26.00 5.00 1 + J_13_18 26.20 0.00 1 + J_13_19 26.40 0.00 1 + J_13_20 26.60 5.00 1 + J_13_21 26.80 0.00 1 + J_13_22 27.00 0.00 1 + J_13_23 27.20 5.00 1 + J_13_24 27.40 0.00 1 + J_13_25 27.60 0.00 1 + J_13_26 27.80 5.00 1 + J_13_27 28.00 0.00 1 + J_13_28 28.20 0.00 1 + J_13_29 28.40 5.00 1 + J_13_30 28.60 0.00 1 + J_13_31 28.80 0.00 1 + J_13_32 29.00 5.00 1 + J_13_33 29.20 0.00 1 + J_13_34 29.40 0.00 1 + J_13_35 29.60 5.00 1 + J_13_36 29.80 0.00 1 + J_13_37 30.00 0.00 1 + J_13_38 30.20 5.00 1 + J_13_39 30.40 0.00 1 + J_13_40 30.60 0.00 1 + J_13_41 30.80 5.00 1 + J_13_42 31.00 0.00 1 + J_13_43 31.20 0.00 1 + J_13_44 31.40 5.00 1 + J_14_00 22.80 0.00 1 + J_14_01 23.00 5.00 1 + J_14_02 23.20 0.00 1 + J_14_03 23.40 0.00 1 + J_14_04 23.60 5.00 1 + J_14_05 23.80 0.00 1 + J_14_06 24.00 0.00 1 + J_14_07 24.20 5.00 1 + J_14_08 24.40 0.00 1 + J_14_09 24.60 0.00 1 + J_14_10 24.80 5.00 1 + J_14_11 25.00 0.00 1 + J_14_12 25.20 0.00 1 + J_14_13 25.40 5.00 1 + J_14_14 25.60 0.00 1 + J_14_15 25.80 0.00 1 + J_14_16 26.00 5.00 1 + J_14_17 26.20 0.00 1 + J_14_18 26.40 0.00 1 + J_14_19 26.60 5.00 1 + J_14_20 26.80 0.00 1 + J_14_21 27.00 0.00 1 + J_14_22 27.20 5.00 1 + J_14_23 27.40 0.00 1 + J_14_24 27.60 0.00 1 + J_14_25 27.80 5.00 1 + J_14_26 28.00 0.00 1 + J_14_27 28.20 0.00 1 + J_14_28 28.40 5.00 1 + J_14_29 28.60 0.00 1 + J_14_30 28.80 0.00 1 + J_14_31 29.00 5.00 1 + J_14_32 29.20 0.00 1 + J_14_33 29.40 0.00 1 + J_14_34 29.60 5.00 1 + J_14_35 29.80 0.00 1 + J_14_36 30.00 0.00 1 + J_14_37 30.20 5.00 1 + J_14_38 30.40 0.00 1 + J_14_39 30.60 0.00 1 + J_14_40 30.80 5.00 1 + J_14_41 31.00 0.00 1 + J_14_42 31.20 0.00 1 + J_14_43 31.40 5.00 1 + J_14_44 31.60 0.00 1 + J_15_00 23.00 5.00 1 + J_15_01 23.20 0.00 1 + J_15_02 23.40 0.00 1 + J_15_03 23.60 5.00 1 + J_15_04 23.80 0.00 1 + J_15_05 24.00 0.00 1 + J_15_06 24.20 5.00 1 + J_15_07 24.40 0.00 1 + J_15_08 24.60 0.00 1 + J_15_09 24.80 5.00 1 + J_15_10 25.00 0.00 1 + J_15_11 25.20 0.00 1 + J_15_12 25.40 5.00 1 + J_15_13 25.60 0.00 1 + J_15_14 25.80 0.00 1 + J_15_15 26.00 5.00 1 + J_15_16 26.20 0.00 1 + J_15_17 26.40 0.00 1 + J_15_18 26.60 5.00 1 + J_15_19 26.80 0.00 1 + J_15_20 27.00 0.00 1 + J_15_21 27.20 5.00 1 + J_15_22 27.40 0.00 1 + J_15_23 27.60 0.00 1 + J_15_24 27.80 5.00 1 + J_15_25 28.00 0.00 1 + J_15_26 28.20 0.00 1 + J_15_27 28.40 5.00 1 + J_15_28 28.60 0.00 1 + J_15_29 28.80 0.00 1 + J_15_30 29.00 5.00 1 + J_15_31 29.20 0.00 1 + J_15_32 29.40 0.00 1 + J_15_33 29.60 5.00 1 + J_15_34 29.80 0.00 1 + J_15_35 30.00 0.00 1 + J_15_36 30.20 5.00 1 + J_15_37 30.40 0.00 1 + J_15_38 30.60 0.00 1 + J_15_39 30.80 5.00 1 + J_15_40 31.00 0.00 1 + J_15_41 31.20 0.00 1 + J_15_42 31.40 5.00 1 + J_15_43 31.60 0.00 1 + J_15_44 31.80 0.00 1 + J_16_00 23.20 0.00 1 + J_16_01 23.40 0.00 1 + J_16_02 23.60 5.00 1 + J_16_03 23.80 0.00 1 + J_16_04 24.00 0.00 1 + J_16_05 24.20 5.00 1 + J_16_06 24.40 0.00 1 + J_16_07 24.60 0.00 1 + J_16_08 24.80 5.00 1 + J_16_09 25.00 0.00 1 + J_16_10 25.20 0.00 1 + J_16_11 25.40 5.00 1 + J_16_12 25.60 0.00 1 + J_16_13 25.80 0.00 1 + J_16_14 26.00 5.00 1 + J_16_15 26.20 0.00 1 + J_16_16 26.40 0.00 1 + J_16_17 26.60 5.00 1 + J_16_18 26.80 0.00 1 + J_16_19 27.00 0.00 1 + J_16_20 27.20 5.00 1 + J_16_21 27.40 0.00 1 + J_16_22 27.60 0.00 1 + J_16_23 27.80 5.00 1 + J_16_24 28.00 0.00 1 + J_16_25 28.20 0.00 1 + J_16_26 28.40 5.00 1 + J_16_27 28.60 0.00 1 + J_16_28 28.80 0.00 1 + J_16_29 29.00 5.00 1 + J_16_30 29.20 0.00 1 + J_16_31 29.40 0.00 1 + J_16_32 29.60 5.00 1 + J_16_33 29.80 0.00 1 + J_16_34 30.00 0.00 1 + J_16_35 30.20 5.00 1 + J_16_36 30.40 0.00 1 + J_16_37 30.60 0.00 1 + J_16_38 30.80 5.00 1 + J_16_39 31.00 0.00 1 + J_16_40 31.20 0.00 1 + J_16_41 31.40 5.00 1 + J_16_42 31.60 0.00 1 + J_16_43 31.80 0.00 1 + J_16_44 32.00 5.00 1 + J_17_00 23.40 0.00 1 + J_17_01 23.60 5.00 1 + J_17_02 23.80 0.00 1 + J_17_03 24.00 0.00 1 + J_17_04 24.20 5.00 1 + J_17_05 24.40 0.00 1 + J_17_06 24.60 0.00 1 + J_17_07 24.80 5.00 1 + J_17_08 25.00 0.00 1 + J_17_09 25.20 0.00 1 + J_17_10 25.40 5.00 1 + J_17_11 25.60 0.00 1 + J_17_12 25.80 0.00 1 + J_17_13 26.00 5.00 1 + J_17_14 26.20 0.00 1 + J_17_15 26.40 0.00 1 + J_17_16 26.60 5.00 1 + J_17_17 26.80 0.00 1 + J_17_18 27.00 0.00 1 + J_17_19 27.20 5.00 1 + J_17_20 27.40 0.00 1 + J_17_21 27.60 0.00 1 + J_17_22 27.80 5.00 1 + J_17_23 28.00 0.00 1 + J_17_24 28.20 0.00 1 + J_17_25 28.40 5.00 1 + J_17_26 28.60 0.00 1 + J_17_27 28.80 0.00 1 + J_17_28 29.00 5.00 1 + J_17_29 29.20 0.00 1 + J_17_30 29.40 0.00 1 + J_17_31 29.60 5.00 1 + J_17_32 29.80 0.00 1 + J_17_33 30.00 0.00 1 + J_17_34 30.20 5.00 1 + J_17_35 30.40 0.00 1 + J_17_36 30.60 0.00 1 + J_17_37 30.80 5.00 1 + J_17_38 31.00 0.00 1 + J_17_39 31.20 0.00 1 + J_17_40 31.40 5.00 1 + J_17_41 31.60 0.00 1 + J_17_42 31.80 0.00 1 + J_17_43 32.00 5.00 1 + J_17_44 32.20 0.00 1 + J_18_00 23.60 5.00 1 + J_18_01 23.80 0.00 1 + J_18_02 24.00 0.00 1 + J_18_03 24.20 5.00 1 + J_18_04 24.40 0.00 1 + J_18_05 24.60 0.00 1 + J_18_06 24.80 5.00 1 + J_18_07 25.00 0.00 1 + J_18_08 25.20 0.00 1 + J_18_09 25.40 5.00 1 + J_18_10 25.60 0.00 1 + J_18_11 25.80 0.00 1 + J_18_12 26.00 5.00 1 + J_18_13 26.20 0.00 1 + J_18_14 26.40 0.00 1 + J_18_15 26.60 5.00 1 + J_18_16 26.80 0.00 1 + J_18_17 27.00 0.00 1 + J_18_18 27.20 5.00 1 + J_18_19 27.40 0.00 1 + J_18_20 27.60 0.00 1 + J_18_21 27.80 5.00 1 + J_18_22 28.00 0.00 1 + J_18_23 28.20 0.00 1 + J_18_24 28.40 5.00 1 + J_18_25 28.60 0.00 1 + J_18_26 28.80 0.00 1 + J_18_27 29.00 5.00 1 + J_18_28 29.20 0.00 1 + J_18_29 29.40 0.00 1 + J_18_30 29.60 5.00 1 + J_18_31 29.80 0.00 1 + J_18_32 30.00 0.00 1 + J_18_33 30.20 5.00 1 + J_18_34 30.40 0.00 1 + J_18_35 30.60 0.00 1 + J_18_36 30.80 5.00 1 + J_18_37 31.00 0.00 1 + J_18_38 31.20 0.00 1 + J_18_39 31.40 5.00 1 + J_18_40 31.60 0.00 1 + J_18_41 31.80 0.00 1 + J_18_42 32.00 5.00 1 + J_18_43 32.20 0.00 1 + J_18_44 32.40 0.00 1 + J_19_00 23.80 0.00 1 + J_19_01 24.00 0.00 1 + J_19_02 24.20 5.00 1 + J_19_03 24.40 0.00 1 + J_19_04 24.60 0.00 1 + J_19_05 24.80 5.00 1 + J_19_06 25.00 0.00 1 + J_19_07 25.20 0.00 1 + J_19_08 25.40 5.00 1 + J_19_09 25.60 0.00 1 + J_19_10 25.80 0.00 1 + J_19_11 26.00 5.00 1 + J_19_12 26.20 0.00 1 + J_19_13 26.40 0.00 1 + J_19_14 26.60 5.00 1 + J_19_15 26.80 0.00 1 + J_19_16 27.00 0.00 1 + J_19_17 27.20 5.00 1 + J_19_18 27.40 0.00 1 + J_19_19 27.60 0.00 1 + J_19_20 27.80 5.00 1 + J_19_21 28.00 0.00 1 + J_19_22 28.20 0.00 1 + J_19_23 28.40 5.00 1 + J_19_24 28.60 0.00 1 + J_19_25 28.80 0.00 1 + J_19_26 29.00 5.00 1 + J_19_27 29.20 0.00 1 + J_19_28 29.40 0.00 1 + J_19_29 29.60 5.00 1 + J_19_30 29.80 0.00 1 + J_19_31 30.00 0.00 1 + J_19_32 30.20 5.00 1 + J_19_33 30.40 0.00 1 + J_19_34 30.60 0.00 1 + J_19_35 30.80 5.00 1 + J_19_36 31.00 0.00 1 + J_19_37 31.20 0.00 1 + J_19_38 31.40 5.00 1 + J_19_39 31.60 0.00 1 + J_19_40 31.80 0.00 1 + J_19_41 32.00 5.00 1 + J_19_42 32.20 0.00 1 + J_19_43 32.40 0.00 1 + J_19_44 32.60 5.00 1 + J_20_00 24.00 0.00 1 + J_20_01 24.20 5.00 1 + J_20_02 24.40 0.00 1 + J_20_03 24.60 0.00 1 + J_20_04 24.80 5.00 1 + J_20_05 25.00 0.00 1 + J_20_06 25.20 0.00 1 + J_20_07 25.40 5.00 1 + J_20_08 25.60 0.00 1 + J_20_09 25.80 0.00 1 + J_20_10 26.00 5.00 1 + J_20_11 26.20 0.00 1 + J_20_12 26.40 0.00 1 + J_20_13 26.60 5.00 1 + J_20_14 26.80 0.00 1 + J_20_15 27.00 0.00 1 + J_20_16 27.20 5.00 1 + J_20_17 27.40 0.00 1 + J_20_18 27.60 0.00 1 + J_20_19 27.80 5.00 1 + J_20_20 28.00 0.00 1 + J_20_21 28.20 0.00 1 + J_20_22 28.40 5.00 1 + J_20_23 28.60 0.00 1 + J_20_24 28.80 0.00 1 + J_20_25 29.00 5.00 1 + J_20_26 29.20 0.00 1 + J_20_27 29.40 0.00 1 + J_20_28 29.60 5.00 1 + J_20_29 29.80 0.00 1 + J_20_30 30.00 0.00 1 + J_20_31 30.20 5.00 1 + J_20_32 30.40 0.00 1 + J_20_33 30.60 0.00 1 + J_20_34 30.80 5.00 1 + J_20_35 31.00 0.00 1 + J_20_36 31.20 0.00 1 + J_20_37 31.40 5.00 1 + J_20_38 31.60 0.00 1 + J_20_39 31.80 0.00 1 + J_20_40 32.00 5.00 1 + J_20_41 32.20 0.00 1 + J_20_42 32.40 0.00 1 + J_20_43 32.60 5.00 1 + J_20_44 32.80 0.00 1 + J_21_00 24.20 5.00 1 + J_21_01 24.40 0.00 1 + J_21_02 24.60 0.00 1 + J_21_03 24.80 5.00 1 + J_21_04 25.00 0.00 1 + J_21_05 25.20 0.00 1 + J_21_06 25.40 5.00 1 + J_21_07 25.60 0.00 1 + J_21_08 25.80 0.00 1 + J_21_09 26.00 5.00 1 + J_21_10 26.20 0.00 1 + J_21_11 26.40 0.00 1 + J_21_12 26.60 5.00 1 + J_21_13 26.80 0.00 1 + J_21_14 27.00 0.00 1 + J_21_15 27.20 5.00 1 + J_21_16 27.40 0.00 1 + J_21_17 27.60 0.00 1 + J_21_18 27.80 5.00 1 + J_21_19 28.00 0.00 1 + J_21_20 28.20 0.00 1 + J_21_21 28.40 5.00 1 + J_21_22 28.60 0.00 1 + J_21_23 28.80 0.00 1 + J_21_24 29.00 5.00 1 + J_21_25 29.20 0.00 1 + J_21_26 29.40 0.00 1 + J_21_27 29.60 5.00 1 + J_21_28 29.80 0.00 1 + J_21_29 30.00 0.00 1 + J_21_30 30.20 5.00 1 + J_21_31 30.40 0.00 1 + J_21_32 30.60 0.00 1 + J_21_33 30.80 5.00 1 + J_21_34 31.00 0.00 1 + J_21_35 31.20 0.00 1 + J_21_36 31.40 5.00 1 + J_21_37 31.60 0.00 1 + J_21_38 31.80 0.00 1 + J_21_39 32.00 5.00 1 + J_21_40 32.20 0.00 1 + J_21_41 32.40 0.00 1 + J_21_42 32.60 5.00 1 + J_21_43 32.80 0.00 1 + J_21_44 33.00 0.00 1 + J_22_00 24.40 0.00 1 + J_22_01 24.60 0.00 1 + J_22_02 24.80 5.00 1 + J_22_03 25.00 0.00 1 + J_22_04 25.20 0.00 1 + J_22_05 25.40 5.00 1 + J_22_06 25.60 0.00 1 + J_22_07 25.80 0.00 1 + J_22_08 26.00 5.00 1 + J_22_09 26.20 0.00 1 + J_22_10 26.40 0.00 1 + J_22_11 26.60 5.00 1 + J_22_12 26.80 0.00 1 + J_22_13 27.00 0.00 1 + J_22_14 27.20 5.00 1 + J_22_15 27.40 0.00 1 + J_22_16 27.60 0.00 1 + J_22_17 27.80 5.00 1 + J_22_18 28.00 0.00 1 + J_22_19 28.20 0.00 1 + J_22_20 28.40 5.00 1 + J_22_21 28.60 0.00 1 + J_22_22 28.80 0.00 1 + J_22_23 29.00 5.00 1 + J_22_24 29.20 0.00 1 + J_22_25 29.40 0.00 1 + J_22_26 29.60 5.00 1 + J_22_27 29.80 0.00 1 + J_22_28 30.00 0.00 1 + J_22_29 30.20 5.00 1 + J_22_30 30.40 0.00 1 + J_22_31 30.60 0.00 1 + J_22_32 30.80 5.00 1 + J_22_33 31.00 0.00 1 + J_22_34 31.20 0.00 1 + J_22_35 31.40 5.00 1 + J_22_36 31.60 0.00 1 + J_22_37 31.80 0.00 1 + J_22_38 32.00 5.00 1 + J_22_39 32.20 0.00 1 + J_22_40 32.40 0.00 1 + J_22_41 32.60 5.00 1 + J_22_42 32.80 0.00 1 + J_22_43 33.00 0.00 1 + J_22_44 33.20 5.00 1 + J_23_00 24.60 0.00 1 + J_23_01 24.80 5.00 1 + J_23_02 25.00 0.00 1 + J_23_03 25.20 0.00 1 + J_23_04 25.40 5.00 1 + J_23_05 25.60 0.00 1 + J_23_06 25.80 0.00 1 + J_23_07 26.00 5.00 1 + J_23_08 26.20 0.00 1 + J_23_09 26.40 0.00 1 + J_23_10 26.60 5.00 1 + J_23_11 26.80 0.00 1 + J_23_12 27.00 0.00 1 + J_23_13 27.20 5.00 1 + J_23_14 27.40 0.00 1 + J_23_15 27.60 0.00 1 + J_23_16 27.80 5.00 1 + J_23_17 28.00 0.00 1 + J_23_18 28.20 0.00 1 + J_23_19 28.40 5.00 1 + J_23_20 28.60 0.00 1 + J_23_21 28.80 0.00 1 + J_23_22 29.00 5.00 1 + J_23_23 29.20 0.00 1 + J_23_24 29.40 0.00 1 + J_23_25 29.60 5.00 1 + J_23_26 29.80 0.00 1 + J_23_27 30.00 0.00 1 + J_23_28 30.20 5.00 1 + J_23_29 30.40 0.00 1 + J_23_30 30.60 0.00 1 + J_23_31 30.80 5.00 1 + J_23_32 31.00 0.00 1 + J_23_33 31.20 0.00 1 + J_23_34 31.40 5.00 1 + J_23_35 31.60 0.00 1 + J_23_36 31.80 0.00 1 + J_23_37 32.00 5.00 1 + J_23_38 32.20 0.00 1 + J_23_39 32.40 0.00 1 + J_23_40 32.60 5.00 1 + J_23_41 32.80 0.00 1 + J_23_42 33.00 0.00 1 + J_23_43 33.20 5.00 1 + J_23_44 33.40 0.00 1 + J_24_00 24.80 5.00 1 + J_24_01 25.00 0.00 1 + J_24_02 25.20 0.00 1 + J_24_03 25.40 5.00 1 + J_24_04 25.60 0.00 1 + J_24_05 25.80 0.00 1 + J_24_06 26.00 5.00 1 + J_24_07 26.20 0.00 1 + J_24_08 26.40 0.00 1 + J_24_09 26.60 5.00 1 + J_24_10 26.80 0.00 1 + J_24_11 27.00 0.00 1 + J_24_12 27.20 5.00 1 + J_24_13 27.40 0.00 1 + J_24_14 27.60 0.00 1 + J_24_15 27.80 5.00 1 + J_24_16 28.00 0.00 1 + J_24_17 28.20 0.00 1 + J_24_18 28.40 5.00 1 + J_24_19 28.60 0.00 1 + J_24_20 28.80 0.00 1 + J_24_21 29.00 5.00 1 + J_24_22 29.20 0.00 1 + J_24_23 29.40 0.00 1 + J_24_24 29.60 5.00 1 + J_24_25 29.80 0.00 1 + J_24_26 30.00 0.00 1 + J_24_27 30.20 5.00 1 + J_24_28 30.40 0.00 1 + J_24_29 30.60 0.00 1 + J_24_30 30.80 5.00 1 + J_24_31 31.00 0.00 1 + J_24_32 31.20 0.00 1 + J_24_33 31.40 5.00 1 + J_24_34 31.60 0.00 1 + J_24_35 31.80 0.00 1 + J_24_36 32.00 5.00 1 + J_24_37 32.20 0.00 1 + J_24_38 32.40 0.00 1 + J_24_39 32.60 5.00 1 + J_24_40 32.80 0.00 1 + J_24_41 33.00 0.00 1 + J_24_42 33.20 5.00 1 + J_24_43 33.40 0.00 1 + J_24_44 33.60 0.00 1 + J_25_00 25.00 0.00 1 + J_25_01 25.20 0.00 1 + J_25_02 25.40 5.00 1 + J_25_03 25.60 0.00 1 + J_25_04 25.80 0.00 1 + J_25_05 26.00 5.00 1 + J_25_06 26.20 0.00 1 + J_25_07 26.40 0.00 1 + J_25_08 26.60 5.00 1 + J_25_09 26.80 0.00 1 + J_25_10 27.00 0.00 1 + J_25_11 27.20 5.00 1 + J_25_12 27.40 0.00 1 + J_25_13 27.60 0.00 1 + J_25_14 27.80 5.00 1 + J_25_15 28.00 0.00 1 + J_25_16 28.20 0.00 1 + J_25_17 28.40 5.00 1 + J_25_18 28.60 0.00 1 + J_25_19 28.80 0.00 1 + J_25_20 29.00 5.00 1 + J_25_21 29.20 0.00 1 + J_25_22 29.40 0.00 1 + J_25_23 29.60 5.00 1 + J_25_24 29.80 0.00 1 + J_25_25 30.00 0.00 1 + J_25_26 30.20 5.00 1 + J_25_27 30.40 0.00 1 + J_25_28 30.60 0.00 1 + J_25_29 30.80 5.00 1 + J_25_30 31.00 0.00 1 + J_25_31 31.20 0.00 1 + J_25_32 31.40 5.00 1 + J_25_33 31.60 0.00 1 + J_25_34 31.80 0.00 1 + J_25_35 32.00 5.00 1 + J_25_36 32.20 0.00 1 + J_25_37 32.40 0.00 1 + J_25_38 32.60 5.00 1 + J_25_39 32.80 0.00 1 + J_25_40 33.00 0.00 1 + J_25_41 33.20 5.00 1 + J_25_42 33.40 0.00 1 + J_25_43 33.60 0.00 1 + J_25_44 33.80 5.00 1 + J_26_00 25.20 0.00 1 + J_26_01 25.40 5.00 1 + J_26_02 25.60 0.00 1 + J_26_03 25.80 0.00 1 + J_26_04 26.00 5.00 1 + J_26_05 26.20 0.00 1 + J_26_06 26.40 0.00 1 + J_26_07 26.60 5.00 1 + J_26_08 26.80 0.00 1 + J_26_09 27.00 0.00 1 + J_26_10 27.20 5.00 1 + J_26_11 27.40 0.00 1 + J_26_12 27.60 0.00 1 + J_26_13 27.80 5.00 1 + J_26_14 28.00 0.00 1 + J_26_15 28.20 0.00 1 + J_26_16 28.40 5.00 1 + J_26_17 28.60 0.00 1 + J_26_18 28.80 0.00 1 + J_26_19 29.00 5.00 1 + J_26_20 29.20 0.00 1 + J_26_21 29.40 0.00 1 + J_26_22 29.60 5.00 1 + J_26_23 29.80 0.00 1 + J_26_24 30.00 0.00 1 + J_26_25 30.20 5.00 1 + J_26_26 30.40 0.00 1 + J_26_27 30.60 0.00 1 + J_26_28 30.80 5.00 1 + J_26_29 31.00 0.00 1 + J_26_30 31.20 0.00 1 + J_26_31 31.40 5.00 1 + J_26_32 31.60 0.00 1 + J_26_33 31.80 0.00 1 + J_26_34 32.00 5.00 1 + J_26_35 32.20 0.00 1 + J_26_36 32.40 0.00 1 + J_26_37 32.60 5.00 1 + J_26_38 32.80 0.00 1 + J_26_39 33.00 0.00 1 + J_26_40 33.20 5.00 1 + J_26_41 33.40 0.00 1 + J_26_42 33.60 0.00 1 + J_26_43 33.80 5.00 1 + J_26_44 34.00 0.00 1 + J_27_00 25.40 5.00 1 + J_27_01 25.60 0.00 1 + J_27_02 25.80 0.00 1 + J_27_03 26.00 5.00 1 + J_27_04 26.20 0.00 1 + J_27_05 26.40 0.00 1 + J_27_06 26.60 5.00 1 + J_27_07 26.80 0.00 1 + J_27_08 27.00 0.00 1 + J_27_09 27.20 5.00 1 + J_27_10 27.40 0.00 1 + J_27_11 27.60 0.00 1 + J_27_12 27.80 5.00 1 + J_27_13 28.00 0.00 1 + J_27_14 28.20 0.00 1 + J_27_15 28.40 5.00 1 + J_27_16 28.60 0.00 1 + J_27_17 28.80 0.00 1 + J_27_18 29.00 5.00 1 + J_27_19 29.20 0.00 1 + J_27_20 29.40 0.00 1 + J_27_21 29.60 5.00 1 + J_27_22 29.80 0.00 1 + J_27_23 30.00 0.00 1 + J_27_24 30.20 5.00 1 + J_27_25 30.40 0.00 1 + J_27_26 30.60 0.00 1 + J_27_27 30.80 5.00 1 + J_27_28 31.00 0.00 1 + J_27_29 31.20 0.00 1 + J_27_30 31.40 5.00 1 + J_27_31 31.60 0.00 1 + J_27_32 31.80 0.00 1 + J_27_33 32.00 5.00 1 + J_27_34 32.20 0.00 1 + J_27_35 32.40 0.00 1 + J_27_36 32.60 5.00 1 + J_27_37 32.80 0.00 1 + J_27_38 33.00 0.00 1 + J_27_39 33.20 5.00 1 + J_27_40 33.40 0.00 1 + J_27_41 33.60 0.00 1 + J_27_42 33.80 5.00 1 + J_27_43 34.00 0.00 1 + J_27_44 34.20 0.00 1 + J_28_00 25.60 0.00 1 + J_28_01 25.80 0.00 1 + J_28_02 26.00 5.00 1 + J_28_03 26.20 0.00 1 + J_28_04 26.40 0.00 1 + J_28_05 26.60 5.00 1 + J_28_06 26.80 0.00 1 + J_28_07 27.00 0.00 1 + J_28_08 27.20 5.00 1 + J_28_09 27.40 0.00 1 + J_28_10 27.60 0.00 1 + J_28_11 27.80 5.00 1 + J_28_12 28.00 0.00 1 + J_28_13 28.20 0.00 1 + J_28_14 28.40 5.00 1 + J_28_15 28.60 0.00 1 + J_28_16 28.80 0.00 1 + J_28_17 29.00 5.00 1 + J_28_18 29.20 0.00 1 + J_28_19 29.40 0.00 1 + J_28_20 29.60 5.00 1 + J_28_21 29.80 0.00 1 + J_28_22 30.00 0.00 1 + J_28_23 30.20 5.00 1 + J_28_24 30.40 0.00 1 + J_28_25 30.60 0.00 1 + J_28_26 30.80 5.00 1 + J_28_27 31.00 0.00 1 + J_28_28 31.20 0.00 1 + J_28_29 31.40 5.00 1 + J_28_30 31.60 0.00 1 + J_28_31 31.80 0.00 1 + J_28_32 32.00 5.00 1 + J_28_33 32.20 0.00 1 + J_28_34 32.40 0.00 1 + J_28_35 32.60 5.00 1 + J_28_36 32.80 0.00 1 + J_28_37 33.00 0.00 1 + J_28_38 33.20 5.00 1 + J_28_39 33.40 0.00 1 + J_28_40 33.60 0.00 1 + J_28_41 33.80 5.00 1 + J_28_42 34.00 0.00 1 + J_28_43 34.20 0.00 1 + J_28_44 34.40 5.00 1 + J_29_00 25.80 0.00 1 + J_29_01 26.00 5.00 1 + J_29_02 26.20 0.00 1 + J_29_03 26.40 0.00 1 + J_29_04 26.60 5.00 1 + J_29_05 26.80 0.00 1 + J_29_06 27.00 0.00 1 + J_29_07 27.20 5.00 1 + J_29_08 27.40 0.00 1 + J_29_09 27.60 0.00 1 + J_29_10 27.80 5.00 1 + J_29_11 28.00 0.00 1 + J_29_12 28.20 0.00 1 + J_29_13 28.40 5.00 1 + J_29_14 28.60 0.00 1 + J_29_15 28.80 0.00 1 + J_29_16 29.00 5.00 1 + J_29_17 29.20 0.00 1 + J_29_18 29.40 0.00 1 + J_29_19 29.60 5.00 1 + J_29_20 29.80 0.00 1 + J_29_21 30.00 0.00 1 + J_29_22 30.20 5.00 1 + J_29_23 30.40 0.00 1 + J_29_24 30.60 0.00 1 + J_29_25 30.80 5.00 1 + J_29_26 31.00 0.00 1 + J_29_27 31.20 0.00 1 + J_29_28 31.40 5.00 1 + J_29_29 31.60 0.00 1 + J_29_30 31.80 0.00 1 + J_29_31 32.00 5.00 1 + J_29_32 32.20 0.00 1 + J_29_33 32.40 0.00 1 + J_29_34 32.60 5.00 1 + J_29_35 32.80 0.00 1 + J_29_36 33.00 0.00 1 + J_29_37 33.20 5.00 1 + J_29_38 33.40 0.00 1 + J_29_39 33.60 0.00 1 + J_29_40 33.80 5.00 1 + J_29_41 34.00 0.00 1 + J_29_42 34.20 0.00 1 + J_29_43 34.40 5.00 1 + J_29_44 34.60 0.00 1 + J_30_00 26.00 5.00 1 + J_30_01 26.20 0.00 1 + J_30_02 26.40 0.00 1 + J_30_03 26.60 5.00 1 + J_30_04 26.80 0.00 1 + J_30_05 27.00 0.00 1 + J_30_06 27.20 5.00 1 + J_30_07 27.40 0.00 1 + J_30_08 27.60 0.00 1 + J_30_09 27.80 5.00 1 + J_30_10 28.00 0.00 1 + J_30_11 28.20 0.00 1 + J_30_12 28.40 5.00 1 + J_30_13 28.60 0.00 1 + J_30_14 28.80 0.00 1 + J_30_15 29.00 5.00 1 + J_30_16 29.20 0.00 1 + J_30_17 29.40 0.00 1 + J_30_18 29.60 5.00 1 + J_30_19 29.80 0.00 1 + J_30_20 30.00 0.00 1 + J_30_21 30.20 5.00 1 + J_30_22 30.40 0.00 1 + J_30_23 30.60 0.00 1 + J_30_24 30.80 5.00 1 + J_30_25 31.00 0.00 1 + J_30_26 31.20 0.00 1 + J_30_27 31.40 5.00 1 + J_30_28 31.60 0.00 1 + J_30_29 31.80 0.00 1 + J_30_30 32.00 5.00 1 + J_30_31 32.20 0.00 1 + J_30_32 32.40 0.00 1 + J_30_33 32.60 5.00 1 + J_30_34 32.80 0.00 1 + J_30_35 33.00 0.00 1 + J_30_36 33.20 5.00 1 + J_30_37 33.40 0.00 1 + J_30_38 33.60 0.00 1 + J_30_39 33.80 5.00 1 + J_30_40 34.00 0.00 1 + J_30_41 34.20 0.00 1 + J_30_42 34.40 5.00 1 + J_30_43 34.60 0.00 1 + J_30_44 34.80 0.00 1 + J_31_00 26.20 0.00 1 + J_31_01 26.40 0.00 1 + J_31_02 26.60 5.00 1 + J_31_03 26.80 0.00 1 + J_31_04 27.00 0.00 1 + J_31_05 27.20 5.00 1 + J_31_06 27.40 0.00 1 + J_31_07 27.60 0.00 1 + J_31_08 27.80 5.00 1 + J_31_09 28.00 0.00 1 + J_31_10 28.20 0.00 1 + J_31_11 28.40 5.00 1 + J_31_12 28.60 0.00 1 + J_31_13 28.80 0.00 1 + J_31_14 29.00 5.00 1 + J_31_15 29.20 0.00 1 + J_31_16 29.40 0.00 1 + J_31_17 29.60 5.00 1 + J_31_18 29.80 0.00 1 + J_31_19 30.00 0.00 1 + J_31_20 30.20 5.00 1 + J_31_21 30.40 0.00 1 + J_31_22 30.60 0.00 1 + J_31_23 30.80 5.00 1 + J_31_24 31.00 0.00 1 + J_31_25 31.20 0.00 1 + J_31_26 31.40 5.00 1 + J_31_27 31.60 0.00 1 + J_31_28 31.80 0.00 1 + J_31_29 32.00 5.00 1 + J_31_30 32.20 0.00 1 + J_31_31 32.40 0.00 1 + J_31_32 32.60 5.00 1 + J_31_33 32.80 0.00 1 + J_31_34 33.00 0.00 1 + J_31_35 33.20 5.00 1 + J_31_36 33.40 0.00 1 + J_31_37 33.60 0.00 1 + J_31_38 33.80 5.00 1 + J_31_39 34.00 0.00 1 + J_31_40 34.20 0.00 1 + J_31_41 34.40 5.00 1 + J_31_42 34.60 0.00 1 + J_31_43 34.80 0.00 1 + J_31_44 35.00 5.00 1 + J_32_00 26.40 0.00 1 + J_32_01 26.60 5.00 1 + J_32_02 26.80 0.00 1 + J_32_03 27.00 0.00 1 + J_32_04 27.20 5.00 1 + J_32_05 27.40 0.00 1 + J_32_06 27.60 0.00 1 + J_32_07 27.80 5.00 1 + J_32_08 28.00 0.00 1 + J_32_09 28.20 0.00 1 + J_32_10 28.40 5.00 1 + J_32_11 28.60 0.00 1 + J_32_12 28.80 0.00 1 + J_32_13 29.00 5.00 1 + J_32_14 29.20 0.00 1 + J_32_15 29.40 0.00 1 + J_32_16 29.60 5.00 1 + J_32_17 29.80 0.00 1 + J_32_18 30.00 0.00 1 + J_32_19 30.20 5.00 1 + J_32_20 30.40 0.00 1 + J_32_21 30.60 0.00 1 + J_32_22 30.80 5.00 1 + J_32_23 31.00 0.00 1 + J_32_24 31.20 0.00 1 + J_32_25 31.40 5.00 1 + J_32_26 31.60 0.00 1 + J_32_27 31.80 0.00 1 + J_32_28 32.00 5.00 1 + J_32_29 32.20 0.00 1 + J_32_30 32.40 0.00 1 + J_32_31 32.60 5.00 1 + J_32_32 32.80 0.00 1 + J_32_33 33.00 0.00 1 + J_32_34 33.20 5.00 1 + J_32_35 33.40 0.00 1 + J_32_36 33.60 0.00 1 + J_32_37 33.80 5.00 1 + J_32_38 34.00 0.00 1 + J_32_39 34.20 0.00 1 + J_32_40 34.40 5.00 1 + J_32_41 34.60 0.00 1 + J_32_42 34.80 0.00 1 + J_32_43 35.00 5.00 1 + J_32_44 35.20 0.00 1 + J_33_00 26.60 5.00 1 + J_33_01 26.80 0.00 1 + J_33_02 27.00 0.00 1 + J_33_03 27.20 5.00 1 + J_33_04 27.40 0.00 1 + J_33_05 27.60 0.00 1 + J_33_06 27.80 5.00 1 + J_33_07 28.00 0.00 1 + J_33_08 28.20 0.00 1 + J_33_09 28.40 5.00 1 + J_33_10 28.60 0.00 1 + J_33_11 28.80 0.00 1 + J_33_12 29.00 5.00 1 + J_33_13 29.20 0.00 1 + J_33_14 29.40 0.00 1 + J_33_15 29.60 5.00 1 + J_33_16 29.80 0.00 1 + J_33_17 30.00 0.00 1 + J_33_18 30.20 5.00 1 + J_33_19 30.40 0.00 1 + J_33_20 30.60 0.00 1 + J_33_21 30.80 5.00 1 + J_33_22 31.00 0.00 1 + J_33_23 31.20 0.00 1 + J_33_24 31.40 5.00 1 + J_33_25 31.60 0.00 1 + J_33_26 31.80 0.00 1 + J_33_27 32.00 5.00 1 + J_33_28 32.20 0.00 1 + J_33_29 32.40 0.00 1 + J_33_30 32.60 5.00 1 + J_33_31 32.80 0.00 1 + J_33_32 33.00 0.00 1 + J_33_33 33.20 5.00 1 + J_33_34 33.40 0.00 1 + J_33_35 33.60 0.00 1 + J_33_36 33.80 5.00 1 + J_33_37 34.00 0.00 1 + J_33_38 34.20 0.00 1 + J_33_39 34.40 5.00 1 + J_33_40 34.60 0.00 1 + J_33_41 34.80 0.00 1 + J_33_42 35.00 5.00 1 + J_33_43 35.20 0.00 1 + J_33_44 35.40 0.00 1 + J_34_00 26.80 0.00 1 + J_34_01 27.00 0.00 1 + J_34_02 27.20 5.00 1 + J_34_03 27.40 0.00 1 + J_34_04 27.60 0.00 1 + J_34_05 27.80 5.00 1 + J_34_06 28.00 0.00 1 + J_34_07 28.20 0.00 1 + J_34_08 28.40 5.00 1 + J_34_09 28.60 0.00 1 + J_34_10 28.80 0.00 1 + J_34_11 29.00 5.00 1 + J_34_12 29.20 0.00 1 + J_34_13 29.40 0.00 1 + J_34_14 29.60 5.00 1 + J_34_15 29.80 0.00 1 + J_34_16 30.00 0.00 1 + J_34_17 30.20 5.00 1 + J_34_18 30.40 0.00 1 + J_34_19 30.60 0.00 1 + J_34_20 30.80 5.00 1 + J_34_21 31.00 0.00 1 + J_34_22 31.20 0.00 1 + J_34_23 31.40 5.00 1 + J_34_24 31.60 0.00 1 + J_34_25 31.80 0.00 1 + J_34_26 32.00 5.00 1 + J_34_27 32.20 0.00 1 + J_34_28 32.40 0.00 1 + J_34_29 32.60 5.00 1 + J_34_30 32.80 0.00 1 + J_34_31 33.00 0.00 1 + J_34_32 33.20 5.00 1 + J_34_33 33.40 0.00 1 + J_34_34 33.60 0.00 1 + J_34_35 33.80 5.00 1 + J_34_36 34.00 0.00 1 + J_34_37 34.20 0.00 1 + J_34_38 34.40 5.00 1 + J_34_39 34.60 0.00 1 + J_34_40 34.80 0.00 1 + J_34_41 35.00 5.00 1 + J_34_42 35.20 0.00 1 + J_34_43 35.40 0.00 1 + J_34_44 35.60 5.00 1 + J_35_00 27.00 0.00 1 + J_35_01 27.20 5.00 1 + J_35_02 27.40 0.00 1 + J_35_03 27.60 0.00 1 + J_35_04 27.80 5.00 1 + J_35_05 28.00 0.00 1 + J_35_06 28.20 0.00 1 + J_35_07 28.40 5.00 1 + J_35_08 28.60 0.00 1 + J_35_09 28.80 0.00 1 + J_35_10 29.00 5.00 1 + J_35_11 29.20 0.00 1 + J_35_12 29.40 0.00 1 + J_35_13 29.60 5.00 1 + J_35_14 29.80 0.00 1 + J_35_15 30.00 0.00 1 + J_35_16 30.20 5.00 1 + J_35_17 30.40 0.00 1 + J_35_18 30.60 0.00 1 + J_35_19 30.80 5.00 1 + J_35_20 31.00 0.00 1 + J_35_21 31.20 0.00 1 + J_35_22 31.40 5.00 1 + J_35_23 31.60 0.00 1 + J_35_24 31.80 0.00 1 + J_35_25 32.00 5.00 1 + J_35_26 32.20 0.00 1 + J_35_27 32.40 0.00 1 + J_35_28 32.60 5.00 1 + J_35_29 32.80 0.00 1 + J_35_30 33.00 0.00 1 + J_35_31 33.20 5.00 1 + J_35_32 33.40 0.00 1 + J_35_33 33.60 0.00 1 + J_35_34 33.80 5.00 1 + J_35_35 34.00 0.00 1 + J_35_36 34.20 0.00 1 + J_35_37 34.40 5.00 1 + J_35_38 34.60 0.00 1 + J_35_39 34.80 0.00 1 + J_35_40 35.00 5.00 1 + J_35_41 35.20 0.00 1 + J_35_42 35.40 0.00 1 + J_35_43 35.60 5.00 1 + J_35_44 35.80 0.00 1 + J_36_00 27.20 5.00 1 + J_36_01 27.40 0.00 1 + J_36_02 27.60 0.00 1 + J_36_03 27.80 5.00 1 + J_36_04 28.00 0.00 1 + J_36_05 28.20 0.00 1 + J_36_06 28.40 5.00 1 + J_36_07 28.60 0.00 1 + J_36_08 28.80 0.00 1 + J_36_09 29.00 5.00 1 + J_36_10 29.20 0.00 1 + J_36_11 29.40 0.00 1 + J_36_12 29.60 5.00 1 + J_36_13 29.80 0.00 1 + J_36_14 30.00 0.00 1 + J_36_15 30.20 5.00 1 + J_36_16 30.40 0.00 1 + J_36_17 30.60 0.00 1 + J_36_18 30.80 5.00 1 + J_36_19 31.00 0.00 1 + J_36_20 31.20 0.00 1 + J_36_21 31.40 5.00 1 + J_36_22 31.60 0.00 1 + J_36_23 31.80 0.00 1 + J_36_24 32.00 5.00 1 + J_36_25 32.20 0.00 1 + J_36_26 32.40 0.00 1 + J_36_27 32.60 5.00 1 + J_36_28 32.80 0.00 1 + J_36_29 33.00 0.00 1 + J_36_30 33.20 5.00 1 + J_36_31 33.40 0.00 1 + J_36_32 33.60 0.00 1 + J_36_33 33.80 5.00 1 + J_36_34 34.00 0.00 1 + J_36_35 34.20 0.00 1 + J_36_36 34.40 5.00 1 + J_36_37 34.60 0.00 1 + J_36_38 34.80 0.00 1 + J_36_39 35.00 5.00 1 + J_36_40 35.20 0.00 1 + J_36_41 35.40 0.00 1 + J_36_42 35.60 5.00 1 + J_36_43 35.80 0.00 1 + J_36_44 36.00 0.00 1 + J_37_00 27.40 0.00 1 + J_37_01 27.60 0.00 1 + J_37_02 27.80 5.00 1 + J_37_03 28.00 0.00 1 + J_37_04 28.20 0.00 1 + J_37_05 28.40 5.00 1 + J_37_06 28.60 0.00 1 + J_37_07 28.80 0.00 1 + J_37_08 29.00 5.00 1 + J_37_09 29.20 0.00 1 + J_37_10 29.40 0.00 1 + J_37_11 29.60 5.00 1 + J_37_12 29.80 0.00 1 + J_37_13 30.00 0.00 1 + J_37_14 30.20 5.00 1 + J_37_15 30.40 0.00 1 + J_37_16 30.60 0.00 1 + J_37_17 30.80 5.00 1 + J_37_18 31.00 0.00 1 + J_37_19 31.20 0.00 1 + J_37_20 31.40 5.00 1 + J_37_21 31.60 0.00 1 + J_37_22 31.80 0.00 1 + J_37_23 32.00 5.00 1 + J_37_24 32.20 0.00 1 + J_37_25 32.40 0.00 1 + J_37_26 32.60 5.00 1 + J_37_27 32.80 0.00 1 + J_37_28 33.00 0.00 1 + J_37_29 33.20 5.00 1 + J_37_30 33.40 0.00 1 + J_37_31 33.60 0.00 1 + J_37_32 33.80 5.00 1 + J_37_33 34.00 0.00 1 + J_37_34 34.20 0.00 1 + J_37_35 34.40 5.00 1 + J_37_36 34.60 0.00 1 + J_37_37 34.80 0.00 1 + J_37_38 35.00 5.00 1 + J_37_39 35.20 0.00 1 + J_37_40 35.40 0.00 1 + J_37_41 35.60 5.00 1 + J_37_42 35.80 0.00 1 + J_37_43 36.00 0.00 1 + J_37_44 36.20 5.00 1 + J_38_00 27.60 0.00 1 + J_38_01 27.80 5.00 1 + J_38_02 28.00 0.00 1 + J_38_03 28.20 0.00 1 + J_38_04 28.40 5.00 1 + J_38_05 28.60 0.00 1 + J_38_06 28.80 0.00 1 + J_38_07 29.00 5.00 1 + J_38_08 29.20 0.00 1 + J_38_09 29.40 0.00 1 + J_38_10 29.60 5.00 1 + J_38_11 29.80 0.00 1 + J_38_12 30.00 0.00 1 + J_38_13 30.20 5.00 1 + J_38_14 30.40 0.00 1 + J_38_15 30.60 0.00 1 + J_38_16 30.80 5.00 1 + J_38_17 31.00 0.00 1 + J_38_18 31.20 0.00 1 + J_38_19 31.40 5.00 1 + J_38_20 31.60 0.00 1 + J_38_21 31.80 0.00 1 + J_38_22 32.00 5.00 1 + J_38_23 32.20 0.00 1 + J_38_24 32.40 0.00 1 + J_38_25 32.60 5.00 1 + J_38_26 32.80 0.00 1 + J_38_27 33.00 0.00 1 + J_38_28 33.20 5.00 1 + J_38_29 33.40 0.00 1 + J_38_30 33.60 0.00 1 + J_38_31 33.80 5.00 1 + J_38_32 34.00 0.00 1 + J_38_33 34.20 0.00 1 + J_38_34 34.40 5.00 1 + J_38_35 34.60 0.00 1 + J_38_36 34.80 0.00 1 + J_38_37 35.00 5.00 1 + J_38_38 35.20 0.00 1 + J_38_39 35.40 0.00 1 + J_38_40 35.60 5.00 1 + J_38_41 35.80 0.00 1 + J_38_42 36.00 0.00 1 + J_38_43 36.20 5.00 1 + J_38_44 36.40 0.00 1 + J_39_00 27.80 5.00 1 + J_39_01 28.00 0.00 1 + J_39_02 28.20 0.00 1 + J_39_03 28.40 5.00 1 + J_39_04 28.60 0.00 1 + J_39_05 28.80 0.00 1 + J_39_06 29.00 5.00 1 + J_39_07 29.20 0.00 1 + J_39_08 29.40 0.00 1 + J_39_09 29.60 5.00 1 + J_39_10 29.80 0.00 1 + J_39_11 30.00 0.00 1 + J_39_12 30.20 5.00 1 + J_39_13 30.40 0.00 1 + J_39_14 30.60 0.00 1 + J_39_15 30.80 5.00 1 + J_39_16 31.00 0.00 1 + J_39_17 31.20 0.00 1 + J_39_18 31.40 5.00 1 + J_39_19 31.60 0.00 1 + J_39_20 31.80 0.00 1 + J_39_21 32.00 5.00 1 + J_39_22 32.20 0.00 1 + J_39_23 32.40 0.00 1 + J_39_24 32.60 5.00 1 + J_39_25 32.80 0.00 1 + J_39_26 33.00 0.00 1 + J_39_27 33.20 5.00 1 + J_39_28 33.40 0.00 1 + J_39_29 33.60 0.00 1 + J_39_30 33.80 5.00 1 + J_39_31 34.00 0.00 1 + J_39_32 34.20 0.00 1 + J_39_33 34.40 5.00 1 + J_39_34 34.60 0.00 1 + J_39_35 34.80 0.00 1 + J_39_36 35.00 5.00 1 + J_39_37 35.20 0.00 1 + J_39_38 35.40 0.00 1 + J_39_39 35.60 5.00 1 + J_39_40 35.80 0.00 1 + J_39_41 36.00 0.00 1 + J_39_42 36.20 5.00 1 + J_39_43 36.40 0.00 1 + J_39_44 36.60 0.00 1 + J_40_00 28.00 0.00 1 + J_40_01 28.20 0.00 1 + J_40_02 28.40 5.00 1 + J_40_03 28.60 0.00 1 + J_40_04 28.80 0.00 1 + J_40_05 29.00 5.00 1 + J_40_06 29.20 0.00 1 + J_40_07 29.40 0.00 1 + J_40_08 29.60 5.00 1 + J_40_09 29.80 0.00 1 + J_40_10 30.00 0.00 1 + J_40_11 30.20 5.00 1 + J_40_12 30.40 0.00 1 + J_40_13 30.60 0.00 1 + J_40_14 30.80 5.00 1 + J_40_15 31.00 0.00 1 + J_40_16 31.20 0.00 1 + J_40_17 31.40 5.00 1 + J_40_18 31.60 0.00 1 + J_40_19 31.80 0.00 1 + J_40_20 32.00 5.00 1 + J_40_21 32.20 0.00 1 + J_40_22 32.40 0.00 1 + J_40_23 32.60 5.00 1 + J_40_24 32.80 0.00 1 + J_40_25 33.00 0.00 1 + J_40_26 33.20 5.00 1 + J_40_27 33.40 0.00 1 + J_40_28 33.60 0.00 1 + J_40_29 33.80 5.00 1 + J_40_30 34.00 0.00 1 + J_40_31 34.20 0.00 1 + J_40_32 34.40 5.00 1 + J_40_33 34.60 0.00 1 + J_40_34 34.80 0.00 1 + J_40_35 35.00 5.00 1 + J_40_36 35.20 0.00 1 + J_40_37 35.40 0.00 1 + J_40_38 35.60 5.00 1 + J_40_39 35.80 0.00 1 + J_40_40 36.00 0.00 1 + J_40_41 36.20 5.00 1 + J_40_42 36.40 0.00 1 + J_40_43 36.60 0.00 1 + J_40_44 36.80 5.00 1 + J_41_00 28.20 0.00 1 + J_41_01 28.40 5.00 1 + J_41_02 28.60 0.00 1 + J_41_03 28.80 0.00 1 + J_41_04 29.00 5.00 1 + J_41_05 29.20 0.00 1 + J_41_06 29.40 0.00 1 + J_41_07 29.60 5.00 1 + J_41_08 29.80 0.00 1 + J_41_09 30.00 0.00 1 + J_41_10 30.20 5.00 1 + J_41_11 30.40 0.00 1 + J_41_12 30.60 0.00 1 + J_41_13 30.80 5.00 1 + J_41_14 31.00 0.00 1 + J_41_15 31.20 0.00 1 + J_41_16 31.40 5.00 1 + J_41_17 31.60 0.00 1 + J_41_18 31.80 0.00 1 + J_41_19 32.00 5.00 1 + J_41_20 32.20 0.00 1 + J_41_21 32.40 0.00 1 + J_41_22 32.60 5.00 1 + J_41_23 32.80 0.00 1 + J_41_24 33.00 0.00 1 + J_41_25 33.20 5.00 1 + J_41_26 33.40 0.00 1 + J_41_27 33.60 0.00 1 + J_41_28 33.80 5.00 1 + J_41_29 34.00 0.00 1 + J_41_30 34.20 0.00 1 + J_41_31 34.40 5.00 1 + J_41_32 34.60 0.00 1 + J_41_33 34.80 0.00 1 + J_41_34 35.00 5.00 1 + J_41_35 35.20 0.00 1 + J_41_36 35.40 0.00 1 + J_41_37 35.60 5.00 1 + J_41_38 35.80 0.00 1 + J_41_39 36.00 0.00 1 + J_41_40 36.20 5.00 1 + J_41_41 36.40 0.00 1 + J_41_42 36.60 0.00 1 + J_41_43 36.80 5.00 1 + J_41_44 37.00 0.00 1 + J_42_00 28.40 5.00 1 + J_42_01 28.60 0.00 1 + J_42_02 28.80 0.00 1 + J_42_03 29.00 5.00 1 + J_42_04 29.20 0.00 1 + J_42_05 29.40 0.00 1 + J_42_06 29.60 5.00 1 + J_42_07 29.80 0.00 1 + J_42_08 30.00 0.00 1 + J_42_09 30.20 5.00 1 + J_42_10 30.40 0.00 1 + J_42_11 30.60 0.00 1 + J_42_12 30.80 5.00 1 + J_42_13 31.00 0.00 1 + J_42_14 31.20 0.00 1 + J_42_15 31.40 5.00 1 + J_42_16 31.60 0.00 1 + J_42_17 31.80 0.00 1 + J_42_18 32.00 5.00 1 + J_42_19 32.20 0.00 1 + J_42_20 32.40 0.00 1 + J_42_21 32.60 5.00 1 + J_42_22 32.80 0.00 1 + J_42_23 33.00 0.00 1 + J_42_24 33.20 5.00 1 + J_42_25 33.40 0.00 1 + J_42_26 33.60 0.00 1 + J_42_27 33.80 5.00 1 + J_42_28 34.00 0.00 1 + J_42_29 34.20 0.00 1 + J_42_30 34.40 5.00 1 + J_42_31 34.60 0.00 1 + J_42_32 34.80 0.00 1 + J_42_33 35.00 5.00 1 + J_42_34 35.20 0.00 1 + J_42_35 35.40 0.00 1 + J_42_36 35.60 5.00 1 + J_42_37 35.80 0.00 1 + J_42_38 36.00 0.00 1 + J_42_39 36.20 5.00 1 + J_42_40 36.40 0.00 1 + J_42_41 36.60 0.00 1 + J_42_42 36.80 5.00 1 + J_42_43 37.00 0.00 1 + J_42_44 37.20 0.00 1 + J_43_00 28.60 0.00 1 + J_43_01 28.80 0.00 1 + J_43_02 29.00 5.00 1 + J_43_03 29.20 0.00 1 + J_43_04 29.40 0.00 1 + J_43_05 29.60 5.00 1 + J_43_06 29.80 0.00 1 + J_43_07 30.00 0.00 1 + J_43_08 30.20 5.00 1 + J_43_09 30.40 0.00 1 + J_43_10 30.60 0.00 1 + J_43_11 30.80 5.00 1 + J_43_12 31.00 0.00 1 + J_43_13 31.20 0.00 1 + J_43_14 31.40 5.00 1 + J_43_15 31.60 0.00 1 + J_43_16 31.80 0.00 1 + J_43_17 32.00 5.00 1 + J_43_18 32.20 0.00 1 + J_43_19 32.40 0.00 1 + J_43_20 32.60 5.00 1 + J_43_21 32.80 0.00 1 + J_43_22 33.00 0.00 1 + J_43_23 33.20 5.00 1 + J_43_24 33.40 0.00 1 + J_43_25 33.60 0.00 1 + J_43_26 33.80 5.00 1 + J_43_27 34.00 0.00 1 + J_43_28 34.20 0.00 1 + J_43_29 34.40 5.00 1 + J_43_30 34.60 0.00 1 + J_43_31 34.80 0.00 1 + J_43_32 35.00 5.00 1 + J_43_33 35.20 0.00 1 + J_43_34 35.40 0.00 1 + J_43_35 35.60 5.00 1 + J_43_36 35.80 0.00 1 + J_43_37 36.00 0.00 1 + J_43_38 36.20 5.00 1 + J_43_39 36.40 0.00 1 + J_43_40 36.60 0.00 1 + J_43_41 36.80 5.00 1 + J_43_42 37.00 0.00 1 + J_43_43 37.20 0.00 1 + J_43_44 37.40 5.00 1 + J_44_00 28.80 0.00 1 + J_44_01 29.00 5.00 1 + J_44_02 29.20 0.00 1 + J_44_03 29.40 0.00 1 + J_44_04 29.60 5.00 1 + J_44_05 29.80 0.00 1 + J_44_06 30.00 0.00 1 + J_44_07 30.20 5.00 1 + J_44_08 30.40 0.00 1 + J_44_09 30.60 0.00 1 + J_44_10 30.80 5.00 1 + J_44_11 31.00 0.00 1 + J_44_12 31.20 0.00 1 + J_44_13 31.40 5.00 1 + J_44_14 31.60 0.00 1 + J_44_15 31.80 0.00 1 + J_44_16 32.00 5.00 1 + J_44_17 32.20 0.00 1 + J_44_18 32.40 0.00 1 + J_44_19 32.60 5.00 1 + J_44_20 32.80 0.00 1 + J_44_21 33.00 0.00 1 + J_44_22 33.20 5.00 1 + J_44_23 33.40 0.00 1 + J_44_24 33.60 0.00 1 + J_44_25 33.80 5.00 1 + J_44_26 34.00 0.00 1 + J_44_27 34.20 0.00 1 + J_44_28 34.40 5.00 1 + J_44_29 34.60 0.00 1 + J_44_30 34.80 0.00 1 + J_44_31 35.00 5.00 1 + J_44_32 35.20 0.00 1 + J_44_33 35.40 0.00 1 + J_44_34 35.60 5.00 1 + J_44_35 35.80 0.00 1 + J_44_36 36.00 0.00 1 + J_44_37 36.20 5.00 1 + J_44_38 36.40 0.00 1 + J_44_39 36.60 0.00 1 + J_44_40 36.80 5.00 1 + J_44_41 37.00 0.00 1 + J_44_42 37.20 0.00 1 + J_44_43 37.40 5.00 1 + J_44_44 37.60 0.00 1 + +[RESERVOIRS] +;ID Head Pattern + RES_NORTH 95.0 + RES_SOUTH 92.0 + +[PIPES] +;ID Node1 Node2 Length Diameter Roughness MinorLoss Status + P_SRC1 RES_NORTH J_00_00 200 400 120 0 Open + P_SRC2 RES_SOUTH J_44_44 200 400 120 0 Open + P_H_00003 J_00_00 J_00_01 120 200 130 0 Open + P_H_00004 J_00_01 J_00_02 120 200 130 0 Open + P_H_00005 J_00_02 J_00_03 120 200 130 0 Open + P_H_00006 J_00_03 J_00_04 120 200 130 0 Open + P_H_00007 J_00_04 J_00_05 120 200 130 0 Open + P_H_00008 J_00_05 J_00_06 120 200 130 0 Open + P_H_00009 J_00_06 J_00_07 120 200 130 0 Open + P_H_00010 J_00_07 J_00_08 120 200 130 0 Open + P_H_00011 J_00_08 J_00_09 120 200 130 0 Open + P_H_00012 J_00_09 J_00_10 120 200 130 0 Open + P_H_00013 J_00_10 J_00_11 120 200 130 0 Open + P_H_00014 J_00_11 J_00_12 120 200 130 0 Open + P_H_00015 J_00_12 J_00_13 120 200 130 0 Open + P_H_00016 J_00_13 J_00_14 120 200 130 0 Open + P_H_00017 J_00_14 J_00_15 120 200 130 0 Open + P_H_00018 J_00_15 J_00_16 120 200 130 0 Open + P_H_00019 J_00_16 J_00_17 120 200 130 0 Open + P_H_00020 J_00_17 J_00_18 120 200 130 0 Open + P_H_00021 J_00_18 J_00_19 120 200 130 0 Open + P_H_00022 J_00_19 J_00_20 120 200 130 0 Open + P_H_00023 J_00_20 J_00_21 120 200 130 0 Open + P_H_00024 J_00_21 J_00_22 120 200 130 0 Open + P_H_00025 J_00_22 J_00_23 120 200 130 0 Open + P_H_00026 J_00_23 J_00_24 120 200 130 0 Open + P_H_00027 J_00_24 J_00_25 120 200 130 0 Open + P_H_00028 J_00_25 J_00_26 120 200 130 0 Open + P_H_00029 J_00_26 J_00_27 120 200 130 0 Open + P_H_00030 J_00_27 J_00_28 120 200 130 0 Open + P_H_00031 J_00_28 J_00_29 120 200 130 0 Open + P_H_00032 J_00_29 J_00_30 120 200 130 0 Open + P_H_00033 J_00_30 J_00_31 120 200 130 0 Open + P_H_00034 J_00_31 J_00_32 120 200 130 0 Open + P_H_00035 J_00_32 J_00_33 120 200 130 0 Open + P_H_00036 J_00_33 J_00_34 120 200 130 0 Open + P_H_00037 J_00_34 J_00_35 120 200 130 0 Open + P_H_00038 J_00_35 J_00_36 120 200 130 0 Open + P_H_00039 J_00_36 J_00_37 120 200 130 0 Open + P_H_00040 J_00_37 J_00_38 120 200 130 0 Open + P_H_00041 J_00_38 J_00_39 120 200 130 0 Open + P_H_00042 J_00_39 J_00_40 120 200 130 0 Open + P_H_00043 J_00_40 J_00_41 120 200 130 0 Open + P_H_00044 J_00_41 J_00_42 120 200 130 0 Open + P_H_00045 J_00_42 J_00_43 120 200 130 0 Open + P_H_00046 J_00_43 J_00_44 120 200 130 0 Open + P_H_00047 J_01_00 J_01_01 120 200 130 0 Open + P_H_00048 J_01_01 J_01_02 120 200 130 0 Open + P_H_00049 J_01_02 J_01_03 120 200 130 0 Open + P_H_00050 J_01_03 J_01_04 120 200 130 0 Open + P_H_00051 J_01_04 J_01_05 120 200 130 0 Open + P_H_00052 J_01_05 J_01_06 120 200 130 0 Open + P_H_00053 J_01_06 J_01_07 120 200 130 0 Open + P_H_00054 J_01_07 J_01_08 120 200 130 0 Open + P_H_00055 J_01_08 J_01_09 120 200 130 0 Open + P_H_00056 J_01_09 J_01_10 120 200 130 0 Open + P_H_00057 J_01_10 J_01_11 120 200 130 0 Open + P_H_00058 J_01_11 J_01_12 120 200 130 0 Open + P_H_00059 J_01_12 J_01_13 120 200 130 0 Open + P_H_00060 J_01_13 J_01_14 120 200 130 0 Open + P_H_00061 J_01_14 J_01_15 120 200 130 0 Open + P_H_00062 J_01_15 J_01_16 120 200 130 0 Open + P_H_00063 J_01_16 J_01_17 120 200 130 0 Open + P_H_00064 J_01_17 J_01_18 120 200 130 0 Open + P_H_00065 J_01_18 J_01_19 120 200 130 0 Open + P_H_00066 J_01_19 J_01_20 120 200 130 0 Open + P_H_00067 J_01_20 J_01_21 120 200 130 0 Open + P_H_00068 J_01_21 J_01_22 120 200 130 0 Open + P_H_00069 J_01_22 J_01_23 120 200 130 0 Open + P_H_00070 J_01_23 J_01_24 120 200 130 0 Open + P_H_00071 J_01_24 J_01_25 120 200 130 0 Open + P_H_00072 J_01_25 J_01_26 120 200 130 0 Open + P_H_00073 J_01_26 J_01_27 120 200 130 0 Open + P_H_00074 J_01_27 J_01_28 120 200 130 0 Open + P_H_00075 J_01_28 J_01_29 120 200 130 0 Open + P_H_00076 J_01_29 J_01_30 120 200 130 0 Open + P_H_00077 J_01_30 J_01_31 120 200 130 0 Open + P_H_00078 J_01_31 J_01_32 120 200 130 0 Open + P_H_00079 J_01_32 J_01_33 120 200 130 0 Open + P_H_00080 J_01_33 J_01_34 120 200 130 0 Open + P_H_00081 J_01_34 J_01_35 120 200 130 0 Open + P_H_00082 J_01_35 J_01_36 120 200 130 0 Open + P_H_00083 J_01_36 J_01_37 120 200 130 0 Open + P_H_00084 J_01_37 J_01_38 120 200 130 0 Open + P_H_00085 J_01_38 J_01_39 120 200 130 0 Open + P_H_00086 J_01_39 J_01_40 120 200 130 0 Open + P_H_00087 J_01_40 J_01_41 120 200 130 0 Open + P_H_00088 J_01_41 J_01_42 120 200 130 0 Open + P_H_00089 J_01_42 J_01_43 120 200 130 0 Open + P_H_00090 J_01_43 J_01_44 120 200 130 0 Open + P_H_00091 J_02_00 J_02_01 120 200 130 0 Open + P_H_00092 J_02_01 J_02_02 120 200 130 0 Open + P_H_00093 J_02_02 J_02_03 120 200 130 0 Open + P_H_00094 J_02_03 J_02_04 120 200 130 0 Open + P_H_00095 J_02_04 J_02_05 120 200 130 0 Open + P_H_00096 J_02_05 J_02_06 120 200 130 0 Open + P_H_00097 J_02_06 J_02_07 120 200 130 0 Open + P_H_00098 J_02_07 J_02_08 120 200 130 0 Open + P_H_00099 J_02_08 J_02_09 120 200 130 0 Open + P_H_00100 J_02_09 J_02_10 120 200 130 0 Open + P_H_00101 J_02_10 J_02_11 120 200 130 0 Open + P_H_00102 J_02_11 J_02_12 120 200 130 0 Open + P_H_00103 J_02_12 J_02_13 120 200 130 0 Open + P_H_00104 J_02_13 J_02_14 120 200 130 0 Open + P_H_00105 J_02_14 J_02_15 120 200 130 0 Open + P_H_00106 J_02_15 J_02_16 120 200 130 0 Open + P_H_00107 J_02_16 J_02_17 120 200 130 0 Open + P_H_00108 J_02_17 J_02_18 120 200 130 0 Open + P_H_00109 J_02_18 J_02_19 120 200 130 0 Open + P_H_00110 J_02_19 J_02_20 120 200 130 0 Open + P_H_00111 J_02_20 J_02_21 120 200 130 0 Open + P_H_00112 J_02_21 J_02_22 120 200 130 0 Open + P_H_00113 J_02_22 J_02_23 120 200 130 0 Open + P_H_00114 J_02_23 J_02_24 120 200 130 0 Open + P_H_00115 J_02_24 J_02_25 120 200 130 0 Open + P_H_00116 J_02_25 J_02_26 120 200 130 0 Open + P_H_00117 J_02_26 J_02_27 120 200 130 0 Open + P_H_00118 J_02_27 J_02_28 120 200 130 0 Open + P_H_00119 J_02_28 J_02_29 120 200 130 0 Open + P_H_00120 J_02_29 J_02_30 120 200 130 0 Open + P_H_00121 J_02_30 J_02_31 120 200 130 0 Open + P_H_00122 J_02_31 J_02_32 120 200 130 0 Open + P_H_00123 J_02_32 J_02_33 120 200 130 0 Open + P_H_00124 J_02_33 J_02_34 120 200 130 0 Open + P_H_00125 J_02_34 J_02_35 120 200 130 0 Open + P_H_00126 J_02_35 J_02_36 120 200 130 0 Open + P_H_00127 J_02_36 J_02_37 120 200 130 0 Open + P_H_00128 J_02_37 J_02_38 120 200 130 0 Open + P_H_00129 J_02_38 J_02_39 120 200 130 0 Open + P_H_00130 J_02_39 J_02_40 120 200 130 0 Open + P_H_00131 J_02_40 J_02_41 120 200 130 0 Open + P_H_00132 J_02_41 J_02_42 120 200 130 0 Open + P_H_00133 J_02_42 J_02_43 120 200 130 0 Open + P_H_00134 J_02_43 J_02_44 120 200 130 0 Open + P_H_00135 J_03_00 J_03_01 120 200 130 0 Open + P_H_00136 J_03_01 J_03_02 120 200 130 0 Open + P_H_00137 J_03_02 J_03_03 120 200 130 0 Open + P_H_00138 J_03_03 J_03_04 120 200 130 0 Open + P_H_00139 J_03_04 J_03_05 120 200 130 0 Open + P_H_00140 J_03_05 J_03_06 120 200 130 0 Open + P_H_00141 J_03_06 J_03_07 120 200 130 0 Open + P_H_00142 J_03_07 J_03_08 120 200 130 0 Open + P_H_00143 J_03_08 J_03_09 120 200 130 0 Open + P_H_00144 J_03_09 J_03_10 120 200 130 0 Open + P_H_00145 J_03_10 J_03_11 120 200 130 0 Open + P_H_00146 J_03_11 J_03_12 120 200 130 0 Open + P_H_00147 J_03_12 J_03_13 120 200 130 0 Open + P_H_00148 J_03_13 J_03_14 120 200 130 0 Open + P_H_00149 J_03_14 J_03_15 120 200 130 0 Open + P_H_00150 J_03_15 J_03_16 120 200 130 0 Open + P_H_00151 J_03_16 J_03_17 120 200 130 0 Open + P_H_00152 J_03_17 J_03_18 120 200 130 0 Open + P_H_00153 J_03_18 J_03_19 120 200 130 0 Open + P_H_00154 J_03_19 J_03_20 120 200 130 0 Open + P_H_00155 J_03_20 J_03_21 120 200 130 0 Open + P_H_00156 J_03_21 J_03_22 120 200 130 0 Open + P_H_00157 J_03_22 J_03_23 120 200 130 0 Open + P_H_00158 J_03_23 J_03_24 120 200 130 0 Open + P_H_00159 J_03_24 J_03_25 120 200 130 0 Open + P_H_00160 J_03_25 J_03_26 120 200 130 0 Open + P_H_00161 J_03_26 J_03_27 120 200 130 0 Open + P_H_00162 J_03_27 J_03_28 120 200 130 0 Open + P_H_00163 J_03_28 J_03_29 120 200 130 0 Open + P_H_00164 J_03_29 J_03_30 120 200 130 0 Open + P_H_00165 J_03_30 J_03_31 120 200 130 0 Open + P_H_00166 J_03_31 J_03_32 120 200 130 0 Open + P_H_00167 J_03_32 J_03_33 120 200 130 0 Open + P_H_00168 J_03_33 J_03_34 120 200 130 0 Open + P_H_00169 J_03_34 J_03_35 120 200 130 0 Open + P_H_00170 J_03_35 J_03_36 120 200 130 0 Open + P_H_00171 J_03_36 J_03_37 120 200 130 0 Open + P_H_00172 J_03_37 J_03_38 120 200 130 0 Open + P_H_00173 J_03_38 J_03_39 120 200 130 0 Open + P_H_00174 J_03_39 J_03_40 120 200 130 0 Open + P_H_00175 J_03_40 J_03_41 120 200 130 0 Open + P_H_00176 J_03_41 J_03_42 120 200 130 0 Open + P_H_00177 J_03_42 J_03_43 120 200 130 0 Open + P_H_00178 J_03_43 J_03_44 120 200 130 0 Open + P_H_00179 J_04_00 J_04_01 120 200 130 0 Open + P_H_00180 J_04_01 J_04_02 120 200 130 0 Open + P_H_00181 J_04_02 J_04_03 120 200 130 0 Open + P_H_00182 J_04_03 J_04_04 120 200 130 0 Open + P_H_00183 J_04_04 J_04_05 120 200 130 0 Open + P_H_00184 J_04_05 J_04_06 120 200 130 0 Open + P_H_00185 J_04_06 J_04_07 120 200 130 0 Open + P_H_00186 J_04_07 J_04_08 120 200 130 0 Open + P_H_00187 J_04_08 J_04_09 120 200 130 0 Open + P_H_00188 J_04_09 J_04_10 120 200 130 0 Open + P_H_00189 J_04_10 J_04_11 120 200 130 0 Open + P_H_00190 J_04_11 J_04_12 120 200 130 0 Open + P_H_00191 J_04_12 J_04_13 120 200 130 0 Open + P_H_00192 J_04_13 J_04_14 120 200 130 0 Open + P_H_00193 J_04_14 J_04_15 120 200 130 0 Open + P_H_00194 J_04_15 J_04_16 120 200 130 0 Open + P_H_00195 J_04_16 J_04_17 120 200 130 0 Open + P_H_00196 J_04_17 J_04_18 120 200 130 0 Open + P_H_00197 J_04_18 J_04_19 120 200 130 0 Open + P_H_00198 J_04_19 J_04_20 120 200 130 0 Open + P_H_00199 J_04_20 J_04_21 120 200 130 0 Open + P_H_00200 J_04_21 J_04_22 120 200 130 0 Open + P_H_00201 J_04_22 J_04_23 120 200 130 0 Open + P_H_00202 J_04_23 J_04_24 120 200 130 0 Open + P_H_00203 J_04_24 J_04_25 120 200 130 0 Open + P_H_00204 J_04_25 J_04_26 120 200 130 0 Open + P_H_00205 J_04_26 J_04_27 120 200 130 0 Open + P_H_00206 J_04_27 J_04_28 120 200 130 0 Open + P_H_00207 J_04_28 J_04_29 120 200 130 0 Open + P_H_00208 J_04_29 J_04_30 120 200 130 0 Open + P_H_00209 J_04_30 J_04_31 120 200 130 0 Open + P_H_00210 J_04_31 J_04_32 120 200 130 0 Open + P_H_00211 J_04_32 J_04_33 120 200 130 0 Open + P_H_00212 J_04_33 J_04_34 120 200 130 0 Open + P_H_00213 J_04_34 J_04_35 120 200 130 0 Open + P_H_00214 J_04_35 J_04_36 120 200 130 0 Open + P_H_00215 J_04_36 J_04_37 120 200 130 0 Open + P_H_00216 J_04_37 J_04_38 120 200 130 0 Open + P_H_00217 J_04_38 J_04_39 120 200 130 0 Open + P_H_00218 J_04_39 J_04_40 120 200 130 0 Open + P_H_00219 J_04_40 J_04_41 120 200 130 0 Open + P_H_00220 J_04_41 J_04_42 120 200 130 0 Open + P_H_00221 J_04_42 J_04_43 120 200 130 0 Open + P_H_00222 J_04_43 J_04_44 120 200 130 0 Open + P_H_00223 J_05_00 J_05_01 120 200 130 0 Open + P_H_00224 J_05_01 J_05_02 120 200 130 0 Open + P_H_00225 J_05_02 J_05_03 120 200 130 0 Open + P_H_00226 J_05_03 J_05_04 120 200 130 0 Open + P_H_00227 J_05_04 J_05_05 120 200 130 0 Open + P_H_00228 J_05_05 J_05_06 120 200 130 0 Open + P_H_00229 J_05_06 J_05_07 120 200 130 0 Open + P_H_00230 J_05_07 J_05_08 120 200 130 0 Open + P_H_00231 J_05_08 J_05_09 120 200 130 0 Open + P_H_00232 J_05_09 J_05_10 120 200 130 0 Open + P_H_00233 J_05_10 J_05_11 120 200 130 0 Open + P_H_00234 J_05_11 J_05_12 120 200 130 0 Open + P_H_00235 J_05_12 J_05_13 120 200 130 0 Open + P_H_00236 J_05_13 J_05_14 120 200 130 0 Open + P_H_00237 J_05_14 J_05_15 120 200 130 0 Open + P_H_00238 J_05_15 J_05_16 120 200 130 0 Open + P_H_00239 J_05_16 J_05_17 120 200 130 0 Open + P_H_00240 J_05_17 J_05_18 120 200 130 0 Open + P_H_00241 J_05_18 J_05_19 120 200 130 0 Open + P_H_00242 J_05_19 J_05_20 120 200 130 0 Open + P_H_00243 J_05_20 J_05_21 120 200 130 0 Open + P_H_00244 J_05_21 J_05_22 120 200 130 0 Open + P_H_00245 J_05_22 J_05_23 120 200 130 0 Open + P_H_00246 J_05_23 J_05_24 120 200 130 0 Open + P_H_00247 J_05_24 J_05_25 120 200 130 0 Open + P_H_00248 J_05_25 J_05_26 120 200 130 0 Open + P_H_00249 J_05_26 J_05_27 120 200 130 0 Open + P_H_00250 J_05_27 J_05_28 120 200 130 0 Open + P_H_00251 J_05_28 J_05_29 120 200 130 0 Open + P_H_00252 J_05_29 J_05_30 120 200 130 0 Open + P_H_00253 J_05_30 J_05_31 120 200 130 0 Open + P_H_00254 J_05_31 J_05_32 120 200 130 0 Open + P_H_00255 J_05_32 J_05_33 120 200 130 0 Open + P_H_00256 J_05_33 J_05_34 120 200 130 0 Open + P_H_00257 J_05_34 J_05_35 120 200 130 0 Open + P_H_00258 J_05_35 J_05_36 120 200 130 0 Open + P_H_00259 J_05_36 J_05_37 120 200 130 0 Open + P_H_00260 J_05_37 J_05_38 120 200 130 0 Open + P_H_00261 J_05_38 J_05_39 120 200 130 0 Open + P_H_00262 J_05_39 J_05_40 120 200 130 0 Open + P_H_00263 J_05_40 J_05_41 120 200 130 0 Open + P_H_00264 J_05_41 J_05_42 120 200 130 0 Open + P_H_00265 J_05_42 J_05_43 120 200 130 0 Open + P_H_00266 J_05_43 J_05_44 120 200 130 0 Open + P_H_00267 J_06_00 J_06_01 120 200 130 0 Open + P_H_00268 J_06_01 J_06_02 120 200 130 0 Open + P_H_00269 J_06_02 J_06_03 120 200 130 0 Open + P_H_00270 J_06_03 J_06_04 120 200 130 0 Open + P_H_00271 J_06_04 J_06_05 120 200 130 0 Open + P_H_00272 J_06_05 J_06_06 120 200 130 0 Open + P_H_00273 J_06_06 J_06_07 120 200 130 0 Open + P_H_00274 J_06_07 J_06_08 120 200 130 0 Open + P_H_00275 J_06_08 J_06_09 120 200 130 0 Open + P_H_00276 J_06_09 J_06_10 120 200 130 0 Open + P_H_00277 J_06_10 J_06_11 120 200 130 0 Open + P_H_00278 J_06_11 J_06_12 120 200 130 0 Open + P_H_00279 J_06_12 J_06_13 120 200 130 0 Open + P_H_00280 J_06_13 J_06_14 120 200 130 0 Open + P_H_00281 J_06_14 J_06_15 120 200 130 0 Open + P_H_00282 J_06_15 J_06_16 120 200 130 0 Open + P_H_00283 J_06_16 J_06_17 120 200 130 0 Open + P_H_00284 J_06_17 J_06_18 120 200 130 0 Open + P_H_00285 J_06_18 J_06_19 120 200 130 0 Open + P_H_00286 J_06_19 J_06_20 120 200 130 0 Open + P_H_00287 J_06_20 J_06_21 120 200 130 0 Open + P_H_00288 J_06_21 J_06_22 120 200 130 0 Open + P_H_00289 J_06_22 J_06_23 120 200 130 0 Open + P_H_00290 J_06_23 J_06_24 120 200 130 0 Open + P_H_00291 J_06_24 J_06_25 120 200 130 0 Open + P_H_00292 J_06_25 J_06_26 120 200 130 0 Open + P_H_00293 J_06_26 J_06_27 120 200 130 0 Open + P_H_00294 J_06_27 J_06_28 120 200 130 0 Open + P_H_00295 J_06_28 J_06_29 120 200 130 0 Open + P_H_00296 J_06_29 J_06_30 120 200 130 0 Open + P_H_00297 J_06_30 J_06_31 120 200 130 0 Open + P_H_00298 J_06_31 J_06_32 120 200 130 0 Open + P_H_00299 J_06_32 J_06_33 120 200 130 0 Open + P_H_00300 J_06_33 J_06_34 120 200 130 0 Open + P_H_00301 J_06_34 J_06_35 120 200 130 0 Open + P_H_00302 J_06_35 J_06_36 120 200 130 0 Open + P_H_00303 J_06_36 J_06_37 120 200 130 0 Open + P_H_00304 J_06_37 J_06_38 120 200 130 0 Open + P_H_00305 J_06_38 J_06_39 120 200 130 0 Open + P_H_00306 J_06_39 J_06_40 120 200 130 0 Open + P_H_00307 J_06_40 J_06_41 120 200 130 0 Open + P_H_00308 J_06_41 J_06_42 120 200 130 0 Open + P_H_00309 J_06_42 J_06_43 120 200 130 0 Open + P_H_00310 J_06_43 J_06_44 120 200 130 0 Open + P_H_00311 J_07_00 J_07_01 120 200 130 0 Open + P_H_00312 J_07_01 J_07_02 120 200 130 0 Open + P_H_00313 J_07_02 J_07_03 120 200 130 0 Open + P_H_00314 J_07_03 J_07_04 120 200 130 0 Open + P_H_00315 J_07_04 J_07_05 120 200 130 0 Open + P_H_00316 J_07_05 J_07_06 120 200 130 0 Open + P_H_00317 J_07_06 J_07_07 120 200 130 0 Open + P_H_00318 J_07_07 J_07_08 120 200 130 0 Open + P_H_00319 J_07_08 J_07_09 120 200 130 0 Open + P_H_00320 J_07_09 J_07_10 120 200 130 0 Open + P_H_00321 J_07_10 J_07_11 120 200 130 0 Open + P_H_00322 J_07_11 J_07_12 120 200 130 0 Open + P_H_00323 J_07_12 J_07_13 120 200 130 0 Open + P_H_00324 J_07_13 J_07_14 120 200 130 0 Open + P_H_00325 J_07_14 J_07_15 120 200 130 0 Open + P_H_00326 J_07_15 J_07_16 120 200 130 0 Open + P_H_00327 J_07_16 J_07_17 120 200 130 0 Open + P_H_00328 J_07_17 J_07_18 120 200 130 0 Open + P_H_00329 J_07_18 J_07_19 120 200 130 0 Open + P_H_00330 J_07_19 J_07_20 120 200 130 0 Open + P_H_00331 J_07_20 J_07_21 120 200 130 0 Open + P_H_00332 J_07_21 J_07_22 120 200 130 0 Open + P_H_00333 J_07_22 J_07_23 120 200 130 0 Open + P_H_00334 J_07_23 J_07_24 120 200 130 0 Open + P_H_00335 J_07_24 J_07_25 120 200 130 0 Open + P_H_00336 J_07_25 J_07_26 120 200 130 0 Open + P_H_00337 J_07_26 J_07_27 120 200 130 0 Open + P_H_00338 J_07_27 J_07_28 120 200 130 0 Open + P_H_00339 J_07_28 J_07_29 120 200 130 0 Open + P_H_00340 J_07_29 J_07_30 120 200 130 0 Open + P_H_00341 J_07_30 J_07_31 120 200 130 0 Open + P_H_00342 J_07_31 J_07_32 120 200 130 0 Open + P_H_00343 J_07_32 J_07_33 120 200 130 0 Open + P_H_00344 J_07_33 J_07_34 120 200 130 0 Open + P_H_00345 J_07_34 J_07_35 120 200 130 0 Open + P_H_00346 J_07_35 J_07_36 120 200 130 0 Open + P_H_00347 J_07_36 J_07_37 120 200 130 0 Open + P_H_00348 J_07_37 J_07_38 120 200 130 0 Open + P_H_00349 J_07_38 J_07_39 120 200 130 0 Open + P_H_00350 J_07_39 J_07_40 120 200 130 0 Open + P_H_00351 J_07_40 J_07_41 120 200 130 0 Open + P_H_00352 J_07_41 J_07_42 120 200 130 0 Open + P_H_00353 J_07_42 J_07_43 120 200 130 0 Open + P_H_00354 J_07_43 J_07_44 120 200 130 0 Open + P_H_00355 J_08_00 J_08_01 120 200 130 0 Open + P_H_00356 J_08_01 J_08_02 120 200 130 0 Open + P_H_00357 J_08_02 J_08_03 120 200 130 0 Open + P_H_00358 J_08_03 J_08_04 120 200 130 0 Open + P_H_00359 J_08_04 J_08_05 120 200 130 0 Open + P_H_00360 J_08_05 J_08_06 120 200 130 0 Open + P_H_00361 J_08_06 J_08_07 120 200 130 0 Open + P_H_00362 J_08_07 J_08_08 120 200 130 0 Open + P_H_00363 J_08_08 J_08_09 120 200 130 0 Open + P_H_00364 J_08_09 J_08_10 120 200 130 0 Open + P_H_00365 J_08_10 J_08_11 120 200 130 0 Open + P_H_00366 J_08_11 J_08_12 120 200 130 0 Open + P_H_00367 J_08_12 J_08_13 120 200 130 0 Open + P_H_00368 J_08_13 J_08_14 120 200 130 0 Open + P_H_00369 J_08_14 J_08_15 120 200 130 0 Open + P_H_00370 J_08_15 J_08_16 120 200 130 0 Open + P_H_00371 J_08_16 J_08_17 120 200 130 0 Open + P_H_00372 J_08_17 J_08_18 120 200 130 0 Open + P_H_00373 J_08_18 J_08_19 120 200 130 0 Open + P_H_00374 J_08_19 J_08_20 120 200 130 0 Open + P_H_00375 J_08_20 J_08_21 120 200 130 0 Open + P_H_00376 J_08_21 J_08_22 120 200 130 0 Open + P_H_00377 J_08_22 J_08_23 120 200 130 0 Open + P_H_00378 J_08_23 J_08_24 120 200 130 0 Open + P_H_00379 J_08_24 J_08_25 120 200 130 0 Open + P_H_00380 J_08_25 J_08_26 120 200 130 0 Open + P_H_00381 J_08_26 J_08_27 120 200 130 0 Open + P_H_00382 J_08_27 J_08_28 120 200 130 0 Open + P_H_00383 J_08_28 J_08_29 120 200 130 0 Open + P_H_00384 J_08_29 J_08_30 120 200 130 0 Open + P_H_00385 J_08_30 J_08_31 120 200 130 0 Open + P_H_00386 J_08_31 J_08_32 120 200 130 0 Open + P_H_00387 J_08_32 J_08_33 120 200 130 0 Open + P_H_00388 J_08_33 J_08_34 120 200 130 0 Open + P_H_00389 J_08_34 J_08_35 120 200 130 0 Open + P_H_00390 J_08_35 J_08_36 120 200 130 0 Open + P_H_00391 J_08_36 J_08_37 120 200 130 0 Open + P_H_00392 J_08_37 J_08_38 120 200 130 0 Open + P_H_00393 J_08_38 J_08_39 120 200 130 0 Open + P_H_00394 J_08_39 J_08_40 120 200 130 0 Open + P_H_00395 J_08_40 J_08_41 120 200 130 0 Open + P_H_00396 J_08_41 J_08_42 120 200 130 0 Open + P_H_00397 J_08_42 J_08_43 120 200 130 0 Open + P_H_00398 J_08_43 J_08_44 120 200 130 0 Open + P_H_00399 J_09_00 J_09_01 120 200 130 0 Open + P_H_00400 J_09_01 J_09_02 120 200 130 0 Open + P_H_00401 J_09_02 J_09_03 120 200 130 0 Open + P_H_00402 J_09_03 J_09_04 120 200 130 0 Open + P_H_00403 J_09_04 J_09_05 120 200 130 0 Open + P_H_00404 J_09_05 J_09_06 120 200 130 0 Open + P_H_00405 J_09_06 J_09_07 120 200 130 0 Open + P_H_00406 J_09_07 J_09_08 120 200 130 0 Open + P_H_00407 J_09_08 J_09_09 120 200 130 0 Open + P_H_00408 J_09_09 J_09_10 120 200 130 0 Open + P_H_00409 J_09_10 J_09_11 120 200 130 0 Open + P_H_00410 J_09_11 J_09_12 120 200 130 0 Open + P_H_00411 J_09_12 J_09_13 120 200 130 0 Open + P_H_00412 J_09_13 J_09_14 120 200 130 0 Open + P_H_00413 J_09_14 J_09_15 120 200 130 0 Open + P_H_00414 J_09_15 J_09_16 120 200 130 0 Open + P_H_00415 J_09_16 J_09_17 120 200 130 0 Open + P_H_00416 J_09_17 J_09_18 120 200 130 0 Open + P_H_00417 J_09_18 J_09_19 120 200 130 0 Open + P_H_00418 J_09_19 J_09_20 120 200 130 0 Open + P_H_00419 J_09_20 J_09_21 120 200 130 0 Open + P_H_00420 J_09_21 J_09_22 120 200 130 0 Open + P_H_00421 J_09_22 J_09_23 120 200 130 0 Open + P_H_00422 J_09_23 J_09_24 120 200 130 0 Open + P_H_00423 J_09_24 J_09_25 120 200 130 0 Open + P_H_00424 J_09_25 J_09_26 120 200 130 0 Open + P_H_00425 J_09_26 J_09_27 120 200 130 0 Open + P_H_00426 J_09_27 J_09_28 120 200 130 0 Open + P_H_00427 J_09_28 J_09_29 120 200 130 0 Open + P_H_00428 J_09_29 J_09_30 120 200 130 0 Open + P_H_00429 J_09_30 J_09_31 120 200 130 0 Open + P_H_00430 J_09_31 J_09_32 120 200 130 0 Open + P_H_00431 J_09_32 J_09_33 120 200 130 0 Open + P_H_00432 J_09_33 J_09_34 120 200 130 0 Open + P_H_00433 J_09_34 J_09_35 120 200 130 0 Open + P_H_00434 J_09_35 J_09_36 120 200 130 0 Open + P_H_00435 J_09_36 J_09_37 120 200 130 0 Open + P_H_00436 J_09_37 J_09_38 120 200 130 0 Open + P_H_00437 J_09_38 J_09_39 120 200 130 0 Open + P_H_00438 J_09_39 J_09_40 120 200 130 0 Open + P_H_00439 J_09_40 J_09_41 120 200 130 0 Open + P_H_00440 J_09_41 J_09_42 120 200 130 0 Open + P_H_00441 J_09_42 J_09_43 120 200 130 0 Open + P_H_00442 J_09_43 J_09_44 120 200 130 0 Open + P_H_00443 J_10_00 J_10_01 120 200 130 0 Open + P_H_00444 J_10_01 J_10_02 120 200 130 0 Open + P_H_00445 J_10_02 J_10_03 120 200 130 0 Open + P_H_00446 J_10_03 J_10_04 120 200 130 0 Open + P_H_00447 J_10_04 J_10_05 120 200 130 0 Open + P_H_00448 J_10_05 J_10_06 120 200 130 0 Open + P_H_00449 J_10_06 J_10_07 120 200 130 0 Open + P_H_00450 J_10_07 J_10_08 120 200 130 0 Open + P_H_00451 J_10_08 J_10_09 120 200 130 0 Open + P_H_00452 J_10_09 J_10_10 120 200 130 0 Open + P_H_00453 J_10_10 J_10_11 120 200 130 0 Open + P_H_00454 J_10_11 J_10_12 120 200 130 0 Open + P_H_00455 J_10_12 J_10_13 120 200 130 0 Open + P_H_00456 J_10_13 J_10_14 120 200 130 0 Open + P_H_00457 J_10_14 J_10_15 120 200 130 0 Open + P_H_00458 J_10_15 J_10_16 120 200 130 0 Open + P_H_00459 J_10_16 J_10_17 120 200 130 0 Open + P_H_00460 J_10_17 J_10_18 120 200 130 0 Open + P_H_00461 J_10_18 J_10_19 120 200 130 0 Open + P_H_00462 J_10_19 J_10_20 120 200 130 0 Open + P_H_00463 J_10_20 J_10_21 120 200 130 0 Open + P_H_00464 J_10_21 J_10_22 120 200 130 0 Open + P_H_00465 J_10_22 J_10_23 120 200 130 0 Open + P_H_00466 J_10_23 J_10_24 120 200 130 0 Open + P_H_00467 J_10_24 J_10_25 120 200 130 0 Open + P_H_00468 J_10_25 J_10_26 120 200 130 0 Open + P_H_00469 J_10_26 J_10_27 120 200 130 0 Open + P_H_00470 J_10_27 J_10_28 120 200 130 0 Open + P_H_00471 J_10_28 J_10_29 120 200 130 0 Open + P_H_00472 J_10_29 J_10_30 120 200 130 0 Open + P_H_00473 J_10_30 J_10_31 120 200 130 0 Open + P_H_00474 J_10_31 J_10_32 120 200 130 0 Open + P_H_00475 J_10_32 J_10_33 120 200 130 0 Open + P_H_00476 J_10_33 J_10_34 120 200 130 0 Open + P_H_00477 J_10_34 J_10_35 120 200 130 0 Open + P_H_00478 J_10_35 J_10_36 120 200 130 0 Open + P_H_00479 J_10_36 J_10_37 120 200 130 0 Open + P_H_00480 J_10_37 J_10_38 120 200 130 0 Open + P_H_00481 J_10_38 J_10_39 120 200 130 0 Open + P_H_00482 J_10_39 J_10_40 120 200 130 0 Open + P_H_00483 J_10_40 J_10_41 120 200 130 0 Open + P_H_00484 J_10_41 J_10_42 120 200 130 0 Open + P_H_00485 J_10_42 J_10_43 120 200 130 0 Open + P_H_00486 J_10_43 J_10_44 120 200 130 0 Open + P_H_00487 J_11_00 J_11_01 120 200 130 0 Open + P_H_00488 J_11_01 J_11_02 120 200 130 0 Open + P_H_00489 J_11_02 J_11_03 120 200 130 0 Open + P_H_00490 J_11_03 J_11_04 120 200 130 0 Open + P_H_00491 J_11_04 J_11_05 120 200 130 0 Open + P_H_00492 J_11_05 J_11_06 120 200 130 0 Open + P_H_00493 J_11_06 J_11_07 120 200 130 0 Open + P_H_00494 J_11_07 J_11_08 120 200 130 0 Open + P_H_00495 J_11_08 J_11_09 120 200 130 0 Open + P_H_00496 J_11_09 J_11_10 120 200 130 0 Open + P_H_00497 J_11_10 J_11_11 120 200 130 0 Open + P_H_00498 J_11_11 J_11_12 120 200 130 0 Open + P_H_00499 J_11_12 J_11_13 120 200 130 0 Open + P_H_00500 J_11_13 J_11_14 120 200 130 0 Open + P_H_00501 J_11_14 J_11_15 120 200 130 0 Open + P_H_00502 J_11_15 J_11_16 120 200 130 0 Open + P_H_00503 J_11_16 J_11_17 120 200 130 0 Open + P_H_00504 J_11_17 J_11_18 120 200 130 0 Open + P_H_00505 J_11_18 J_11_19 120 200 130 0 Open + P_H_00506 J_11_19 J_11_20 120 200 130 0 Open + P_H_00507 J_11_20 J_11_21 120 200 130 0 Open + P_H_00508 J_11_21 J_11_22 120 200 130 0 Open + P_H_00509 J_11_22 J_11_23 120 200 130 0 Open + P_H_00510 J_11_23 J_11_24 120 200 130 0 Open + P_H_00511 J_11_24 J_11_25 120 200 130 0 Open + P_H_00512 J_11_25 J_11_26 120 200 130 0 Open + P_H_00513 J_11_26 J_11_27 120 200 130 0 Open + P_H_00514 J_11_27 J_11_28 120 200 130 0 Open + P_H_00515 J_11_28 J_11_29 120 200 130 0 Open + P_H_00516 J_11_29 J_11_30 120 200 130 0 Open + P_H_00517 J_11_30 J_11_31 120 200 130 0 Open + P_H_00518 J_11_31 J_11_32 120 200 130 0 Open + P_H_00519 J_11_32 J_11_33 120 200 130 0 Open + P_H_00520 J_11_33 J_11_34 120 200 130 0 Open + P_H_00521 J_11_34 J_11_35 120 200 130 0 Open + P_H_00522 J_11_35 J_11_36 120 200 130 0 Open + P_H_00523 J_11_36 J_11_37 120 200 130 0 Open + P_H_00524 J_11_37 J_11_38 120 200 130 0 Open + P_H_00525 J_11_38 J_11_39 120 200 130 0 Open + P_H_00526 J_11_39 J_11_40 120 200 130 0 Open + P_H_00527 J_11_40 J_11_41 120 200 130 0 Open + P_H_00528 J_11_41 J_11_42 120 200 130 0 Open + P_H_00529 J_11_42 J_11_43 120 200 130 0 Open + P_H_00530 J_11_43 J_11_44 120 200 130 0 Open + P_H_00531 J_12_00 J_12_01 120 200 130 0 Open + P_H_00532 J_12_01 J_12_02 120 200 130 0 Open + P_H_00533 J_12_02 J_12_03 120 200 130 0 Open + P_H_00534 J_12_03 J_12_04 120 200 130 0 Open + P_H_00535 J_12_04 J_12_05 120 200 130 0 Open + P_H_00536 J_12_05 J_12_06 120 200 130 0 Open + P_H_00537 J_12_06 J_12_07 120 200 130 0 Open + P_H_00538 J_12_07 J_12_08 120 200 130 0 Open + P_H_00539 J_12_08 J_12_09 120 200 130 0 Open + P_H_00540 J_12_09 J_12_10 120 200 130 0 Open + P_H_00541 J_12_10 J_12_11 120 200 130 0 Open + P_H_00542 J_12_11 J_12_12 120 200 130 0 Open + P_H_00543 J_12_12 J_12_13 120 200 130 0 Open + P_H_00544 J_12_13 J_12_14 120 200 130 0 Open + P_H_00545 J_12_14 J_12_15 120 200 130 0 Open + P_H_00546 J_12_15 J_12_16 120 200 130 0 Open + P_H_00547 J_12_16 J_12_17 120 200 130 0 Open + P_H_00548 J_12_17 J_12_18 120 200 130 0 Open + P_H_00549 J_12_18 J_12_19 120 200 130 0 Open + P_H_00550 J_12_19 J_12_20 120 200 130 0 Open + P_H_00551 J_12_20 J_12_21 120 200 130 0 Open + P_H_00552 J_12_21 J_12_22 120 200 130 0 Open + P_H_00553 J_12_22 J_12_23 120 200 130 0 Open + P_H_00554 J_12_23 J_12_24 120 200 130 0 Open + P_H_00555 J_12_24 J_12_25 120 200 130 0 Open + P_H_00556 J_12_25 J_12_26 120 200 130 0 Open + P_H_00557 J_12_26 J_12_27 120 200 130 0 Open + P_H_00558 J_12_27 J_12_28 120 200 130 0 Open + P_H_00559 J_12_28 J_12_29 120 200 130 0 Open + P_H_00560 J_12_29 J_12_30 120 200 130 0 Open + P_H_00561 J_12_30 J_12_31 120 200 130 0 Open + P_H_00562 J_12_31 J_12_32 120 200 130 0 Open + P_H_00563 J_12_32 J_12_33 120 200 130 0 Open + P_H_00564 J_12_33 J_12_34 120 200 130 0 Open + P_H_00565 J_12_34 J_12_35 120 200 130 0 Open + P_H_00566 J_12_35 J_12_36 120 200 130 0 Open + P_H_00567 J_12_36 J_12_37 120 200 130 0 Open + P_H_00568 J_12_37 J_12_38 120 200 130 0 Open + P_H_00569 J_12_38 J_12_39 120 200 130 0 Open + P_H_00570 J_12_39 J_12_40 120 200 130 0 Open + P_H_00571 J_12_40 J_12_41 120 200 130 0 Open + P_H_00572 J_12_41 J_12_42 120 200 130 0 Open + P_H_00573 J_12_42 J_12_43 120 200 130 0 Open + P_H_00574 J_12_43 J_12_44 120 200 130 0 Open + P_H_00575 J_13_00 J_13_01 120 200 130 0 Open + P_H_00576 J_13_01 J_13_02 120 200 130 0 Open + P_H_00577 J_13_02 J_13_03 120 200 130 0 Open + P_H_00578 J_13_03 J_13_04 120 200 130 0 Open + P_H_00579 J_13_04 J_13_05 120 200 130 0 Open + P_H_00580 J_13_05 J_13_06 120 200 130 0 Open + P_H_00581 J_13_06 J_13_07 120 200 130 0 Open + P_H_00582 J_13_07 J_13_08 120 200 130 0 Open + P_H_00583 J_13_08 J_13_09 120 200 130 0 Open + P_H_00584 J_13_09 J_13_10 120 200 130 0 Open + P_H_00585 J_13_10 J_13_11 120 200 130 0 Open + P_H_00586 J_13_11 J_13_12 120 200 130 0 Open + P_H_00587 J_13_12 J_13_13 120 200 130 0 Open + P_H_00588 J_13_13 J_13_14 120 200 130 0 Open + P_H_00589 J_13_14 J_13_15 120 200 130 0 Open + P_H_00590 J_13_15 J_13_16 120 200 130 0 Open + P_H_00591 J_13_16 J_13_17 120 200 130 0 Open + P_H_00592 J_13_17 J_13_18 120 200 130 0 Open + P_H_00593 J_13_18 J_13_19 120 200 130 0 Open + P_H_00594 J_13_19 J_13_20 120 200 130 0 Open + P_H_00595 J_13_20 J_13_21 120 200 130 0 Open + P_H_00596 J_13_21 J_13_22 120 200 130 0 Open + P_H_00597 J_13_22 J_13_23 120 200 130 0 Open + P_H_00598 J_13_23 J_13_24 120 200 130 0 Open + P_H_00599 J_13_24 J_13_25 120 200 130 0 Open + P_H_00600 J_13_25 J_13_26 120 200 130 0 Open + P_H_00601 J_13_26 J_13_27 120 200 130 0 Open + P_H_00602 J_13_27 J_13_28 120 200 130 0 Open + P_H_00603 J_13_28 J_13_29 120 200 130 0 Open + P_H_00604 J_13_29 J_13_30 120 200 130 0 Open + P_H_00605 J_13_30 J_13_31 120 200 130 0 Open + P_H_00606 J_13_31 J_13_32 120 200 130 0 Open + P_H_00607 J_13_32 J_13_33 120 200 130 0 Open + P_H_00608 J_13_33 J_13_34 120 200 130 0 Open + P_H_00609 J_13_34 J_13_35 120 200 130 0 Open + P_H_00610 J_13_35 J_13_36 120 200 130 0 Open + P_H_00611 J_13_36 J_13_37 120 200 130 0 Open + P_H_00612 J_13_37 J_13_38 120 200 130 0 Open + P_H_00613 J_13_38 J_13_39 120 200 130 0 Open + P_H_00614 J_13_39 J_13_40 120 200 130 0 Open + P_H_00615 J_13_40 J_13_41 120 200 130 0 Open + P_H_00616 J_13_41 J_13_42 120 200 130 0 Open + P_H_00617 J_13_42 J_13_43 120 200 130 0 Open + P_H_00618 J_13_43 J_13_44 120 200 130 0 Open + P_H_00619 J_14_00 J_14_01 120 200 130 0 Open + P_H_00620 J_14_01 J_14_02 120 200 130 0 Open + P_H_00621 J_14_02 J_14_03 120 200 130 0 Open + P_H_00622 J_14_03 J_14_04 120 200 130 0 Open + P_H_00623 J_14_04 J_14_05 120 200 130 0 Open + P_H_00624 J_14_05 J_14_06 120 200 130 0 Open + P_H_00625 J_14_06 J_14_07 120 200 130 0 Open + P_H_00626 J_14_07 J_14_08 120 200 130 0 Open + P_H_00627 J_14_08 J_14_09 120 200 130 0 Open + P_H_00628 J_14_09 J_14_10 120 200 130 0 Open + P_H_00629 J_14_10 J_14_11 120 200 130 0 Open + P_H_00630 J_14_11 J_14_12 120 200 130 0 Open + P_H_00631 J_14_12 J_14_13 120 200 130 0 Open + P_H_00632 J_14_13 J_14_14 120 200 130 0 Open + P_H_00633 J_14_14 J_14_15 120 200 130 0 Open + P_H_00634 J_14_15 J_14_16 120 200 130 0 Open + P_H_00635 J_14_16 J_14_17 120 200 130 0 Open + P_H_00636 J_14_17 J_14_18 120 200 130 0 Open + P_H_00637 J_14_18 J_14_19 120 200 130 0 Open + P_H_00638 J_14_19 J_14_20 120 200 130 0 Open + P_H_00639 J_14_20 J_14_21 120 200 130 0 Open + P_H_00640 J_14_21 J_14_22 120 200 130 0 Open + P_H_00641 J_14_22 J_14_23 120 200 130 0 Open + P_H_00642 J_14_23 J_14_24 120 200 130 0 Open + P_H_00643 J_14_24 J_14_25 120 200 130 0 Open + P_H_00644 J_14_25 J_14_26 120 200 130 0 Open + P_H_00645 J_14_26 J_14_27 120 200 130 0 Open + P_H_00646 J_14_27 J_14_28 120 200 130 0 Open + P_H_00647 J_14_28 J_14_29 120 200 130 0 Open + P_H_00648 J_14_29 J_14_30 120 200 130 0 Open + P_H_00649 J_14_30 J_14_31 120 200 130 0 Open + P_H_00650 J_14_31 J_14_32 120 200 130 0 Open + P_H_00651 J_14_32 J_14_33 120 200 130 0 Open + P_H_00652 J_14_33 J_14_34 120 200 130 0 Open + P_H_00653 J_14_34 J_14_35 120 200 130 0 Open + P_H_00654 J_14_35 J_14_36 120 200 130 0 Open + P_H_00655 J_14_36 J_14_37 120 200 130 0 Open + P_H_00656 J_14_37 J_14_38 120 200 130 0 Open + P_H_00657 J_14_38 J_14_39 120 200 130 0 Open + P_H_00658 J_14_39 J_14_40 120 200 130 0 Open + P_H_00659 J_14_40 J_14_41 120 200 130 0 Open + P_H_00660 J_14_41 J_14_42 120 200 130 0 Open + P_H_00661 J_14_42 J_14_43 120 200 130 0 Open + P_H_00662 J_14_43 J_14_44 120 200 130 0 Open + P_H_00663 J_15_00 J_15_01 120 200 130 0 Open + P_H_00664 J_15_01 J_15_02 120 200 130 0 Open + P_H_00665 J_15_02 J_15_03 120 200 130 0 Open + P_H_00666 J_15_03 J_15_04 120 200 130 0 Open + P_H_00667 J_15_04 J_15_05 120 200 130 0 Open + P_H_00668 J_15_05 J_15_06 120 200 130 0 Open + P_H_00669 J_15_06 J_15_07 120 200 130 0 Open + P_H_00670 J_15_07 J_15_08 120 200 130 0 Open + P_H_00671 J_15_08 J_15_09 120 200 130 0 Open + P_H_00672 J_15_09 J_15_10 120 200 130 0 Open + P_H_00673 J_15_10 J_15_11 120 200 130 0 Open + P_H_00674 J_15_11 J_15_12 120 200 130 0 Open + P_H_00675 J_15_12 J_15_13 120 200 130 0 Open + P_H_00676 J_15_13 J_15_14 120 200 130 0 Open + P_H_00677 J_15_14 J_15_15 120 200 130 0 Open + P_H_00678 J_15_15 J_15_16 120 200 130 0 Open + P_H_00679 J_15_16 J_15_17 120 200 130 0 Open + P_H_00680 J_15_17 J_15_18 120 200 130 0 Open + P_H_00681 J_15_18 J_15_19 120 200 130 0 Open + P_H_00682 J_15_19 J_15_20 120 200 130 0 Open + P_H_00683 J_15_20 J_15_21 120 200 130 0 Open + P_H_00684 J_15_21 J_15_22 120 200 130 0 Open + P_H_00685 J_15_22 J_15_23 120 200 130 0 Open + P_H_00686 J_15_23 J_15_24 120 200 130 0 Open + P_H_00687 J_15_24 J_15_25 120 200 130 0 Open + P_H_00688 J_15_25 J_15_26 120 200 130 0 Open + P_H_00689 J_15_26 J_15_27 120 200 130 0 Open + P_H_00690 J_15_27 J_15_28 120 200 130 0 Open + P_H_00691 J_15_28 J_15_29 120 200 130 0 Open + P_H_00692 J_15_29 J_15_30 120 200 130 0 Open + P_H_00693 J_15_30 J_15_31 120 200 130 0 Open + P_H_00694 J_15_31 J_15_32 120 200 130 0 Open + P_H_00695 J_15_32 J_15_33 120 200 130 0 Open + P_H_00696 J_15_33 J_15_34 120 200 130 0 Open + P_H_00697 J_15_34 J_15_35 120 200 130 0 Open + P_H_00698 J_15_35 J_15_36 120 200 130 0 Open + P_H_00699 J_15_36 J_15_37 120 200 130 0 Open + P_H_00700 J_15_37 J_15_38 120 200 130 0 Open + P_H_00701 J_15_38 J_15_39 120 200 130 0 Open + P_H_00702 J_15_39 J_15_40 120 200 130 0 Open + P_H_00703 J_15_40 J_15_41 120 200 130 0 Open + P_H_00704 J_15_41 J_15_42 120 200 130 0 Open + P_H_00705 J_15_42 J_15_43 120 200 130 0 Open + P_H_00706 J_15_43 J_15_44 120 200 130 0 Open + P_H_00707 J_16_00 J_16_01 120 200 130 0 Open + P_H_00708 J_16_01 J_16_02 120 200 130 0 Open + P_H_00709 J_16_02 J_16_03 120 200 130 0 Open + P_H_00710 J_16_03 J_16_04 120 200 130 0 Open + P_H_00711 J_16_04 J_16_05 120 200 130 0 Open + P_H_00712 J_16_05 J_16_06 120 200 130 0 Open + P_H_00713 J_16_06 J_16_07 120 200 130 0 Open + P_H_00714 J_16_07 J_16_08 120 200 130 0 Open + P_H_00715 J_16_08 J_16_09 120 200 130 0 Open + P_H_00716 J_16_09 J_16_10 120 200 130 0 Open + P_H_00717 J_16_10 J_16_11 120 200 130 0 Open + P_H_00718 J_16_11 J_16_12 120 200 130 0 Open + P_H_00719 J_16_12 J_16_13 120 200 130 0 Open + P_H_00720 J_16_13 J_16_14 120 200 130 0 Open + P_H_00721 J_16_14 J_16_15 120 200 130 0 Open + P_H_00722 J_16_15 J_16_16 120 200 130 0 Open + P_H_00723 J_16_16 J_16_17 120 200 130 0 Open + P_H_00724 J_16_17 J_16_18 120 200 130 0 Open + P_H_00725 J_16_18 J_16_19 120 200 130 0 Open + P_H_00726 J_16_19 J_16_20 120 200 130 0 Open + P_H_00727 J_16_20 J_16_21 120 200 130 0 Open + P_H_00728 J_16_21 J_16_22 120 200 130 0 Open + P_H_00729 J_16_22 J_16_23 120 200 130 0 Open + P_H_00730 J_16_23 J_16_24 120 200 130 0 Open + P_H_00731 J_16_24 J_16_25 120 200 130 0 Open + P_H_00732 J_16_25 J_16_26 120 200 130 0 Open + P_H_00733 J_16_26 J_16_27 120 200 130 0 Open + P_H_00734 J_16_27 J_16_28 120 200 130 0 Open + P_H_00735 J_16_28 J_16_29 120 200 130 0 Open + P_H_00736 J_16_29 J_16_30 120 200 130 0 Open + P_H_00737 J_16_30 J_16_31 120 200 130 0 Open + P_H_00738 J_16_31 J_16_32 120 200 130 0 Open + P_H_00739 J_16_32 J_16_33 120 200 130 0 Open + P_H_00740 J_16_33 J_16_34 120 200 130 0 Open + P_H_00741 J_16_34 J_16_35 120 200 130 0 Open + P_H_00742 J_16_35 J_16_36 120 200 130 0 Open + P_H_00743 J_16_36 J_16_37 120 200 130 0 Open + P_H_00744 J_16_37 J_16_38 120 200 130 0 Open + P_H_00745 J_16_38 J_16_39 120 200 130 0 Open + P_H_00746 J_16_39 J_16_40 120 200 130 0 Open + P_H_00747 J_16_40 J_16_41 120 200 130 0 Open + P_H_00748 J_16_41 J_16_42 120 200 130 0 Open + P_H_00749 J_16_42 J_16_43 120 200 130 0 Open + P_H_00750 J_16_43 J_16_44 120 200 130 0 Open + P_H_00751 J_17_00 J_17_01 120 200 130 0 Open + P_H_00752 J_17_01 J_17_02 120 200 130 0 Open + P_H_00753 J_17_02 J_17_03 120 200 130 0 Open + P_H_00754 J_17_03 J_17_04 120 200 130 0 Open + P_H_00755 J_17_04 J_17_05 120 200 130 0 Open + P_H_00756 J_17_05 J_17_06 120 200 130 0 Open + P_H_00757 J_17_06 J_17_07 120 200 130 0 Open + P_H_00758 J_17_07 J_17_08 120 200 130 0 Open + P_H_00759 J_17_08 J_17_09 120 200 130 0 Open + P_H_00760 J_17_09 J_17_10 120 200 130 0 Open + P_H_00761 J_17_10 J_17_11 120 200 130 0 Open + P_H_00762 J_17_11 J_17_12 120 200 130 0 Open + P_H_00763 J_17_12 J_17_13 120 200 130 0 Open + P_H_00764 J_17_13 J_17_14 120 200 130 0 Open + P_H_00765 J_17_14 J_17_15 120 200 130 0 Open + P_H_00766 J_17_15 J_17_16 120 200 130 0 Open + P_H_00767 J_17_16 J_17_17 120 200 130 0 Open + P_H_00768 J_17_17 J_17_18 120 200 130 0 Open + P_H_00769 J_17_18 J_17_19 120 200 130 0 Open + P_H_00770 J_17_19 J_17_20 120 200 130 0 Open + P_H_00771 J_17_20 J_17_21 120 200 130 0 Open + P_H_00772 J_17_21 J_17_22 120 200 130 0 Open + P_H_00773 J_17_22 J_17_23 120 200 130 0 Open + P_H_00774 J_17_23 J_17_24 120 200 130 0 Open + P_H_00775 J_17_24 J_17_25 120 200 130 0 Open + P_H_00776 J_17_25 J_17_26 120 200 130 0 Open + P_H_00777 J_17_26 J_17_27 120 200 130 0 Open + P_H_00778 J_17_27 J_17_28 120 200 130 0 Open + P_H_00779 J_17_28 J_17_29 120 200 130 0 Open + P_H_00780 J_17_29 J_17_30 120 200 130 0 Open + P_H_00781 J_17_30 J_17_31 120 200 130 0 Open + P_H_00782 J_17_31 J_17_32 120 200 130 0 Open + P_H_00783 J_17_32 J_17_33 120 200 130 0 Open + P_H_00784 J_17_33 J_17_34 120 200 130 0 Open + P_H_00785 J_17_34 J_17_35 120 200 130 0 Open + P_H_00786 J_17_35 J_17_36 120 200 130 0 Open + P_H_00787 J_17_36 J_17_37 120 200 130 0 Open + P_H_00788 J_17_37 J_17_38 120 200 130 0 Open + P_H_00789 J_17_38 J_17_39 120 200 130 0 Open + P_H_00790 J_17_39 J_17_40 120 200 130 0 Open + P_H_00791 J_17_40 J_17_41 120 200 130 0 Open + P_H_00792 J_17_41 J_17_42 120 200 130 0 Open + P_H_00793 J_17_42 J_17_43 120 200 130 0 Open + P_H_00794 J_17_43 J_17_44 120 200 130 0 Open + P_H_00795 J_18_00 J_18_01 120 200 130 0 Open + P_H_00796 J_18_01 J_18_02 120 200 130 0 Open + P_H_00797 J_18_02 J_18_03 120 200 130 0 Open + P_H_00798 J_18_03 J_18_04 120 200 130 0 Open + P_H_00799 J_18_04 J_18_05 120 200 130 0 Open + P_H_00800 J_18_05 J_18_06 120 200 130 0 Open + P_H_00801 J_18_06 J_18_07 120 200 130 0 Open + P_H_00802 J_18_07 J_18_08 120 200 130 0 Open + P_H_00803 J_18_08 J_18_09 120 200 130 0 Open + P_H_00804 J_18_09 J_18_10 120 200 130 0 Open + P_H_00805 J_18_10 J_18_11 120 200 130 0 Open + P_H_00806 J_18_11 J_18_12 120 200 130 0 Open + P_H_00807 J_18_12 J_18_13 120 200 130 0 Open + P_H_00808 J_18_13 J_18_14 120 200 130 0 Open + P_H_00809 J_18_14 J_18_15 120 200 130 0 Open + P_H_00810 J_18_15 J_18_16 120 200 130 0 Open + P_H_00811 J_18_16 J_18_17 120 200 130 0 Open + P_H_00812 J_18_17 J_18_18 120 200 130 0 Open + P_H_00813 J_18_18 J_18_19 120 200 130 0 Open + P_H_00814 J_18_19 J_18_20 120 200 130 0 Open + P_H_00815 J_18_20 J_18_21 120 200 130 0 Open + P_H_00816 J_18_21 J_18_22 120 200 130 0 Open + P_H_00817 J_18_22 J_18_23 120 200 130 0 Open + P_H_00818 J_18_23 J_18_24 120 200 130 0 Open + P_H_00819 J_18_24 J_18_25 120 200 130 0 Open + P_H_00820 J_18_25 J_18_26 120 200 130 0 Open + P_H_00821 J_18_26 J_18_27 120 200 130 0 Open + P_H_00822 J_18_27 J_18_28 120 200 130 0 Open + P_H_00823 J_18_28 J_18_29 120 200 130 0 Open + P_H_00824 J_18_29 J_18_30 120 200 130 0 Open + P_H_00825 J_18_30 J_18_31 120 200 130 0 Open + P_H_00826 J_18_31 J_18_32 120 200 130 0 Open + P_H_00827 J_18_32 J_18_33 120 200 130 0 Open + P_H_00828 J_18_33 J_18_34 120 200 130 0 Open + P_H_00829 J_18_34 J_18_35 120 200 130 0 Open + P_H_00830 J_18_35 J_18_36 120 200 130 0 Open + P_H_00831 J_18_36 J_18_37 120 200 130 0 Open + P_H_00832 J_18_37 J_18_38 120 200 130 0 Open + P_H_00833 J_18_38 J_18_39 120 200 130 0 Open + P_H_00834 J_18_39 J_18_40 120 200 130 0 Open + P_H_00835 J_18_40 J_18_41 120 200 130 0 Open + P_H_00836 J_18_41 J_18_42 120 200 130 0 Open + P_H_00837 J_18_42 J_18_43 120 200 130 0 Open + P_H_00838 J_18_43 J_18_44 120 200 130 0 Open + P_H_00839 J_19_00 J_19_01 120 200 130 0 Open + P_H_00840 J_19_01 J_19_02 120 200 130 0 Open + P_H_00841 J_19_02 J_19_03 120 200 130 0 Open + P_H_00842 J_19_03 J_19_04 120 200 130 0 Open + P_H_00843 J_19_04 J_19_05 120 200 130 0 Open + P_H_00844 J_19_05 J_19_06 120 200 130 0 Open + P_H_00845 J_19_06 J_19_07 120 200 130 0 Open + P_H_00846 J_19_07 J_19_08 120 200 130 0 Open + P_H_00847 J_19_08 J_19_09 120 200 130 0 Open + P_H_00848 J_19_09 J_19_10 120 200 130 0 Open + P_H_00849 J_19_10 J_19_11 120 200 130 0 Open + P_H_00850 J_19_11 J_19_12 120 200 130 0 Open + P_H_00851 J_19_12 J_19_13 120 200 130 0 Open + P_H_00852 J_19_13 J_19_14 120 200 130 0 Open + P_H_00853 J_19_14 J_19_15 120 200 130 0 Open + P_H_00854 J_19_15 J_19_16 120 200 130 0 Open + P_H_00855 J_19_16 J_19_17 120 200 130 0 Open + P_H_00856 J_19_17 J_19_18 120 200 130 0 Open + P_H_00857 J_19_18 J_19_19 120 200 130 0 Open + P_H_00858 J_19_19 J_19_20 120 200 130 0 Open + P_H_00859 J_19_20 J_19_21 120 200 130 0 Open + P_H_00860 J_19_21 J_19_22 120 200 130 0 Open + P_H_00861 J_19_22 J_19_23 120 200 130 0 Open + P_H_00862 J_19_23 J_19_24 120 200 130 0 Open + P_H_00863 J_19_24 J_19_25 120 200 130 0 Open + P_H_00864 J_19_25 J_19_26 120 200 130 0 Open + P_H_00865 J_19_26 J_19_27 120 200 130 0 Open + P_H_00866 J_19_27 J_19_28 120 200 130 0 Open + P_H_00867 J_19_28 J_19_29 120 200 130 0 Open + P_H_00868 J_19_29 J_19_30 120 200 130 0 Open + P_H_00869 J_19_30 J_19_31 120 200 130 0 Open + P_H_00870 J_19_31 J_19_32 120 200 130 0 Open + P_H_00871 J_19_32 J_19_33 120 200 130 0 Open + P_H_00872 J_19_33 J_19_34 120 200 130 0 Open + P_H_00873 J_19_34 J_19_35 120 200 130 0 Open + P_H_00874 J_19_35 J_19_36 120 200 130 0 Open + P_H_00875 J_19_36 J_19_37 120 200 130 0 Open + P_H_00876 J_19_37 J_19_38 120 200 130 0 Open + P_H_00877 J_19_38 J_19_39 120 200 130 0 Open + P_H_00878 J_19_39 J_19_40 120 200 130 0 Open + P_H_00879 J_19_40 J_19_41 120 200 130 0 Open + P_H_00880 J_19_41 J_19_42 120 200 130 0 Open + P_H_00881 J_19_42 J_19_43 120 200 130 0 Open + P_H_00882 J_19_43 J_19_44 120 200 130 0 Open + P_H_00883 J_20_00 J_20_01 120 200 130 0 Open + P_H_00884 J_20_01 J_20_02 120 200 130 0 Open + P_H_00885 J_20_02 J_20_03 120 200 130 0 Open + P_H_00886 J_20_03 J_20_04 120 200 130 0 Open + P_H_00887 J_20_04 J_20_05 120 200 130 0 Open + P_H_00888 J_20_05 J_20_06 120 200 130 0 Open + P_H_00889 J_20_06 J_20_07 120 200 130 0 Open + P_H_00890 J_20_07 J_20_08 120 200 130 0 Open + P_H_00891 J_20_08 J_20_09 120 200 130 0 Open + P_H_00892 J_20_09 J_20_10 120 200 130 0 Open + P_H_00893 J_20_10 J_20_11 120 200 130 0 Open + P_H_00894 J_20_11 J_20_12 120 200 130 0 Open + P_H_00895 J_20_12 J_20_13 120 200 130 0 Open + P_H_00896 J_20_13 J_20_14 120 200 130 0 Open + P_H_00897 J_20_14 J_20_15 120 200 130 0 Open + P_H_00898 J_20_15 J_20_16 120 200 130 0 Open + P_H_00899 J_20_16 J_20_17 120 200 130 0 Open + P_H_00900 J_20_17 J_20_18 120 200 130 0 Open + P_H_00901 J_20_18 J_20_19 120 200 130 0 Open + P_H_00902 J_20_19 J_20_20 120 200 130 0 Open + P_H_00903 J_20_20 J_20_21 120 200 130 0 Open + P_H_00904 J_20_21 J_20_22 120 200 130 0 Open + P_H_00905 J_20_22 J_20_23 120 200 130 0 Open + P_H_00906 J_20_23 J_20_24 120 200 130 0 Open + P_H_00907 J_20_24 J_20_25 120 200 130 0 Open + P_H_00908 J_20_25 J_20_26 120 200 130 0 Open + P_H_00909 J_20_26 J_20_27 120 200 130 0 Open + P_H_00910 J_20_27 J_20_28 120 200 130 0 Open + P_H_00911 J_20_28 J_20_29 120 200 130 0 Open + P_H_00912 J_20_29 J_20_30 120 200 130 0 Open + P_H_00913 J_20_30 J_20_31 120 200 130 0 Open + P_H_00914 J_20_31 J_20_32 120 200 130 0 Open + P_H_00915 J_20_32 J_20_33 120 200 130 0 Open + P_H_00916 J_20_33 J_20_34 120 200 130 0 Open + P_H_00917 J_20_34 J_20_35 120 200 130 0 Open + P_H_00918 J_20_35 J_20_36 120 200 130 0 Open + P_H_00919 J_20_36 J_20_37 120 200 130 0 Open + P_H_00920 J_20_37 J_20_38 120 200 130 0 Open + P_H_00921 J_20_38 J_20_39 120 200 130 0 Open + P_H_00922 J_20_39 J_20_40 120 200 130 0 Open + P_H_00923 J_20_40 J_20_41 120 200 130 0 Open + P_H_00924 J_20_41 J_20_42 120 200 130 0 Open + P_H_00925 J_20_42 J_20_43 120 200 130 0 Open + P_H_00926 J_20_43 J_20_44 120 200 130 0 Open + P_H_00927 J_21_00 J_21_01 120 200 130 0 Open + P_H_00928 J_21_01 J_21_02 120 200 130 0 Open + P_H_00929 J_21_02 J_21_03 120 200 130 0 Open + P_H_00930 J_21_03 J_21_04 120 200 130 0 Open + P_H_00931 J_21_04 J_21_05 120 200 130 0 Open + P_H_00932 J_21_05 J_21_06 120 200 130 0 Open + P_H_00933 J_21_06 J_21_07 120 200 130 0 Open + P_H_00934 J_21_07 J_21_08 120 200 130 0 Open + P_H_00935 J_21_08 J_21_09 120 200 130 0 Open + P_H_00936 J_21_09 J_21_10 120 200 130 0 Open + P_H_00937 J_21_10 J_21_11 120 200 130 0 Open + P_H_00938 J_21_11 J_21_12 120 200 130 0 Open + P_H_00939 J_21_12 J_21_13 120 200 130 0 Open + P_H_00940 J_21_13 J_21_14 120 200 130 0 Open + P_H_00941 J_21_14 J_21_15 120 200 130 0 Open + P_H_00942 J_21_15 J_21_16 120 200 130 0 Open + P_H_00943 J_21_16 J_21_17 120 200 130 0 Open + P_H_00944 J_21_17 J_21_18 120 200 130 0 Open + P_H_00945 J_21_18 J_21_19 120 200 130 0 Open + P_H_00946 J_21_19 J_21_20 120 200 130 0 Open + P_H_00947 J_21_20 J_21_21 120 200 130 0 Open + P_H_00948 J_21_21 J_21_22 120 200 130 0 Open + P_H_00949 J_21_22 J_21_23 120 200 130 0 Open + P_H_00950 J_21_23 J_21_24 120 200 130 0 Open + P_H_00951 J_21_24 J_21_25 120 200 130 0 Open + P_H_00952 J_21_25 J_21_26 120 200 130 0 Open + P_H_00953 J_21_26 J_21_27 120 200 130 0 Open + P_H_00954 J_21_27 J_21_28 120 200 130 0 Open + P_H_00955 J_21_28 J_21_29 120 200 130 0 Open + P_H_00956 J_21_29 J_21_30 120 200 130 0 Open + P_H_00957 J_21_30 J_21_31 120 200 130 0 Open + P_H_00958 J_21_31 J_21_32 120 200 130 0 Open + P_H_00959 J_21_32 J_21_33 120 200 130 0 Open + P_H_00960 J_21_33 J_21_34 120 200 130 0 Open + P_H_00961 J_21_34 J_21_35 120 200 130 0 Open + P_H_00962 J_21_35 J_21_36 120 200 130 0 Open + P_H_00963 J_21_36 J_21_37 120 200 130 0 Open + P_H_00964 J_21_37 J_21_38 120 200 130 0 Open + P_H_00965 J_21_38 J_21_39 120 200 130 0 Open + P_H_00966 J_21_39 J_21_40 120 200 130 0 Open + P_H_00967 J_21_40 J_21_41 120 200 130 0 Open + P_H_00968 J_21_41 J_21_42 120 200 130 0 Open + P_H_00969 J_21_42 J_21_43 120 200 130 0 Open + P_H_00970 J_21_43 J_21_44 120 200 130 0 Open + P_H_00971 J_22_00 J_22_01 120 200 130 0 Open + P_H_00972 J_22_01 J_22_02 120 200 130 0 Open + P_H_00973 J_22_02 J_22_03 120 200 130 0 Open + P_H_00974 J_22_03 J_22_04 120 200 130 0 Open + P_H_00975 J_22_04 J_22_05 120 200 130 0 Open + P_H_00976 J_22_05 J_22_06 120 200 130 0 Open + P_H_00977 J_22_06 J_22_07 120 200 130 0 Open + P_H_00978 J_22_07 J_22_08 120 200 130 0 Open + P_H_00979 J_22_08 J_22_09 120 200 130 0 Open + P_H_00980 J_22_09 J_22_10 120 200 130 0 Open + P_H_00981 J_22_10 J_22_11 120 200 130 0 Open + P_H_00982 J_22_11 J_22_12 120 200 130 0 Open + P_H_00983 J_22_12 J_22_13 120 200 130 0 Open + P_H_00984 J_22_13 J_22_14 120 200 130 0 Open + P_H_00985 J_22_14 J_22_15 120 200 130 0 Open + P_H_00986 J_22_15 J_22_16 120 200 130 0 Open + P_H_00987 J_22_16 J_22_17 120 200 130 0 Open + P_H_00988 J_22_17 J_22_18 120 200 130 0 Open + P_H_00989 J_22_18 J_22_19 120 200 130 0 Open + P_H_00990 J_22_19 J_22_20 120 200 130 0 Open + P_H_00991 J_22_20 J_22_21 120 200 130 0 Open + P_H_00992 J_22_21 J_22_22 120 200 130 0 Open + P_H_00993 J_22_22 J_22_23 120 200 130 0 Open + P_H_00994 J_22_23 J_22_24 120 200 130 0 Open + P_H_00995 J_22_24 J_22_25 120 200 130 0 Open + P_H_00996 J_22_25 J_22_26 120 200 130 0 Open + P_H_00997 J_22_26 J_22_27 120 200 130 0 Open + P_H_00998 J_22_27 J_22_28 120 200 130 0 Open + P_H_00999 J_22_28 J_22_29 120 200 130 0 Open + P_H_01000 J_22_29 J_22_30 120 200 130 0 Open + P_H_01001 J_22_30 J_22_31 120 200 130 0 Open + P_H_01002 J_22_31 J_22_32 120 200 130 0 Open + P_H_01003 J_22_32 J_22_33 120 200 130 0 Open + P_H_01004 J_22_33 J_22_34 120 200 130 0 Open + P_H_01005 J_22_34 J_22_35 120 200 130 0 Open + P_H_01006 J_22_35 J_22_36 120 200 130 0 Open + P_H_01007 J_22_36 J_22_37 120 200 130 0 Open + P_H_01008 J_22_37 J_22_38 120 200 130 0 Open + P_H_01009 J_22_38 J_22_39 120 200 130 0 Open + P_H_01010 J_22_39 J_22_40 120 200 130 0 Open + P_H_01011 J_22_40 J_22_41 120 200 130 0 Open + P_H_01012 J_22_41 J_22_42 120 200 130 0 Open + P_H_01013 J_22_42 J_22_43 120 200 130 0 Open + P_H_01014 J_22_43 J_22_44 120 200 130 0 Open + P_H_01015 J_23_00 J_23_01 120 200 130 0 Open + P_H_01016 J_23_01 J_23_02 120 200 130 0 Open + P_H_01017 J_23_02 J_23_03 120 200 130 0 Open + P_H_01018 J_23_03 J_23_04 120 200 130 0 Open + P_H_01019 J_23_04 J_23_05 120 200 130 0 Open + P_H_01020 J_23_05 J_23_06 120 200 130 0 Open + P_H_01021 J_23_06 J_23_07 120 200 130 0 Open + P_H_01022 J_23_07 J_23_08 120 200 130 0 Open + P_H_01023 J_23_08 J_23_09 120 200 130 0 Open + P_H_01024 J_23_09 J_23_10 120 200 130 0 Open + P_H_01025 J_23_10 J_23_11 120 200 130 0 Open + P_H_01026 J_23_11 J_23_12 120 200 130 0 Open + P_H_01027 J_23_12 J_23_13 120 200 130 0 Open + P_H_01028 J_23_13 J_23_14 120 200 130 0 Open + P_H_01029 J_23_14 J_23_15 120 200 130 0 Open + P_H_01030 J_23_15 J_23_16 120 200 130 0 Open + P_H_01031 J_23_16 J_23_17 120 200 130 0 Open + P_H_01032 J_23_17 J_23_18 120 200 130 0 Open + P_H_01033 J_23_18 J_23_19 120 200 130 0 Open + P_H_01034 J_23_19 J_23_20 120 200 130 0 Open + P_H_01035 J_23_20 J_23_21 120 200 130 0 Open + P_H_01036 J_23_21 J_23_22 120 200 130 0 Open + P_H_01037 J_23_22 J_23_23 120 200 130 0 Open + P_H_01038 J_23_23 J_23_24 120 200 130 0 Open + P_H_01039 J_23_24 J_23_25 120 200 130 0 Open + P_H_01040 J_23_25 J_23_26 120 200 130 0 Open + P_H_01041 J_23_26 J_23_27 120 200 130 0 Open + P_H_01042 J_23_27 J_23_28 120 200 130 0 Open + P_H_01043 J_23_28 J_23_29 120 200 130 0 Open + P_H_01044 J_23_29 J_23_30 120 200 130 0 Open + P_H_01045 J_23_30 J_23_31 120 200 130 0 Open + P_H_01046 J_23_31 J_23_32 120 200 130 0 Open + P_H_01047 J_23_32 J_23_33 120 200 130 0 Open + P_H_01048 J_23_33 J_23_34 120 200 130 0 Open + P_H_01049 J_23_34 J_23_35 120 200 130 0 Open + P_H_01050 J_23_35 J_23_36 120 200 130 0 Open + P_H_01051 J_23_36 J_23_37 120 200 130 0 Open + P_H_01052 J_23_37 J_23_38 120 200 130 0 Open + P_H_01053 J_23_38 J_23_39 120 200 130 0 Open + P_H_01054 J_23_39 J_23_40 120 200 130 0 Open + P_H_01055 J_23_40 J_23_41 120 200 130 0 Open + P_H_01056 J_23_41 J_23_42 120 200 130 0 Open + P_H_01057 J_23_42 J_23_43 120 200 130 0 Open + P_H_01058 J_23_43 J_23_44 120 200 130 0 Open + P_H_01059 J_24_00 J_24_01 120 200 130 0 Open + P_H_01060 J_24_01 J_24_02 120 200 130 0 Open + P_H_01061 J_24_02 J_24_03 120 200 130 0 Open + P_H_01062 J_24_03 J_24_04 120 200 130 0 Open + P_H_01063 J_24_04 J_24_05 120 200 130 0 Open + P_H_01064 J_24_05 J_24_06 120 200 130 0 Open + P_H_01065 J_24_06 J_24_07 120 200 130 0 Open + P_H_01066 J_24_07 J_24_08 120 200 130 0 Open + P_H_01067 J_24_08 J_24_09 120 200 130 0 Open + P_H_01068 J_24_09 J_24_10 120 200 130 0 Open + P_H_01069 J_24_10 J_24_11 120 200 130 0 Open + P_H_01070 J_24_11 J_24_12 120 200 130 0 Open + P_H_01071 J_24_12 J_24_13 120 200 130 0 Open + P_H_01072 J_24_13 J_24_14 120 200 130 0 Open + P_H_01073 J_24_14 J_24_15 120 200 130 0 Open + P_H_01074 J_24_15 J_24_16 120 200 130 0 Open + P_H_01075 J_24_16 J_24_17 120 200 130 0 Open + P_H_01076 J_24_17 J_24_18 120 200 130 0 Open + P_H_01077 J_24_18 J_24_19 120 200 130 0 Open + P_H_01078 J_24_19 J_24_20 120 200 130 0 Open + P_H_01079 J_24_20 J_24_21 120 200 130 0 Open + P_H_01080 J_24_21 J_24_22 120 200 130 0 Open + P_H_01081 J_24_22 J_24_23 120 200 130 0 Open + P_H_01082 J_24_23 J_24_24 120 200 130 0 Open + P_H_01083 J_24_24 J_24_25 120 200 130 0 Open + P_H_01084 J_24_25 J_24_26 120 200 130 0 Open + P_H_01085 J_24_26 J_24_27 120 200 130 0 Open + P_H_01086 J_24_27 J_24_28 120 200 130 0 Open + P_H_01087 J_24_28 J_24_29 120 200 130 0 Open + P_H_01088 J_24_29 J_24_30 120 200 130 0 Open + P_H_01089 J_24_30 J_24_31 120 200 130 0 Open + P_H_01090 J_24_31 J_24_32 120 200 130 0 Open + P_H_01091 J_24_32 J_24_33 120 200 130 0 Open + P_H_01092 J_24_33 J_24_34 120 200 130 0 Open + P_H_01093 J_24_34 J_24_35 120 200 130 0 Open + P_H_01094 J_24_35 J_24_36 120 200 130 0 Open + P_H_01095 J_24_36 J_24_37 120 200 130 0 Open + P_H_01096 J_24_37 J_24_38 120 200 130 0 Open + P_H_01097 J_24_38 J_24_39 120 200 130 0 Open + P_H_01098 J_24_39 J_24_40 120 200 130 0 Open + P_H_01099 J_24_40 J_24_41 120 200 130 0 Open + P_H_01100 J_24_41 J_24_42 120 200 130 0 Open + P_H_01101 J_24_42 J_24_43 120 200 130 0 Open + P_H_01102 J_24_43 J_24_44 120 200 130 0 Open + P_H_01103 J_25_00 J_25_01 120 200 130 0 Open + P_H_01104 J_25_01 J_25_02 120 200 130 0 Open + P_H_01105 J_25_02 J_25_03 120 200 130 0 Open + P_H_01106 J_25_03 J_25_04 120 200 130 0 Open + P_H_01107 J_25_04 J_25_05 120 200 130 0 Open + P_H_01108 J_25_05 J_25_06 120 200 130 0 Open + P_H_01109 J_25_06 J_25_07 120 200 130 0 Open + P_H_01110 J_25_07 J_25_08 120 200 130 0 Open + P_H_01111 J_25_08 J_25_09 120 200 130 0 Open + P_H_01112 J_25_09 J_25_10 120 200 130 0 Open + P_H_01113 J_25_10 J_25_11 120 200 130 0 Open + P_H_01114 J_25_11 J_25_12 120 200 130 0 Open + P_H_01115 J_25_12 J_25_13 120 200 130 0 Open + P_H_01116 J_25_13 J_25_14 120 200 130 0 Open + P_H_01117 J_25_14 J_25_15 120 200 130 0 Open + P_H_01118 J_25_15 J_25_16 120 200 130 0 Open + P_H_01119 J_25_16 J_25_17 120 200 130 0 Open + P_H_01120 J_25_17 J_25_18 120 200 130 0 Open + P_H_01121 J_25_18 J_25_19 120 200 130 0 Open + P_H_01122 J_25_19 J_25_20 120 200 130 0 Open + P_H_01123 J_25_20 J_25_21 120 200 130 0 Open + P_H_01124 J_25_21 J_25_22 120 200 130 0 Open + P_H_01125 J_25_22 J_25_23 120 200 130 0 Open + P_H_01126 J_25_23 J_25_24 120 200 130 0 Open + P_H_01127 J_25_24 J_25_25 120 200 130 0 Open + P_H_01128 J_25_25 J_25_26 120 200 130 0 Open + P_H_01129 J_25_26 J_25_27 120 200 130 0 Open + P_H_01130 J_25_27 J_25_28 120 200 130 0 Open + P_H_01131 J_25_28 J_25_29 120 200 130 0 Open + P_H_01132 J_25_29 J_25_30 120 200 130 0 Open + P_H_01133 J_25_30 J_25_31 120 200 130 0 Open + P_H_01134 J_25_31 J_25_32 120 200 130 0 Open + P_H_01135 J_25_32 J_25_33 120 200 130 0 Open + P_H_01136 J_25_33 J_25_34 120 200 130 0 Open + P_H_01137 J_25_34 J_25_35 120 200 130 0 Open + P_H_01138 J_25_35 J_25_36 120 200 130 0 Open + P_H_01139 J_25_36 J_25_37 120 200 130 0 Open + P_H_01140 J_25_37 J_25_38 120 200 130 0 Open + P_H_01141 J_25_38 J_25_39 120 200 130 0 Open + P_H_01142 J_25_39 J_25_40 120 200 130 0 Open + P_H_01143 J_25_40 J_25_41 120 200 130 0 Open + P_H_01144 J_25_41 J_25_42 120 200 130 0 Open + P_H_01145 J_25_42 J_25_43 120 200 130 0 Open + P_H_01146 J_25_43 J_25_44 120 200 130 0 Open + P_H_01147 J_26_00 J_26_01 120 200 130 0 Open + P_H_01148 J_26_01 J_26_02 120 200 130 0 Open + P_H_01149 J_26_02 J_26_03 120 200 130 0 Open + P_H_01150 J_26_03 J_26_04 120 200 130 0 Open + P_H_01151 J_26_04 J_26_05 120 200 130 0 Open + P_H_01152 J_26_05 J_26_06 120 200 130 0 Open + P_H_01153 J_26_06 J_26_07 120 200 130 0 Open + P_H_01154 J_26_07 J_26_08 120 200 130 0 Open + P_H_01155 J_26_08 J_26_09 120 200 130 0 Open + P_H_01156 J_26_09 J_26_10 120 200 130 0 Open + P_H_01157 J_26_10 J_26_11 120 200 130 0 Open + P_H_01158 J_26_11 J_26_12 120 200 130 0 Open + P_H_01159 J_26_12 J_26_13 120 200 130 0 Open + P_H_01160 J_26_13 J_26_14 120 200 130 0 Open + P_H_01161 J_26_14 J_26_15 120 200 130 0 Open + P_H_01162 J_26_15 J_26_16 120 200 130 0 Open + P_H_01163 J_26_16 J_26_17 120 200 130 0 Open + P_H_01164 J_26_17 J_26_18 120 200 130 0 Open + P_H_01165 J_26_18 J_26_19 120 200 130 0 Open + P_H_01166 J_26_19 J_26_20 120 200 130 0 Open + P_H_01167 J_26_20 J_26_21 120 200 130 0 Open + P_H_01168 J_26_21 J_26_22 120 200 130 0 Open + P_H_01169 J_26_22 J_26_23 120 200 130 0 Open + P_H_01170 J_26_23 J_26_24 120 200 130 0 Open + P_H_01171 J_26_24 J_26_25 120 200 130 0 Open + P_H_01172 J_26_25 J_26_26 120 200 130 0 Open + P_H_01173 J_26_26 J_26_27 120 200 130 0 Open + P_H_01174 J_26_27 J_26_28 120 200 130 0 Open + P_H_01175 J_26_28 J_26_29 120 200 130 0 Open + P_H_01176 J_26_29 J_26_30 120 200 130 0 Open + P_H_01177 J_26_30 J_26_31 120 200 130 0 Open + P_H_01178 J_26_31 J_26_32 120 200 130 0 Open + P_H_01179 J_26_32 J_26_33 120 200 130 0 Open + P_H_01180 J_26_33 J_26_34 120 200 130 0 Open + P_H_01181 J_26_34 J_26_35 120 200 130 0 Open + P_H_01182 J_26_35 J_26_36 120 200 130 0 Open + P_H_01183 J_26_36 J_26_37 120 200 130 0 Open + P_H_01184 J_26_37 J_26_38 120 200 130 0 Open + P_H_01185 J_26_38 J_26_39 120 200 130 0 Open + P_H_01186 J_26_39 J_26_40 120 200 130 0 Open + P_H_01187 J_26_40 J_26_41 120 200 130 0 Open + P_H_01188 J_26_41 J_26_42 120 200 130 0 Open + P_H_01189 J_26_42 J_26_43 120 200 130 0 Open + P_H_01190 J_26_43 J_26_44 120 200 130 0 Open + P_H_01191 J_27_00 J_27_01 120 200 130 0 Open + P_H_01192 J_27_01 J_27_02 120 200 130 0 Open + P_H_01193 J_27_02 J_27_03 120 200 130 0 Open + P_H_01194 J_27_03 J_27_04 120 200 130 0 Open + P_H_01195 J_27_04 J_27_05 120 200 130 0 Open + P_H_01196 J_27_05 J_27_06 120 200 130 0 Open + P_H_01197 J_27_06 J_27_07 120 200 130 0 Open + P_H_01198 J_27_07 J_27_08 120 200 130 0 Open + P_H_01199 J_27_08 J_27_09 120 200 130 0 Open + P_H_01200 J_27_09 J_27_10 120 200 130 0 Open + P_H_01201 J_27_10 J_27_11 120 200 130 0 Open + P_H_01202 J_27_11 J_27_12 120 200 130 0 Open + P_H_01203 J_27_12 J_27_13 120 200 130 0 Open + P_H_01204 J_27_13 J_27_14 120 200 130 0 Open + P_H_01205 J_27_14 J_27_15 120 200 130 0 Open + P_H_01206 J_27_15 J_27_16 120 200 130 0 Open + P_H_01207 J_27_16 J_27_17 120 200 130 0 Open + P_H_01208 J_27_17 J_27_18 120 200 130 0 Open + P_H_01209 J_27_18 J_27_19 120 200 130 0 Open + P_H_01210 J_27_19 J_27_20 120 200 130 0 Open + P_H_01211 J_27_20 J_27_21 120 200 130 0 Open + P_H_01212 J_27_21 J_27_22 120 200 130 0 Open + P_H_01213 J_27_22 J_27_23 120 200 130 0 Open + P_H_01214 J_27_23 J_27_24 120 200 130 0 Open + P_H_01215 J_27_24 J_27_25 120 200 130 0 Open + P_H_01216 J_27_25 J_27_26 120 200 130 0 Open + P_H_01217 J_27_26 J_27_27 120 200 130 0 Open + P_H_01218 J_27_27 J_27_28 120 200 130 0 Open + P_H_01219 J_27_28 J_27_29 120 200 130 0 Open + P_H_01220 J_27_29 J_27_30 120 200 130 0 Open + P_H_01221 J_27_30 J_27_31 120 200 130 0 Open + P_H_01222 J_27_31 J_27_32 120 200 130 0 Open + P_H_01223 J_27_32 J_27_33 120 200 130 0 Open + P_H_01224 J_27_33 J_27_34 120 200 130 0 Open + P_H_01225 J_27_34 J_27_35 120 200 130 0 Open + P_H_01226 J_27_35 J_27_36 120 200 130 0 Open + P_H_01227 J_27_36 J_27_37 120 200 130 0 Open + P_H_01228 J_27_37 J_27_38 120 200 130 0 Open + P_H_01229 J_27_38 J_27_39 120 200 130 0 Open + P_H_01230 J_27_39 J_27_40 120 200 130 0 Open + P_H_01231 J_27_40 J_27_41 120 200 130 0 Open + P_H_01232 J_27_41 J_27_42 120 200 130 0 Open + P_H_01233 J_27_42 J_27_43 120 200 130 0 Open + P_H_01234 J_27_43 J_27_44 120 200 130 0 Open + P_H_01235 J_28_00 J_28_01 120 200 130 0 Open + P_H_01236 J_28_01 J_28_02 120 200 130 0 Open + P_H_01237 J_28_02 J_28_03 120 200 130 0 Open + P_H_01238 J_28_03 J_28_04 120 200 130 0 Open + P_H_01239 J_28_04 J_28_05 120 200 130 0 Open + P_H_01240 J_28_05 J_28_06 120 200 130 0 Open + P_H_01241 J_28_06 J_28_07 120 200 130 0 Open + P_H_01242 J_28_07 J_28_08 120 200 130 0 Open + P_H_01243 J_28_08 J_28_09 120 200 130 0 Open + P_H_01244 J_28_09 J_28_10 120 200 130 0 Open + P_H_01245 J_28_10 J_28_11 120 200 130 0 Open + P_H_01246 J_28_11 J_28_12 120 200 130 0 Open + P_H_01247 J_28_12 J_28_13 120 200 130 0 Open + P_H_01248 J_28_13 J_28_14 120 200 130 0 Open + P_H_01249 J_28_14 J_28_15 120 200 130 0 Open + P_H_01250 J_28_15 J_28_16 120 200 130 0 Open + P_H_01251 J_28_16 J_28_17 120 200 130 0 Open + P_H_01252 J_28_17 J_28_18 120 200 130 0 Open + P_H_01253 J_28_18 J_28_19 120 200 130 0 Open + P_H_01254 J_28_19 J_28_20 120 200 130 0 Open + P_H_01255 J_28_20 J_28_21 120 200 130 0 Open + P_H_01256 J_28_21 J_28_22 120 200 130 0 Open + P_H_01257 J_28_22 J_28_23 120 200 130 0 Open + P_H_01258 J_28_23 J_28_24 120 200 130 0 Open + P_H_01259 J_28_24 J_28_25 120 200 130 0 Open + P_H_01260 J_28_25 J_28_26 120 200 130 0 Open + P_H_01261 J_28_26 J_28_27 120 200 130 0 Open + P_H_01262 J_28_27 J_28_28 120 200 130 0 Open + P_H_01263 J_28_28 J_28_29 120 200 130 0 Open + P_H_01264 J_28_29 J_28_30 120 200 130 0 Open + P_H_01265 J_28_30 J_28_31 120 200 130 0 Open + P_H_01266 J_28_31 J_28_32 120 200 130 0 Open + P_H_01267 J_28_32 J_28_33 120 200 130 0 Open + P_H_01268 J_28_33 J_28_34 120 200 130 0 Open + P_H_01269 J_28_34 J_28_35 120 200 130 0 Open + P_H_01270 J_28_35 J_28_36 120 200 130 0 Open + P_H_01271 J_28_36 J_28_37 120 200 130 0 Open + P_H_01272 J_28_37 J_28_38 120 200 130 0 Open + P_H_01273 J_28_38 J_28_39 120 200 130 0 Open + P_H_01274 J_28_39 J_28_40 120 200 130 0 Open + P_H_01275 J_28_40 J_28_41 120 200 130 0 Open + P_H_01276 J_28_41 J_28_42 120 200 130 0 Open + P_H_01277 J_28_42 J_28_43 120 200 130 0 Open + P_H_01278 J_28_43 J_28_44 120 200 130 0 Open + P_H_01279 J_29_00 J_29_01 120 200 130 0 Open + P_H_01280 J_29_01 J_29_02 120 200 130 0 Open + P_H_01281 J_29_02 J_29_03 120 200 130 0 Open + P_H_01282 J_29_03 J_29_04 120 200 130 0 Open + P_H_01283 J_29_04 J_29_05 120 200 130 0 Open + P_H_01284 J_29_05 J_29_06 120 200 130 0 Open + P_H_01285 J_29_06 J_29_07 120 200 130 0 Open + P_H_01286 J_29_07 J_29_08 120 200 130 0 Open + P_H_01287 J_29_08 J_29_09 120 200 130 0 Open + P_H_01288 J_29_09 J_29_10 120 200 130 0 Open + P_H_01289 J_29_10 J_29_11 120 200 130 0 Open + P_H_01290 J_29_11 J_29_12 120 200 130 0 Open + P_H_01291 J_29_12 J_29_13 120 200 130 0 Open + P_H_01292 J_29_13 J_29_14 120 200 130 0 Open + P_H_01293 J_29_14 J_29_15 120 200 130 0 Open + P_H_01294 J_29_15 J_29_16 120 200 130 0 Open + P_H_01295 J_29_16 J_29_17 120 200 130 0 Open + P_H_01296 J_29_17 J_29_18 120 200 130 0 Open + P_H_01297 J_29_18 J_29_19 120 200 130 0 Open + P_H_01298 J_29_19 J_29_20 120 200 130 0 Open + P_H_01299 J_29_20 J_29_21 120 200 130 0 Open + P_H_01300 J_29_21 J_29_22 120 200 130 0 Open + P_H_01301 J_29_22 J_29_23 120 200 130 0 Open + P_H_01302 J_29_23 J_29_24 120 200 130 0 Open + P_H_01303 J_29_24 J_29_25 120 200 130 0 Open + P_H_01304 J_29_25 J_29_26 120 200 130 0 Open + P_H_01305 J_29_26 J_29_27 120 200 130 0 Open + P_H_01306 J_29_27 J_29_28 120 200 130 0 Open + P_H_01307 J_29_28 J_29_29 120 200 130 0 Open + P_H_01308 J_29_29 J_29_30 120 200 130 0 Open + P_H_01309 J_29_30 J_29_31 120 200 130 0 Open + P_H_01310 J_29_31 J_29_32 120 200 130 0 Open + P_H_01311 J_29_32 J_29_33 120 200 130 0 Open + P_H_01312 J_29_33 J_29_34 120 200 130 0 Open + P_H_01313 J_29_34 J_29_35 120 200 130 0 Open + P_H_01314 J_29_35 J_29_36 120 200 130 0 Open + P_H_01315 J_29_36 J_29_37 120 200 130 0 Open + P_H_01316 J_29_37 J_29_38 120 200 130 0 Open + P_H_01317 J_29_38 J_29_39 120 200 130 0 Open + P_H_01318 J_29_39 J_29_40 120 200 130 0 Open + P_H_01319 J_29_40 J_29_41 120 200 130 0 Open + P_H_01320 J_29_41 J_29_42 120 200 130 0 Open + P_H_01321 J_29_42 J_29_43 120 200 130 0 Open + P_H_01322 J_29_43 J_29_44 120 200 130 0 Open + P_H_01323 J_30_00 J_30_01 120 200 130 0 Open + P_H_01324 J_30_01 J_30_02 120 200 130 0 Open + P_H_01325 J_30_02 J_30_03 120 200 130 0 Open + P_H_01326 J_30_03 J_30_04 120 200 130 0 Open + P_H_01327 J_30_04 J_30_05 120 200 130 0 Open + P_H_01328 J_30_05 J_30_06 120 200 130 0 Open + P_H_01329 J_30_06 J_30_07 120 200 130 0 Open + P_H_01330 J_30_07 J_30_08 120 200 130 0 Open + P_H_01331 J_30_08 J_30_09 120 200 130 0 Open + P_H_01332 J_30_09 J_30_10 120 200 130 0 Open + P_H_01333 J_30_10 J_30_11 120 200 130 0 Open + P_H_01334 J_30_11 J_30_12 120 200 130 0 Open + P_H_01335 J_30_12 J_30_13 120 200 130 0 Open + P_H_01336 J_30_13 J_30_14 120 200 130 0 Open + P_H_01337 J_30_14 J_30_15 120 200 130 0 Open + P_H_01338 J_30_15 J_30_16 120 200 130 0 Open + P_H_01339 J_30_16 J_30_17 120 200 130 0 Open + P_H_01340 J_30_17 J_30_18 120 200 130 0 Open + P_H_01341 J_30_18 J_30_19 120 200 130 0 Open + P_H_01342 J_30_19 J_30_20 120 200 130 0 Open + P_H_01343 J_30_20 J_30_21 120 200 130 0 Open + P_H_01344 J_30_21 J_30_22 120 200 130 0 Open + P_H_01345 J_30_22 J_30_23 120 200 130 0 Open + P_H_01346 J_30_23 J_30_24 120 200 130 0 Open + P_H_01347 J_30_24 J_30_25 120 200 130 0 Open + P_H_01348 J_30_25 J_30_26 120 200 130 0 Open + P_H_01349 J_30_26 J_30_27 120 200 130 0 Open + P_H_01350 J_30_27 J_30_28 120 200 130 0 Open + P_H_01351 J_30_28 J_30_29 120 200 130 0 Open + P_H_01352 J_30_29 J_30_30 120 200 130 0 Open + P_H_01353 J_30_30 J_30_31 120 200 130 0 Open + P_H_01354 J_30_31 J_30_32 120 200 130 0 Open + P_H_01355 J_30_32 J_30_33 120 200 130 0 Open + P_H_01356 J_30_33 J_30_34 120 200 130 0 Open + P_H_01357 J_30_34 J_30_35 120 200 130 0 Open + P_H_01358 J_30_35 J_30_36 120 200 130 0 Open + P_H_01359 J_30_36 J_30_37 120 200 130 0 Open + P_H_01360 J_30_37 J_30_38 120 200 130 0 Open + P_H_01361 J_30_38 J_30_39 120 200 130 0 Open + P_H_01362 J_30_39 J_30_40 120 200 130 0 Open + P_H_01363 J_30_40 J_30_41 120 200 130 0 Open + P_H_01364 J_30_41 J_30_42 120 200 130 0 Open + P_H_01365 J_30_42 J_30_43 120 200 130 0 Open + P_H_01366 J_30_43 J_30_44 120 200 130 0 Open + P_H_01367 J_31_00 J_31_01 120 200 130 0 Open + P_H_01368 J_31_01 J_31_02 120 200 130 0 Open + P_H_01369 J_31_02 J_31_03 120 200 130 0 Open + P_H_01370 J_31_03 J_31_04 120 200 130 0 Open + P_H_01371 J_31_04 J_31_05 120 200 130 0 Open + P_H_01372 J_31_05 J_31_06 120 200 130 0 Open + P_H_01373 J_31_06 J_31_07 120 200 130 0 Open + P_H_01374 J_31_07 J_31_08 120 200 130 0 Open + P_H_01375 J_31_08 J_31_09 120 200 130 0 Open + P_H_01376 J_31_09 J_31_10 120 200 130 0 Open + P_H_01377 J_31_10 J_31_11 120 200 130 0 Open + P_H_01378 J_31_11 J_31_12 120 200 130 0 Open + P_H_01379 J_31_12 J_31_13 120 200 130 0 Open + P_H_01380 J_31_13 J_31_14 120 200 130 0 Open + P_H_01381 J_31_14 J_31_15 120 200 130 0 Open + P_H_01382 J_31_15 J_31_16 120 200 130 0 Open + P_H_01383 J_31_16 J_31_17 120 200 130 0 Open + P_H_01384 J_31_17 J_31_18 120 200 130 0 Open + P_H_01385 J_31_18 J_31_19 120 200 130 0 Open + P_H_01386 J_31_19 J_31_20 120 200 130 0 Open + P_H_01387 J_31_20 J_31_21 120 200 130 0 Open + P_H_01388 J_31_21 J_31_22 120 200 130 0 Open + P_H_01389 J_31_22 J_31_23 120 200 130 0 Open + P_H_01390 J_31_23 J_31_24 120 200 130 0 Open + P_H_01391 J_31_24 J_31_25 120 200 130 0 Open + P_H_01392 J_31_25 J_31_26 120 200 130 0 Open + P_H_01393 J_31_26 J_31_27 120 200 130 0 Open + P_H_01394 J_31_27 J_31_28 120 200 130 0 Open + P_H_01395 J_31_28 J_31_29 120 200 130 0 Open + P_H_01396 J_31_29 J_31_30 120 200 130 0 Open + P_H_01397 J_31_30 J_31_31 120 200 130 0 Open + P_H_01398 J_31_31 J_31_32 120 200 130 0 Open + P_H_01399 J_31_32 J_31_33 120 200 130 0 Open + P_H_01400 J_31_33 J_31_34 120 200 130 0 Open + P_H_01401 J_31_34 J_31_35 120 200 130 0 Open + P_H_01402 J_31_35 J_31_36 120 200 130 0 Open + P_H_01403 J_31_36 J_31_37 120 200 130 0 Open + P_H_01404 J_31_37 J_31_38 120 200 130 0 Open + P_H_01405 J_31_38 J_31_39 120 200 130 0 Open + P_H_01406 J_31_39 J_31_40 120 200 130 0 Open + P_H_01407 J_31_40 J_31_41 120 200 130 0 Open + P_H_01408 J_31_41 J_31_42 120 200 130 0 Open + P_H_01409 J_31_42 J_31_43 120 200 130 0 Open + P_H_01410 J_31_43 J_31_44 120 200 130 0 Open + P_H_01411 J_32_00 J_32_01 120 200 130 0 Open + P_H_01412 J_32_01 J_32_02 120 200 130 0 Open + P_H_01413 J_32_02 J_32_03 120 200 130 0 Open + P_H_01414 J_32_03 J_32_04 120 200 130 0 Open + P_H_01415 J_32_04 J_32_05 120 200 130 0 Open + P_H_01416 J_32_05 J_32_06 120 200 130 0 Open + P_H_01417 J_32_06 J_32_07 120 200 130 0 Open + P_H_01418 J_32_07 J_32_08 120 200 130 0 Open + P_H_01419 J_32_08 J_32_09 120 200 130 0 Open + P_H_01420 J_32_09 J_32_10 120 200 130 0 Open + P_H_01421 J_32_10 J_32_11 120 200 130 0 Open + P_H_01422 J_32_11 J_32_12 120 200 130 0 Open + P_H_01423 J_32_12 J_32_13 120 200 130 0 Open + P_H_01424 J_32_13 J_32_14 120 200 130 0 Open + P_H_01425 J_32_14 J_32_15 120 200 130 0 Open + P_H_01426 J_32_15 J_32_16 120 200 130 0 Open + P_H_01427 J_32_16 J_32_17 120 200 130 0 Open + P_H_01428 J_32_17 J_32_18 120 200 130 0 Open + P_H_01429 J_32_18 J_32_19 120 200 130 0 Open + P_H_01430 J_32_19 J_32_20 120 200 130 0 Open + P_H_01431 J_32_20 J_32_21 120 200 130 0 Open + P_H_01432 J_32_21 J_32_22 120 200 130 0 Open + P_H_01433 J_32_22 J_32_23 120 200 130 0 Open + P_H_01434 J_32_23 J_32_24 120 200 130 0 Open + P_H_01435 J_32_24 J_32_25 120 200 130 0 Open + P_H_01436 J_32_25 J_32_26 120 200 130 0 Open + P_H_01437 J_32_26 J_32_27 120 200 130 0 Open + P_H_01438 J_32_27 J_32_28 120 200 130 0 Open + P_H_01439 J_32_28 J_32_29 120 200 130 0 Open + P_H_01440 J_32_29 J_32_30 120 200 130 0 Open + P_H_01441 J_32_30 J_32_31 120 200 130 0 Open + P_H_01442 J_32_31 J_32_32 120 200 130 0 Open + P_H_01443 J_32_32 J_32_33 120 200 130 0 Open + P_H_01444 J_32_33 J_32_34 120 200 130 0 Open + P_H_01445 J_32_34 J_32_35 120 200 130 0 Open + P_H_01446 J_32_35 J_32_36 120 200 130 0 Open + P_H_01447 J_32_36 J_32_37 120 200 130 0 Open + P_H_01448 J_32_37 J_32_38 120 200 130 0 Open + P_H_01449 J_32_38 J_32_39 120 200 130 0 Open + P_H_01450 J_32_39 J_32_40 120 200 130 0 Open + P_H_01451 J_32_40 J_32_41 120 200 130 0 Open + P_H_01452 J_32_41 J_32_42 120 200 130 0 Open + P_H_01453 J_32_42 J_32_43 120 200 130 0 Open + P_H_01454 J_32_43 J_32_44 120 200 130 0 Open + P_H_01455 J_33_00 J_33_01 120 200 130 0 Open + P_H_01456 J_33_01 J_33_02 120 200 130 0 Open + P_H_01457 J_33_02 J_33_03 120 200 130 0 Open + P_H_01458 J_33_03 J_33_04 120 200 130 0 Open + P_H_01459 J_33_04 J_33_05 120 200 130 0 Open + P_H_01460 J_33_05 J_33_06 120 200 130 0 Open + P_H_01461 J_33_06 J_33_07 120 200 130 0 Open + P_H_01462 J_33_07 J_33_08 120 200 130 0 Open + P_H_01463 J_33_08 J_33_09 120 200 130 0 Open + P_H_01464 J_33_09 J_33_10 120 200 130 0 Open + P_H_01465 J_33_10 J_33_11 120 200 130 0 Open + P_H_01466 J_33_11 J_33_12 120 200 130 0 Open + P_H_01467 J_33_12 J_33_13 120 200 130 0 Open + P_H_01468 J_33_13 J_33_14 120 200 130 0 Open + P_H_01469 J_33_14 J_33_15 120 200 130 0 Open + P_H_01470 J_33_15 J_33_16 120 200 130 0 Open + P_H_01471 J_33_16 J_33_17 120 200 130 0 Open + P_H_01472 J_33_17 J_33_18 120 200 130 0 Open + P_H_01473 J_33_18 J_33_19 120 200 130 0 Open + P_H_01474 J_33_19 J_33_20 120 200 130 0 Open + P_H_01475 J_33_20 J_33_21 120 200 130 0 Open + P_H_01476 J_33_21 J_33_22 120 200 130 0 Open + P_H_01477 J_33_22 J_33_23 120 200 130 0 Open + P_H_01478 J_33_23 J_33_24 120 200 130 0 Open + P_H_01479 J_33_24 J_33_25 120 200 130 0 Open + P_H_01480 J_33_25 J_33_26 120 200 130 0 Open + P_H_01481 J_33_26 J_33_27 120 200 130 0 Open + P_H_01482 J_33_27 J_33_28 120 200 130 0 Open + P_H_01483 J_33_28 J_33_29 120 200 130 0 Open + P_H_01484 J_33_29 J_33_30 120 200 130 0 Open + P_H_01485 J_33_30 J_33_31 120 200 130 0 Open + P_H_01486 J_33_31 J_33_32 120 200 130 0 Open + P_H_01487 J_33_32 J_33_33 120 200 130 0 Open + P_H_01488 J_33_33 J_33_34 120 200 130 0 Open + P_H_01489 J_33_34 J_33_35 120 200 130 0 Open + P_H_01490 J_33_35 J_33_36 120 200 130 0 Open + P_H_01491 J_33_36 J_33_37 120 200 130 0 Open + P_H_01492 J_33_37 J_33_38 120 200 130 0 Open + P_H_01493 J_33_38 J_33_39 120 200 130 0 Open + P_H_01494 J_33_39 J_33_40 120 200 130 0 Open + P_H_01495 J_33_40 J_33_41 120 200 130 0 Open + P_H_01496 J_33_41 J_33_42 120 200 130 0 Open + P_H_01497 J_33_42 J_33_43 120 200 130 0 Open + P_H_01498 J_33_43 J_33_44 120 200 130 0 Open + P_H_01499 J_34_00 J_34_01 120 200 130 0 Open + P_H_01500 J_34_01 J_34_02 120 200 130 0 Open + P_H_01501 J_34_02 J_34_03 120 200 130 0 Open + P_H_01502 J_34_03 J_34_04 120 200 130 0 Open + P_H_01503 J_34_04 J_34_05 120 200 130 0 Open + P_H_01504 J_34_05 J_34_06 120 200 130 0 Open + P_H_01505 J_34_06 J_34_07 120 200 130 0 Open + P_H_01506 J_34_07 J_34_08 120 200 130 0 Open + P_H_01507 J_34_08 J_34_09 120 200 130 0 Open + P_H_01508 J_34_09 J_34_10 120 200 130 0 Open + P_H_01509 J_34_10 J_34_11 120 200 130 0 Open + P_H_01510 J_34_11 J_34_12 120 200 130 0 Open + P_H_01511 J_34_12 J_34_13 120 200 130 0 Open + P_H_01512 J_34_13 J_34_14 120 200 130 0 Open + P_H_01513 J_34_14 J_34_15 120 200 130 0 Open + P_H_01514 J_34_15 J_34_16 120 200 130 0 Open + P_H_01515 J_34_16 J_34_17 120 200 130 0 Open + P_H_01516 J_34_17 J_34_18 120 200 130 0 Open + P_H_01517 J_34_18 J_34_19 120 200 130 0 Open + P_H_01518 J_34_19 J_34_20 120 200 130 0 Open + P_H_01519 J_34_20 J_34_21 120 200 130 0 Open + P_H_01520 J_34_21 J_34_22 120 200 130 0 Open + P_H_01521 J_34_22 J_34_23 120 200 130 0 Open + P_H_01522 J_34_23 J_34_24 120 200 130 0 Open + P_H_01523 J_34_24 J_34_25 120 200 130 0 Open + P_H_01524 J_34_25 J_34_26 120 200 130 0 Open + P_H_01525 J_34_26 J_34_27 120 200 130 0 Open + P_H_01526 J_34_27 J_34_28 120 200 130 0 Open + P_H_01527 J_34_28 J_34_29 120 200 130 0 Open + P_H_01528 J_34_29 J_34_30 120 200 130 0 Open + P_H_01529 J_34_30 J_34_31 120 200 130 0 Open + P_H_01530 J_34_31 J_34_32 120 200 130 0 Open + P_H_01531 J_34_32 J_34_33 120 200 130 0 Open + P_H_01532 J_34_33 J_34_34 120 200 130 0 Open + P_H_01533 J_34_34 J_34_35 120 200 130 0 Open + P_H_01534 J_34_35 J_34_36 120 200 130 0 Open + P_H_01535 J_34_36 J_34_37 120 200 130 0 Open + P_H_01536 J_34_37 J_34_38 120 200 130 0 Open + P_H_01537 J_34_38 J_34_39 120 200 130 0 Open + P_H_01538 J_34_39 J_34_40 120 200 130 0 Open + P_H_01539 J_34_40 J_34_41 120 200 130 0 Open + P_H_01540 J_34_41 J_34_42 120 200 130 0 Open + P_H_01541 J_34_42 J_34_43 120 200 130 0 Open + P_H_01542 J_34_43 J_34_44 120 200 130 0 Open + P_H_01543 J_35_00 J_35_01 120 200 130 0 Open + P_H_01544 J_35_01 J_35_02 120 200 130 0 Open + P_H_01545 J_35_02 J_35_03 120 200 130 0 Open + P_H_01546 J_35_03 J_35_04 120 200 130 0 Open + P_H_01547 J_35_04 J_35_05 120 200 130 0 Open + P_H_01548 J_35_05 J_35_06 120 200 130 0 Open + P_H_01549 J_35_06 J_35_07 120 200 130 0 Open + P_H_01550 J_35_07 J_35_08 120 200 130 0 Open + P_H_01551 J_35_08 J_35_09 120 200 130 0 Open + P_H_01552 J_35_09 J_35_10 120 200 130 0 Open + P_H_01553 J_35_10 J_35_11 120 200 130 0 Open + P_H_01554 J_35_11 J_35_12 120 200 130 0 Open + P_H_01555 J_35_12 J_35_13 120 200 130 0 Open + P_H_01556 J_35_13 J_35_14 120 200 130 0 Open + P_H_01557 J_35_14 J_35_15 120 200 130 0 Open + P_H_01558 J_35_15 J_35_16 120 200 130 0 Open + P_H_01559 J_35_16 J_35_17 120 200 130 0 Open + P_H_01560 J_35_17 J_35_18 120 200 130 0 Open + P_H_01561 J_35_18 J_35_19 120 200 130 0 Open + P_H_01562 J_35_19 J_35_20 120 200 130 0 Open + P_H_01563 J_35_20 J_35_21 120 200 130 0 Open + P_H_01564 J_35_21 J_35_22 120 200 130 0 Open + P_H_01565 J_35_22 J_35_23 120 200 130 0 Open + P_H_01566 J_35_23 J_35_24 120 200 130 0 Open + P_H_01567 J_35_24 J_35_25 120 200 130 0 Open + P_H_01568 J_35_25 J_35_26 120 200 130 0 Open + P_H_01569 J_35_26 J_35_27 120 200 130 0 Open + P_H_01570 J_35_27 J_35_28 120 200 130 0 Open + P_H_01571 J_35_28 J_35_29 120 200 130 0 Open + P_H_01572 J_35_29 J_35_30 120 200 130 0 Open + P_H_01573 J_35_30 J_35_31 120 200 130 0 Open + P_H_01574 J_35_31 J_35_32 120 200 130 0 Open + P_H_01575 J_35_32 J_35_33 120 200 130 0 Open + P_H_01576 J_35_33 J_35_34 120 200 130 0 Open + P_H_01577 J_35_34 J_35_35 120 200 130 0 Open + P_H_01578 J_35_35 J_35_36 120 200 130 0 Open + P_H_01579 J_35_36 J_35_37 120 200 130 0 Open + P_H_01580 J_35_37 J_35_38 120 200 130 0 Open + P_H_01581 J_35_38 J_35_39 120 200 130 0 Open + P_H_01582 J_35_39 J_35_40 120 200 130 0 Open + P_H_01583 J_35_40 J_35_41 120 200 130 0 Open + P_H_01584 J_35_41 J_35_42 120 200 130 0 Open + P_H_01585 J_35_42 J_35_43 120 200 130 0 Open + P_H_01586 J_35_43 J_35_44 120 200 130 0 Open + P_H_01587 J_36_00 J_36_01 120 200 130 0 Open + P_H_01588 J_36_01 J_36_02 120 200 130 0 Open + P_H_01589 J_36_02 J_36_03 120 200 130 0 Open + P_H_01590 J_36_03 J_36_04 120 200 130 0 Open + P_H_01591 J_36_04 J_36_05 120 200 130 0 Open + P_H_01592 J_36_05 J_36_06 120 200 130 0 Open + P_H_01593 J_36_06 J_36_07 120 200 130 0 Open + P_H_01594 J_36_07 J_36_08 120 200 130 0 Open + P_H_01595 J_36_08 J_36_09 120 200 130 0 Open + P_H_01596 J_36_09 J_36_10 120 200 130 0 Open + P_H_01597 J_36_10 J_36_11 120 200 130 0 Open + P_H_01598 J_36_11 J_36_12 120 200 130 0 Open + P_H_01599 J_36_12 J_36_13 120 200 130 0 Open + P_H_01600 J_36_13 J_36_14 120 200 130 0 Open + P_H_01601 J_36_14 J_36_15 120 200 130 0 Open + P_H_01602 J_36_15 J_36_16 120 200 130 0 Open + P_H_01603 J_36_16 J_36_17 120 200 130 0 Open + P_H_01604 J_36_17 J_36_18 120 200 130 0 Open + P_H_01605 J_36_18 J_36_19 120 200 130 0 Open + P_H_01606 J_36_19 J_36_20 120 200 130 0 Open + P_H_01607 J_36_20 J_36_21 120 200 130 0 Open + P_H_01608 J_36_21 J_36_22 120 200 130 0 Open + P_H_01609 J_36_22 J_36_23 120 200 130 0 Open + P_H_01610 J_36_23 J_36_24 120 200 130 0 Open + P_H_01611 J_36_24 J_36_25 120 200 130 0 Open + P_H_01612 J_36_25 J_36_26 120 200 130 0 Open + P_H_01613 J_36_26 J_36_27 120 200 130 0 Open + P_H_01614 J_36_27 J_36_28 120 200 130 0 Open + P_H_01615 J_36_28 J_36_29 120 200 130 0 Open + P_H_01616 J_36_29 J_36_30 120 200 130 0 Open + P_H_01617 J_36_30 J_36_31 120 200 130 0 Open + P_H_01618 J_36_31 J_36_32 120 200 130 0 Open + P_H_01619 J_36_32 J_36_33 120 200 130 0 Open + P_H_01620 J_36_33 J_36_34 120 200 130 0 Open + P_H_01621 J_36_34 J_36_35 120 200 130 0 Open + P_H_01622 J_36_35 J_36_36 120 200 130 0 Open + P_H_01623 J_36_36 J_36_37 120 200 130 0 Open + P_H_01624 J_36_37 J_36_38 120 200 130 0 Open + P_H_01625 J_36_38 J_36_39 120 200 130 0 Open + P_H_01626 J_36_39 J_36_40 120 200 130 0 Open + P_H_01627 J_36_40 J_36_41 120 200 130 0 Open + P_H_01628 J_36_41 J_36_42 120 200 130 0 Open + P_H_01629 J_36_42 J_36_43 120 200 130 0 Open + P_H_01630 J_36_43 J_36_44 120 200 130 0 Open + P_H_01631 J_37_00 J_37_01 120 200 130 0 Open + P_H_01632 J_37_01 J_37_02 120 200 130 0 Open + P_H_01633 J_37_02 J_37_03 120 200 130 0 Open + P_H_01634 J_37_03 J_37_04 120 200 130 0 Open + P_H_01635 J_37_04 J_37_05 120 200 130 0 Open + P_H_01636 J_37_05 J_37_06 120 200 130 0 Open + P_H_01637 J_37_06 J_37_07 120 200 130 0 Open + P_H_01638 J_37_07 J_37_08 120 200 130 0 Open + P_H_01639 J_37_08 J_37_09 120 200 130 0 Open + P_H_01640 J_37_09 J_37_10 120 200 130 0 Open + P_H_01641 J_37_10 J_37_11 120 200 130 0 Open + P_H_01642 J_37_11 J_37_12 120 200 130 0 Open + P_H_01643 J_37_12 J_37_13 120 200 130 0 Open + P_H_01644 J_37_13 J_37_14 120 200 130 0 Open + P_H_01645 J_37_14 J_37_15 120 200 130 0 Open + P_H_01646 J_37_15 J_37_16 120 200 130 0 Open + P_H_01647 J_37_16 J_37_17 120 200 130 0 Open + P_H_01648 J_37_17 J_37_18 120 200 130 0 Open + P_H_01649 J_37_18 J_37_19 120 200 130 0 Open + P_H_01650 J_37_19 J_37_20 120 200 130 0 Open + P_H_01651 J_37_20 J_37_21 120 200 130 0 Open + P_H_01652 J_37_21 J_37_22 120 200 130 0 Open + P_H_01653 J_37_22 J_37_23 120 200 130 0 Open + P_H_01654 J_37_23 J_37_24 120 200 130 0 Open + P_H_01655 J_37_24 J_37_25 120 200 130 0 Open + P_H_01656 J_37_25 J_37_26 120 200 130 0 Open + P_H_01657 J_37_26 J_37_27 120 200 130 0 Open + P_H_01658 J_37_27 J_37_28 120 200 130 0 Open + P_H_01659 J_37_28 J_37_29 120 200 130 0 Open + P_H_01660 J_37_29 J_37_30 120 200 130 0 Open + P_H_01661 J_37_30 J_37_31 120 200 130 0 Open + P_H_01662 J_37_31 J_37_32 120 200 130 0 Open + P_H_01663 J_37_32 J_37_33 120 200 130 0 Open + P_H_01664 J_37_33 J_37_34 120 200 130 0 Open + P_H_01665 J_37_34 J_37_35 120 200 130 0 Open + P_H_01666 J_37_35 J_37_36 120 200 130 0 Open + P_H_01667 J_37_36 J_37_37 120 200 130 0 Open + P_H_01668 J_37_37 J_37_38 120 200 130 0 Open + P_H_01669 J_37_38 J_37_39 120 200 130 0 Open + P_H_01670 J_37_39 J_37_40 120 200 130 0 Open + P_H_01671 J_37_40 J_37_41 120 200 130 0 Open + P_H_01672 J_37_41 J_37_42 120 200 130 0 Open + P_H_01673 J_37_42 J_37_43 120 200 130 0 Open + P_H_01674 J_37_43 J_37_44 120 200 130 0 Open + P_H_01675 J_38_00 J_38_01 120 200 130 0 Open + P_H_01676 J_38_01 J_38_02 120 200 130 0 Open + P_H_01677 J_38_02 J_38_03 120 200 130 0 Open + P_H_01678 J_38_03 J_38_04 120 200 130 0 Open + P_H_01679 J_38_04 J_38_05 120 200 130 0 Open + P_H_01680 J_38_05 J_38_06 120 200 130 0 Open + P_H_01681 J_38_06 J_38_07 120 200 130 0 Open + P_H_01682 J_38_07 J_38_08 120 200 130 0 Open + P_H_01683 J_38_08 J_38_09 120 200 130 0 Open + P_H_01684 J_38_09 J_38_10 120 200 130 0 Open + P_H_01685 J_38_10 J_38_11 120 200 130 0 Open + P_H_01686 J_38_11 J_38_12 120 200 130 0 Open + P_H_01687 J_38_12 J_38_13 120 200 130 0 Open + P_H_01688 J_38_13 J_38_14 120 200 130 0 Open + P_H_01689 J_38_14 J_38_15 120 200 130 0 Open + P_H_01690 J_38_15 J_38_16 120 200 130 0 Open + P_H_01691 J_38_16 J_38_17 120 200 130 0 Open + P_H_01692 J_38_17 J_38_18 120 200 130 0 Open + P_H_01693 J_38_18 J_38_19 120 200 130 0 Open + P_H_01694 J_38_19 J_38_20 120 200 130 0 Open + P_H_01695 J_38_20 J_38_21 120 200 130 0 Open + P_H_01696 J_38_21 J_38_22 120 200 130 0 Open + P_H_01697 J_38_22 J_38_23 120 200 130 0 Open + P_H_01698 J_38_23 J_38_24 120 200 130 0 Open + P_H_01699 J_38_24 J_38_25 120 200 130 0 Open + P_H_01700 J_38_25 J_38_26 120 200 130 0 Open + P_H_01701 J_38_26 J_38_27 120 200 130 0 Open + P_H_01702 J_38_27 J_38_28 120 200 130 0 Open + P_H_01703 J_38_28 J_38_29 120 200 130 0 Open + P_H_01704 J_38_29 J_38_30 120 200 130 0 Open + P_H_01705 J_38_30 J_38_31 120 200 130 0 Open + P_H_01706 J_38_31 J_38_32 120 200 130 0 Open + P_H_01707 J_38_32 J_38_33 120 200 130 0 Open + P_H_01708 J_38_33 J_38_34 120 200 130 0 Open + P_H_01709 J_38_34 J_38_35 120 200 130 0 Open + P_H_01710 J_38_35 J_38_36 120 200 130 0 Open + P_H_01711 J_38_36 J_38_37 120 200 130 0 Open + P_H_01712 J_38_37 J_38_38 120 200 130 0 Open + P_H_01713 J_38_38 J_38_39 120 200 130 0 Open + P_H_01714 J_38_39 J_38_40 120 200 130 0 Open + P_H_01715 J_38_40 J_38_41 120 200 130 0 Open + P_H_01716 J_38_41 J_38_42 120 200 130 0 Open + P_H_01717 J_38_42 J_38_43 120 200 130 0 Open + P_H_01718 J_38_43 J_38_44 120 200 130 0 Open + P_H_01719 J_39_00 J_39_01 120 200 130 0 Open + P_H_01720 J_39_01 J_39_02 120 200 130 0 Open + P_H_01721 J_39_02 J_39_03 120 200 130 0 Open + P_H_01722 J_39_03 J_39_04 120 200 130 0 Open + P_H_01723 J_39_04 J_39_05 120 200 130 0 Open + P_H_01724 J_39_05 J_39_06 120 200 130 0 Open + P_H_01725 J_39_06 J_39_07 120 200 130 0 Open + P_H_01726 J_39_07 J_39_08 120 200 130 0 Open + P_H_01727 J_39_08 J_39_09 120 200 130 0 Open + P_H_01728 J_39_09 J_39_10 120 200 130 0 Open + P_H_01729 J_39_10 J_39_11 120 200 130 0 Open + P_H_01730 J_39_11 J_39_12 120 200 130 0 Open + P_H_01731 J_39_12 J_39_13 120 200 130 0 Open + P_H_01732 J_39_13 J_39_14 120 200 130 0 Open + P_H_01733 J_39_14 J_39_15 120 200 130 0 Open + P_H_01734 J_39_15 J_39_16 120 200 130 0 Open + P_H_01735 J_39_16 J_39_17 120 200 130 0 Open + P_H_01736 J_39_17 J_39_18 120 200 130 0 Open + P_H_01737 J_39_18 J_39_19 120 200 130 0 Open + P_H_01738 J_39_19 J_39_20 120 200 130 0 Open + P_H_01739 J_39_20 J_39_21 120 200 130 0 Open + P_H_01740 J_39_21 J_39_22 120 200 130 0 Open + P_H_01741 J_39_22 J_39_23 120 200 130 0 Open + P_H_01742 J_39_23 J_39_24 120 200 130 0 Open + P_H_01743 J_39_24 J_39_25 120 200 130 0 Open + P_H_01744 J_39_25 J_39_26 120 200 130 0 Open + P_H_01745 J_39_26 J_39_27 120 200 130 0 Open + P_H_01746 J_39_27 J_39_28 120 200 130 0 Open + P_H_01747 J_39_28 J_39_29 120 200 130 0 Open + P_H_01748 J_39_29 J_39_30 120 200 130 0 Open + P_H_01749 J_39_30 J_39_31 120 200 130 0 Open + P_H_01750 J_39_31 J_39_32 120 200 130 0 Open + P_H_01751 J_39_32 J_39_33 120 200 130 0 Open + P_H_01752 J_39_33 J_39_34 120 200 130 0 Open + P_H_01753 J_39_34 J_39_35 120 200 130 0 Open + P_H_01754 J_39_35 J_39_36 120 200 130 0 Open + P_H_01755 J_39_36 J_39_37 120 200 130 0 Open + P_H_01756 J_39_37 J_39_38 120 200 130 0 Open + P_H_01757 J_39_38 J_39_39 120 200 130 0 Open + P_H_01758 J_39_39 J_39_40 120 200 130 0 Open + P_H_01759 J_39_40 J_39_41 120 200 130 0 Open + P_H_01760 J_39_41 J_39_42 120 200 130 0 Open + P_H_01761 J_39_42 J_39_43 120 200 130 0 Open + P_H_01762 J_39_43 J_39_44 120 200 130 0 Open + P_H_01763 J_40_00 J_40_01 120 200 130 0 Open + P_H_01764 J_40_01 J_40_02 120 200 130 0 Open + P_H_01765 J_40_02 J_40_03 120 200 130 0 Open + P_H_01766 J_40_03 J_40_04 120 200 130 0 Open + P_H_01767 J_40_04 J_40_05 120 200 130 0 Open + P_H_01768 J_40_05 J_40_06 120 200 130 0 Open + P_H_01769 J_40_06 J_40_07 120 200 130 0 Open + P_H_01770 J_40_07 J_40_08 120 200 130 0 Open + P_H_01771 J_40_08 J_40_09 120 200 130 0 Open + P_H_01772 J_40_09 J_40_10 120 200 130 0 Open + P_H_01773 J_40_10 J_40_11 120 200 130 0 Open + P_H_01774 J_40_11 J_40_12 120 200 130 0 Open + P_H_01775 J_40_12 J_40_13 120 200 130 0 Open + P_H_01776 J_40_13 J_40_14 120 200 130 0 Open + P_H_01777 J_40_14 J_40_15 120 200 130 0 Open + P_H_01778 J_40_15 J_40_16 120 200 130 0 Open + P_H_01779 J_40_16 J_40_17 120 200 130 0 Open + P_H_01780 J_40_17 J_40_18 120 200 130 0 Open + P_H_01781 J_40_18 J_40_19 120 200 130 0 Open + P_H_01782 J_40_19 J_40_20 120 200 130 0 Open + P_H_01783 J_40_20 J_40_21 120 200 130 0 Open + P_H_01784 J_40_21 J_40_22 120 200 130 0 Open + P_H_01785 J_40_22 J_40_23 120 200 130 0 Open + P_H_01786 J_40_23 J_40_24 120 200 130 0 Open + P_H_01787 J_40_24 J_40_25 120 200 130 0 Open + P_H_01788 J_40_25 J_40_26 120 200 130 0 Open + P_H_01789 J_40_26 J_40_27 120 200 130 0 Open + P_H_01790 J_40_27 J_40_28 120 200 130 0 Open + P_H_01791 J_40_28 J_40_29 120 200 130 0 Open + P_H_01792 J_40_29 J_40_30 120 200 130 0 Open + P_H_01793 J_40_30 J_40_31 120 200 130 0 Open + P_H_01794 J_40_31 J_40_32 120 200 130 0 Open + P_H_01795 J_40_32 J_40_33 120 200 130 0 Open + P_H_01796 J_40_33 J_40_34 120 200 130 0 Open + P_H_01797 J_40_34 J_40_35 120 200 130 0 Open + P_H_01798 J_40_35 J_40_36 120 200 130 0 Open + P_H_01799 J_40_36 J_40_37 120 200 130 0 Open + P_H_01800 J_40_37 J_40_38 120 200 130 0 Open + P_H_01801 J_40_38 J_40_39 120 200 130 0 Open + P_H_01802 J_40_39 J_40_40 120 200 130 0 Open + P_H_01803 J_40_40 J_40_41 120 200 130 0 Open + P_H_01804 J_40_41 J_40_42 120 200 130 0 Open + P_H_01805 J_40_42 J_40_43 120 200 130 0 Open + P_H_01806 J_40_43 J_40_44 120 200 130 0 Open + P_H_01807 J_41_00 J_41_01 120 200 130 0 Open + P_H_01808 J_41_01 J_41_02 120 200 130 0 Open + P_H_01809 J_41_02 J_41_03 120 200 130 0 Open + P_H_01810 J_41_03 J_41_04 120 200 130 0 Open + P_H_01811 J_41_04 J_41_05 120 200 130 0 Open + P_H_01812 J_41_05 J_41_06 120 200 130 0 Open + P_H_01813 J_41_06 J_41_07 120 200 130 0 Open + P_H_01814 J_41_07 J_41_08 120 200 130 0 Open + P_H_01815 J_41_08 J_41_09 120 200 130 0 Open + P_H_01816 J_41_09 J_41_10 120 200 130 0 Open + P_H_01817 J_41_10 J_41_11 120 200 130 0 Open + P_H_01818 J_41_11 J_41_12 120 200 130 0 Open + P_H_01819 J_41_12 J_41_13 120 200 130 0 Open + P_H_01820 J_41_13 J_41_14 120 200 130 0 Open + P_H_01821 J_41_14 J_41_15 120 200 130 0 Open + P_H_01822 J_41_15 J_41_16 120 200 130 0 Open + P_H_01823 J_41_16 J_41_17 120 200 130 0 Open + P_H_01824 J_41_17 J_41_18 120 200 130 0 Open + P_H_01825 J_41_18 J_41_19 120 200 130 0 Open + P_H_01826 J_41_19 J_41_20 120 200 130 0 Open + P_H_01827 J_41_20 J_41_21 120 200 130 0 Open + P_H_01828 J_41_21 J_41_22 120 200 130 0 Open + P_H_01829 J_41_22 J_41_23 120 200 130 0 Open + P_H_01830 J_41_23 J_41_24 120 200 130 0 Open + P_H_01831 J_41_24 J_41_25 120 200 130 0 Open + P_H_01832 J_41_25 J_41_26 120 200 130 0 Open + P_H_01833 J_41_26 J_41_27 120 200 130 0 Open + P_H_01834 J_41_27 J_41_28 120 200 130 0 Open + P_H_01835 J_41_28 J_41_29 120 200 130 0 Open + P_H_01836 J_41_29 J_41_30 120 200 130 0 Open + P_H_01837 J_41_30 J_41_31 120 200 130 0 Open + P_H_01838 J_41_31 J_41_32 120 200 130 0 Open + P_H_01839 J_41_32 J_41_33 120 200 130 0 Open + P_H_01840 J_41_33 J_41_34 120 200 130 0 Open + P_H_01841 J_41_34 J_41_35 120 200 130 0 Open + P_H_01842 J_41_35 J_41_36 120 200 130 0 Open + P_H_01843 J_41_36 J_41_37 120 200 130 0 Open + P_H_01844 J_41_37 J_41_38 120 200 130 0 Open + P_H_01845 J_41_38 J_41_39 120 200 130 0 Open + P_H_01846 J_41_39 J_41_40 120 200 130 0 Open + P_H_01847 J_41_40 J_41_41 120 200 130 0 Open + P_H_01848 J_41_41 J_41_42 120 200 130 0 Open + P_H_01849 J_41_42 J_41_43 120 200 130 0 Open + P_H_01850 J_41_43 J_41_44 120 200 130 0 Open + P_H_01851 J_42_00 J_42_01 120 200 130 0 Open + P_H_01852 J_42_01 J_42_02 120 200 130 0 Open + P_H_01853 J_42_02 J_42_03 120 200 130 0 Open + P_H_01854 J_42_03 J_42_04 120 200 130 0 Open + P_H_01855 J_42_04 J_42_05 120 200 130 0 Open + P_H_01856 J_42_05 J_42_06 120 200 130 0 Open + P_H_01857 J_42_06 J_42_07 120 200 130 0 Open + P_H_01858 J_42_07 J_42_08 120 200 130 0 Open + P_H_01859 J_42_08 J_42_09 120 200 130 0 Open + P_H_01860 J_42_09 J_42_10 120 200 130 0 Open + P_H_01861 J_42_10 J_42_11 120 200 130 0 Open + P_H_01862 J_42_11 J_42_12 120 200 130 0 Open + P_H_01863 J_42_12 J_42_13 120 200 130 0 Open + P_H_01864 J_42_13 J_42_14 120 200 130 0 Open + P_H_01865 J_42_14 J_42_15 120 200 130 0 Open + P_H_01866 J_42_15 J_42_16 120 200 130 0 Open + P_H_01867 J_42_16 J_42_17 120 200 130 0 Open + P_H_01868 J_42_17 J_42_18 120 200 130 0 Open + P_H_01869 J_42_18 J_42_19 120 200 130 0 Open + P_H_01870 J_42_19 J_42_20 120 200 130 0 Open + P_H_01871 J_42_20 J_42_21 120 200 130 0 Open + P_H_01872 J_42_21 J_42_22 120 200 130 0 Open + P_H_01873 J_42_22 J_42_23 120 200 130 0 Open + P_H_01874 J_42_23 J_42_24 120 200 130 0 Open + P_H_01875 J_42_24 J_42_25 120 200 130 0 Open + P_H_01876 J_42_25 J_42_26 120 200 130 0 Open + P_H_01877 J_42_26 J_42_27 120 200 130 0 Open + P_H_01878 J_42_27 J_42_28 120 200 130 0 Open + P_H_01879 J_42_28 J_42_29 120 200 130 0 Open + P_H_01880 J_42_29 J_42_30 120 200 130 0 Open + P_H_01881 J_42_30 J_42_31 120 200 130 0 Open + P_H_01882 J_42_31 J_42_32 120 200 130 0 Open + P_H_01883 J_42_32 J_42_33 120 200 130 0 Open + P_H_01884 J_42_33 J_42_34 120 200 130 0 Open + P_H_01885 J_42_34 J_42_35 120 200 130 0 Open + P_H_01886 J_42_35 J_42_36 120 200 130 0 Open + P_H_01887 J_42_36 J_42_37 120 200 130 0 Open + P_H_01888 J_42_37 J_42_38 120 200 130 0 Open + P_H_01889 J_42_38 J_42_39 120 200 130 0 Open + P_H_01890 J_42_39 J_42_40 120 200 130 0 Open + P_H_01891 J_42_40 J_42_41 120 200 130 0 Open + P_H_01892 J_42_41 J_42_42 120 200 130 0 Open + P_H_01893 J_42_42 J_42_43 120 200 130 0 Open + P_H_01894 J_42_43 J_42_44 120 200 130 0 Open + P_H_01895 J_43_00 J_43_01 120 200 130 0 Open + P_H_01896 J_43_01 J_43_02 120 200 130 0 Open + P_H_01897 J_43_02 J_43_03 120 200 130 0 Open + P_H_01898 J_43_03 J_43_04 120 200 130 0 Open + P_H_01899 J_43_04 J_43_05 120 200 130 0 Open + P_H_01900 J_43_05 J_43_06 120 200 130 0 Open + P_H_01901 J_43_06 J_43_07 120 200 130 0 Open + P_H_01902 J_43_07 J_43_08 120 200 130 0 Open + P_H_01903 J_43_08 J_43_09 120 200 130 0 Open + P_H_01904 J_43_09 J_43_10 120 200 130 0 Open + P_H_01905 J_43_10 J_43_11 120 200 130 0 Open + P_H_01906 J_43_11 J_43_12 120 200 130 0 Open + P_H_01907 J_43_12 J_43_13 120 200 130 0 Open + P_H_01908 J_43_13 J_43_14 120 200 130 0 Open + P_H_01909 J_43_14 J_43_15 120 200 130 0 Open + P_H_01910 J_43_15 J_43_16 120 200 130 0 Open + P_H_01911 J_43_16 J_43_17 120 200 130 0 Open + P_H_01912 J_43_17 J_43_18 120 200 130 0 Open + P_H_01913 J_43_18 J_43_19 120 200 130 0 Open + P_H_01914 J_43_19 J_43_20 120 200 130 0 Open + P_H_01915 J_43_20 J_43_21 120 200 130 0 Open + P_H_01916 J_43_21 J_43_22 120 200 130 0 Open + P_H_01917 J_43_22 J_43_23 120 200 130 0 Open + P_H_01918 J_43_23 J_43_24 120 200 130 0 Open + P_H_01919 J_43_24 J_43_25 120 200 130 0 Open + P_H_01920 J_43_25 J_43_26 120 200 130 0 Open + P_H_01921 J_43_26 J_43_27 120 200 130 0 Open + P_H_01922 J_43_27 J_43_28 120 200 130 0 Open + P_H_01923 J_43_28 J_43_29 120 200 130 0 Open + P_H_01924 J_43_29 J_43_30 120 200 130 0 Open + P_H_01925 J_43_30 J_43_31 120 200 130 0 Open + P_H_01926 J_43_31 J_43_32 120 200 130 0 Open + P_H_01927 J_43_32 J_43_33 120 200 130 0 Open + P_H_01928 J_43_33 J_43_34 120 200 130 0 Open + P_H_01929 J_43_34 J_43_35 120 200 130 0 Open + P_H_01930 J_43_35 J_43_36 120 200 130 0 Open + P_H_01931 J_43_36 J_43_37 120 200 130 0 Open + P_H_01932 J_43_37 J_43_38 120 200 130 0 Open + P_H_01933 J_43_38 J_43_39 120 200 130 0 Open + P_H_01934 J_43_39 J_43_40 120 200 130 0 Open + P_H_01935 J_43_40 J_43_41 120 200 130 0 Open + P_H_01936 J_43_41 J_43_42 120 200 130 0 Open + P_H_01937 J_43_42 J_43_43 120 200 130 0 Open + P_H_01938 J_43_43 J_43_44 120 200 130 0 Open + P_H_01939 J_44_00 J_44_01 120 200 130 0 Open + P_H_01940 J_44_01 J_44_02 120 200 130 0 Open + P_H_01941 J_44_02 J_44_03 120 200 130 0 Open + P_H_01942 J_44_03 J_44_04 120 200 130 0 Open + P_H_01943 J_44_04 J_44_05 120 200 130 0 Open + P_H_01944 J_44_05 J_44_06 120 200 130 0 Open + P_H_01945 J_44_06 J_44_07 120 200 130 0 Open + P_H_01946 J_44_07 J_44_08 120 200 130 0 Open + P_H_01947 J_44_08 J_44_09 120 200 130 0 Open + P_H_01948 J_44_09 J_44_10 120 200 130 0 Open + P_H_01949 J_44_10 J_44_11 120 200 130 0 Open + P_H_01950 J_44_11 J_44_12 120 200 130 0 Open + P_H_01951 J_44_12 J_44_13 120 200 130 0 Open + P_H_01952 J_44_13 J_44_14 120 200 130 0 Open + P_H_01953 J_44_14 J_44_15 120 200 130 0 Open + P_H_01954 J_44_15 J_44_16 120 200 130 0 Open + P_H_01955 J_44_16 J_44_17 120 200 130 0 Open + P_H_01956 J_44_17 J_44_18 120 200 130 0 Open + P_H_01957 J_44_18 J_44_19 120 200 130 0 Open + P_H_01958 J_44_19 J_44_20 120 200 130 0 Open + P_H_01959 J_44_20 J_44_21 120 200 130 0 Open + P_H_01960 J_44_21 J_44_22 120 200 130 0 Open + P_H_01961 J_44_22 J_44_23 120 200 130 0 Open + P_H_01962 J_44_23 J_44_24 120 200 130 0 Open + P_H_01963 J_44_24 J_44_25 120 200 130 0 Open + P_H_01964 J_44_25 J_44_26 120 200 130 0 Open + P_H_01965 J_44_26 J_44_27 120 200 130 0 Open + P_H_01966 J_44_27 J_44_28 120 200 130 0 Open + P_H_01967 J_44_28 J_44_29 120 200 130 0 Open + P_H_01968 J_44_29 J_44_30 120 200 130 0 Open + P_H_01969 J_44_30 J_44_31 120 200 130 0 Open + P_H_01970 J_44_31 J_44_32 120 200 130 0 Open + P_H_01971 J_44_32 J_44_33 120 200 130 0 Open + P_H_01972 J_44_33 J_44_34 120 200 130 0 Open + P_H_01973 J_44_34 J_44_35 120 200 130 0 Open + P_H_01974 J_44_35 J_44_36 120 200 130 0 Open + P_H_01975 J_44_36 J_44_37 120 200 130 0 Open + P_H_01976 J_44_37 J_44_38 120 200 130 0 Open + P_H_01977 J_44_38 J_44_39 120 200 130 0 Open + P_H_01978 J_44_39 J_44_40 120 200 130 0 Open + P_H_01979 J_44_40 J_44_41 120 200 130 0 Open + P_H_01980 J_44_41 J_44_42 120 200 130 0 Open + P_H_01981 J_44_42 J_44_43 120 200 130 0 Open + P_H_01982 J_44_43 J_44_44 120 200 130 0 Open + P_V_01983 J_00_00 J_01_00 120 200 130 0 Open + P_V_01984 J_00_01 J_01_01 120 200 130 0 Open + P_V_01985 J_00_02 J_01_02 120 200 130 0 Open + P_V_01986 J_00_03 J_01_03 120 200 130 0 Open + P_V_01987 J_00_04 J_01_04 120 200 130 0 Open + P_V_01988 J_00_05 J_01_05 120 200 130 0 Open + P_V_01989 J_00_06 J_01_06 120 200 130 0 Open + P_V_01990 J_00_07 J_01_07 120 200 130 0 Open + P_V_01991 J_00_08 J_01_08 120 200 130 0 Open + P_V_01992 J_00_09 J_01_09 120 200 130 0 Open + P_V_01993 J_00_10 J_01_10 120 200 130 0 Open + P_V_01994 J_00_11 J_01_11 120 200 130 0 Open + P_V_01995 J_00_12 J_01_12 120 200 130 0 Open + P_V_01996 J_00_13 J_01_13 120 200 130 0 Open + P_V_01997 J_00_14 J_01_14 120 200 130 0 Open + P_V_01998 J_00_15 J_01_15 120 200 130 0 Open + P_V_01999 J_00_16 J_01_16 120 200 130 0 Open + P_V_02000 J_00_17 J_01_17 120 200 130 0 Open + P_V_02001 J_00_18 J_01_18 120 200 130 0 Open + P_V_02002 J_00_19 J_01_19 120 200 130 0 Open + P_V_02003 J_00_20 J_01_20 120 200 130 0 Open + P_V_02004 J_00_21 J_01_21 120 200 130 0 Open + P_V_02005 J_00_22 J_01_22 120 200 130 0 Open + P_V_02006 J_00_23 J_01_23 120 200 130 0 Open + P_V_02007 J_00_24 J_01_24 120 200 130 0 Open + P_V_02008 J_00_25 J_01_25 120 200 130 0 Open + P_V_02009 J_00_26 J_01_26 120 200 130 0 Open + P_V_02010 J_00_27 J_01_27 120 200 130 0 Open + P_V_02011 J_00_28 J_01_28 120 200 130 0 Open + P_V_02012 J_00_29 J_01_29 120 200 130 0 Open + P_V_02013 J_00_30 J_01_30 120 200 130 0 Open + P_V_02014 J_00_31 J_01_31 120 200 130 0 Open + P_V_02015 J_00_32 J_01_32 120 200 130 0 Open + P_V_02016 J_00_33 J_01_33 120 200 130 0 Open + P_V_02017 J_00_34 J_01_34 120 200 130 0 Open + P_V_02018 J_00_35 J_01_35 120 200 130 0 Open + P_V_02019 J_00_36 J_01_36 120 200 130 0 Open + P_V_02020 J_00_37 J_01_37 120 200 130 0 Open + P_V_02021 J_00_38 J_01_38 120 200 130 0 Open + P_V_02022 J_00_39 J_01_39 120 200 130 0 Open + P_V_02023 J_00_40 J_01_40 120 200 130 0 Open + P_V_02024 J_00_41 J_01_41 120 200 130 0 Open + P_V_02025 J_00_42 J_01_42 120 200 130 0 Open + P_V_02026 J_00_43 J_01_43 120 200 130 0 Open + P_V_02027 J_00_44 J_01_44 120 200 130 0 Open + P_V_02028 J_01_00 J_02_00 120 200 130 0 Open + P_V_02029 J_01_01 J_02_01 120 200 130 0 Open + P_V_02030 J_01_02 J_02_02 120 200 130 0 Open + P_V_02031 J_01_03 J_02_03 120 200 130 0 Open + P_V_02032 J_01_04 J_02_04 120 200 130 0 Open + P_V_02033 J_01_05 J_02_05 120 200 130 0 Open + P_V_02034 J_01_06 J_02_06 120 200 130 0 Open + P_V_02035 J_01_07 J_02_07 120 200 130 0 Open + P_V_02036 J_01_08 J_02_08 120 200 130 0 Open + P_V_02037 J_01_09 J_02_09 120 200 130 0 Open + P_V_02038 J_01_10 J_02_10 120 200 130 0 Open + P_V_02039 J_01_11 J_02_11 120 200 130 0 Open + P_V_02040 J_01_12 J_02_12 120 200 130 0 Open + P_V_02041 J_01_13 J_02_13 120 200 130 0 Open + P_V_02042 J_01_14 J_02_14 120 200 130 0 Open + P_V_02043 J_01_15 J_02_15 120 200 130 0 Open + P_V_02044 J_01_16 J_02_16 120 200 130 0 Open + P_V_02045 J_01_17 J_02_17 120 200 130 0 Open + P_V_02046 J_01_18 J_02_18 120 200 130 0 Open + P_V_02047 J_01_19 J_02_19 120 200 130 0 Open + P_V_02048 J_01_20 J_02_20 120 200 130 0 Open + P_V_02049 J_01_21 J_02_21 120 200 130 0 Open + P_V_02050 J_01_22 J_02_22 120 200 130 0 Open + P_V_02051 J_01_23 J_02_23 120 200 130 0 Open + P_V_02052 J_01_24 J_02_24 120 200 130 0 Open + P_V_02053 J_01_25 J_02_25 120 200 130 0 Open + P_V_02054 J_01_26 J_02_26 120 200 130 0 Open + P_V_02055 J_01_27 J_02_27 120 200 130 0 Open + P_V_02056 J_01_28 J_02_28 120 200 130 0 Open + P_V_02057 J_01_29 J_02_29 120 200 130 0 Open + P_V_02058 J_01_30 J_02_30 120 200 130 0 Open + P_V_02059 J_01_31 J_02_31 120 200 130 0 Open + P_V_02060 J_01_32 J_02_32 120 200 130 0 Open + P_V_02061 J_01_33 J_02_33 120 200 130 0 Open + P_V_02062 J_01_34 J_02_34 120 200 130 0 Open + P_V_02063 J_01_35 J_02_35 120 200 130 0 Open + P_V_02064 J_01_36 J_02_36 120 200 130 0 Open + P_V_02065 J_01_37 J_02_37 120 200 130 0 Open + P_V_02066 J_01_38 J_02_38 120 200 130 0 Open + P_V_02067 J_01_39 J_02_39 120 200 130 0 Open + P_V_02068 J_01_40 J_02_40 120 200 130 0 Open + P_V_02069 J_01_41 J_02_41 120 200 130 0 Open + P_V_02070 J_01_42 J_02_42 120 200 130 0 Open + P_V_02071 J_01_43 J_02_43 120 200 130 0 Open + P_V_02072 J_01_44 J_02_44 120 200 130 0 Open + P_V_02073 J_02_00 J_03_00 120 200 130 0 Open + P_V_02074 J_02_01 J_03_01 120 200 130 0 Open + P_V_02075 J_02_02 J_03_02 120 200 130 0 Open + P_V_02076 J_02_03 J_03_03 120 200 130 0 Open + P_V_02077 J_02_04 J_03_04 120 200 130 0 Open + P_V_02078 J_02_05 J_03_05 120 200 130 0 Open + P_V_02079 J_02_06 J_03_06 120 200 130 0 Open + P_V_02080 J_02_07 J_03_07 120 200 130 0 Open + P_V_02081 J_02_08 J_03_08 120 200 130 0 Open + P_V_02082 J_02_09 J_03_09 120 200 130 0 Open + P_V_02083 J_02_10 J_03_10 120 200 130 0 Open + P_V_02084 J_02_11 J_03_11 120 200 130 0 Open + P_V_02085 J_02_12 J_03_12 120 200 130 0 Open + P_V_02086 J_02_13 J_03_13 120 200 130 0 Open + P_V_02087 J_02_14 J_03_14 120 200 130 0 Open + P_V_02088 J_02_15 J_03_15 120 200 130 0 Open + P_V_02089 J_02_16 J_03_16 120 200 130 0 Open + P_V_02090 J_02_17 J_03_17 120 200 130 0 Open + P_V_02091 J_02_18 J_03_18 120 200 130 0 Open + P_V_02092 J_02_19 J_03_19 120 200 130 0 Open + P_V_02093 J_02_20 J_03_20 120 200 130 0 Open + P_V_02094 J_02_21 J_03_21 120 200 130 0 Open + P_V_02095 J_02_22 J_03_22 120 200 130 0 Open + P_V_02096 J_02_23 J_03_23 120 200 130 0 Open + P_V_02097 J_02_24 J_03_24 120 200 130 0 Open + P_V_02098 J_02_25 J_03_25 120 200 130 0 Open + P_V_02099 J_02_26 J_03_26 120 200 130 0 Open + P_V_02100 J_02_27 J_03_27 120 200 130 0 Open + P_V_02101 J_02_28 J_03_28 120 200 130 0 Open + P_V_02102 J_02_29 J_03_29 120 200 130 0 Open + P_V_02103 J_02_30 J_03_30 120 200 130 0 Open + P_V_02104 J_02_31 J_03_31 120 200 130 0 Open + P_V_02105 J_02_32 J_03_32 120 200 130 0 Open + P_V_02106 J_02_33 J_03_33 120 200 130 0 Open + P_V_02107 J_02_34 J_03_34 120 200 130 0 Open + P_V_02108 J_02_35 J_03_35 120 200 130 0 Open + P_V_02109 J_02_36 J_03_36 120 200 130 0 Open + P_V_02110 J_02_37 J_03_37 120 200 130 0 Open + P_V_02111 J_02_38 J_03_38 120 200 130 0 Open + P_V_02112 J_02_39 J_03_39 120 200 130 0 Open + P_V_02113 J_02_40 J_03_40 120 200 130 0 Open + P_V_02114 J_02_41 J_03_41 120 200 130 0 Open + P_V_02115 J_02_42 J_03_42 120 200 130 0 Open + P_V_02116 J_02_43 J_03_43 120 200 130 0 Open + P_V_02117 J_02_44 J_03_44 120 200 130 0 Open + P_V_02118 J_03_00 J_04_00 120 200 130 0 Open + P_V_02119 J_03_01 J_04_01 120 200 130 0 Open + P_V_02120 J_03_02 J_04_02 120 200 130 0 Open + P_V_02121 J_03_03 J_04_03 120 200 130 0 Open + P_V_02122 J_03_04 J_04_04 120 200 130 0 Open + P_V_02123 J_03_05 J_04_05 120 200 130 0 Open + P_V_02124 J_03_06 J_04_06 120 200 130 0 Open + P_V_02125 J_03_07 J_04_07 120 200 130 0 Open + P_V_02126 J_03_08 J_04_08 120 200 130 0 Open + P_V_02127 J_03_09 J_04_09 120 200 130 0 Open + P_V_02128 J_03_10 J_04_10 120 200 130 0 Open + P_V_02129 J_03_11 J_04_11 120 200 130 0 Open + P_V_02130 J_03_12 J_04_12 120 200 130 0 Open + P_V_02131 J_03_13 J_04_13 120 200 130 0 Open + P_V_02132 J_03_14 J_04_14 120 200 130 0 Open + P_V_02133 J_03_15 J_04_15 120 200 130 0 Open + P_V_02134 J_03_16 J_04_16 120 200 130 0 Open + P_V_02135 J_03_17 J_04_17 120 200 130 0 Open + P_V_02136 J_03_18 J_04_18 120 200 130 0 Open + P_V_02137 J_03_19 J_04_19 120 200 130 0 Open + P_V_02138 J_03_20 J_04_20 120 200 130 0 Open + P_V_02139 J_03_21 J_04_21 120 200 130 0 Open + P_V_02140 J_03_22 J_04_22 120 200 130 0 Open + P_V_02141 J_03_23 J_04_23 120 200 130 0 Open + P_V_02142 J_03_24 J_04_24 120 200 130 0 Open + P_V_02143 J_03_25 J_04_25 120 200 130 0 Open + P_V_02144 J_03_26 J_04_26 120 200 130 0 Open + P_V_02145 J_03_27 J_04_27 120 200 130 0 Open + P_V_02146 J_03_28 J_04_28 120 200 130 0 Open + P_V_02147 J_03_29 J_04_29 120 200 130 0 Open + P_V_02148 J_03_30 J_04_30 120 200 130 0 Open + P_V_02149 J_03_31 J_04_31 120 200 130 0 Open + P_V_02150 J_03_32 J_04_32 120 200 130 0 Open + P_V_02151 J_03_33 J_04_33 120 200 130 0 Open + P_V_02152 J_03_34 J_04_34 120 200 130 0 Open + P_V_02153 J_03_35 J_04_35 120 200 130 0 Open + P_V_02154 J_03_36 J_04_36 120 200 130 0 Open + P_V_02155 J_03_37 J_04_37 120 200 130 0 Open + P_V_02156 J_03_38 J_04_38 120 200 130 0 Open + P_V_02157 J_03_39 J_04_39 120 200 130 0 Open + P_V_02158 J_03_40 J_04_40 120 200 130 0 Open + P_V_02159 J_03_41 J_04_41 120 200 130 0 Open + P_V_02160 J_03_42 J_04_42 120 200 130 0 Open + P_V_02161 J_03_43 J_04_43 120 200 130 0 Open + P_V_02162 J_03_44 J_04_44 120 200 130 0 Open + P_V_02163 J_04_00 J_05_00 120 200 130 0 Open + P_V_02164 J_04_01 J_05_01 120 200 130 0 Open + P_V_02165 J_04_02 J_05_02 120 200 130 0 Open + P_V_02166 J_04_03 J_05_03 120 200 130 0 Open + P_V_02167 J_04_04 J_05_04 120 200 130 0 Open + P_V_02168 J_04_05 J_05_05 120 200 130 0 Open + P_V_02169 J_04_06 J_05_06 120 200 130 0 Open + P_V_02170 J_04_07 J_05_07 120 200 130 0 Open + P_V_02171 J_04_08 J_05_08 120 200 130 0 Open + P_V_02172 J_04_09 J_05_09 120 200 130 0 Open + P_V_02173 J_04_10 J_05_10 120 200 130 0 Open + P_V_02174 J_04_11 J_05_11 120 200 130 0 Open + P_V_02175 J_04_12 J_05_12 120 200 130 0 Open + P_V_02176 J_04_13 J_05_13 120 200 130 0 Open + P_V_02177 J_04_14 J_05_14 120 200 130 0 Open + P_V_02178 J_04_15 J_05_15 120 200 130 0 Open + P_V_02179 J_04_16 J_05_16 120 200 130 0 Open + P_V_02180 J_04_17 J_05_17 120 200 130 0 Open + P_V_02181 J_04_18 J_05_18 120 200 130 0 Open + P_V_02182 J_04_19 J_05_19 120 200 130 0 Open + P_V_02183 J_04_20 J_05_20 120 200 130 0 Open + P_V_02184 J_04_21 J_05_21 120 200 130 0 Open + P_V_02185 J_04_22 J_05_22 120 200 130 0 Open + P_V_02186 J_04_23 J_05_23 120 200 130 0 Open + P_V_02187 J_04_24 J_05_24 120 200 130 0 Open + P_V_02188 J_04_25 J_05_25 120 200 130 0 Open + P_V_02189 J_04_26 J_05_26 120 200 130 0 Open + P_V_02190 J_04_27 J_05_27 120 200 130 0 Open + P_V_02191 J_04_28 J_05_28 120 200 130 0 Open + P_V_02192 J_04_29 J_05_29 120 200 130 0 Open + P_V_02193 J_04_30 J_05_30 120 200 130 0 Open + P_V_02194 J_04_31 J_05_31 120 200 130 0 Open + P_V_02195 J_04_32 J_05_32 120 200 130 0 Open + P_V_02196 J_04_33 J_05_33 120 200 130 0 Open + P_V_02197 J_04_34 J_05_34 120 200 130 0 Open + P_V_02198 J_04_35 J_05_35 120 200 130 0 Open + P_V_02199 J_04_36 J_05_36 120 200 130 0 Open + P_V_02200 J_04_37 J_05_37 120 200 130 0 Open + P_V_02201 J_04_38 J_05_38 120 200 130 0 Open + P_V_02202 J_04_39 J_05_39 120 200 130 0 Open + P_V_02203 J_04_40 J_05_40 120 200 130 0 Open + P_V_02204 J_04_41 J_05_41 120 200 130 0 Open + P_V_02205 J_04_42 J_05_42 120 200 130 0 Open + P_V_02206 J_04_43 J_05_43 120 200 130 0 Open + P_V_02207 J_04_44 J_05_44 120 200 130 0 Open + P_V_02208 J_05_00 J_06_00 120 200 130 0 Open + P_V_02209 J_05_01 J_06_01 120 200 130 0 Open + P_V_02210 J_05_02 J_06_02 120 200 130 0 Open + P_V_02211 J_05_03 J_06_03 120 200 130 0 Open + P_V_02212 J_05_04 J_06_04 120 200 130 0 Open + P_V_02213 J_05_05 J_06_05 120 200 130 0 Open + P_V_02214 J_05_06 J_06_06 120 200 130 0 Open + P_V_02215 J_05_07 J_06_07 120 200 130 0 Open + P_V_02216 J_05_08 J_06_08 120 200 130 0 Open + P_V_02217 J_05_09 J_06_09 120 200 130 0 Open + P_V_02218 J_05_10 J_06_10 120 200 130 0 Open + P_V_02219 J_05_11 J_06_11 120 200 130 0 Open + P_V_02220 J_05_12 J_06_12 120 200 130 0 Open + P_V_02221 J_05_13 J_06_13 120 200 130 0 Open + P_V_02222 J_05_14 J_06_14 120 200 130 0 Open + P_V_02223 J_05_15 J_06_15 120 200 130 0 Open + P_V_02224 J_05_16 J_06_16 120 200 130 0 Open + P_V_02225 J_05_17 J_06_17 120 200 130 0 Open + P_V_02226 J_05_18 J_06_18 120 200 130 0 Open + P_V_02227 J_05_19 J_06_19 120 200 130 0 Open + P_V_02228 J_05_20 J_06_20 120 200 130 0 Open + P_V_02229 J_05_21 J_06_21 120 200 130 0 Open + P_V_02230 J_05_22 J_06_22 120 200 130 0 Open + P_V_02231 J_05_23 J_06_23 120 200 130 0 Open + P_V_02232 J_05_24 J_06_24 120 200 130 0 Open + P_V_02233 J_05_25 J_06_25 120 200 130 0 Open + P_V_02234 J_05_26 J_06_26 120 200 130 0 Open + P_V_02235 J_05_27 J_06_27 120 200 130 0 Open + P_V_02236 J_05_28 J_06_28 120 200 130 0 Open + P_V_02237 J_05_29 J_06_29 120 200 130 0 Open + P_V_02238 J_05_30 J_06_30 120 200 130 0 Open + P_V_02239 J_05_31 J_06_31 120 200 130 0 Open + P_V_02240 J_05_32 J_06_32 120 200 130 0 Open + P_V_02241 J_05_33 J_06_33 120 200 130 0 Open + P_V_02242 J_05_34 J_06_34 120 200 130 0 Open + P_V_02243 J_05_35 J_06_35 120 200 130 0 Open + P_V_02244 J_05_36 J_06_36 120 200 130 0 Open + P_V_02245 J_05_37 J_06_37 120 200 130 0 Open + P_V_02246 J_05_38 J_06_38 120 200 130 0 Open + P_V_02247 J_05_39 J_06_39 120 200 130 0 Open + P_V_02248 J_05_40 J_06_40 120 200 130 0 Open + P_V_02249 J_05_41 J_06_41 120 200 130 0 Open + P_V_02250 J_05_42 J_06_42 120 200 130 0 Open + P_V_02251 J_05_43 J_06_43 120 200 130 0 Open + P_V_02252 J_05_44 J_06_44 120 200 130 0 Open + P_V_02253 J_06_00 J_07_00 120 200 130 0 Open + P_V_02254 J_06_01 J_07_01 120 200 130 0 Open + P_V_02255 J_06_02 J_07_02 120 200 130 0 Open + P_V_02256 J_06_03 J_07_03 120 200 130 0 Open + P_V_02257 J_06_04 J_07_04 120 200 130 0 Open + P_V_02258 J_06_05 J_07_05 120 200 130 0 Open + P_V_02259 J_06_06 J_07_06 120 200 130 0 Open + P_V_02260 J_06_07 J_07_07 120 200 130 0 Open + P_V_02261 J_06_08 J_07_08 120 200 130 0 Open + P_V_02262 J_06_09 J_07_09 120 200 130 0 Open + P_V_02263 J_06_10 J_07_10 120 200 130 0 Open + P_V_02264 J_06_11 J_07_11 120 200 130 0 Open + P_V_02265 J_06_12 J_07_12 120 200 130 0 Open + P_V_02266 J_06_13 J_07_13 120 200 130 0 Open + P_V_02267 J_06_14 J_07_14 120 200 130 0 Open + P_V_02268 J_06_15 J_07_15 120 200 130 0 Open + P_V_02269 J_06_16 J_07_16 120 200 130 0 Open + P_V_02270 J_06_17 J_07_17 120 200 130 0 Open + P_V_02271 J_06_18 J_07_18 120 200 130 0 Open + P_V_02272 J_06_19 J_07_19 120 200 130 0 Open + P_V_02273 J_06_20 J_07_20 120 200 130 0 Open + P_V_02274 J_06_21 J_07_21 120 200 130 0 Open + P_V_02275 J_06_22 J_07_22 120 200 130 0 Open + P_V_02276 J_06_23 J_07_23 120 200 130 0 Open + P_V_02277 J_06_24 J_07_24 120 200 130 0 Open + P_V_02278 J_06_25 J_07_25 120 200 130 0 Open + P_V_02279 J_06_26 J_07_26 120 200 130 0 Open + P_V_02280 J_06_27 J_07_27 120 200 130 0 Open + P_V_02281 J_06_28 J_07_28 120 200 130 0 Open + P_V_02282 J_06_29 J_07_29 120 200 130 0 Open + P_V_02283 J_06_30 J_07_30 120 200 130 0 Open + P_V_02284 J_06_31 J_07_31 120 200 130 0 Open + P_V_02285 J_06_32 J_07_32 120 200 130 0 Open + P_V_02286 J_06_33 J_07_33 120 200 130 0 Open + P_V_02287 J_06_34 J_07_34 120 200 130 0 Open + P_V_02288 J_06_35 J_07_35 120 200 130 0 Open + P_V_02289 J_06_36 J_07_36 120 200 130 0 Open + P_V_02290 J_06_37 J_07_37 120 200 130 0 Open + P_V_02291 J_06_38 J_07_38 120 200 130 0 Open + P_V_02292 J_06_39 J_07_39 120 200 130 0 Open + P_V_02293 J_06_40 J_07_40 120 200 130 0 Open + P_V_02294 J_06_41 J_07_41 120 200 130 0 Open + P_V_02295 J_06_42 J_07_42 120 200 130 0 Open + P_V_02296 J_06_43 J_07_43 120 200 130 0 Open + P_V_02297 J_06_44 J_07_44 120 200 130 0 Open + P_V_02298 J_07_00 J_08_00 120 200 130 0 Open + P_V_02299 J_07_01 J_08_01 120 200 130 0 Open + P_V_02300 J_07_02 J_08_02 120 200 130 0 Open + P_V_02301 J_07_03 J_08_03 120 200 130 0 Open + P_V_02302 J_07_04 J_08_04 120 200 130 0 Open + P_V_02303 J_07_05 J_08_05 120 200 130 0 Open + P_V_02304 J_07_06 J_08_06 120 200 130 0 Open + P_V_02305 J_07_07 J_08_07 120 200 130 0 Open + P_V_02306 J_07_08 J_08_08 120 200 130 0 Open + P_V_02307 J_07_09 J_08_09 120 200 130 0 Open + P_V_02308 J_07_10 J_08_10 120 200 130 0 Open + P_V_02309 J_07_11 J_08_11 120 200 130 0 Open + P_V_02310 J_07_12 J_08_12 120 200 130 0 Open + P_V_02311 J_07_13 J_08_13 120 200 130 0 Open + P_V_02312 J_07_14 J_08_14 120 200 130 0 Open + P_V_02313 J_07_15 J_08_15 120 200 130 0 Open + P_V_02314 J_07_16 J_08_16 120 200 130 0 Open + P_V_02315 J_07_17 J_08_17 120 200 130 0 Open + P_V_02316 J_07_18 J_08_18 120 200 130 0 Open + P_V_02317 J_07_19 J_08_19 120 200 130 0 Open + P_V_02318 J_07_20 J_08_20 120 200 130 0 Open + P_V_02319 J_07_21 J_08_21 120 200 130 0 Open + P_V_02320 J_07_22 J_08_22 120 200 130 0 Open + P_V_02321 J_07_23 J_08_23 120 200 130 0 Open + P_V_02322 J_07_24 J_08_24 120 200 130 0 Open + P_V_02323 J_07_25 J_08_25 120 200 130 0 Open + P_V_02324 J_07_26 J_08_26 120 200 130 0 Open + P_V_02325 J_07_27 J_08_27 120 200 130 0 Open + P_V_02326 J_07_28 J_08_28 120 200 130 0 Open + P_V_02327 J_07_29 J_08_29 120 200 130 0 Open + P_V_02328 J_07_30 J_08_30 120 200 130 0 Open + P_V_02329 J_07_31 J_08_31 120 200 130 0 Open + P_V_02330 J_07_32 J_08_32 120 200 130 0 Open + P_V_02331 J_07_33 J_08_33 120 200 130 0 Open + P_V_02332 J_07_34 J_08_34 120 200 130 0 Open + P_V_02333 J_07_35 J_08_35 120 200 130 0 Open + P_V_02334 J_07_36 J_08_36 120 200 130 0 Open + P_V_02335 J_07_37 J_08_37 120 200 130 0 Open + P_V_02336 J_07_38 J_08_38 120 200 130 0 Open + P_V_02337 J_07_39 J_08_39 120 200 130 0 Open + P_V_02338 J_07_40 J_08_40 120 200 130 0 Open + P_V_02339 J_07_41 J_08_41 120 200 130 0 Open + P_V_02340 J_07_42 J_08_42 120 200 130 0 Open + P_V_02341 J_07_43 J_08_43 120 200 130 0 Open + P_V_02342 J_07_44 J_08_44 120 200 130 0 Open + P_V_02343 J_08_00 J_09_00 120 200 130 0 Open + P_V_02344 J_08_01 J_09_01 120 200 130 0 Open + P_V_02345 J_08_02 J_09_02 120 200 130 0 Open + P_V_02346 J_08_03 J_09_03 120 200 130 0 Open + P_V_02347 J_08_04 J_09_04 120 200 130 0 Open + P_V_02348 J_08_05 J_09_05 120 200 130 0 Open + P_V_02349 J_08_06 J_09_06 120 200 130 0 Open + P_V_02350 J_08_07 J_09_07 120 200 130 0 Open + P_V_02351 J_08_08 J_09_08 120 200 130 0 Open + P_V_02352 J_08_09 J_09_09 120 200 130 0 Open + P_V_02353 J_08_10 J_09_10 120 200 130 0 Open + P_V_02354 J_08_11 J_09_11 120 200 130 0 Open + P_V_02355 J_08_12 J_09_12 120 200 130 0 Open + P_V_02356 J_08_13 J_09_13 120 200 130 0 Open + P_V_02357 J_08_14 J_09_14 120 200 130 0 Open + P_V_02358 J_08_15 J_09_15 120 200 130 0 Open + P_V_02359 J_08_16 J_09_16 120 200 130 0 Open + P_V_02360 J_08_17 J_09_17 120 200 130 0 Open + P_V_02361 J_08_18 J_09_18 120 200 130 0 Open + P_V_02362 J_08_19 J_09_19 120 200 130 0 Open + P_V_02363 J_08_20 J_09_20 120 200 130 0 Open + P_V_02364 J_08_21 J_09_21 120 200 130 0 Open + P_V_02365 J_08_22 J_09_22 120 200 130 0 Open + P_V_02366 J_08_23 J_09_23 120 200 130 0 Open + P_V_02367 J_08_24 J_09_24 120 200 130 0 Open + P_V_02368 J_08_25 J_09_25 120 200 130 0 Open + P_V_02369 J_08_26 J_09_26 120 200 130 0 Open + P_V_02370 J_08_27 J_09_27 120 200 130 0 Open + P_V_02371 J_08_28 J_09_28 120 200 130 0 Open + P_V_02372 J_08_29 J_09_29 120 200 130 0 Open + P_V_02373 J_08_30 J_09_30 120 200 130 0 Open + P_V_02374 J_08_31 J_09_31 120 200 130 0 Open + P_V_02375 J_08_32 J_09_32 120 200 130 0 Open + P_V_02376 J_08_33 J_09_33 120 200 130 0 Open + P_V_02377 J_08_34 J_09_34 120 200 130 0 Open + P_V_02378 J_08_35 J_09_35 120 200 130 0 Open + P_V_02379 J_08_36 J_09_36 120 200 130 0 Open + P_V_02380 J_08_37 J_09_37 120 200 130 0 Open + P_V_02381 J_08_38 J_09_38 120 200 130 0 Open + P_V_02382 J_08_39 J_09_39 120 200 130 0 Open + P_V_02383 J_08_40 J_09_40 120 200 130 0 Open + P_V_02384 J_08_41 J_09_41 120 200 130 0 Open + P_V_02385 J_08_42 J_09_42 120 200 130 0 Open + P_V_02386 J_08_43 J_09_43 120 200 130 0 Open + P_V_02387 J_08_44 J_09_44 120 200 130 0 Open + P_V_02388 J_09_00 J_10_00 120 200 130 0 Open + P_V_02389 J_09_01 J_10_01 120 200 130 0 Open + P_V_02390 J_09_02 J_10_02 120 200 130 0 Open + P_V_02391 J_09_03 J_10_03 120 200 130 0 Open + P_V_02392 J_09_04 J_10_04 120 200 130 0 Open + P_V_02393 J_09_05 J_10_05 120 200 130 0 Open + P_V_02394 J_09_06 J_10_06 120 200 130 0 Open + P_V_02395 J_09_07 J_10_07 120 200 130 0 Open + P_V_02396 J_09_08 J_10_08 120 200 130 0 Open + P_V_02397 J_09_09 J_10_09 120 200 130 0 Open + P_V_02398 J_09_10 J_10_10 120 200 130 0 Open + P_V_02399 J_09_11 J_10_11 120 200 130 0 Open + P_V_02400 J_09_12 J_10_12 120 200 130 0 Open + P_V_02401 J_09_13 J_10_13 120 200 130 0 Open + P_V_02402 J_09_14 J_10_14 120 200 130 0 Open + P_V_02403 J_09_15 J_10_15 120 200 130 0 Open + P_V_02404 J_09_16 J_10_16 120 200 130 0 Open + P_V_02405 J_09_17 J_10_17 120 200 130 0 Open + P_V_02406 J_09_18 J_10_18 120 200 130 0 Open + P_V_02407 J_09_19 J_10_19 120 200 130 0 Open + P_V_02408 J_09_20 J_10_20 120 200 130 0 Open + P_V_02409 J_09_21 J_10_21 120 200 130 0 Open + P_V_02410 J_09_22 J_10_22 120 200 130 0 Open + P_V_02411 J_09_23 J_10_23 120 200 130 0 Open + P_V_02412 J_09_24 J_10_24 120 200 130 0 Open + P_V_02413 J_09_25 J_10_25 120 200 130 0 Open + P_V_02414 J_09_26 J_10_26 120 200 130 0 Open + P_V_02415 J_09_27 J_10_27 120 200 130 0 Open + P_V_02416 J_09_28 J_10_28 120 200 130 0 Open + P_V_02417 J_09_29 J_10_29 120 200 130 0 Open + P_V_02418 J_09_30 J_10_30 120 200 130 0 Open + P_V_02419 J_09_31 J_10_31 120 200 130 0 Open + P_V_02420 J_09_32 J_10_32 120 200 130 0 Open + P_V_02421 J_09_33 J_10_33 120 200 130 0 Open + P_V_02422 J_09_34 J_10_34 120 200 130 0 Open + P_V_02423 J_09_35 J_10_35 120 200 130 0 Open + P_V_02424 J_09_36 J_10_36 120 200 130 0 Open + P_V_02425 J_09_37 J_10_37 120 200 130 0 Open + P_V_02426 J_09_38 J_10_38 120 200 130 0 Open + P_V_02427 J_09_39 J_10_39 120 200 130 0 Open + P_V_02428 J_09_40 J_10_40 120 200 130 0 Open + P_V_02429 J_09_41 J_10_41 120 200 130 0 Open + P_V_02430 J_09_42 J_10_42 120 200 130 0 Open + P_V_02431 J_09_43 J_10_43 120 200 130 0 Open + P_V_02432 J_09_44 J_10_44 120 200 130 0 Open + P_V_02433 J_10_00 J_11_00 120 200 130 0 Open + P_V_02434 J_10_01 J_11_01 120 200 130 0 Open + P_V_02435 J_10_02 J_11_02 120 200 130 0 Open + P_V_02436 J_10_03 J_11_03 120 200 130 0 Open + P_V_02437 J_10_04 J_11_04 120 200 130 0 Open + P_V_02438 J_10_05 J_11_05 120 200 130 0 Open + P_V_02439 J_10_06 J_11_06 120 200 130 0 Open + P_V_02440 J_10_07 J_11_07 120 200 130 0 Open + P_V_02441 J_10_08 J_11_08 120 200 130 0 Open + P_V_02442 J_10_09 J_11_09 120 200 130 0 Open + P_V_02443 J_10_10 J_11_10 120 200 130 0 Open + P_V_02444 J_10_11 J_11_11 120 200 130 0 Open + P_V_02445 J_10_12 J_11_12 120 200 130 0 Open + P_V_02446 J_10_13 J_11_13 120 200 130 0 Open + P_V_02447 J_10_14 J_11_14 120 200 130 0 Open + P_V_02448 J_10_15 J_11_15 120 200 130 0 Open + P_V_02449 J_10_16 J_11_16 120 200 130 0 Open + P_V_02450 J_10_17 J_11_17 120 200 130 0 Open + P_V_02451 J_10_18 J_11_18 120 200 130 0 Open + P_V_02452 J_10_19 J_11_19 120 200 130 0 Open + P_V_02453 J_10_20 J_11_20 120 200 130 0 Open + P_V_02454 J_10_21 J_11_21 120 200 130 0 Open + P_V_02455 J_10_22 J_11_22 120 200 130 0 Open + P_V_02456 J_10_23 J_11_23 120 200 130 0 Open + P_V_02457 J_10_24 J_11_24 120 200 130 0 Open + P_V_02458 J_10_25 J_11_25 120 200 130 0 Open + P_V_02459 J_10_26 J_11_26 120 200 130 0 Open + P_V_02460 J_10_27 J_11_27 120 200 130 0 Open + P_V_02461 J_10_28 J_11_28 120 200 130 0 Open + P_V_02462 J_10_29 J_11_29 120 200 130 0 Open + P_V_02463 J_10_30 J_11_30 120 200 130 0 Open + P_V_02464 J_10_31 J_11_31 120 200 130 0 Open + P_V_02465 J_10_32 J_11_32 120 200 130 0 Open + P_V_02466 J_10_33 J_11_33 120 200 130 0 Open + P_V_02467 J_10_34 J_11_34 120 200 130 0 Open + P_V_02468 J_10_35 J_11_35 120 200 130 0 Open + P_V_02469 J_10_36 J_11_36 120 200 130 0 Open + P_V_02470 J_10_37 J_11_37 120 200 130 0 Open + P_V_02471 J_10_38 J_11_38 120 200 130 0 Open + P_V_02472 J_10_39 J_11_39 120 200 130 0 Open + P_V_02473 J_10_40 J_11_40 120 200 130 0 Open + P_V_02474 J_10_41 J_11_41 120 200 130 0 Open + P_V_02475 J_10_42 J_11_42 120 200 130 0 Open + P_V_02476 J_10_43 J_11_43 120 200 130 0 Open + P_V_02477 J_10_44 J_11_44 120 200 130 0 Open + P_V_02478 J_11_00 J_12_00 120 200 130 0 Open + P_V_02479 J_11_01 J_12_01 120 200 130 0 Open + P_V_02480 J_11_02 J_12_02 120 200 130 0 Open + P_V_02481 J_11_03 J_12_03 120 200 130 0 Open + P_V_02482 J_11_04 J_12_04 120 200 130 0 Open + P_V_02483 J_11_05 J_12_05 120 200 130 0 Open + P_V_02484 J_11_06 J_12_06 120 200 130 0 Open + P_V_02485 J_11_07 J_12_07 120 200 130 0 Open + P_V_02486 J_11_08 J_12_08 120 200 130 0 Open + P_V_02487 J_11_09 J_12_09 120 200 130 0 Open + P_V_02488 J_11_10 J_12_10 120 200 130 0 Open + P_V_02489 J_11_11 J_12_11 120 200 130 0 Open + P_V_02490 J_11_12 J_12_12 120 200 130 0 Open + P_V_02491 J_11_13 J_12_13 120 200 130 0 Open + P_V_02492 J_11_14 J_12_14 120 200 130 0 Open + P_V_02493 J_11_15 J_12_15 120 200 130 0 Open + P_V_02494 J_11_16 J_12_16 120 200 130 0 Open + P_V_02495 J_11_17 J_12_17 120 200 130 0 Open + P_V_02496 J_11_18 J_12_18 120 200 130 0 Open + P_V_02497 J_11_19 J_12_19 120 200 130 0 Open + P_V_02498 J_11_20 J_12_20 120 200 130 0 Open + P_V_02499 J_11_21 J_12_21 120 200 130 0 Open + P_V_02500 J_11_22 J_12_22 120 200 130 0 Open + P_V_02501 J_11_23 J_12_23 120 200 130 0 Open + P_V_02502 J_11_24 J_12_24 120 200 130 0 Open + P_V_02503 J_11_25 J_12_25 120 200 130 0 Open + P_V_02504 J_11_26 J_12_26 120 200 130 0 Open + P_V_02505 J_11_27 J_12_27 120 200 130 0 Open + P_V_02506 J_11_28 J_12_28 120 200 130 0 Open + P_V_02507 J_11_29 J_12_29 120 200 130 0 Open + P_V_02508 J_11_30 J_12_30 120 200 130 0 Open + P_V_02509 J_11_31 J_12_31 120 200 130 0 Open + P_V_02510 J_11_32 J_12_32 120 200 130 0 Open + P_V_02511 J_11_33 J_12_33 120 200 130 0 Open + P_V_02512 J_11_34 J_12_34 120 200 130 0 Open + P_V_02513 J_11_35 J_12_35 120 200 130 0 Open + P_V_02514 J_11_36 J_12_36 120 200 130 0 Open + P_V_02515 J_11_37 J_12_37 120 200 130 0 Open + P_V_02516 J_11_38 J_12_38 120 200 130 0 Open + P_V_02517 J_11_39 J_12_39 120 200 130 0 Open + P_V_02518 J_11_40 J_12_40 120 200 130 0 Open + P_V_02519 J_11_41 J_12_41 120 200 130 0 Open + P_V_02520 J_11_42 J_12_42 120 200 130 0 Open + P_V_02521 J_11_43 J_12_43 120 200 130 0 Open + P_V_02522 J_11_44 J_12_44 120 200 130 0 Open + P_V_02523 J_12_00 J_13_00 120 200 130 0 Open + P_V_02524 J_12_01 J_13_01 120 200 130 0 Open + P_V_02525 J_12_02 J_13_02 120 200 130 0 Open + P_V_02526 J_12_03 J_13_03 120 200 130 0 Open + P_V_02527 J_12_04 J_13_04 120 200 130 0 Open + P_V_02528 J_12_05 J_13_05 120 200 130 0 Open + P_V_02529 J_12_06 J_13_06 120 200 130 0 Open + P_V_02530 J_12_07 J_13_07 120 200 130 0 Open + P_V_02531 J_12_08 J_13_08 120 200 130 0 Open + P_V_02532 J_12_09 J_13_09 120 200 130 0 Open + P_V_02533 J_12_10 J_13_10 120 200 130 0 Open + P_V_02534 J_12_11 J_13_11 120 200 130 0 Open + P_V_02535 J_12_12 J_13_12 120 200 130 0 Open + P_V_02536 J_12_13 J_13_13 120 200 130 0 Open + P_V_02537 J_12_14 J_13_14 120 200 130 0 Open + P_V_02538 J_12_15 J_13_15 120 200 130 0 Open + P_V_02539 J_12_16 J_13_16 120 200 130 0 Open + P_V_02540 J_12_17 J_13_17 120 200 130 0 Open + P_V_02541 J_12_18 J_13_18 120 200 130 0 Open + P_V_02542 J_12_19 J_13_19 120 200 130 0 Open + P_V_02543 J_12_20 J_13_20 120 200 130 0 Open + P_V_02544 J_12_21 J_13_21 120 200 130 0 Open + P_V_02545 J_12_22 J_13_22 120 200 130 0 Open + P_V_02546 J_12_23 J_13_23 120 200 130 0 Open + P_V_02547 J_12_24 J_13_24 120 200 130 0 Open + P_V_02548 J_12_25 J_13_25 120 200 130 0 Open + P_V_02549 J_12_26 J_13_26 120 200 130 0 Open + P_V_02550 J_12_27 J_13_27 120 200 130 0 Open + P_V_02551 J_12_28 J_13_28 120 200 130 0 Open + P_V_02552 J_12_29 J_13_29 120 200 130 0 Open + P_V_02553 J_12_30 J_13_30 120 200 130 0 Open + P_V_02554 J_12_31 J_13_31 120 200 130 0 Open + P_V_02555 J_12_32 J_13_32 120 200 130 0 Open + P_V_02556 J_12_33 J_13_33 120 200 130 0 Open + P_V_02557 J_12_34 J_13_34 120 200 130 0 Open + P_V_02558 J_12_35 J_13_35 120 200 130 0 Open + P_V_02559 J_12_36 J_13_36 120 200 130 0 Open + P_V_02560 J_12_37 J_13_37 120 200 130 0 Open + P_V_02561 J_12_38 J_13_38 120 200 130 0 Open + P_V_02562 J_12_39 J_13_39 120 200 130 0 Open + P_V_02563 J_12_40 J_13_40 120 200 130 0 Open + P_V_02564 J_12_41 J_13_41 120 200 130 0 Open + P_V_02565 J_12_42 J_13_42 120 200 130 0 Open + P_V_02566 J_12_43 J_13_43 120 200 130 0 Open + P_V_02567 J_12_44 J_13_44 120 200 130 0 Open + P_V_02568 J_13_00 J_14_00 120 200 130 0 Open + P_V_02569 J_13_01 J_14_01 120 200 130 0 Open + P_V_02570 J_13_02 J_14_02 120 200 130 0 Open + P_V_02571 J_13_03 J_14_03 120 200 130 0 Open + P_V_02572 J_13_04 J_14_04 120 200 130 0 Open + P_V_02573 J_13_05 J_14_05 120 200 130 0 Open + P_V_02574 J_13_06 J_14_06 120 200 130 0 Open + P_V_02575 J_13_07 J_14_07 120 200 130 0 Open + P_V_02576 J_13_08 J_14_08 120 200 130 0 Open + P_V_02577 J_13_09 J_14_09 120 200 130 0 Open + P_V_02578 J_13_10 J_14_10 120 200 130 0 Open + P_V_02579 J_13_11 J_14_11 120 200 130 0 Open + P_V_02580 J_13_12 J_14_12 120 200 130 0 Open + P_V_02581 J_13_13 J_14_13 120 200 130 0 Open + P_V_02582 J_13_14 J_14_14 120 200 130 0 Open + P_V_02583 J_13_15 J_14_15 120 200 130 0 Open + P_V_02584 J_13_16 J_14_16 120 200 130 0 Open + P_V_02585 J_13_17 J_14_17 120 200 130 0 Open + P_V_02586 J_13_18 J_14_18 120 200 130 0 Open + P_V_02587 J_13_19 J_14_19 120 200 130 0 Open + P_V_02588 J_13_20 J_14_20 120 200 130 0 Open + P_V_02589 J_13_21 J_14_21 120 200 130 0 Open + P_V_02590 J_13_22 J_14_22 120 200 130 0 Open + P_V_02591 J_13_23 J_14_23 120 200 130 0 Open + P_V_02592 J_13_24 J_14_24 120 200 130 0 Open + P_V_02593 J_13_25 J_14_25 120 200 130 0 Open + P_V_02594 J_13_26 J_14_26 120 200 130 0 Open + P_V_02595 J_13_27 J_14_27 120 200 130 0 Open + P_V_02596 J_13_28 J_14_28 120 200 130 0 Open + P_V_02597 J_13_29 J_14_29 120 200 130 0 Open + P_V_02598 J_13_30 J_14_30 120 200 130 0 Open + P_V_02599 J_13_31 J_14_31 120 200 130 0 Open + P_V_02600 J_13_32 J_14_32 120 200 130 0 Open + P_V_02601 J_13_33 J_14_33 120 200 130 0 Open + P_V_02602 J_13_34 J_14_34 120 200 130 0 Open + P_V_02603 J_13_35 J_14_35 120 200 130 0 Open + P_V_02604 J_13_36 J_14_36 120 200 130 0 Open + P_V_02605 J_13_37 J_14_37 120 200 130 0 Open + P_V_02606 J_13_38 J_14_38 120 200 130 0 Open + P_V_02607 J_13_39 J_14_39 120 200 130 0 Open + P_V_02608 J_13_40 J_14_40 120 200 130 0 Open + P_V_02609 J_13_41 J_14_41 120 200 130 0 Open + P_V_02610 J_13_42 J_14_42 120 200 130 0 Open + P_V_02611 J_13_43 J_14_43 120 200 130 0 Open + P_V_02612 J_13_44 J_14_44 120 200 130 0 Open + P_V_02613 J_14_00 J_15_00 120 200 130 0 Open + P_V_02614 J_14_01 J_15_01 120 200 130 0 Open + P_V_02615 J_14_02 J_15_02 120 200 130 0 Open + P_V_02616 J_14_03 J_15_03 120 200 130 0 Open + P_V_02617 J_14_04 J_15_04 120 200 130 0 Open + P_V_02618 J_14_05 J_15_05 120 200 130 0 Open + P_V_02619 J_14_06 J_15_06 120 200 130 0 Open + P_V_02620 J_14_07 J_15_07 120 200 130 0 Open + P_V_02621 J_14_08 J_15_08 120 200 130 0 Open + P_V_02622 J_14_09 J_15_09 120 200 130 0 Open + P_V_02623 J_14_10 J_15_10 120 200 130 0 Open + P_V_02624 J_14_11 J_15_11 120 200 130 0 Open + P_V_02625 J_14_12 J_15_12 120 200 130 0 Open + P_V_02626 J_14_13 J_15_13 120 200 130 0 Open + P_V_02627 J_14_14 J_15_14 120 200 130 0 Open + P_V_02628 J_14_15 J_15_15 120 200 130 0 Open + P_V_02629 J_14_16 J_15_16 120 200 130 0 Open + P_V_02630 J_14_17 J_15_17 120 200 130 0 Open + P_V_02631 J_14_18 J_15_18 120 200 130 0 Open + P_V_02632 J_14_19 J_15_19 120 200 130 0 Open + P_V_02633 J_14_20 J_15_20 120 200 130 0 Open + P_V_02634 J_14_21 J_15_21 120 200 130 0 Open + P_V_02635 J_14_22 J_15_22 120 200 130 0 Open + P_V_02636 J_14_23 J_15_23 120 200 130 0 Open + P_V_02637 J_14_24 J_15_24 120 200 130 0 Open + P_V_02638 J_14_25 J_15_25 120 200 130 0 Open + P_V_02639 J_14_26 J_15_26 120 200 130 0 Open + P_V_02640 J_14_27 J_15_27 120 200 130 0 Open + P_V_02641 J_14_28 J_15_28 120 200 130 0 Open + P_V_02642 J_14_29 J_15_29 120 200 130 0 Open + P_V_02643 J_14_30 J_15_30 120 200 130 0 Open + P_V_02644 J_14_31 J_15_31 120 200 130 0 Open + P_V_02645 J_14_32 J_15_32 120 200 130 0 Open + P_V_02646 J_14_33 J_15_33 120 200 130 0 Open + P_V_02647 J_14_34 J_15_34 120 200 130 0 Open + P_V_02648 J_14_35 J_15_35 120 200 130 0 Open + P_V_02649 J_14_36 J_15_36 120 200 130 0 Open + P_V_02650 J_14_37 J_15_37 120 200 130 0 Open + P_V_02651 J_14_38 J_15_38 120 200 130 0 Open + P_V_02652 J_14_39 J_15_39 120 200 130 0 Open + P_V_02653 J_14_40 J_15_40 120 200 130 0 Open + P_V_02654 J_14_41 J_15_41 120 200 130 0 Open + P_V_02655 J_14_42 J_15_42 120 200 130 0 Open + P_V_02656 J_14_43 J_15_43 120 200 130 0 Open + P_V_02657 J_14_44 J_15_44 120 200 130 0 Open + P_V_02658 J_15_00 J_16_00 120 200 130 0 Open + P_V_02659 J_15_01 J_16_01 120 200 130 0 Open + P_V_02660 J_15_02 J_16_02 120 200 130 0 Open + P_V_02661 J_15_03 J_16_03 120 200 130 0 Open + P_V_02662 J_15_04 J_16_04 120 200 130 0 Open + P_V_02663 J_15_05 J_16_05 120 200 130 0 Open + P_V_02664 J_15_06 J_16_06 120 200 130 0 Open + P_V_02665 J_15_07 J_16_07 120 200 130 0 Open + P_V_02666 J_15_08 J_16_08 120 200 130 0 Open + P_V_02667 J_15_09 J_16_09 120 200 130 0 Open + P_V_02668 J_15_10 J_16_10 120 200 130 0 Open + P_V_02669 J_15_11 J_16_11 120 200 130 0 Open + P_V_02670 J_15_12 J_16_12 120 200 130 0 Open + P_V_02671 J_15_13 J_16_13 120 200 130 0 Open + P_V_02672 J_15_14 J_16_14 120 200 130 0 Open + P_V_02673 J_15_15 J_16_15 120 200 130 0 Open + P_V_02674 J_15_16 J_16_16 120 200 130 0 Open + P_V_02675 J_15_17 J_16_17 120 200 130 0 Open + P_V_02676 J_15_18 J_16_18 120 200 130 0 Open + P_V_02677 J_15_19 J_16_19 120 200 130 0 Open + P_V_02678 J_15_20 J_16_20 120 200 130 0 Open + P_V_02679 J_15_21 J_16_21 120 200 130 0 Open + P_V_02680 J_15_22 J_16_22 120 200 130 0 Open + P_V_02681 J_15_23 J_16_23 120 200 130 0 Open + P_V_02682 J_15_24 J_16_24 120 200 130 0 Open + P_V_02683 J_15_25 J_16_25 120 200 130 0 Open + P_V_02684 J_15_26 J_16_26 120 200 130 0 Open + P_V_02685 J_15_27 J_16_27 120 200 130 0 Open + P_V_02686 J_15_28 J_16_28 120 200 130 0 Open + P_V_02687 J_15_29 J_16_29 120 200 130 0 Open + P_V_02688 J_15_30 J_16_30 120 200 130 0 Open + P_V_02689 J_15_31 J_16_31 120 200 130 0 Open + P_V_02690 J_15_32 J_16_32 120 200 130 0 Open + P_V_02691 J_15_33 J_16_33 120 200 130 0 Open + P_V_02692 J_15_34 J_16_34 120 200 130 0 Open + P_V_02693 J_15_35 J_16_35 120 200 130 0 Open + P_V_02694 J_15_36 J_16_36 120 200 130 0 Open + P_V_02695 J_15_37 J_16_37 120 200 130 0 Open + P_V_02696 J_15_38 J_16_38 120 200 130 0 Open + P_V_02697 J_15_39 J_16_39 120 200 130 0 Open + P_V_02698 J_15_40 J_16_40 120 200 130 0 Open + P_V_02699 J_15_41 J_16_41 120 200 130 0 Open + P_V_02700 J_15_42 J_16_42 120 200 130 0 Open + P_V_02701 J_15_43 J_16_43 120 200 130 0 Open + P_V_02702 J_15_44 J_16_44 120 200 130 0 Open + P_V_02703 J_16_00 J_17_00 120 200 130 0 Open + P_V_02704 J_16_01 J_17_01 120 200 130 0 Open + P_V_02705 J_16_02 J_17_02 120 200 130 0 Open + P_V_02706 J_16_03 J_17_03 120 200 130 0 Open + P_V_02707 J_16_04 J_17_04 120 200 130 0 Open + P_V_02708 J_16_05 J_17_05 120 200 130 0 Open + P_V_02709 J_16_06 J_17_06 120 200 130 0 Open + P_V_02710 J_16_07 J_17_07 120 200 130 0 Open + P_V_02711 J_16_08 J_17_08 120 200 130 0 Open + P_V_02712 J_16_09 J_17_09 120 200 130 0 Open + P_V_02713 J_16_10 J_17_10 120 200 130 0 Open + P_V_02714 J_16_11 J_17_11 120 200 130 0 Open + P_V_02715 J_16_12 J_17_12 120 200 130 0 Open + P_V_02716 J_16_13 J_17_13 120 200 130 0 Open + P_V_02717 J_16_14 J_17_14 120 200 130 0 Open + P_V_02718 J_16_15 J_17_15 120 200 130 0 Open + P_V_02719 J_16_16 J_17_16 120 200 130 0 Open + P_V_02720 J_16_17 J_17_17 120 200 130 0 Open + P_V_02721 J_16_18 J_17_18 120 200 130 0 Open + P_V_02722 J_16_19 J_17_19 120 200 130 0 Open + P_V_02723 J_16_20 J_17_20 120 200 130 0 Open + P_V_02724 J_16_21 J_17_21 120 200 130 0 Open + P_V_02725 J_16_22 J_17_22 120 200 130 0 Open + P_V_02726 J_16_23 J_17_23 120 200 130 0 Open + P_V_02727 J_16_24 J_17_24 120 200 130 0 Open + P_V_02728 J_16_25 J_17_25 120 200 130 0 Open + P_V_02729 J_16_26 J_17_26 120 200 130 0 Open + P_V_02730 J_16_27 J_17_27 120 200 130 0 Open + P_V_02731 J_16_28 J_17_28 120 200 130 0 Open + P_V_02732 J_16_29 J_17_29 120 200 130 0 Open + P_V_02733 J_16_30 J_17_30 120 200 130 0 Open + P_V_02734 J_16_31 J_17_31 120 200 130 0 Open + P_V_02735 J_16_32 J_17_32 120 200 130 0 Open + P_V_02736 J_16_33 J_17_33 120 200 130 0 Open + P_V_02737 J_16_34 J_17_34 120 200 130 0 Open + P_V_02738 J_16_35 J_17_35 120 200 130 0 Open + P_V_02739 J_16_36 J_17_36 120 200 130 0 Open + P_V_02740 J_16_37 J_17_37 120 200 130 0 Open + P_V_02741 J_16_38 J_17_38 120 200 130 0 Open + P_V_02742 J_16_39 J_17_39 120 200 130 0 Open + P_V_02743 J_16_40 J_17_40 120 200 130 0 Open + P_V_02744 J_16_41 J_17_41 120 200 130 0 Open + P_V_02745 J_16_42 J_17_42 120 200 130 0 Open + P_V_02746 J_16_43 J_17_43 120 200 130 0 Open + P_V_02747 J_16_44 J_17_44 120 200 130 0 Open + P_V_02748 J_17_00 J_18_00 120 200 130 0 Open + P_V_02749 J_17_01 J_18_01 120 200 130 0 Open + P_V_02750 J_17_02 J_18_02 120 200 130 0 Open + P_V_02751 J_17_03 J_18_03 120 200 130 0 Open + P_V_02752 J_17_04 J_18_04 120 200 130 0 Open + P_V_02753 J_17_05 J_18_05 120 200 130 0 Open + P_V_02754 J_17_06 J_18_06 120 200 130 0 Open + P_V_02755 J_17_07 J_18_07 120 200 130 0 Open + P_V_02756 J_17_08 J_18_08 120 200 130 0 Open + P_V_02757 J_17_09 J_18_09 120 200 130 0 Open + P_V_02758 J_17_10 J_18_10 120 200 130 0 Open + P_V_02759 J_17_11 J_18_11 120 200 130 0 Open + P_V_02760 J_17_12 J_18_12 120 200 130 0 Open + P_V_02761 J_17_13 J_18_13 120 200 130 0 Open + P_V_02762 J_17_14 J_18_14 120 200 130 0 Open + P_V_02763 J_17_15 J_18_15 120 200 130 0 Open + P_V_02764 J_17_16 J_18_16 120 200 130 0 Open + P_V_02765 J_17_17 J_18_17 120 200 130 0 Open + P_V_02766 J_17_18 J_18_18 120 200 130 0 Open + P_V_02767 J_17_19 J_18_19 120 200 130 0 Open + P_V_02768 J_17_20 J_18_20 120 200 130 0 Open + P_V_02769 J_17_21 J_18_21 120 200 130 0 Open + P_V_02770 J_17_22 J_18_22 120 200 130 0 Open + P_V_02771 J_17_23 J_18_23 120 200 130 0 Open + P_V_02772 J_17_24 J_18_24 120 200 130 0 Open + P_V_02773 J_17_25 J_18_25 120 200 130 0 Open + P_V_02774 J_17_26 J_18_26 120 200 130 0 Open + P_V_02775 J_17_27 J_18_27 120 200 130 0 Open + P_V_02776 J_17_28 J_18_28 120 200 130 0 Open + P_V_02777 J_17_29 J_18_29 120 200 130 0 Open + P_V_02778 J_17_30 J_18_30 120 200 130 0 Open + P_V_02779 J_17_31 J_18_31 120 200 130 0 Open + P_V_02780 J_17_32 J_18_32 120 200 130 0 Open + P_V_02781 J_17_33 J_18_33 120 200 130 0 Open + P_V_02782 J_17_34 J_18_34 120 200 130 0 Open + P_V_02783 J_17_35 J_18_35 120 200 130 0 Open + P_V_02784 J_17_36 J_18_36 120 200 130 0 Open + P_V_02785 J_17_37 J_18_37 120 200 130 0 Open + P_V_02786 J_17_38 J_18_38 120 200 130 0 Open + P_V_02787 J_17_39 J_18_39 120 200 130 0 Open + P_V_02788 J_17_40 J_18_40 120 200 130 0 Open + P_V_02789 J_17_41 J_18_41 120 200 130 0 Open + P_V_02790 J_17_42 J_18_42 120 200 130 0 Open + P_V_02791 J_17_43 J_18_43 120 200 130 0 Open + P_V_02792 J_17_44 J_18_44 120 200 130 0 Open + P_V_02793 J_18_00 J_19_00 120 200 130 0 Open + P_V_02794 J_18_01 J_19_01 120 200 130 0 Open + P_V_02795 J_18_02 J_19_02 120 200 130 0 Open + P_V_02796 J_18_03 J_19_03 120 200 130 0 Open + P_V_02797 J_18_04 J_19_04 120 200 130 0 Open + P_V_02798 J_18_05 J_19_05 120 200 130 0 Open + P_V_02799 J_18_06 J_19_06 120 200 130 0 Open + P_V_02800 J_18_07 J_19_07 120 200 130 0 Open + P_V_02801 J_18_08 J_19_08 120 200 130 0 Open + P_V_02802 J_18_09 J_19_09 120 200 130 0 Open + P_V_02803 J_18_10 J_19_10 120 200 130 0 Open + P_V_02804 J_18_11 J_19_11 120 200 130 0 Open + P_V_02805 J_18_12 J_19_12 120 200 130 0 Open + P_V_02806 J_18_13 J_19_13 120 200 130 0 Open + P_V_02807 J_18_14 J_19_14 120 200 130 0 Open + P_V_02808 J_18_15 J_19_15 120 200 130 0 Open + P_V_02809 J_18_16 J_19_16 120 200 130 0 Open + P_V_02810 J_18_17 J_19_17 120 200 130 0 Open + P_V_02811 J_18_18 J_19_18 120 200 130 0 Open + P_V_02812 J_18_19 J_19_19 120 200 130 0 Open + P_V_02813 J_18_20 J_19_20 120 200 130 0 Open + P_V_02814 J_18_21 J_19_21 120 200 130 0 Open + P_V_02815 J_18_22 J_19_22 120 200 130 0 Open + P_V_02816 J_18_23 J_19_23 120 200 130 0 Open + P_V_02817 J_18_24 J_19_24 120 200 130 0 Open + P_V_02818 J_18_25 J_19_25 120 200 130 0 Open + P_V_02819 J_18_26 J_19_26 120 200 130 0 Open + P_V_02820 J_18_27 J_19_27 120 200 130 0 Open + P_V_02821 J_18_28 J_19_28 120 200 130 0 Open + P_V_02822 J_18_29 J_19_29 120 200 130 0 Open + P_V_02823 J_18_30 J_19_30 120 200 130 0 Open + P_V_02824 J_18_31 J_19_31 120 200 130 0 Open + P_V_02825 J_18_32 J_19_32 120 200 130 0 Open + P_V_02826 J_18_33 J_19_33 120 200 130 0 Open + P_V_02827 J_18_34 J_19_34 120 200 130 0 Open + P_V_02828 J_18_35 J_19_35 120 200 130 0 Open + P_V_02829 J_18_36 J_19_36 120 200 130 0 Open + P_V_02830 J_18_37 J_19_37 120 200 130 0 Open + P_V_02831 J_18_38 J_19_38 120 200 130 0 Open + P_V_02832 J_18_39 J_19_39 120 200 130 0 Open + P_V_02833 J_18_40 J_19_40 120 200 130 0 Open + P_V_02834 J_18_41 J_19_41 120 200 130 0 Open + P_V_02835 J_18_42 J_19_42 120 200 130 0 Open + P_V_02836 J_18_43 J_19_43 120 200 130 0 Open + P_V_02837 J_18_44 J_19_44 120 200 130 0 Open + P_V_02838 J_19_00 J_20_00 120 200 130 0 Open + P_V_02839 J_19_01 J_20_01 120 200 130 0 Open + P_V_02840 J_19_02 J_20_02 120 200 130 0 Open + P_V_02841 J_19_03 J_20_03 120 200 130 0 Open + P_V_02842 J_19_04 J_20_04 120 200 130 0 Open + P_V_02843 J_19_05 J_20_05 120 200 130 0 Open + P_V_02844 J_19_06 J_20_06 120 200 130 0 Open + P_V_02845 J_19_07 J_20_07 120 200 130 0 Open + P_V_02846 J_19_08 J_20_08 120 200 130 0 Open + P_V_02847 J_19_09 J_20_09 120 200 130 0 Open + P_V_02848 J_19_10 J_20_10 120 200 130 0 Open + P_V_02849 J_19_11 J_20_11 120 200 130 0 Open + P_V_02850 J_19_12 J_20_12 120 200 130 0 Open + P_V_02851 J_19_13 J_20_13 120 200 130 0 Open + P_V_02852 J_19_14 J_20_14 120 200 130 0 Open + P_V_02853 J_19_15 J_20_15 120 200 130 0 Open + P_V_02854 J_19_16 J_20_16 120 200 130 0 Open + P_V_02855 J_19_17 J_20_17 120 200 130 0 Open + P_V_02856 J_19_18 J_20_18 120 200 130 0 Open + P_V_02857 J_19_19 J_20_19 120 200 130 0 Open + P_V_02858 J_19_20 J_20_20 120 200 130 0 Open + P_V_02859 J_19_21 J_20_21 120 200 130 0 Open + P_V_02860 J_19_22 J_20_22 120 200 130 0 Open + P_V_02861 J_19_23 J_20_23 120 200 130 0 Open + P_V_02862 J_19_24 J_20_24 120 200 130 0 Open + P_V_02863 J_19_25 J_20_25 120 200 130 0 Open + P_V_02864 J_19_26 J_20_26 120 200 130 0 Open + P_V_02865 J_19_27 J_20_27 120 200 130 0 Open + P_V_02866 J_19_28 J_20_28 120 200 130 0 Open + P_V_02867 J_19_29 J_20_29 120 200 130 0 Open + P_V_02868 J_19_30 J_20_30 120 200 130 0 Open + P_V_02869 J_19_31 J_20_31 120 200 130 0 Open + P_V_02870 J_19_32 J_20_32 120 200 130 0 Open + P_V_02871 J_19_33 J_20_33 120 200 130 0 Open + P_V_02872 J_19_34 J_20_34 120 200 130 0 Open + P_V_02873 J_19_35 J_20_35 120 200 130 0 Open + P_V_02874 J_19_36 J_20_36 120 200 130 0 Open + P_V_02875 J_19_37 J_20_37 120 200 130 0 Open + P_V_02876 J_19_38 J_20_38 120 200 130 0 Open + P_V_02877 J_19_39 J_20_39 120 200 130 0 Open + P_V_02878 J_19_40 J_20_40 120 200 130 0 Open + P_V_02879 J_19_41 J_20_41 120 200 130 0 Open + P_V_02880 J_19_42 J_20_42 120 200 130 0 Open + P_V_02881 J_19_43 J_20_43 120 200 130 0 Open + P_V_02882 J_19_44 J_20_44 120 200 130 0 Open + P_V_02883 J_20_00 J_21_00 120 200 130 0 Open + P_V_02884 J_20_01 J_21_01 120 200 130 0 Open + P_V_02885 J_20_02 J_21_02 120 200 130 0 Open + P_V_02886 J_20_03 J_21_03 120 200 130 0 Open + P_V_02887 J_20_04 J_21_04 120 200 130 0 Open + P_V_02888 J_20_05 J_21_05 120 200 130 0 Open + P_V_02889 J_20_06 J_21_06 120 200 130 0 Open + P_V_02890 J_20_07 J_21_07 120 200 130 0 Open + P_V_02891 J_20_08 J_21_08 120 200 130 0 Open + P_V_02892 J_20_09 J_21_09 120 200 130 0 Open + P_V_02893 J_20_10 J_21_10 120 200 130 0 Open + P_V_02894 J_20_11 J_21_11 120 200 130 0 Open + P_V_02895 J_20_12 J_21_12 120 200 130 0 Open + P_V_02896 J_20_13 J_21_13 120 200 130 0 Open + P_V_02897 J_20_14 J_21_14 120 200 130 0 Open + P_V_02898 J_20_15 J_21_15 120 200 130 0 Open + P_V_02899 J_20_16 J_21_16 120 200 130 0 Open + P_V_02900 J_20_17 J_21_17 120 200 130 0 Open + P_V_02901 J_20_18 J_21_18 120 200 130 0 Open + P_V_02902 J_20_19 J_21_19 120 200 130 0 Open + P_V_02903 J_20_20 J_21_20 120 200 130 0 Open + P_V_02904 J_20_21 J_21_21 120 200 130 0 Open + P_V_02905 J_20_22 J_21_22 120 200 130 0 Open + P_V_02906 J_20_23 J_21_23 120 200 130 0 Open + P_V_02907 J_20_24 J_21_24 120 200 130 0 Open + P_V_02908 J_20_25 J_21_25 120 200 130 0 Open + P_V_02909 J_20_26 J_21_26 120 200 130 0 Open + P_V_02910 J_20_27 J_21_27 120 200 130 0 Open + P_V_02911 J_20_28 J_21_28 120 200 130 0 Open + P_V_02912 J_20_29 J_21_29 120 200 130 0 Open + P_V_02913 J_20_30 J_21_30 120 200 130 0 Open + P_V_02914 J_20_31 J_21_31 120 200 130 0 Open + P_V_02915 J_20_32 J_21_32 120 200 130 0 Open + P_V_02916 J_20_33 J_21_33 120 200 130 0 Open + P_V_02917 J_20_34 J_21_34 120 200 130 0 Open + P_V_02918 J_20_35 J_21_35 120 200 130 0 Open + P_V_02919 J_20_36 J_21_36 120 200 130 0 Open + P_V_02920 J_20_37 J_21_37 120 200 130 0 Open + P_V_02921 J_20_38 J_21_38 120 200 130 0 Open + P_V_02922 J_20_39 J_21_39 120 200 130 0 Open + P_V_02923 J_20_40 J_21_40 120 200 130 0 Open + P_V_02924 J_20_41 J_21_41 120 200 130 0 Open + P_V_02925 J_20_42 J_21_42 120 200 130 0 Open + P_V_02926 J_20_43 J_21_43 120 200 130 0 Open + P_V_02927 J_20_44 J_21_44 120 200 130 0 Open + P_V_02928 J_21_00 J_22_00 120 200 130 0 Open + P_V_02929 J_21_01 J_22_01 120 200 130 0 Open + P_V_02930 J_21_02 J_22_02 120 200 130 0 Open + P_V_02931 J_21_03 J_22_03 120 200 130 0 Open + P_V_02932 J_21_04 J_22_04 120 200 130 0 Open + P_V_02933 J_21_05 J_22_05 120 200 130 0 Open + P_V_02934 J_21_06 J_22_06 120 200 130 0 Open + P_V_02935 J_21_07 J_22_07 120 200 130 0 Open + P_V_02936 J_21_08 J_22_08 120 200 130 0 Open + P_V_02937 J_21_09 J_22_09 120 200 130 0 Open + P_V_02938 J_21_10 J_22_10 120 200 130 0 Open + P_V_02939 J_21_11 J_22_11 120 200 130 0 Open + P_V_02940 J_21_12 J_22_12 120 200 130 0 Open + P_V_02941 J_21_13 J_22_13 120 200 130 0 Open + P_V_02942 J_21_14 J_22_14 120 200 130 0 Open + P_V_02943 J_21_15 J_22_15 120 200 130 0 Open + P_V_02944 J_21_16 J_22_16 120 200 130 0 Open + P_V_02945 J_21_17 J_22_17 120 200 130 0 Open + P_V_02946 J_21_18 J_22_18 120 200 130 0 Open + P_V_02947 J_21_19 J_22_19 120 200 130 0 Open + P_V_02948 J_21_20 J_22_20 120 200 130 0 Open + P_V_02949 J_21_21 J_22_21 120 200 130 0 Open + P_V_02950 J_21_22 J_22_22 120 200 130 0 Open + P_V_02951 J_21_23 J_22_23 120 200 130 0 Open + P_V_02952 J_21_24 J_22_24 120 200 130 0 Open + P_V_02953 J_21_25 J_22_25 120 200 130 0 Open + P_V_02954 J_21_26 J_22_26 120 200 130 0 Open + P_V_02955 J_21_27 J_22_27 120 200 130 0 Open + P_V_02956 J_21_28 J_22_28 120 200 130 0 Open + P_V_02957 J_21_29 J_22_29 120 200 130 0 Open + P_V_02958 J_21_30 J_22_30 120 200 130 0 Open + P_V_02959 J_21_31 J_22_31 120 200 130 0 Open + P_V_02960 J_21_32 J_22_32 120 200 130 0 Open + P_V_02961 J_21_33 J_22_33 120 200 130 0 Open + P_V_02962 J_21_34 J_22_34 120 200 130 0 Open + P_V_02963 J_21_35 J_22_35 120 200 130 0 Open + P_V_02964 J_21_36 J_22_36 120 200 130 0 Open + P_V_02965 J_21_37 J_22_37 120 200 130 0 Open + P_V_02966 J_21_38 J_22_38 120 200 130 0 Open + P_V_02967 J_21_39 J_22_39 120 200 130 0 Open + P_V_02968 J_21_40 J_22_40 120 200 130 0 Open + P_V_02969 J_21_41 J_22_41 120 200 130 0 Open + P_V_02970 J_21_42 J_22_42 120 200 130 0 Open + P_V_02971 J_21_43 J_22_43 120 200 130 0 Open + P_V_02972 J_21_44 J_22_44 120 200 130 0 Open + P_V_02973 J_22_00 J_23_00 120 200 130 0 Open + P_V_02974 J_22_01 J_23_01 120 200 130 0 Open + P_V_02975 J_22_02 J_23_02 120 200 130 0 Open + P_V_02976 J_22_03 J_23_03 120 200 130 0 Open + P_V_02977 J_22_04 J_23_04 120 200 130 0 Open + P_V_02978 J_22_05 J_23_05 120 200 130 0 Open + P_V_02979 J_22_06 J_23_06 120 200 130 0 Open + P_V_02980 J_22_07 J_23_07 120 200 130 0 Open + P_V_02981 J_22_08 J_23_08 120 200 130 0 Open + P_V_02982 J_22_09 J_23_09 120 200 130 0 Open + P_V_02983 J_22_10 J_23_10 120 200 130 0 Open + P_V_02984 J_22_11 J_23_11 120 200 130 0 Open + P_V_02985 J_22_12 J_23_12 120 200 130 0 Open + P_V_02986 J_22_13 J_23_13 120 200 130 0 Open + P_V_02987 J_22_14 J_23_14 120 200 130 0 Open + P_V_02988 J_22_15 J_23_15 120 200 130 0 Open + P_V_02989 J_22_16 J_23_16 120 200 130 0 Open + P_V_02990 J_22_17 J_23_17 120 200 130 0 Open + P_V_02991 J_22_18 J_23_18 120 200 130 0 Open + P_V_02992 J_22_19 J_23_19 120 200 130 0 Open + P_V_02993 J_22_20 J_23_20 120 200 130 0 Open + P_V_02994 J_22_21 J_23_21 120 200 130 0 Open + P_V_02995 J_22_22 J_23_22 120 200 130 0 Open + P_V_02996 J_22_23 J_23_23 120 200 130 0 Open + P_V_02997 J_22_24 J_23_24 120 200 130 0 Open + P_V_02998 J_22_25 J_23_25 120 200 130 0 Open + P_V_02999 J_22_26 J_23_26 120 200 130 0 Open + P_V_03000 J_22_27 J_23_27 120 200 130 0 Open + P_V_03001 J_22_28 J_23_28 120 200 130 0 Open + P_V_03002 J_22_29 J_23_29 120 200 130 0 Open + P_V_03003 J_22_30 J_23_30 120 200 130 0 Open + P_V_03004 J_22_31 J_23_31 120 200 130 0 Open + P_V_03005 J_22_32 J_23_32 120 200 130 0 Open + P_V_03006 J_22_33 J_23_33 120 200 130 0 Open + P_V_03007 J_22_34 J_23_34 120 200 130 0 Open + P_V_03008 J_22_35 J_23_35 120 200 130 0 Open + P_V_03009 J_22_36 J_23_36 120 200 130 0 Open + P_V_03010 J_22_37 J_23_37 120 200 130 0 Open + P_V_03011 J_22_38 J_23_38 120 200 130 0 Open + P_V_03012 J_22_39 J_23_39 120 200 130 0 Open + P_V_03013 J_22_40 J_23_40 120 200 130 0 Open + P_V_03014 J_22_41 J_23_41 120 200 130 0 Open + P_V_03015 J_22_42 J_23_42 120 200 130 0 Open + P_V_03016 J_22_43 J_23_43 120 200 130 0 Open + P_V_03017 J_22_44 J_23_44 120 200 130 0 Open + P_V_03018 J_23_00 J_24_00 120 200 130 0 Open + P_V_03019 J_23_01 J_24_01 120 200 130 0 Open + P_V_03020 J_23_02 J_24_02 120 200 130 0 Open + P_V_03021 J_23_03 J_24_03 120 200 130 0 Open + P_V_03022 J_23_04 J_24_04 120 200 130 0 Open + P_V_03023 J_23_05 J_24_05 120 200 130 0 Open + P_V_03024 J_23_06 J_24_06 120 200 130 0 Open + P_V_03025 J_23_07 J_24_07 120 200 130 0 Open + P_V_03026 J_23_08 J_24_08 120 200 130 0 Open + P_V_03027 J_23_09 J_24_09 120 200 130 0 Open + P_V_03028 J_23_10 J_24_10 120 200 130 0 Open + P_V_03029 J_23_11 J_24_11 120 200 130 0 Open + P_V_03030 J_23_12 J_24_12 120 200 130 0 Open + P_V_03031 J_23_13 J_24_13 120 200 130 0 Open + P_V_03032 J_23_14 J_24_14 120 200 130 0 Open + P_V_03033 J_23_15 J_24_15 120 200 130 0 Open + P_V_03034 J_23_16 J_24_16 120 200 130 0 Open + P_V_03035 J_23_17 J_24_17 120 200 130 0 Open + P_V_03036 J_23_18 J_24_18 120 200 130 0 Open + P_V_03037 J_23_19 J_24_19 120 200 130 0 Open + P_V_03038 J_23_20 J_24_20 120 200 130 0 Open + P_V_03039 J_23_21 J_24_21 120 200 130 0 Open + P_V_03040 J_23_22 J_24_22 120 200 130 0 Open + P_V_03041 J_23_23 J_24_23 120 200 130 0 Open + P_V_03042 J_23_24 J_24_24 120 200 130 0 Open + P_V_03043 J_23_25 J_24_25 120 200 130 0 Open + P_V_03044 J_23_26 J_24_26 120 200 130 0 Open + P_V_03045 J_23_27 J_24_27 120 200 130 0 Open + P_V_03046 J_23_28 J_24_28 120 200 130 0 Open + P_V_03047 J_23_29 J_24_29 120 200 130 0 Open + P_V_03048 J_23_30 J_24_30 120 200 130 0 Open + P_V_03049 J_23_31 J_24_31 120 200 130 0 Open + P_V_03050 J_23_32 J_24_32 120 200 130 0 Open + P_V_03051 J_23_33 J_24_33 120 200 130 0 Open + P_V_03052 J_23_34 J_24_34 120 200 130 0 Open + P_V_03053 J_23_35 J_24_35 120 200 130 0 Open + P_V_03054 J_23_36 J_24_36 120 200 130 0 Open + P_V_03055 J_23_37 J_24_37 120 200 130 0 Open + P_V_03056 J_23_38 J_24_38 120 200 130 0 Open + P_V_03057 J_23_39 J_24_39 120 200 130 0 Open + P_V_03058 J_23_40 J_24_40 120 200 130 0 Open + P_V_03059 J_23_41 J_24_41 120 200 130 0 Open + P_V_03060 J_23_42 J_24_42 120 200 130 0 Open + P_V_03061 J_23_43 J_24_43 120 200 130 0 Open + P_V_03062 J_23_44 J_24_44 120 200 130 0 Open + P_V_03063 J_24_00 J_25_00 120 200 130 0 Open + P_V_03064 J_24_01 J_25_01 120 200 130 0 Open + P_V_03065 J_24_02 J_25_02 120 200 130 0 Open + P_V_03066 J_24_03 J_25_03 120 200 130 0 Open + P_V_03067 J_24_04 J_25_04 120 200 130 0 Open + P_V_03068 J_24_05 J_25_05 120 200 130 0 Open + P_V_03069 J_24_06 J_25_06 120 200 130 0 Open + P_V_03070 J_24_07 J_25_07 120 200 130 0 Open + P_V_03071 J_24_08 J_25_08 120 200 130 0 Open + P_V_03072 J_24_09 J_25_09 120 200 130 0 Open + P_V_03073 J_24_10 J_25_10 120 200 130 0 Open + P_V_03074 J_24_11 J_25_11 120 200 130 0 Open + P_V_03075 J_24_12 J_25_12 120 200 130 0 Open + P_V_03076 J_24_13 J_25_13 120 200 130 0 Open + P_V_03077 J_24_14 J_25_14 120 200 130 0 Open + P_V_03078 J_24_15 J_25_15 120 200 130 0 Open + P_V_03079 J_24_16 J_25_16 120 200 130 0 Open + P_V_03080 J_24_17 J_25_17 120 200 130 0 Open + P_V_03081 J_24_18 J_25_18 120 200 130 0 Open + P_V_03082 J_24_19 J_25_19 120 200 130 0 Open + P_V_03083 J_24_20 J_25_20 120 200 130 0 Open + P_V_03084 J_24_21 J_25_21 120 200 130 0 Open + P_V_03085 J_24_22 J_25_22 120 200 130 0 Open + P_V_03086 J_24_23 J_25_23 120 200 130 0 Open + P_V_03087 J_24_24 J_25_24 120 200 130 0 Open + P_V_03088 J_24_25 J_25_25 120 200 130 0 Open + P_V_03089 J_24_26 J_25_26 120 200 130 0 Open + P_V_03090 J_24_27 J_25_27 120 200 130 0 Open + P_V_03091 J_24_28 J_25_28 120 200 130 0 Open + P_V_03092 J_24_29 J_25_29 120 200 130 0 Open + P_V_03093 J_24_30 J_25_30 120 200 130 0 Open + P_V_03094 J_24_31 J_25_31 120 200 130 0 Open + P_V_03095 J_24_32 J_25_32 120 200 130 0 Open + P_V_03096 J_24_33 J_25_33 120 200 130 0 Open + P_V_03097 J_24_34 J_25_34 120 200 130 0 Open + P_V_03098 J_24_35 J_25_35 120 200 130 0 Open + P_V_03099 J_24_36 J_25_36 120 200 130 0 Open + P_V_03100 J_24_37 J_25_37 120 200 130 0 Open + P_V_03101 J_24_38 J_25_38 120 200 130 0 Open + P_V_03102 J_24_39 J_25_39 120 200 130 0 Open + P_V_03103 J_24_40 J_25_40 120 200 130 0 Open + P_V_03104 J_24_41 J_25_41 120 200 130 0 Open + P_V_03105 J_24_42 J_25_42 120 200 130 0 Open + P_V_03106 J_24_43 J_25_43 120 200 130 0 Open + P_V_03107 J_24_44 J_25_44 120 200 130 0 Open + P_V_03108 J_25_00 J_26_00 120 200 130 0 Open + P_V_03109 J_25_01 J_26_01 120 200 130 0 Open + P_V_03110 J_25_02 J_26_02 120 200 130 0 Open + P_V_03111 J_25_03 J_26_03 120 200 130 0 Open + P_V_03112 J_25_04 J_26_04 120 200 130 0 Open + P_V_03113 J_25_05 J_26_05 120 200 130 0 Open + P_V_03114 J_25_06 J_26_06 120 200 130 0 Open + P_V_03115 J_25_07 J_26_07 120 200 130 0 Open + P_V_03116 J_25_08 J_26_08 120 200 130 0 Open + P_V_03117 J_25_09 J_26_09 120 200 130 0 Open + P_V_03118 J_25_10 J_26_10 120 200 130 0 Open + P_V_03119 J_25_11 J_26_11 120 200 130 0 Open + P_V_03120 J_25_12 J_26_12 120 200 130 0 Open + P_V_03121 J_25_13 J_26_13 120 200 130 0 Open + P_V_03122 J_25_14 J_26_14 120 200 130 0 Open + P_V_03123 J_25_15 J_26_15 120 200 130 0 Open + P_V_03124 J_25_16 J_26_16 120 200 130 0 Open + P_V_03125 J_25_17 J_26_17 120 200 130 0 Open + P_V_03126 J_25_18 J_26_18 120 200 130 0 Open + P_V_03127 J_25_19 J_26_19 120 200 130 0 Open + P_V_03128 J_25_20 J_26_20 120 200 130 0 Open + P_V_03129 J_25_21 J_26_21 120 200 130 0 Open + P_V_03130 J_25_22 J_26_22 120 200 130 0 Open + P_V_03131 J_25_23 J_26_23 120 200 130 0 Open + P_V_03132 J_25_24 J_26_24 120 200 130 0 Open + P_V_03133 J_25_25 J_26_25 120 200 130 0 Open + P_V_03134 J_25_26 J_26_26 120 200 130 0 Open + P_V_03135 J_25_27 J_26_27 120 200 130 0 Open + P_V_03136 J_25_28 J_26_28 120 200 130 0 Open + P_V_03137 J_25_29 J_26_29 120 200 130 0 Open + P_V_03138 J_25_30 J_26_30 120 200 130 0 Open + P_V_03139 J_25_31 J_26_31 120 200 130 0 Open + P_V_03140 J_25_32 J_26_32 120 200 130 0 Open + P_V_03141 J_25_33 J_26_33 120 200 130 0 Open + P_V_03142 J_25_34 J_26_34 120 200 130 0 Open + P_V_03143 J_25_35 J_26_35 120 200 130 0 Open + P_V_03144 J_25_36 J_26_36 120 200 130 0 Open + P_V_03145 J_25_37 J_26_37 120 200 130 0 Open + P_V_03146 J_25_38 J_26_38 120 200 130 0 Open + P_V_03147 J_25_39 J_26_39 120 200 130 0 Open + P_V_03148 J_25_40 J_26_40 120 200 130 0 Open + P_V_03149 J_25_41 J_26_41 120 200 130 0 Open + P_V_03150 J_25_42 J_26_42 120 200 130 0 Open + P_V_03151 J_25_43 J_26_43 120 200 130 0 Open + P_V_03152 J_25_44 J_26_44 120 200 130 0 Open + P_V_03153 J_26_00 J_27_00 120 200 130 0 Open + P_V_03154 J_26_01 J_27_01 120 200 130 0 Open + P_V_03155 J_26_02 J_27_02 120 200 130 0 Open + P_V_03156 J_26_03 J_27_03 120 200 130 0 Open + P_V_03157 J_26_04 J_27_04 120 200 130 0 Open + P_V_03158 J_26_05 J_27_05 120 200 130 0 Open + P_V_03159 J_26_06 J_27_06 120 200 130 0 Open + P_V_03160 J_26_07 J_27_07 120 200 130 0 Open + P_V_03161 J_26_08 J_27_08 120 200 130 0 Open + P_V_03162 J_26_09 J_27_09 120 200 130 0 Open + P_V_03163 J_26_10 J_27_10 120 200 130 0 Open + P_V_03164 J_26_11 J_27_11 120 200 130 0 Open + P_V_03165 J_26_12 J_27_12 120 200 130 0 Open + P_V_03166 J_26_13 J_27_13 120 200 130 0 Open + P_V_03167 J_26_14 J_27_14 120 200 130 0 Open + P_V_03168 J_26_15 J_27_15 120 200 130 0 Open + P_V_03169 J_26_16 J_27_16 120 200 130 0 Open + P_V_03170 J_26_17 J_27_17 120 200 130 0 Open + P_V_03171 J_26_18 J_27_18 120 200 130 0 Open + P_V_03172 J_26_19 J_27_19 120 200 130 0 Open + P_V_03173 J_26_20 J_27_20 120 200 130 0 Open + P_V_03174 J_26_21 J_27_21 120 200 130 0 Open + P_V_03175 J_26_22 J_27_22 120 200 130 0 Open + P_V_03176 J_26_23 J_27_23 120 200 130 0 Open + P_V_03177 J_26_24 J_27_24 120 200 130 0 Open + P_V_03178 J_26_25 J_27_25 120 200 130 0 Open + P_V_03179 J_26_26 J_27_26 120 200 130 0 Open + P_V_03180 J_26_27 J_27_27 120 200 130 0 Open + P_V_03181 J_26_28 J_27_28 120 200 130 0 Open + P_V_03182 J_26_29 J_27_29 120 200 130 0 Open + P_V_03183 J_26_30 J_27_30 120 200 130 0 Open + P_V_03184 J_26_31 J_27_31 120 200 130 0 Open + P_V_03185 J_26_32 J_27_32 120 200 130 0 Open + P_V_03186 J_26_33 J_27_33 120 200 130 0 Open + P_V_03187 J_26_34 J_27_34 120 200 130 0 Open + P_V_03188 J_26_35 J_27_35 120 200 130 0 Open + P_V_03189 J_26_36 J_27_36 120 200 130 0 Open + P_V_03190 J_26_37 J_27_37 120 200 130 0 Open + P_V_03191 J_26_38 J_27_38 120 200 130 0 Open + P_V_03192 J_26_39 J_27_39 120 200 130 0 Open + P_V_03193 J_26_40 J_27_40 120 200 130 0 Open + P_V_03194 J_26_41 J_27_41 120 200 130 0 Open + P_V_03195 J_26_42 J_27_42 120 200 130 0 Open + P_V_03196 J_26_43 J_27_43 120 200 130 0 Open + P_V_03197 J_26_44 J_27_44 120 200 130 0 Open + P_V_03198 J_27_00 J_28_00 120 200 130 0 Open + P_V_03199 J_27_01 J_28_01 120 200 130 0 Open + P_V_03200 J_27_02 J_28_02 120 200 130 0 Open + P_V_03201 J_27_03 J_28_03 120 200 130 0 Open + P_V_03202 J_27_04 J_28_04 120 200 130 0 Open + P_V_03203 J_27_05 J_28_05 120 200 130 0 Open + P_V_03204 J_27_06 J_28_06 120 200 130 0 Open + P_V_03205 J_27_07 J_28_07 120 200 130 0 Open + P_V_03206 J_27_08 J_28_08 120 200 130 0 Open + P_V_03207 J_27_09 J_28_09 120 200 130 0 Open + P_V_03208 J_27_10 J_28_10 120 200 130 0 Open + P_V_03209 J_27_11 J_28_11 120 200 130 0 Open + P_V_03210 J_27_12 J_28_12 120 200 130 0 Open + P_V_03211 J_27_13 J_28_13 120 200 130 0 Open + P_V_03212 J_27_14 J_28_14 120 200 130 0 Open + P_V_03213 J_27_15 J_28_15 120 200 130 0 Open + P_V_03214 J_27_16 J_28_16 120 200 130 0 Open + P_V_03215 J_27_17 J_28_17 120 200 130 0 Open + P_V_03216 J_27_18 J_28_18 120 200 130 0 Open + P_V_03217 J_27_19 J_28_19 120 200 130 0 Open + P_V_03218 J_27_20 J_28_20 120 200 130 0 Open + P_V_03219 J_27_21 J_28_21 120 200 130 0 Open + P_V_03220 J_27_22 J_28_22 120 200 130 0 Open + P_V_03221 J_27_23 J_28_23 120 200 130 0 Open + P_V_03222 J_27_24 J_28_24 120 200 130 0 Open + P_V_03223 J_27_25 J_28_25 120 200 130 0 Open + P_V_03224 J_27_26 J_28_26 120 200 130 0 Open + P_V_03225 J_27_27 J_28_27 120 200 130 0 Open + P_V_03226 J_27_28 J_28_28 120 200 130 0 Open + P_V_03227 J_27_29 J_28_29 120 200 130 0 Open + P_V_03228 J_27_30 J_28_30 120 200 130 0 Open + P_V_03229 J_27_31 J_28_31 120 200 130 0 Open + P_V_03230 J_27_32 J_28_32 120 200 130 0 Open + P_V_03231 J_27_33 J_28_33 120 200 130 0 Open + P_V_03232 J_27_34 J_28_34 120 200 130 0 Open + P_V_03233 J_27_35 J_28_35 120 200 130 0 Open + P_V_03234 J_27_36 J_28_36 120 200 130 0 Open + P_V_03235 J_27_37 J_28_37 120 200 130 0 Open + P_V_03236 J_27_38 J_28_38 120 200 130 0 Open + P_V_03237 J_27_39 J_28_39 120 200 130 0 Open + P_V_03238 J_27_40 J_28_40 120 200 130 0 Open + P_V_03239 J_27_41 J_28_41 120 200 130 0 Open + P_V_03240 J_27_42 J_28_42 120 200 130 0 Open + P_V_03241 J_27_43 J_28_43 120 200 130 0 Open + P_V_03242 J_27_44 J_28_44 120 200 130 0 Open + P_V_03243 J_28_00 J_29_00 120 200 130 0 Open + P_V_03244 J_28_01 J_29_01 120 200 130 0 Open + P_V_03245 J_28_02 J_29_02 120 200 130 0 Open + P_V_03246 J_28_03 J_29_03 120 200 130 0 Open + P_V_03247 J_28_04 J_29_04 120 200 130 0 Open + P_V_03248 J_28_05 J_29_05 120 200 130 0 Open + P_V_03249 J_28_06 J_29_06 120 200 130 0 Open + P_V_03250 J_28_07 J_29_07 120 200 130 0 Open + P_V_03251 J_28_08 J_29_08 120 200 130 0 Open + P_V_03252 J_28_09 J_29_09 120 200 130 0 Open + P_V_03253 J_28_10 J_29_10 120 200 130 0 Open + P_V_03254 J_28_11 J_29_11 120 200 130 0 Open + P_V_03255 J_28_12 J_29_12 120 200 130 0 Open + P_V_03256 J_28_13 J_29_13 120 200 130 0 Open + P_V_03257 J_28_14 J_29_14 120 200 130 0 Open + P_V_03258 J_28_15 J_29_15 120 200 130 0 Open + P_V_03259 J_28_16 J_29_16 120 200 130 0 Open + P_V_03260 J_28_17 J_29_17 120 200 130 0 Open + P_V_03261 J_28_18 J_29_18 120 200 130 0 Open + P_V_03262 J_28_19 J_29_19 120 200 130 0 Open + P_V_03263 J_28_20 J_29_20 120 200 130 0 Open + P_V_03264 J_28_21 J_29_21 120 200 130 0 Open + P_V_03265 J_28_22 J_29_22 120 200 130 0 Open + P_V_03266 J_28_23 J_29_23 120 200 130 0 Open + P_V_03267 J_28_24 J_29_24 120 200 130 0 Open + P_V_03268 J_28_25 J_29_25 120 200 130 0 Open + P_V_03269 J_28_26 J_29_26 120 200 130 0 Open + P_V_03270 J_28_27 J_29_27 120 200 130 0 Open + P_V_03271 J_28_28 J_29_28 120 200 130 0 Open + P_V_03272 J_28_29 J_29_29 120 200 130 0 Open + P_V_03273 J_28_30 J_29_30 120 200 130 0 Open + P_V_03274 J_28_31 J_29_31 120 200 130 0 Open + P_V_03275 J_28_32 J_29_32 120 200 130 0 Open + P_V_03276 J_28_33 J_29_33 120 200 130 0 Open + P_V_03277 J_28_34 J_29_34 120 200 130 0 Open + P_V_03278 J_28_35 J_29_35 120 200 130 0 Open + P_V_03279 J_28_36 J_29_36 120 200 130 0 Open + P_V_03280 J_28_37 J_29_37 120 200 130 0 Open + P_V_03281 J_28_38 J_29_38 120 200 130 0 Open + P_V_03282 J_28_39 J_29_39 120 200 130 0 Open + P_V_03283 J_28_40 J_29_40 120 200 130 0 Open + P_V_03284 J_28_41 J_29_41 120 200 130 0 Open + P_V_03285 J_28_42 J_29_42 120 200 130 0 Open + P_V_03286 J_28_43 J_29_43 120 200 130 0 Open + P_V_03287 J_28_44 J_29_44 120 200 130 0 Open + P_V_03288 J_29_00 J_30_00 120 200 130 0 Open + P_V_03289 J_29_01 J_30_01 120 200 130 0 Open + P_V_03290 J_29_02 J_30_02 120 200 130 0 Open + P_V_03291 J_29_03 J_30_03 120 200 130 0 Open + P_V_03292 J_29_04 J_30_04 120 200 130 0 Open + P_V_03293 J_29_05 J_30_05 120 200 130 0 Open + P_V_03294 J_29_06 J_30_06 120 200 130 0 Open + P_V_03295 J_29_07 J_30_07 120 200 130 0 Open + P_V_03296 J_29_08 J_30_08 120 200 130 0 Open + P_V_03297 J_29_09 J_30_09 120 200 130 0 Open + P_V_03298 J_29_10 J_30_10 120 200 130 0 Open + P_V_03299 J_29_11 J_30_11 120 200 130 0 Open + P_V_03300 J_29_12 J_30_12 120 200 130 0 Open + P_V_03301 J_29_13 J_30_13 120 200 130 0 Open + P_V_03302 J_29_14 J_30_14 120 200 130 0 Open + P_V_03303 J_29_15 J_30_15 120 200 130 0 Open + P_V_03304 J_29_16 J_30_16 120 200 130 0 Open + P_V_03305 J_29_17 J_30_17 120 200 130 0 Open + P_V_03306 J_29_18 J_30_18 120 200 130 0 Open + P_V_03307 J_29_19 J_30_19 120 200 130 0 Open + P_V_03308 J_29_20 J_30_20 120 200 130 0 Open + P_V_03309 J_29_21 J_30_21 120 200 130 0 Open + P_V_03310 J_29_22 J_30_22 120 200 130 0 Open + P_V_03311 J_29_23 J_30_23 120 200 130 0 Open + P_V_03312 J_29_24 J_30_24 120 200 130 0 Open + P_V_03313 J_29_25 J_30_25 120 200 130 0 Open + P_V_03314 J_29_26 J_30_26 120 200 130 0 Open + P_V_03315 J_29_27 J_30_27 120 200 130 0 Open + P_V_03316 J_29_28 J_30_28 120 200 130 0 Open + P_V_03317 J_29_29 J_30_29 120 200 130 0 Open + P_V_03318 J_29_30 J_30_30 120 200 130 0 Open + P_V_03319 J_29_31 J_30_31 120 200 130 0 Open + P_V_03320 J_29_32 J_30_32 120 200 130 0 Open + P_V_03321 J_29_33 J_30_33 120 200 130 0 Open + P_V_03322 J_29_34 J_30_34 120 200 130 0 Open + P_V_03323 J_29_35 J_30_35 120 200 130 0 Open + P_V_03324 J_29_36 J_30_36 120 200 130 0 Open + P_V_03325 J_29_37 J_30_37 120 200 130 0 Open + P_V_03326 J_29_38 J_30_38 120 200 130 0 Open + P_V_03327 J_29_39 J_30_39 120 200 130 0 Open + P_V_03328 J_29_40 J_30_40 120 200 130 0 Open + P_V_03329 J_29_41 J_30_41 120 200 130 0 Open + P_V_03330 J_29_42 J_30_42 120 200 130 0 Open + P_V_03331 J_29_43 J_30_43 120 200 130 0 Open + P_V_03332 J_29_44 J_30_44 120 200 130 0 Open + P_V_03333 J_30_00 J_31_00 120 200 130 0 Open + P_V_03334 J_30_01 J_31_01 120 200 130 0 Open + P_V_03335 J_30_02 J_31_02 120 200 130 0 Open + P_V_03336 J_30_03 J_31_03 120 200 130 0 Open + P_V_03337 J_30_04 J_31_04 120 200 130 0 Open + P_V_03338 J_30_05 J_31_05 120 200 130 0 Open + P_V_03339 J_30_06 J_31_06 120 200 130 0 Open + P_V_03340 J_30_07 J_31_07 120 200 130 0 Open + P_V_03341 J_30_08 J_31_08 120 200 130 0 Open + P_V_03342 J_30_09 J_31_09 120 200 130 0 Open + P_V_03343 J_30_10 J_31_10 120 200 130 0 Open + P_V_03344 J_30_11 J_31_11 120 200 130 0 Open + P_V_03345 J_30_12 J_31_12 120 200 130 0 Open + P_V_03346 J_30_13 J_31_13 120 200 130 0 Open + P_V_03347 J_30_14 J_31_14 120 200 130 0 Open + P_V_03348 J_30_15 J_31_15 120 200 130 0 Open + P_V_03349 J_30_16 J_31_16 120 200 130 0 Open + P_V_03350 J_30_17 J_31_17 120 200 130 0 Open + P_V_03351 J_30_18 J_31_18 120 200 130 0 Open + P_V_03352 J_30_19 J_31_19 120 200 130 0 Open + P_V_03353 J_30_20 J_31_20 120 200 130 0 Open + P_V_03354 J_30_21 J_31_21 120 200 130 0 Open + P_V_03355 J_30_22 J_31_22 120 200 130 0 Open + P_V_03356 J_30_23 J_31_23 120 200 130 0 Open + P_V_03357 J_30_24 J_31_24 120 200 130 0 Open + P_V_03358 J_30_25 J_31_25 120 200 130 0 Open + P_V_03359 J_30_26 J_31_26 120 200 130 0 Open + P_V_03360 J_30_27 J_31_27 120 200 130 0 Open + P_V_03361 J_30_28 J_31_28 120 200 130 0 Open + P_V_03362 J_30_29 J_31_29 120 200 130 0 Open + P_V_03363 J_30_30 J_31_30 120 200 130 0 Open + P_V_03364 J_30_31 J_31_31 120 200 130 0 Open + P_V_03365 J_30_32 J_31_32 120 200 130 0 Open + P_V_03366 J_30_33 J_31_33 120 200 130 0 Open + P_V_03367 J_30_34 J_31_34 120 200 130 0 Open + P_V_03368 J_30_35 J_31_35 120 200 130 0 Open + P_V_03369 J_30_36 J_31_36 120 200 130 0 Open + P_V_03370 J_30_37 J_31_37 120 200 130 0 Open + P_V_03371 J_30_38 J_31_38 120 200 130 0 Open + P_V_03372 J_30_39 J_31_39 120 200 130 0 Open + P_V_03373 J_30_40 J_31_40 120 200 130 0 Open + P_V_03374 J_30_41 J_31_41 120 200 130 0 Open + P_V_03375 J_30_42 J_31_42 120 200 130 0 Open + P_V_03376 J_30_43 J_31_43 120 200 130 0 Open + P_V_03377 J_30_44 J_31_44 120 200 130 0 Open + P_V_03378 J_31_00 J_32_00 120 200 130 0 Open + P_V_03379 J_31_01 J_32_01 120 200 130 0 Open + P_V_03380 J_31_02 J_32_02 120 200 130 0 Open + P_V_03381 J_31_03 J_32_03 120 200 130 0 Open + P_V_03382 J_31_04 J_32_04 120 200 130 0 Open + P_V_03383 J_31_05 J_32_05 120 200 130 0 Open + P_V_03384 J_31_06 J_32_06 120 200 130 0 Open + P_V_03385 J_31_07 J_32_07 120 200 130 0 Open + P_V_03386 J_31_08 J_32_08 120 200 130 0 Open + P_V_03387 J_31_09 J_32_09 120 200 130 0 Open + P_V_03388 J_31_10 J_32_10 120 200 130 0 Open + P_V_03389 J_31_11 J_32_11 120 200 130 0 Open + P_V_03390 J_31_12 J_32_12 120 200 130 0 Open + P_V_03391 J_31_13 J_32_13 120 200 130 0 Open + P_V_03392 J_31_14 J_32_14 120 200 130 0 Open + P_V_03393 J_31_15 J_32_15 120 200 130 0 Open + P_V_03394 J_31_16 J_32_16 120 200 130 0 Open + P_V_03395 J_31_17 J_32_17 120 200 130 0 Open + P_V_03396 J_31_18 J_32_18 120 200 130 0 Open + P_V_03397 J_31_19 J_32_19 120 200 130 0 Open + P_V_03398 J_31_20 J_32_20 120 200 130 0 Open + P_V_03399 J_31_21 J_32_21 120 200 130 0 Open + P_V_03400 J_31_22 J_32_22 120 200 130 0 Open + P_V_03401 J_31_23 J_32_23 120 200 130 0 Open + P_V_03402 J_31_24 J_32_24 120 200 130 0 Open + P_V_03403 J_31_25 J_32_25 120 200 130 0 Open + P_V_03404 J_31_26 J_32_26 120 200 130 0 Open + P_V_03405 J_31_27 J_32_27 120 200 130 0 Open + P_V_03406 J_31_28 J_32_28 120 200 130 0 Open + P_V_03407 J_31_29 J_32_29 120 200 130 0 Open + P_V_03408 J_31_30 J_32_30 120 200 130 0 Open + P_V_03409 J_31_31 J_32_31 120 200 130 0 Open + P_V_03410 J_31_32 J_32_32 120 200 130 0 Open + P_V_03411 J_31_33 J_32_33 120 200 130 0 Open + P_V_03412 J_31_34 J_32_34 120 200 130 0 Open + P_V_03413 J_31_35 J_32_35 120 200 130 0 Open + P_V_03414 J_31_36 J_32_36 120 200 130 0 Open + P_V_03415 J_31_37 J_32_37 120 200 130 0 Open + P_V_03416 J_31_38 J_32_38 120 200 130 0 Open + P_V_03417 J_31_39 J_32_39 120 200 130 0 Open + P_V_03418 J_31_40 J_32_40 120 200 130 0 Open + P_V_03419 J_31_41 J_32_41 120 200 130 0 Open + P_V_03420 J_31_42 J_32_42 120 200 130 0 Open + P_V_03421 J_31_43 J_32_43 120 200 130 0 Open + P_V_03422 J_31_44 J_32_44 120 200 130 0 Open + P_V_03423 J_32_00 J_33_00 120 200 130 0 Open + P_V_03424 J_32_01 J_33_01 120 200 130 0 Open + P_V_03425 J_32_02 J_33_02 120 200 130 0 Open + P_V_03426 J_32_03 J_33_03 120 200 130 0 Open + P_V_03427 J_32_04 J_33_04 120 200 130 0 Open + P_V_03428 J_32_05 J_33_05 120 200 130 0 Open + P_V_03429 J_32_06 J_33_06 120 200 130 0 Open + P_V_03430 J_32_07 J_33_07 120 200 130 0 Open + P_V_03431 J_32_08 J_33_08 120 200 130 0 Open + P_V_03432 J_32_09 J_33_09 120 200 130 0 Open + P_V_03433 J_32_10 J_33_10 120 200 130 0 Open + P_V_03434 J_32_11 J_33_11 120 200 130 0 Open + P_V_03435 J_32_12 J_33_12 120 200 130 0 Open + P_V_03436 J_32_13 J_33_13 120 200 130 0 Open + P_V_03437 J_32_14 J_33_14 120 200 130 0 Open + P_V_03438 J_32_15 J_33_15 120 200 130 0 Open + P_V_03439 J_32_16 J_33_16 120 200 130 0 Open + P_V_03440 J_32_17 J_33_17 120 200 130 0 Open + P_V_03441 J_32_18 J_33_18 120 200 130 0 Open + P_V_03442 J_32_19 J_33_19 120 200 130 0 Open + P_V_03443 J_32_20 J_33_20 120 200 130 0 Open + P_V_03444 J_32_21 J_33_21 120 200 130 0 Open + P_V_03445 J_32_22 J_33_22 120 200 130 0 Open + P_V_03446 J_32_23 J_33_23 120 200 130 0 Open + P_V_03447 J_32_24 J_33_24 120 200 130 0 Open + P_V_03448 J_32_25 J_33_25 120 200 130 0 Open + P_V_03449 J_32_26 J_33_26 120 200 130 0 Open + P_V_03450 J_32_27 J_33_27 120 200 130 0 Open + P_V_03451 J_32_28 J_33_28 120 200 130 0 Open + P_V_03452 J_32_29 J_33_29 120 200 130 0 Open + P_V_03453 J_32_30 J_33_30 120 200 130 0 Open + P_V_03454 J_32_31 J_33_31 120 200 130 0 Open + P_V_03455 J_32_32 J_33_32 120 200 130 0 Open + P_V_03456 J_32_33 J_33_33 120 200 130 0 Open + P_V_03457 J_32_34 J_33_34 120 200 130 0 Open + P_V_03458 J_32_35 J_33_35 120 200 130 0 Open + P_V_03459 J_32_36 J_33_36 120 200 130 0 Open + P_V_03460 J_32_37 J_33_37 120 200 130 0 Open + P_V_03461 J_32_38 J_33_38 120 200 130 0 Open + P_V_03462 J_32_39 J_33_39 120 200 130 0 Open + P_V_03463 J_32_40 J_33_40 120 200 130 0 Open + P_V_03464 J_32_41 J_33_41 120 200 130 0 Open + P_V_03465 J_32_42 J_33_42 120 200 130 0 Open + P_V_03466 J_32_43 J_33_43 120 200 130 0 Open + P_V_03467 J_32_44 J_33_44 120 200 130 0 Open + P_V_03468 J_33_00 J_34_00 120 200 130 0 Open + P_V_03469 J_33_01 J_34_01 120 200 130 0 Open + P_V_03470 J_33_02 J_34_02 120 200 130 0 Open + P_V_03471 J_33_03 J_34_03 120 200 130 0 Open + P_V_03472 J_33_04 J_34_04 120 200 130 0 Open + P_V_03473 J_33_05 J_34_05 120 200 130 0 Open + P_V_03474 J_33_06 J_34_06 120 200 130 0 Open + P_V_03475 J_33_07 J_34_07 120 200 130 0 Open + P_V_03476 J_33_08 J_34_08 120 200 130 0 Open + P_V_03477 J_33_09 J_34_09 120 200 130 0 Open + P_V_03478 J_33_10 J_34_10 120 200 130 0 Open + P_V_03479 J_33_11 J_34_11 120 200 130 0 Open + P_V_03480 J_33_12 J_34_12 120 200 130 0 Open + P_V_03481 J_33_13 J_34_13 120 200 130 0 Open + P_V_03482 J_33_14 J_34_14 120 200 130 0 Open + P_V_03483 J_33_15 J_34_15 120 200 130 0 Open + P_V_03484 J_33_16 J_34_16 120 200 130 0 Open + P_V_03485 J_33_17 J_34_17 120 200 130 0 Open + P_V_03486 J_33_18 J_34_18 120 200 130 0 Open + P_V_03487 J_33_19 J_34_19 120 200 130 0 Open + P_V_03488 J_33_20 J_34_20 120 200 130 0 Open + P_V_03489 J_33_21 J_34_21 120 200 130 0 Open + P_V_03490 J_33_22 J_34_22 120 200 130 0 Open + P_V_03491 J_33_23 J_34_23 120 200 130 0 Open + P_V_03492 J_33_24 J_34_24 120 200 130 0 Open + P_V_03493 J_33_25 J_34_25 120 200 130 0 Open + P_V_03494 J_33_26 J_34_26 120 200 130 0 Open + P_V_03495 J_33_27 J_34_27 120 200 130 0 Open + P_V_03496 J_33_28 J_34_28 120 200 130 0 Open + P_V_03497 J_33_29 J_34_29 120 200 130 0 Open + P_V_03498 J_33_30 J_34_30 120 200 130 0 Open + P_V_03499 J_33_31 J_34_31 120 200 130 0 Open + P_V_03500 J_33_32 J_34_32 120 200 130 0 Open + P_V_03501 J_33_33 J_34_33 120 200 130 0 Open + P_V_03502 J_33_34 J_34_34 120 200 130 0 Open + P_V_03503 J_33_35 J_34_35 120 200 130 0 Open + P_V_03504 J_33_36 J_34_36 120 200 130 0 Open + P_V_03505 J_33_37 J_34_37 120 200 130 0 Open + P_V_03506 J_33_38 J_34_38 120 200 130 0 Open + P_V_03507 J_33_39 J_34_39 120 200 130 0 Open + P_V_03508 J_33_40 J_34_40 120 200 130 0 Open + P_V_03509 J_33_41 J_34_41 120 200 130 0 Open + P_V_03510 J_33_42 J_34_42 120 200 130 0 Open + P_V_03511 J_33_43 J_34_43 120 200 130 0 Open + P_V_03512 J_33_44 J_34_44 120 200 130 0 Open + P_V_03513 J_34_00 J_35_00 120 200 130 0 Open + P_V_03514 J_34_01 J_35_01 120 200 130 0 Open + P_V_03515 J_34_02 J_35_02 120 200 130 0 Open + P_V_03516 J_34_03 J_35_03 120 200 130 0 Open + P_V_03517 J_34_04 J_35_04 120 200 130 0 Open + P_V_03518 J_34_05 J_35_05 120 200 130 0 Open + P_V_03519 J_34_06 J_35_06 120 200 130 0 Open + P_V_03520 J_34_07 J_35_07 120 200 130 0 Open + P_V_03521 J_34_08 J_35_08 120 200 130 0 Open + P_V_03522 J_34_09 J_35_09 120 200 130 0 Open + P_V_03523 J_34_10 J_35_10 120 200 130 0 Open + P_V_03524 J_34_11 J_35_11 120 200 130 0 Open + P_V_03525 J_34_12 J_35_12 120 200 130 0 Open + P_V_03526 J_34_13 J_35_13 120 200 130 0 Open + P_V_03527 J_34_14 J_35_14 120 200 130 0 Open + P_V_03528 J_34_15 J_35_15 120 200 130 0 Open + P_V_03529 J_34_16 J_35_16 120 200 130 0 Open + P_V_03530 J_34_17 J_35_17 120 200 130 0 Open + P_V_03531 J_34_18 J_35_18 120 200 130 0 Open + P_V_03532 J_34_19 J_35_19 120 200 130 0 Open + P_V_03533 J_34_20 J_35_20 120 200 130 0 Open + P_V_03534 J_34_21 J_35_21 120 200 130 0 Open + P_V_03535 J_34_22 J_35_22 120 200 130 0 Open + P_V_03536 J_34_23 J_35_23 120 200 130 0 Open + P_V_03537 J_34_24 J_35_24 120 200 130 0 Open + P_V_03538 J_34_25 J_35_25 120 200 130 0 Open + P_V_03539 J_34_26 J_35_26 120 200 130 0 Open + P_V_03540 J_34_27 J_35_27 120 200 130 0 Open + P_V_03541 J_34_28 J_35_28 120 200 130 0 Open + P_V_03542 J_34_29 J_35_29 120 200 130 0 Open + P_V_03543 J_34_30 J_35_30 120 200 130 0 Open + P_V_03544 J_34_31 J_35_31 120 200 130 0 Open + P_V_03545 J_34_32 J_35_32 120 200 130 0 Open + P_V_03546 J_34_33 J_35_33 120 200 130 0 Open + P_V_03547 J_34_34 J_35_34 120 200 130 0 Open + P_V_03548 J_34_35 J_35_35 120 200 130 0 Open + P_V_03549 J_34_36 J_35_36 120 200 130 0 Open + P_V_03550 J_34_37 J_35_37 120 200 130 0 Open + P_V_03551 J_34_38 J_35_38 120 200 130 0 Open + P_V_03552 J_34_39 J_35_39 120 200 130 0 Open + P_V_03553 J_34_40 J_35_40 120 200 130 0 Open + P_V_03554 J_34_41 J_35_41 120 200 130 0 Open + P_V_03555 J_34_42 J_35_42 120 200 130 0 Open + P_V_03556 J_34_43 J_35_43 120 200 130 0 Open + P_V_03557 J_34_44 J_35_44 120 200 130 0 Open + P_V_03558 J_35_00 J_36_00 120 200 130 0 Open + P_V_03559 J_35_01 J_36_01 120 200 130 0 Open + P_V_03560 J_35_02 J_36_02 120 200 130 0 Open + P_V_03561 J_35_03 J_36_03 120 200 130 0 Open + P_V_03562 J_35_04 J_36_04 120 200 130 0 Open + P_V_03563 J_35_05 J_36_05 120 200 130 0 Open + P_V_03564 J_35_06 J_36_06 120 200 130 0 Open + P_V_03565 J_35_07 J_36_07 120 200 130 0 Open + P_V_03566 J_35_08 J_36_08 120 200 130 0 Open + P_V_03567 J_35_09 J_36_09 120 200 130 0 Open + P_V_03568 J_35_10 J_36_10 120 200 130 0 Open + P_V_03569 J_35_11 J_36_11 120 200 130 0 Open + P_V_03570 J_35_12 J_36_12 120 200 130 0 Open + P_V_03571 J_35_13 J_36_13 120 200 130 0 Open + P_V_03572 J_35_14 J_36_14 120 200 130 0 Open + P_V_03573 J_35_15 J_36_15 120 200 130 0 Open + P_V_03574 J_35_16 J_36_16 120 200 130 0 Open + P_V_03575 J_35_17 J_36_17 120 200 130 0 Open + P_V_03576 J_35_18 J_36_18 120 200 130 0 Open + P_V_03577 J_35_19 J_36_19 120 200 130 0 Open + P_V_03578 J_35_20 J_36_20 120 200 130 0 Open + P_V_03579 J_35_21 J_36_21 120 200 130 0 Open + P_V_03580 J_35_22 J_36_22 120 200 130 0 Open + P_V_03581 J_35_23 J_36_23 120 200 130 0 Open + P_V_03582 J_35_24 J_36_24 120 200 130 0 Open + P_V_03583 J_35_25 J_36_25 120 200 130 0 Open + P_V_03584 J_35_26 J_36_26 120 200 130 0 Open + P_V_03585 J_35_27 J_36_27 120 200 130 0 Open + P_V_03586 J_35_28 J_36_28 120 200 130 0 Open + P_V_03587 J_35_29 J_36_29 120 200 130 0 Open + P_V_03588 J_35_30 J_36_30 120 200 130 0 Open + P_V_03589 J_35_31 J_36_31 120 200 130 0 Open + P_V_03590 J_35_32 J_36_32 120 200 130 0 Open + P_V_03591 J_35_33 J_36_33 120 200 130 0 Open + P_V_03592 J_35_34 J_36_34 120 200 130 0 Open + P_V_03593 J_35_35 J_36_35 120 200 130 0 Open + P_V_03594 J_35_36 J_36_36 120 200 130 0 Open + P_V_03595 J_35_37 J_36_37 120 200 130 0 Open + P_V_03596 J_35_38 J_36_38 120 200 130 0 Open + P_V_03597 J_35_39 J_36_39 120 200 130 0 Open + P_V_03598 J_35_40 J_36_40 120 200 130 0 Open + P_V_03599 J_35_41 J_36_41 120 200 130 0 Open + P_V_03600 J_35_42 J_36_42 120 200 130 0 Open + P_V_03601 J_35_43 J_36_43 120 200 130 0 Open + P_V_03602 J_35_44 J_36_44 120 200 130 0 Open + P_V_03603 J_36_00 J_37_00 120 200 130 0 Open + P_V_03604 J_36_01 J_37_01 120 200 130 0 Open + P_V_03605 J_36_02 J_37_02 120 200 130 0 Open + P_V_03606 J_36_03 J_37_03 120 200 130 0 Open + P_V_03607 J_36_04 J_37_04 120 200 130 0 Open + P_V_03608 J_36_05 J_37_05 120 200 130 0 Open + P_V_03609 J_36_06 J_37_06 120 200 130 0 Open + P_V_03610 J_36_07 J_37_07 120 200 130 0 Open + P_V_03611 J_36_08 J_37_08 120 200 130 0 Open + P_V_03612 J_36_09 J_37_09 120 200 130 0 Open + P_V_03613 J_36_10 J_37_10 120 200 130 0 Open + P_V_03614 J_36_11 J_37_11 120 200 130 0 Open + P_V_03615 J_36_12 J_37_12 120 200 130 0 Open + P_V_03616 J_36_13 J_37_13 120 200 130 0 Open + P_V_03617 J_36_14 J_37_14 120 200 130 0 Open + P_V_03618 J_36_15 J_37_15 120 200 130 0 Open + P_V_03619 J_36_16 J_37_16 120 200 130 0 Open + P_V_03620 J_36_17 J_37_17 120 200 130 0 Open + P_V_03621 J_36_18 J_37_18 120 200 130 0 Open + P_V_03622 J_36_19 J_37_19 120 200 130 0 Open + P_V_03623 J_36_20 J_37_20 120 200 130 0 Open + P_V_03624 J_36_21 J_37_21 120 200 130 0 Open + P_V_03625 J_36_22 J_37_22 120 200 130 0 Open + P_V_03626 J_36_23 J_37_23 120 200 130 0 Open + P_V_03627 J_36_24 J_37_24 120 200 130 0 Open + P_V_03628 J_36_25 J_37_25 120 200 130 0 Open + P_V_03629 J_36_26 J_37_26 120 200 130 0 Open + P_V_03630 J_36_27 J_37_27 120 200 130 0 Open + P_V_03631 J_36_28 J_37_28 120 200 130 0 Open + P_V_03632 J_36_29 J_37_29 120 200 130 0 Open + P_V_03633 J_36_30 J_37_30 120 200 130 0 Open + P_V_03634 J_36_31 J_37_31 120 200 130 0 Open + P_V_03635 J_36_32 J_37_32 120 200 130 0 Open + P_V_03636 J_36_33 J_37_33 120 200 130 0 Open + P_V_03637 J_36_34 J_37_34 120 200 130 0 Open + P_V_03638 J_36_35 J_37_35 120 200 130 0 Open + P_V_03639 J_36_36 J_37_36 120 200 130 0 Open + P_V_03640 J_36_37 J_37_37 120 200 130 0 Open + P_V_03641 J_36_38 J_37_38 120 200 130 0 Open + P_V_03642 J_36_39 J_37_39 120 200 130 0 Open + P_V_03643 J_36_40 J_37_40 120 200 130 0 Open + P_V_03644 J_36_41 J_37_41 120 200 130 0 Open + P_V_03645 J_36_42 J_37_42 120 200 130 0 Open + P_V_03646 J_36_43 J_37_43 120 200 130 0 Open + P_V_03647 J_36_44 J_37_44 120 200 130 0 Open + P_V_03648 J_37_00 J_38_00 120 200 130 0 Open + P_V_03649 J_37_01 J_38_01 120 200 130 0 Open + P_V_03650 J_37_02 J_38_02 120 200 130 0 Open + P_V_03651 J_37_03 J_38_03 120 200 130 0 Open + P_V_03652 J_37_04 J_38_04 120 200 130 0 Open + P_V_03653 J_37_05 J_38_05 120 200 130 0 Open + P_V_03654 J_37_06 J_38_06 120 200 130 0 Open + P_V_03655 J_37_07 J_38_07 120 200 130 0 Open + P_V_03656 J_37_08 J_38_08 120 200 130 0 Open + P_V_03657 J_37_09 J_38_09 120 200 130 0 Open + P_V_03658 J_37_10 J_38_10 120 200 130 0 Open + P_V_03659 J_37_11 J_38_11 120 200 130 0 Open + P_V_03660 J_37_12 J_38_12 120 200 130 0 Open + P_V_03661 J_37_13 J_38_13 120 200 130 0 Open + P_V_03662 J_37_14 J_38_14 120 200 130 0 Open + P_V_03663 J_37_15 J_38_15 120 200 130 0 Open + P_V_03664 J_37_16 J_38_16 120 200 130 0 Open + P_V_03665 J_37_17 J_38_17 120 200 130 0 Open + P_V_03666 J_37_18 J_38_18 120 200 130 0 Open + P_V_03667 J_37_19 J_38_19 120 200 130 0 Open + P_V_03668 J_37_20 J_38_20 120 200 130 0 Open + P_V_03669 J_37_21 J_38_21 120 200 130 0 Open + P_V_03670 J_37_22 J_38_22 120 200 130 0 Open + P_V_03671 J_37_23 J_38_23 120 200 130 0 Open + P_V_03672 J_37_24 J_38_24 120 200 130 0 Open + P_V_03673 J_37_25 J_38_25 120 200 130 0 Open + P_V_03674 J_37_26 J_38_26 120 200 130 0 Open + P_V_03675 J_37_27 J_38_27 120 200 130 0 Open + P_V_03676 J_37_28 J_38_28 120 200 130 0 Open + P_V_03677 J_37_29 J_38_29 120 200 130 0 Open + P_V_03678 J_37_30 J_38_30 120 200 130 0 Open + P_V_03679 J_37_31 J_38_31 120 200 130 0 Open + P_V_03680 J_37_32 J_38_32 120 200 130 0 Open + P_V_03681 J_37_33 J_38_33 120 200 130 0 Open + P_V_03682 J_37_34 J_38_34 120 200 130 0 Open + P_V_03683 J_37_35 J_38_35 120 200 130 0 Open + P_V_03684 J_37_36 J_38_36 120 200 130 0 Open + P_V_03685 J_37_37 J_38_37 120 200 130 0 Open + P_V_03686 J_37_38 J_38_38 120 200 130 0 Open + P_V_03687 J_37_39 J_38_39 120 200 130 0 Open + P_V_03688 J_37_40 J_38_40 120 200 130 0 Open + P_V_03689 J_37_41 J_38_41 120 200 130 0 Open + P_V_03690 J_37_42 J_38_42 120 200 130 0 Open + P_V_03691 J_37_43 J_38_43 120 200 130 0 Open + P_V_03692 J_37_44 J_38_44 120 200 130 0 Open + P_V_03693 J_38_00 J_39_00 120 200 130 0 Open + P_V_03694 J_38_01 J_39_01 120 200 130 0 Open + P_V_03695 J_38_02 J_39_02 120 200 130 0 Open + P_V_03696 J_38_03 J_39_03 120 200 130 0 Open + P_V_03697 J_38_04 J_39_04 120 200 130 0 Open + P_V_03698 J_38_05 J_39_05 120 200 130 0 Open + P_V_03699 J_38_06 J_39_06 120 200 130 0 Open + P_V_03700 J_38_07 J_39_07 120 200 130 0 Open + P_V_03701 J_38_08 J_39_08 120 200 130 0 Open + P_V_03702 J_38_09 J_39_09 120 200 130 0 Open + P_V_03703 J_38_10 J_39_10 120 200 130 0 Open + P_V_03704 J_38_11 J_39_11 120 200 130 0 Open + P_V_03705 J_38_12 J_39_12 120 200 130 0 Open + P_V_03706 J_38_13 J_39_13 120 200 130 0 Open + P_V_03707 J_38_14 J_39_14 120 200 130 0 Open + P_V_03708 J_38_15 J_39_15 120 200 130 0 Open + P_V_03709 J_38_16 J_39_16 120 200 130 0 Open + P_V_03710 J_38_17 J_39_17 120 200 130 0 Open + P_V_03711 J_38_18 J_39_18 120 200 130 0 Open + P_V_03712 J_38_19 J_39_19 120 200 130 0 Open + P_V_03713 J_38_20 J_39_20 120 200 130 0 Open + P_V_03714 J_38_21 J_39_21 120 200 130 0 Open + P_V_03715 J_38_22 J_39_22 120 200 130 0 Open + P_V_03716 J_38_23 J_39_23 120 200 130 0 Open + P_V_03717 J_38_24 J_39_24 120 200 130 0 Open + P_V_03718 J_38_25 J_39_25 120 200 130 0 Open + P_V_03719 J_38_26 J_39_26 120 200 130 0 Open + P_V_03720 J_38_27 J_39_27 120 200 130 0 Open + P_V_03721 J_38_28 J_39_28 120 200 130 0 Open + P_V_03722 J_38_29 J_39_29 120 200 130 0 Open + P_V_03723 J_38_30 J_39_30 120 200 130 0 Open + P_V_03724 J_38_31 J_39_31 120 200 130 0 Open + P_V_03725 J_38_32 J_39_32 120 200 130 0 Open + P_V_03726 J_38_33 J_39_33 120 200 130 0 Open + P_V_03727 J_38_34 J_39_34 120 200 130 0 Open + P_V_03728 J_38_35 J_39_35 120 200 130 0 Open + P_V_03729 J_38_36 J_39_36 120 200 130 0 Open + P_V_03730 J_38_37 J_39_37 120 200 130 0 Open + P_V_03731 J_38_38 J_39_38 120 200 130 0 Open + P_V_03732 J_38_39 J_39_39 120 200 130 0 Open + P_V_03733 J_38_40 J_39_40 120 200 130 0 Open + P_V_03734 J_38_41 J_39_41 120 200 130 0 Open + P_V_03735 J_38_42 J_39_42 120 200 130 0 Open + P_V_03736 J_38_43 J_39_43 120 200 130 0 Open + P_V_03737 J_38_44 J_39_44 120 200 130 0 Open + P_V_03738 J_39_00 J_40_00 120 200 130 0 Open + P_V_03739 J_39_01 J_40_01 120 200 130 0 Open + P_V_03740 J_39_02 J_40_02 120 200 130 0 Open + P_V_03741 J_39_03 J_40_03 120 200 130 0 Open + P_V_03742 J_39_04 J_40_04 120 200 130 0 Open + P_V_03743 J_39_05 J_40_05 120 200 130 0 Open + P_V_03744 J_39_06 J_40_06 120 200 130 0 Open + P_V_03745 J_39_07 J_40_07 120 200 130 0 Open + P_V_03746 J_39_08 J_40_08 120 200 130 0 Open + P_V_03747 J_39_09 J_40_09 120 200 130 0 Open + P_V_03748 J_39_10 J_40_10 120 200 130 0 Open + P_V_03749 J_39_11 J_40_11 120 200 130 0 Open + P_V_03750 J_39_12 J_40_12 120 200 130 0 Open + P_V_03751 J_39_13 J_40_13 120 200 130 0 Open + P_V_03752 J_39_14 J_40_14 120 200 130 0 Open + P_V_03753 J_39_15 J_40_15 120 200 130 0 Open + P_V_03754 J_39_16 J_40_16 120 200 130 0 Open + P_V_03755 J_39_17 J_40_17 120 200 130 0 Open + P_V_03756 J_39_18 J_40_18 120 200 130 0 Open + P_V_03757 J_39_19 J_40_19 120 200 130 0 Open + P_V_03758 J_39_20 J_40_20 120 200 130 0 Open + P_V_03759 J_39_21 J_40_21 120 200 130 0 Open + P_V_03760 J_39_22 J_40_22 120 200 130 0 Open + P_V_03761 J_39_23 J_40_23 120 200 130 0 Open + P_V_03762 J_39_24 J_40_24 120 200 130 0 Open + P_V_03763 J_39_25 J_40_25 120 200 130 0 Open + P_V_03764 J_39_26 J_40_26 120 200 130 0 Open + P_V_03765 J_39_27 J_40_27 120 200 130 0 Open + P_V_03766 J_39_28 J_40_28 120 200 130 0 Open + P_V_03767 J_39_29 J_40_29 120 200 130 0 Open + P_V_03768 J_39_30 J_40_30 120 200 130 0 Open + P_V_03769 J_39_31 J_40_31 120 200 130 0 Open + P_V_03770 J_39_32 J_40_32 120 200 130 0 Open + P_V_03771 J_39_33 J_40_33 120 200 130 0 Open + P_V_03772 J_39_34 J_40_34 120 200 130 0 Open + P_V_03773 J_39_35 J_40_35 120 200 130 0 Open + P_V_03774 J_39_36 J_40_36 120 200 130 0 Open + P_V_03775 J_39_37 J_40_37 120 200 130 0 Open + P_V_03776 J_39_38 J_40_38 120 200 130 0 Open + P_V_03777 J_39_39 J_40_39 120 200 130 0 Open + P_V_03778 J_39_40 J_40_40 120 200 130 0 Open + P_V_03779 J_39_41 J_40_41 120 200 130 0 Open + P_V_03780 J_39_42 J_40_42 120 200 130 0 Open + P_V_03781 J_39_43 J_40_43 120 200 130 0 Open + P_V_03782 J_39_44 J_40_44 120 200 130 0 Open + P_V_03783 J_40_00 J_41_00 120 200 130 0 Open + P_V_03784 J_40_01 J_41_01 120 200 130 0 Open + P_V_03785 J_40_02 J_41_02 120 200 130 0 Open + P_V_03786 J_40_03 J_41_03 120 200 130 0 Open + P_V_03787 J_40_04 J_41_04 120 200 130 0 Open + P_V_03788 J_40_05 J_41_05 120 200 130 0 Open + P_V_03789 J_40_06 J_41_06 120 200 130 0 Open + P_V_03790 J_40_07 J_41_07 120 200 130 0 Open + P_V_03791 J_40_08 J_41_08 120 200 130 0 Open + P_V_03792 J_40_09 J_41_09 120 200 130 0 Open + P_V_03793 J_40_10 J_41_10 120 200 130 0 Open + P_V_03794 J_40_11 J_41_11 120 200 130 0 Open + P_V_03795 J_40_12 J_41_12 120 200 130 0 Open + P_V_03796 J_40_13 J_41_13 120 200 130 0 Open + P_V_03797 J_40_14 J_41_14 120 200 130 0 Open + P_V_03798 J_40_15 J_41_15 120 200 130 0 Open + P_V_03799 J_40_16 J_41_16 120 200 130 0 Open + P_V_03800 J_40_17 J_41_17 120 200 130 0 Open + P_V_03801 J_40_18 J_41_18 120 200 130 0 Open + P_V_03802 J_40_19 J_41_19 120 200 130 0 Open + P_V_03803 J_40_20 J_41_20 120 200 130 0 Open + P_V_03804 J_40_21 J_41_21 120 200 130 0 Open + P_V_03805 J_40_22 J_41_22 120 200 130 0 Open + P_V_03806 J_40_23 J_41_23 120 200 130 0 Open + P_V_03807 J_40_24 J_41_24 120 200 130 0 Open + P_V_03808 J_40_25 J_41_25 120 200 130 0 Open + P_V_03809 J_40_26 J_41_26 120 200 130 0 Open + P_V_03810 J_40_27 J_41_27 120 200 130 0 Open + P_V_03811 J_40_28 J_41_28 120 200 130 0 Open + P_V_03812 J_40_29 J_41_29 120 200 130 0 Open + P_V_03813 J_40_30 J_41_30 120 200 130 0 Open + P_V_03814 J_40_31 J_41_31 120 200 130 0 Open + P_V_03815 J_40_32 J_41_32 120 200 130 0 Open + P_V_03816 J_40_33 J_41_33 120 200 130 0 Open + P_V_03817 J_40_34 J_41_34 120 200 130 0 Open + P_V_03818 J_40_35 J_41_35 120 200 130 0 Open + P_V_03819 J_40_36 J_41_36 120 200 130 0 Open + P_V_03820 J_40_37 J_41_37 120 200 130 0 Open + P_V_03821 J_40_38 J_41_38 120 200 130 0 Open + P_V_03822 J_40_39 J_41_39 120 200 130 0 Open + P_V_03823 J_40_40 J_41_40 120 200 130 0 Open + P_V_03824 J_40_41 J_41_41 120 200 130 0 Open + P_V_03825 J_40_42 J_41_42 120 200 130 0 Open + P_V_03826 J_40_43 J_41_43 120 200 130 0 Open + P_V_03827 J_40_44 J_41_44 120 200 130 0 Open + P_V_03828 J_41_00 J_42_00 120 200 130 0 Open + P_V_03829 J_41_01 J_42_01 120 200 130 0 Open + P_V_03830 J_41_02 J_42_02 120 200 130 0 Open + P_V_03831 J_41_03 J_42_03 120 200 130 0 Open + P_V_03832 J_41_04 J_42_04 120 200 130 0 Open + P_V_03833 J_41_05 J_42_05 120 200 130 0 Open + P_V_03834 J_41_06 J_42_06 120 200 130 0 Open + P_V_03835 J_41_07 J_42_07 120 200 130 0 Open + P_V_03836 J_41_08 J_42_08 120 200 130 0 Open + P_V_03837 J_41_09 J_42_09 120 200 130 0 Open + P_V_03838 J_41_10 J_42_10 120 200 130 0 Open + P_V_03839 J_41_11 J_42_11 120 200 130 0 Open + P_V_03840 J_41_12 J_42_12 120 200 130 0 Open + P_V_03841 J_41_13 J_42_13 120 200 130 0 Open + P_V_03842 J_41_14 J_42_14 120 200 130 0 Open + P_V_03843 J_41_15 J_42_15 120 200 130 0 Open + P_V_03844 J_41_16 J_42_16 120 200 130 0 Open + P_V_03845 J_41_17 J_42_17 120 200 130 0 Open + P_V_03846 J_41_18 J_42_18 120 200 130 0 Open + P_V_03847 J_41_19 J_42_19 120 200 130 0 Open + P_V_03848 J_41_20 J_42_20 120 200 130 0 Open + P_V_03849 J_41_21 J_42_21 120 200 130 0 Open + P_V_03850 J_41_22 J_42_22 120 200 130 0 Open + P_V_03851 J_41_23 J_42_23 120 200 130 0 Open + P_V_03852 J_41_24 J_42_24 120 200 130 0 Open + P_V_03853 J_41_25 J_42_25 120 200 130 0 Open + P_V_03854 J_41_26 J_42_26 120 200 130 0 Open + P_V_03855 J_41_27 J_42_27 120 200 130 0 Open + P_V_03856 J_41_28 J_42_28 120 200 130 0 Open + P_V_03857 J_41_29 J_42_29 120 200 130 0 Open + P_V_03858 J_41_30 J_42_30 120 200 130 0 Open + P_V_03859 J_41_31 J_42_31 120 200 130 0 Open + P_V_03860 J_41_32 J_42_32 120 200 130 0 Open + P_V_03861 J_41_33 J_42_33 120 200 130 0 Open + P_V_03862 J_41_34 J_42_34 120 200 130 0 Open + P_V_03863 J_41_35 J_42_35 120 200 130 0 Open + P_V_03864 J_41_36 J_42_36 120 200 130 0 Open + P_V_03865 J_41_37 J_42_37 120 200 130 0 Open + P_V_03866 J_41_38 J_42_38 120 200 130 0 Open + P_V_03867 J_41_39 J_42_39 120 200 130 0 Open + P_V_03868 J_41_40 J_42_40 120 200 130 0 Open + P_V_03869 J_41_41 J_42_41 120 200 130 0 Open + P_V_03870 J_41_42 J_42_42 120 200 130 0 Open + P_V_03871 J_41_43 J_42_43 120 200 130 0 Open + P_V_03872 J_41_44 J_42_44 120 200 130 0 Open + P_V_03873 J_42_00 J_43_00 120 200 130 0 Open + P_V_03874 J_42_01 J_43_01 120 200 130 0 Open + P_V_03875 J_42_02 J_43_02 120 200 130 0 Open + P_V_03876 J_42_03 J_43_03 120 200 130 0 Open + P_V_03877 J_42_04 J_43_04 120 200 130 0 Open + P_V_03878 J_42_05 J_43_05 120 200 130 0 Open + P_V_03879 J_42_06 J_43_06 120 200 130 0 Open + P_V_03880 J_42_07 J_43_07 120 200 130 0 Open + P_V_03881 J_42_08 J_43_08 120 200 130 0 Open + P_V_03882 J_42_09 J_43_09 120 200 130 0 Open + P_V_03883 J_42_10 J_43_10 120 200 130 0 Open + P_V_03884 J_42_11 J_43_11 120 200 130 0 Open + P_V_03885 J_42_12 J_43_12 120 200 130 0 Open + P_V_03886 J_42_13 J_43_13 120 200 130 0 Open + P_V_03887 J_42_14 J_43_14 120 200 130 0 Open + P_V_03888 J_42_15 J_43_15 120 200 130 0 Open + P_V_03889 J_42_16 J_43_16 120 200 130 0 Open + P_V_03890 J_42_17 J_43_17 120 200 130 0 Open + P_V_03891 J_42_18 J_43_18 120 200 130 0 Open + P_V_03892 J_42_19 J_43_19 120 200 130 0 Open + P_V_03893 J_42_20 J_43_20 120 200 130 0 Open + P_V_03894 J_42_21 J_43_21 120 200 130 0 Open + P_V_03895 J_42_22 J_43_22 120 200 130 0 Open + P_V_03896 J_42_23 J_43_23 120 200 130 0 Open + P_V_03897 J_42_24 J_43_24 120 200 130 0 Open + P_V_03898 J_42_25 J_43_25 120 200 130 0 Open + P_V_03899 J_42_26 J_43_26 120 200 130 0 Open + P_V_03900 J_42_27 J_43_27 120 200 130 0 Open + P_V_03901 J_42_28 J_43_28 120 200 130 0 Open + P_V_03902 J_42_29 J_43_29 120 200 130 0 Open + P_V_03903 J_42_30 J_43_30 120 200 130 0 Open + P_V_03904 J_42_31 J_43_31 120 200 130 0 Open + P_V_03905 J_42_32 J_43_32 120 200 130 0 Open + P_V_03906 J_42_33 J_43_33 120 200 130 0 Open + P_V_03907 J_42_34 J_43_34 120 200 130 0 Open + P_V_03908 J_42_35 J_43_35 120 200 130 0 Open + P_V_03909 J_42_36 J_43_36 120 200 130 0 Open + P_V_03910 J_42_37 J_43_37 120 200 130 0 Open + P_V_03911 J_42_38 J_43_38 120 200 130 0 Open + P_V_03912 J_42_39 J_43_39 120 200 130 0 Open + P_V_03913 J_42_40 J_43_40 120 200 130 0 Open + P_V_03914 J_42_41 J_43_41 120 200 130 0 Open + P_V_03915 J_42_42 J_43_42 120 200 130 0 Open + P_V_03916 J_42_43 J_43_43 120 200 130 0 Open + P_V_03917 J_42_44 J_43_44 120 200 130 0 Open + P_V_03918 J_43_00 J_44_00 120 200 130 0 Open + P_V_03919 J_43_01 J_44_01 120 200 130 0 Open + P_V_03920 J_43_02 J_44_02 120 200 130 0 Open + P_V_03921 J_43_03 J_44_03 120 200 130 0 Open + P_V_03922 J_43_04 J_44_04 120 200 130 0 Open + P_V_03923 J_43_05 J_44_05 120 200 130 0 Open + P_V_03924 J_43_06 J_44_06 120 200 130 0 Open + P_V_03925 J_43_07 J_44_07 120 200 130 0 Open + P_V_03926 J_43_08 J_44_08 120 200 130 0 Open + P_V_03927 J_43_09 J_44_09 120 200 130 0 Open + P_V_03928 J_43_10 J_44_10 120 200 130 0 Open + P_V_03929 J_43_11 J_44_11 120 200 130 0 Open + P_V_03930 J_43_12 J_44_12 120 200 130 0 Open + P_V_03931 J_43_13 J_44_13 120 200 130 0 Open + P_V_03932 J_43_14 J_44_14 120 200 130 0 Open + P_V_03933 J_43_15 J_44_15 120 200 130 0 Open + P_V_03934 J_43_16 J_44_16 120 200 130 0 Open + P_V_03935 J_43_17 J_44_17 120 200 130 0 Open + P_V_03936 J_43_18 J_44_18 120 200 130 0 Open + P_V_03937 J_43_19 J_44_19 120 200 130 0 Open + P_V_03938 J_43_20 J_44_20 120 200 130 0 Open + P_V_03939 J_43_21 J_44_21 120 200 130 0 Open + P_V_03940 J_43_22 J_44_22 120 200 130 0 Open + P_V_03941 J_43_23 J_44_23 120 200 130 0 Open + P_V_03942 J_43_24 J_44_24 120 200 130 0 Open + P_V_03943 J_43_25 J_44_25 120 200 130 0 Open + P_V_03944 J_43_26 J_44_26 120 200 130 0 Open + P_V_03945 J_43_27 J_44_27 120 200 130 0 Open + P_V_03946 J_43_28 J_44_28 120 200 130 0 Open + P_V_03947 J_43_29 J_44_29 120 200 130 0 Open + P_V_03948 J_43_30 J_44_30 120 200 130 0 Open + P_V_03949 J_43_31 J_44_31 120 200 130 0 Open + P_V_03950 J_43_32 J_44_32 120 200 130 0 Open + P_V_03951 J_43_33 J_44_33 120 200 130 0 Open + P_V_03952 J_43_34 J_44_34 120 200 130 0 Open + P_V_03953 J_43_35 J_44_35 120 200 130 0 Open + P_V_03954 J_43_36 J_44_36 120 200 130 0 Open + P_V_03955 J_43_37 J_44_37 120 200 130 0 Open + P_V_03956 J_43_38 J_44_38 120 200 130 0 Open + P_V_03957 J_43_39 J_44_39 120 200 130 0 Open + P_V_03958 J_43_40 J_44_40 120 200 130 0 Open + P_V_03959 J_43_41 J_44_41 120 200 130 0 Open + P_V_03960 J_43_42 J_44_42 120 200 130 0 Open + P_V_03961 J_43_43 J_44_43 120 200 130 0 Open + P_V_03962 J_43_44 J_44_44 120 200 130 0 Open + +[PATTERNS] +;ID Multipliers + 1 0.80 0.90 1.20 1.50 1.30 1.00 + 1 1.10 1.00 1.30 1.40 0.90 0.70 + +[TIMES] + Duration 24:00 + Hydraulic Timestep 1:00 + Quality Timestep 0:05 + Pattern Timestep 2:00 + Pattern Start 0:00 + Report Timestep 1:00 + Report Start 0:00 + Start ClockTime 12 am + Statistic None + +[OPTIONS] + Units LPS + Headloss H-W + Specific Gravity 1.0 + Viscosity 1.0 + Trials 50 + Accuracy 0.001 + +[COORDINATES] +;Node X-Coord Y-Coord + RES_NORTH 949850.00 1939850.00 + RES_SOUTH 955550.00 1945550.00 + J_00_00 950000.00 1940000.00 + J_00_01 950120.00 1940000.00 + J_00_02 950240.00 1940000.00 + J_00_03 950360.00 1940000.00 + J_00_04 950480.00 1940000.00 + J_00_05 950600.00 1940000.00 + J_00_06 950720.00 1940000.00 + J_00_07 950840.00 1940000.00 + J_00_08 950960.00 1940000.00 + J_00_09 951080.00 1940000.00 + J_00_10 951200.00 1940000.00 + J_00_11 951320.00 1940000.00 + J_00_12 951440.00 1940000.00 + J_00_13 951560.00 1940000.00 + J_00_14 951680.00 1940000.00 + J_00_15 951800.00 1940000.00 + J_00_16 951920.00 1940000.00 + J_00_17 952040.00 1940000.00 + J_00_18 952160.00 1940000.00 + J_00_19 952280.00 1940000.00 + J_00_20 952400.00 1940000.00 + J_00_21 952520.00 1940000.00 + J_00_22 952640.00 1940000.00 + J_00_23 952760.00 1940000.00 + J_00_24 952880.00 1940000.00 + J_00_25 953000.00 1940000.00 + J_00_26 953120.00 1940000.00 + J_00_27 953240.00 1940000.00 + J_00_28 953360.00 1940000.00 + J_00_29 953480.00 1940000.00 + J_00_30 953600.00 1940000.00 + J_00_31 953720.00 1940000.00 + J_00_32 953840.00 1940000.00 + J_00_33 953960.00 1940000.00 + J_00_34 954080.00 1940000.00 + J_00_35 954200.00 1940000.00 + J_00_36 954320.00 1940000.00 + J_00_37 954440.00 1940000.00 + J_00_38 954560.00 1940000.00 + J_00_39 954680.00 1940000.00 + J_00_40 954800.00 1940000.00 + J_00_41 954920.00 1940000.00 + J_00_42 955040.00 1940000.00 + J_00_43 955160.00 1940000.00 + J_00_44 955280.00 1940000.00 + J_01_00 950000.00 1940120.00 + J_01_01 950120.00 1940120.00 + J_01_02 950240.00 1940120.00 + J_01_03 950360.00 1940120.00 + J_01_04 950480.00 1940120.00 + J_01_05 950600.00 1940120.00 + J_01_06 950720.00 1940120.00 + J_01_07 950840.00 1940120.00 + J_01_08 950960.00 1940120.00 + J_01_09 951080.00 1940120.00 + J_01_10 951200.00 1940120.00 + J_01_11 951320.00 1940120.00 + J_01_12 951440.00 1940120.00 + J_01_13 951560.00 1940120.00 + J_01_14 951680.00 1940120.00 + J_01_15 951800.00 1940120.00 + J_01_16 951920.00 1940120.00 + J_01_17 952040.00 1940120.00 + J_01_18 952160.00 1940120.00 + J_01_19 952280.00 1940120.00 + J_01_20 952400.00 1940120.00 + J_01_21 952520.00 1940120.00 + J_01_22 952640.00 1940120.00 + J_01_23 952760.00 1940120.00 + J_01_24 952880.00 1940120.00 + J_01_25 953000.00 1940120.00 + J_01_26 953120.00 1940120.00 + J_01_27 953240.00 1940120.00 + J_01_28 953360.00 1940120.00 + J_01_29 953480.00 1940120.00 + J_01_30 953600.00 1940120.00 + J_01_31 953720.00 1940120.00 + J_01_32 953840.00 1940120.00 + J_01_33 953960.00 1940120.00 + J_01_34 954080.00 1940120.00 + J_01_35 954200.00 1940120.00 + J_01_36 954320.00 1940120.00 + J_01_37 954440.00 1940120.00 + J_01_38 954560.00 1940120.00 + J_01_39 954680.00 1940120.00 + J_01_40 954800.00 1940120.00 + J_01_41 954920.00 1940120.00 + J_01_42 955040.00 1940120.00 + J_01_43 955160.00 1940120.00 + J_01_44 955280.00 1940120.00 + J_02_00 950000.00 1940240.00 + J_02_01 950120.00 1940240.00 + J_02_02 950240.00 1940240.00 + J_02_03 950360.00 1940240.00 + J_02_04 950480.00 1940240.00 + J_02_05 950600.00 1940240.00 + J_02_06 950720.00 1940240.00 + J_02_07 950840.00 1940240.00 + J_02_08 950960.00 1940240.00 + J_02_09 951080.00 1940240.00 + J_02_10 951200.00 1940240.00 + J_02_11 951320.00 1940240.00 + J_02_12 951440.00 1940240.00 + J_02_13 951560.00 1940240.00 + J_02_14 951680.00 1940240.00 + J_02_15 951800.00 1940240.00 + J_02_16 951920.00 1940240.00 + J_02_17 952040.00 1940240.00 + J_02_18 952160.00 1940240.00 + J_02_19 952280.00 1940240.00 + J_02_20 952400.00 1940240.00 + J_02_21 952520.00 1940240.00 + J_02_22 952640.00 1940240.00 + J_02_23 952760.00 1940240.00 + J_02_24 952880.00 1940240.00 + J_02_25 953000.00 1940240.00 + J_02_26 953120.00 1940240.00 + J_02_27 953240.00 1940240.00 + J_02_28 953360.00 1940240.00 + J_02_29 953480.00 1940240.00 + J_02_30 953600.00 1940240.00 + J_02_31 953720.00 1940240.00 + J_02_32 953840.00 1940240.00 + J_02_33 953960.00 1940240.00 + J_02_34 954080.00 1940240.00 + J_02_35 954200.00 1940240.00 + J_02_36 954320.00 1940240.00 + J_02_37 954440.00 1940240.00 + J_02_38 954560.00 1940240.00 + J_02_39 954680.00 1940240.00 + J_02_40 954800.00 1940240.00 + J_02_41 954920.00 1940240.00 + J_02_42 955040.00 1940240.00 + J_02_43 955160.00 1940240.00 + J_02_44 955280.00 1940240.00 + J_03_00 950000.00 1940360.00 + J_03_01 950120.00 1940360.00 + J_03_02 950240.00 1940360.00 + J_03_03 950360.00 1940360.00 + J_03_04 950480.00 1940360.00 + J_03_05 950600.00 1940360.00 + J_03_06 950720.00 1940360.00 + J_03_07 950840.00 1940360.00 + J_03_08 950960.00 1940360.00 + J_03_09 951080.00 1940360.00 + J_03_10 951200.00 1940360.00 + J_03_11 951320.00 1940360.00 + J_03_12 951440.00 1940360.00 + J_03_13 951560.00 1940360.00 + J_03_14 951680.00 1940360.00 + J_03_15 951800.00 1940360.00 + J_03_16 951920.00 1940360.00 + J_03_17 952040.00 1940360.00 + J_03_18 952160.00 1940360.00 + J_03_19 952280.00 1940360.00 + J_03_20 952400.00 1940360.00 + J_03_21 952520.00 1940360.00 + J_03_22 952640.00 1940360.00 + J_03_23 952760.00 1940360.00 + J_03_24 952880.00 1940360.00 + J_03_25 953000.00 1940360.00 + J_03_26 953120.00 1940360.00 + J_03_27 953240.00 1940360.00 + J_03_28 953360.00 1940360.00 + J_03_29 953480.00 1940360.00 + J_03_30 953600.00 1940360.00 + J_03_31 953720.00 1940360.00 + J_03_32 953840.00 1940360.00 + J_03_33 953960.00 1940360.00 + J_03_34 954080.00 1940360.00 + J_03_35 954200.00 1940360.00 + J_03_36 954320.00 1940360.00 + J_03_37 954440.00 1940360.00 + J_03_38 954560.00 1940360.00 + J_03_39 954680.00 1940360.00 + J_03_40 954800.00 1940360.00 + J_03_41 954920.00 1940360.00 + J_03_42 955040.00 1940360.00 + J_03_43 955160.00 1940360.00 + J_03_44 955280.00 1940360.00 + J_04_00 950000.00 1940480.00 + J_04_01 950120.00 1940480.00 + J_04_02 950240.00 1940480.00 + J_04_03 950360.00 1940480.00 + J_04_04 950480.00 1940480.00 + J_04_05 950600.00 1940480.00 + J_04_06 950720.00 1940480.00 + J_04_07 950840.00 1940480.00 + J_04_08 950960.00 1940480.00 + J_04_09 951080.00 1940480.00 + J_04_10 951200.00 1940480.00 + J_04_11 951320.00 1940480.00 + J_04_12 951440.00 1940480.00 + J_04_13 951560.00 1940480.00 + J_04_14 951680.00 1940480.00 + J_04_15 951800.00 1940480.00 + J_04_16 951920.00 1940480.00 + J_04_17 952040.00 1940480.00 + J_04_18 952160.00 1940480.00 + J_04_19 952280.00 1940480.00 + J_04_20 952400.00 1940480.00 + J_04_21 952520.00 1940480.00 + J_04_22 952640.00 1940480.00 + J_04_23 952760.00 1940480.00 + J_04_24 952880.00 1940480.00 + J_04_25 953000.00 1940480.00 + J_04_26 953120.00 1940480.00 + J_04_27 953240.00 1940480.00 + J_04_28 953360.00 1940480.00 + J_04_29 953480.00 1940480.00 + J_04_30 953600.00 1940480.00 + J_04_31 953720.00 1940480.00 + J_04_32 953840.00 1940480.00 + J_04_33 953960.00 1940480.00 + J_04_34 954080.00 1940480.00 + J_04_35 954200.00 1940480.00 + J_04_36 954320.00 1940480.00 + J_04_37 954440.00 1940480.00 + J_04_38 954560.00 1940480.00 + J_04_39 954680.00 1940480.00 + J_04_40 954800.00 1940480.00 + J_04_41 954920.00 1940480.00 + J_04_42 955040.00 1940480.00 + J_04_43 955160.00 1940480.00 + J_04_44 955280.00 1940480.00 + J_05_00 950000.00 1940600.00 + J_05_01 950120.00 1940600.00 + J_05_02 950240.00 1940600.00 + J_05_03 950360.00 1940600.00 + J_05_04 950480.00 1940600.00 + J_05_05 950600.00 1940600.00 + J_05_06 950720.00 1940600.00 + J_05_07 950840.00 1940600.00 + J_05_08 950960.00 1940600.00 + J_05_09 951080.00 1940600.00 + J_05_10 951200.00 1940600.00 + J_05_11 951320.00 1940600.00 + J_05_12 951440.00 1940600.00 + J_05_13 951560.00 1940600.00 + J_05_14 951680.00 1940600.00 + J_05_15 951800.00 1940600.00 + J_05_16 951920.00 1940600.00 + J_05_17 952040.00 1940600.00 + J_05_18 952160.00 1940600.00 + J_05_19 952280.00 1940600.00 + J_05_20 952400.00 1940600.00 + J_05_21 952520.00 1940600.00 + J_05_22 952640.00 1940600.00 + J_05_23 952760.00 1940600.00 + J_05_24 952880.00 1940600.00 + J_05_25 953000.00 1940600.00 + J_05_26 953120.00 1940600.00 + J_05_27 953240.00 1940600.00 + J_05_28 953360.00 1940600.00 + J_05_29 953480.00 1940600.00 + J_05_30 953600.00 1940600.00 + J_05_31 953720.00 1940600.00 + J_05_32 953840.00 1940600.00 + J_05_33 953960.00 1940600.00 + J_05_34 954080.00 1940600.00 + J_05_35 954200.00 1940600.00 + J_05_36 954320.00 1940600.00 + J_05_37 954440.00 1940600.00 + J_05_38 954560.00 1940600.00 + J_05_39 954680.00 1940600.00 + J_05_40 954800.00 1940600.00 + J_05_41 954920.00 1940600.00 + J_05_42 955040.00 1940600.00 + J_05_43 955160.00 1940600.00 + J_05_44 955280.00 1940600.00 + J_06_00 950000.00 1940720.00 + J_06_01 950120.00 1940720.00 + J_06_02 950240.00 1940720.00 + J_06_03 950360.00 1940720.00 + J_06_04 950480.00 1940720.00 + J_06_05 950600.00 1940720.00 + J_06_06 950720.00 1940720.00 + J_06_07 950840.00 1940720.00 + J_06_08 950960.00 1940720.00 + J_06_09 951080.00 1940720.00 + J_06_10 951200.00 1940720.00 + J_06_11 951320.00 1940720.00 + J_06_12 951440.00 1940720.00 + J_06_13 951560.00 1940720.00 + J_06_14 951680.00 1940720.00 + J_06_15 951800.00 1940720.00 + J_06_16 951920.00 1940720.00 + J_06_17 952040.00 1940720.00 + J_06_18 952160.00 1940720.00 + J_06_19 952280.00 1940720.00 + J_06_20 952400.00 1940720.00 + J_06_21 952520.00 1940720.00 + J_06_22 952640.00 1940720.00 + J_06_23 952760.00 1940720.00 + J_06_24 952880.00 1940720.00 + J_06_25 953000.00 1940720.00 + J_06_26 953120.00 1940720.00 + J_06_27 953240.00 1940720.00 + J_06_28 953360.00 1940720.00 + J_06_29 953480.00 1940720.00 + J_06_30 953600.00 1940720.00 + J_06_31 953720.00 1940720.00 + J_06_32 953840.00 1940720.00 + J_06_33 953960.00 1940720.00 + J_06_34 954080.00 1940720.00 + J_06_35 954200.00 1940720.00 + J_06_36 954320.00 1940720.00 + J_06_37 954440.00 1940720.00 + J_06_38 954560.00 1940720.00 + J_06_39 954680.00 1940720.00 + J_06_40 954800.00 1940720.00 + J_06_41 954920.00 1940720.00 + J_06_42 955040.00 1940720.00 + J_06_43 955160.00 1940720.00 + J_06_44 955280.00 1940720.00 + J_07_00 950000.00 1940840.00 + J_07_01 950120.00 1940840.00 + J_07_02 950240.00 1940840.00 + J_07_03 950360.00 1940840.00 + J_07_04 950480.00 1940840.00 + J_07_05 950600.00 1940840.00 + J_07_06 950720.00 1940840.00 + J_07_07 950840.00 1940840.00 + J_07_08 950960.00 1940840.00 + J_07_09 951080.00 1940840.00 + J_07_10 951200.00 1940840.00 + J_07_11 951320.00 1940840.00 + J_07_12 951440.00 1940840.00 + J_07_13 951560.00 1940840.00 + J_07_14 951680.00 1940840.00 + J_07_15 951800.00 1940840.00 + J_07_16 951920.00 1940840.00 + J_07_17 952040.00 1940840.00 + J_07_18 952160.00 1940840.00 + J_07_19 952280.00 1940840.00 + J_07_20 952400.00 1940840.00 + J_07_21 952520.00 1940840.00 + J_07_22 952640.00 1940840.00 + J_07_23 952760.00 1940840.00 + J_07_24 952880.00 1940840.00 + J_07_25 953000.00 1940840.00 + J_07_26 953120.00 1940840.00 + J_07_27 953240.00 1940840.00 + J_07_28 953360.00 1940840.00 + J_07_29 953480.00 1940840.00 + J_07_30 953600.00 1940840.00 + J_07_31 953720.00 1940840.00 + J_07_32 953840.00 1940840.00 + J_07_33 953960.00 1940840.00 + J_07_34 954080.00 1940840.00 + J_07_35 954200.00 1940840.00 + J_07_36 954320.00 1940840.00 + J_07_37 954440.00 1940840.00 + J_07_38 954560.00 1940840.00 + J_07_39 954680.00 1940840.00 + J_07_40 954800.00 1940840.00 + J_07_41 954920.00 1940840.00 + J_07_42 955040.00 1940840.00 + J_07_43 955160.00 1940840.00 + J_07_44 955280.00 1940840.00 + J_08_00 950000.00 1940960.00 + J_08_01 950120.00 1940960.00 + J_08_02 950240.00 1940960.00 + J_08_03 950360.00 1940960.00 + J_08_04 950480.00 1940960.00 + J_08_05 950600.00 1940960.00 + J_08_06 950720.00 1940960.00 + J_08_07 950840.00 1940960.00 + J_08_08 950960.00 1940960.00 + J_08_09 951080.00 1940960.00 + J_08_10 951200.00 1940960.00 + J_08_11 951320.00 1940960.00 + J_08_12 951440.00 1940960.00 + J_08_13 951560.00 1940960.00 + J_08_14 951680.00 1940960.00 + J_08_15 951800.00 1940960.00 + J_08_16 951920.00 1940960.00 + J_08_17 952040.00 1940960.00 + J_08_18 952160.00 1940960.00 + J_08_19 952280.00 1940960.00 + J_08_20 952400.00 1940960.00 + J_08_21 952520.00 1940960.00 + J_08_22 952640.00 1940960.00 + J_08_23 952760.00 1940960.00 + J_08_24 952880.00 1940960.00 + J_08_25 953000.00 1940960.00 + J_08_26 953120.00 1940960.00 + J_08_27 953240.00 1940960.00 + J_08_28 953360.00 1940960.00 + J_08_29 953480.00 1940960.00 + J_08_30 953600.00 1940960.00 + J_08_31 953720.00 1940960.00 + J_08_32 953840.00 1940960.00 + J_08_33 953960.00 1940960.00 + J_08_34 954080.00 1940960.00 + J_08_35 954200.00 1940960.00 + J_08_36 954320.00 1940960.00 + J_08_37 954440.00 1940960.00 + J_08_38 954560.00 1940960.00 + J_08_39 954680.00 1940960.00 + J_08_40 954800.00 1940960.00 + J_08_41 954920.00 1940960.00 + J_08_42 955040.00 1940960.00 + J_08_43 955160.00 1940960.00 + J_08_44 955280.00 1940960.00 + J_09_00 950000.00 1941080.00 + J_09_01 950120.00 1941080.00 + J_09_02 950240.00 1941080.00 + J_09_03 950360.00 1941080.00 + J_09_04 950480.00 1941080.00 + J_09_05 950600.00 1941080.00 + J_09_06 950720.00 1941080.00 + J_09_07 950840.00 1941080.00 + J_09_08 950960.00 1941080.00 + J_09_09 951080.00 1941080.00 + J_09_10 951200.00 1941080.00 + J_09_11 951320.00 1941080.00 + J_09_12 951440.00 1941080.00 + J_09_13 951560.00 1941080.00 + J_09_14 951680.00 1941080.00 + J_09_15 951800.00 1941080.00 + J_09_16 951920.00 1941080.00 + J_09_17 952040.00 1941080.00 + J_09_18 952160.00 1941080.00 + J_09_19 952280.00 1941080.00 + J_09_20 952400.00 1941080.00 + J_09_21 952520.00 1941080.00 + J_09_22 952640.00 1941080.00 + J_09_23 952760.00 1941080.00 + J_09_24 952880.00 1941080.00 + J_09_25 953000.00 1941080.00 + J_09_26 953120.00 1941080.00 + J_09_27 953240.00 1941080.00 + J_09_28 953360.00 1941080.00 + J_09_29 953480.00 1941080.00 + J_09_30 953600.00 1941080.00 + J_09_31 953720.00 1941080.00 + J_09_32 953840.00 1941080.00 + J_09_33 953960.00 1941080.00 + J_09_34 954080.00 1941080.00 + J_09_35 954200.00 1941080.00 + J_09_36 954320.00 1941080.00 + J_09_37 954440.00 1941080.00 + J_09_38 954560.00 1941080.00 + J_09_39 954680.00 1941080.00 + J_09_40 954800.00 1941080.00 + J_09_41 954920.00 1941080.00 + J_09_42 955040.00 1941080.00 + J_09_43 955160.00 1941080.00 + J_09_44 955280.00 1941080.00 + J_10_00 950000.00 1941200.00 + J_10_01 950120.00 1941200.00 + J_10_02 950240.00 1941200.00 + J_10_03 950360.00 1941200.00 + J_10_04 950480.00 1941200.00 + J_10_05 950600.00 1941200.00 + J_10_06 950720.00 1941200.00 + J_10_07 950840.00 1941200.00 + J_10_08 950960.00 1941200.00 + J_10_09 951080.00 1941200.00 + J_10_10 951200.00 1941200.00 + J_10_11 951320.00 1941200.00 + J_10_12 951440.00 1941200.00 + J_10_13 951560.00 1941200.00 + J_10_14 951680.00 1941200.00 + J_10_15 951800.00 1941200.00 + J_10_16 951920.00 1941200.00 + J_10_17 952040.00 1941200.00 + J_10_18 952160.00 1941200.00 + J_10_19 952280.00 1941200.00 + J_10_20 952400.00 1941200.00 + J_10_21 952520.00 1941200.00 + J_10_22 952640.00 1941200.00 + J_10_23 952760.00 1941200.00 + J_10_24 952880.00 1941200.00 + J_10_25 953000.00 1941200.00 + J_10_26 953120.00 1941200.00 + J_10_27 953240.00 1941200.00 + J_10_28 953360.00 1941200.00 + J_10_29 953480.00 1941200.00 + J_10_30 953600.00 1941200.00 + J_10_31 953720.00 1941200.00 + J_10_32 953840.00 1941200.00 + J_10_33 953960.00 1941200.00 + J_10_34 954080.00 1941200.00 + J_10_35 954200.00 1941200.00 + J_10_36 954320.00 1941200.00 + J_10_37 954440.00 1941200.00 + J_10_38 954560.00 1941200.00 + J_10_39 954680.00 1941200.00 + J_10_40 954800.00 1941200.00 + J_10_41 954920.00 1941200.00 + J_10_42 955040.00 1941200.00 + J_10_43 955160.00 1941200.00 + J_10_44 955280.00 1941200.00 + J_11_00 950000.00 1941320.00 + J_11_01 950120.00 1941320.00 + J_11_02 950240.00 1941320.00 + J_11_03 950360.00 1941320.00 + J_11_04 950480.00 1941320.00 + J_11_05 950600.00 1941320.00 + J_11_06 950720.00 1941320.00 + J_11_07 950840.00 1941320.00 + J_11_08 950960.00 1941320.00 + J_11_09 951080.00 1941320.00 + J_11_10 951200.00 1941320.00 + J_11_11 951320.00 1941320.00 + J_11_12 951440.00 1941320.00 + J_11_13 951560.00 1941320.00 + J_11_14 951680.00 1941320.00 + J_11_15 951800.00 1941320.00 + J_11_16 951920.00 1941320.00 + J_11_17 952040.00 1941320.00 + J_11_18 952160.00 1941320.00 + J_11_19 952280.00 1941320.00 + J_11_20 952400.00 1941320.00 + J_11_21 952520.00 1941320.00 + J_11_22 952640.00 1941320.00 + J_11_23 952760.00 1941320.00 + J_11_24 952880.00 1941320.00 + J_11_25 953000.00 1941320.00 + J_11_26 953120.00 1941320.00 + J_11_27 953240.00 1941320.00 + J_11_28 953360.00 1941320.00 + J_11_29 953480.00 1941320.00 + J_11_30 953600.00 1941320.00 + J_11_31 953720.00 1941320.00 + J_11_32 953840.00 1941320.00 + J_11_33 953960.00 1941320.00 + J_11_34 954080.00 1941320.00 + J_11_35 954200.00 1941320.00 + J_11_36 954320.00 1941320.00 + J_11_37 954440.00 1941320.00 + J_11_38 954560.00 1941320.00 + J_11_39 954680.00 1941320.00 + J_11_40 954800.00 1941320.00 + J_11_41 954920.00 1941320.00 + J_11_42 955040.00 1941320.00 + J_11_43 955160.00 1941320.00 + J_11_44 955280.00 1941320.00 + J_12_00 950000.00 1941440.00 + J_12_01 950120.00 1941440.00 + J_12_02 950240.00 1941440.00 + J_12_03 950360.00 1941440.00 + J_12_04 950480.00 1941440.00 + J_12_05 950600.00 1941440.00 + J_12_06 950720.00 1941440.00 + J_12_07 950840.00 1941440.00 + J_12_08 950960.00 1941440.00 + J_12_09 951080.00 1941440.00 + J_12_10 951200.00 1941440.00 + J_12_11 951320.00 1941440.00 + J_12_12 951440.00 1941440.00 + J_12_13 951560.00 1941440.00 + J_12_14 951680.00 1941440.00 + J_12_15 951800.00 1941440.00 + J_12_16 951920.00 1941440.00 + J_12_17 952040.00 1941440.00 + J_12_18 952160.00 1941440.00 + J_12_19 952280.00 1941440.00 + J_12_20 952400.00 1941440.00 + J_12_21 952520.00 1941440.00 + J_12_22 952640.00 1941440.00 + J_12_23 952760.00 1941440.00 + J_12_24 952880.00 1941440.00 + J_12_25 953000.00 1941440.00 + J_12_26 953120.00 1941440.00 + J_12_27 953240.00 1941440.00 + J_12_28 953360.00 1941440.00 + J_12_29 953480.00 1941440.00 + J_12_30 953600.00 1941440.00 + J_12_31 953720.00 1941440.00 + J_12_32 953840.00 1941440.00 + J_12_33 953960.00 1941440.00 + J_12_34 954080.00 1941440.00 + J_12_35 954200.00 1941440.00 + J_12_36 954320.00 1941440.00 + J_12_37 954440.00 1941440.00 + J_12_38 954560.00 1941440.00 + J_12_39 954680.00 1941440.00 + J_12_40 954800.00 1941440.00 + J_12_41 954920.00 1941440.00 + J_12_42 955040.00 1941440.00 + J_12_43 955160.00 1941440.00 + J_12_44 955280.00 1941440.00 + J_13_00 950000.00 1941560.00 + J_13_01 950120.00 1941560.00 + J_13_02 950240.00 1941560.00 + J_13_03 950360.00 1941560.00 + J_13_04 950480.00 1941560.00 + J_13_05 950600.00 1941560.00 + J_13_06 950720.00 1941560.00 + J_13_07 950840.00 1941560.00 + J_13_08 950960.00 1941560.00 + J_13_09 951080.00 1941560.00 + J_13_10 951200.00 1941560.00 + J_13_11 951320.00 1941560.00 + J_13_12 951440.00 1941560.00 + J_13_13 951560.00 1941560.00 + J_13_14 951680.00 1941560.00 + J_13_15 951800.00 1941560.00 + J_13_16 951920.00 1941560.00 + J_13_17 952040.00 1941560.00 + J_13_18 952160.00 1941560.00 + J_13_19 952280.00 1941560.00 + J_13_20 952400.00 1941560.00 + J_13_21 952520.00 1941560.00 + J_13_22 952640.00 1941560.00 + J_13_23 952760.00 1941560.00 + J_13_24 952880.00 1941560.00 + J_13_25 953000.00 1941560.00 + J_13_26 953120.00 1941560.00 + J_13_27 953240.00 1941560.00 + J_13_28 953360.00 1941560.00 + J_13_29 953480.00 1941560.00 + J_13_30 953600.00 1941560.00 + J_13_31 953720.00 1941560.00 + J_13_32 953840.00 1941560.00 + J_13_33 953960.00 1941560.00 + J_13_34 954080.00 1941560.00 + J_13_35 954200.00 1941560.00 + J_13_36 954320.00 1941560.00 + J_13_37 954440.00 1941560.00 + J_13_38 954560.00 1941560.00 + J_13_39 954680.00 1941560.00 + J_13_40 954800.00 1941560.00 + J_13_41 954920.00 1941560.00 + J_13_42 955040.00 1941560.00 + J_13_43 955160.00 1941560.00 + J_13_44 955280.00 1941560.00 + J_14_00 950000.00 1941680.00 + J_14_01 950120.00 1941680.00 + J_14_02 950240.00 1941680.00 + J_14_03 950360.00 1941680.00 + J_14_04 950480.00 1941680.00 + J_14_05 950600.00 1941680.00 + J_14_06 950720.00 1941680.00 + J_14_07 950840.00 1941680.00 + J_14_08 950960.00 1941680.00 + J_14_09 951080.00 1941680.00 + J_14_10 951200.00 1941680.00 + J_14_11 951320.00 1941680.00 + J_14_12 951440.00 1941680.00 + J_14_13 951560.00 1941680.00 + J_14_14 951680.00 1941680.00 + J_14_15 951800.00 1941680.00 + J_14_16 951920.00 1941680.00 + J_14_17 952040.00 1941680.00 + J_14_18 952160.00 1941680.00 + J_14_19 952280.00 1941680.00 + J_14_20 952400.00 1941680.00 + J_14_21 952520.00 1941680.00 + J_14_22 952640.00 1941680.00 + J_14_23 952760.00 1941680.00 + J_14_24 952880.00 1941680.00 + J_14_25 953000.00 1941680.00 + J_14_26 953120.00 1941680.00 + J_14_27 953240.00 1941680.00 + J_14_28 953360.00 1941680.00 + J_14_29 953480.00 1941680.00 + J_14_30 953600.00 1941680.00 + J_14_31 953720.00 1941680.00 + J_14_32 953840.00 1941680.00 + J_14_33 953960.00 1941680.00 + J_14_34 954080.00 1941680.00 + J_14_35 954200.00 1941680.00 + J_14_36 954320.00 1941680.00 + J_14_37 954440.00 1941680.00 + J_14_38 954560.00 1941680.00 + J_14_39 954680.00 1941680.00 + J_14_40 954800.00 1941680.00 + J_14_41 954920.00 1941680.00 + J_14_42 955040.00 1941680.00 + J_14_43 955160.00 1941680.00 + J_14_44 955280.00 1941680.00 + J_15_00 950000.00 1941800.00 + J_15_01 950120.00 1941800.00 + J_15_02 950240.00 1941800.00 + J_15_03 950360.00 1941800.00 + J_15_04 950480.00 1941800.00 + J_15_05 950600.00 1941800.00 + J_15_06 950720.00 1941800.00 + J_15_07 950840.00 1941800.00 + J_15_08 950960.00 1941800.00 + J_15_09 951080.00 1941800.00 + J_15_10 951200.00 1941800.00 + J_15_11 951320.00 1941800.00 + J_15_12 951440.00 1941800.00 + J_15_13 951560.00 1941800.00 + J_15_14 951680.00 1941800.00 + J_15_15 951800.00 1941800.00 + J_15_16 951920.00 1941800.00 + J_15_17 952040.00 1941800.00 + J_15_18 952160.00 1941800.00 + J_15_19 952280.00 1941800.00 + J_15_20 952400.00 1941800.00 + J_15_21 952520.00 1941800.00 + J_15_22 952640.00 1941800.00 + J_15_23 952760.00 1941800.00 + J_15_24 952880.00 1941800.00 + J_15_25 953000.00 1941800.00 + J_15_26 953120.00 1941800.00 + J_15_27 953240.00 1941800.00 + J_15_28 953360.00 1941800.00 + J_15_29 953480.00 1941800.00 + J_15_30 953600.00 1941800.00 + J_15_31 953720.00 1941800.00 + J_15_32 953840.00 1941800.00 + J_15_33 953960.00 1941800.00 + J_15_34 954080.00 1941800.00 + J_15_35 954200.00 1941800.00 + J_15_36 954320.00 1941800.00 + J_15_37 954440.00 1941800.00 + J_15_38 954560.00 1941800.00 + J_15_39 954680.00 1941800.00 + J_15_40 954800.00 1941800.00 + J_15_41 954920.00 1941800.00 + J_15_42 955040.00 1941800.00 + J_15_43 955160.00 1941800.00 + J_15_44 955280.00 1941800.00 + J_16_00 950000.00 1941920.00 + J_16_01 950120.00 1941920.00 + J_16_02 950240.00 1941920.00 + J_16_03 950360.00 1941920.00 + J_16_04 950480.00 1941920.00 + J_16_05 950600.00 1941920.00 + J_16_06 950720.00 1941920.00 + J_16_07 950840.00 1941920.00 + J_16_08 950960.00 1941920.00 + J_16_09 951080.00 1941920.00 + J_16_10 951200.00 1941920.00 + J_16_11 951320.00 1941920.00 + J_16_12 951440.00 1941920.00 + J_16_13 951560.00 1941920.00 + J_16_14 951680.00 1941920.00 + J_16_15 951800.00 1941920.00 + J_16_16 951920.00 1941920.00 + J_16_17 952040.00 1941920.00 + J_16_18 952160.00 1941920.00 + J_16_19 952280.00 1941920.00 + J_16_20 952400.00 1941920.00 + J_16_21 952520.00 1941920.00 + J_16_22 952640.00 1941920.00 + J_16_23 952760.00 1941920.00 + J_16_24 952880.00 1941920.00 + J_16_25 953000.00 1941920.00 + J_16_26 953120.00 1941920.00 + J_16_27 953240.00 1941920.00 + J_16_28 953360.00 1941920.00 + J_16_29 953480.00 1941920.00 + J_16_30 953600.00 1941920.00 + J_16_31 953720.00 1941920.00 + J_16_32 953840.00 1941920.00 + J_16_33 953960.00 1941920.00 + J_16_34 954080.00 1941920.00 + J_16_35 954200.00 1941920.00 + J_16_36 954320.00 1941920.00 + J_16_37 954440.00 1941920.00 + J_16_38 954560.00 1941920.00 + J_16_39 954680.00 1941920.00 + J_16_40 954800.00 1941920.00 + J_16_41 954920.00 1941920.00 + J_16_42 955040.00 1941920.00 + J_16_43 955160.00 1941920.00 + J_16_44 955280.00 1941920.00 + J_17_00 950000.00 1942040.00 + J_17_01 950120.00 1942040.00 + J_17_02 950240.00 1942040.00 + J_17_03 950360.00 1942040.00 + J_17_04 950480.00 1942040.00 + J_17_05 950600.00 1942040.00 + J_17_06 950720.00 1942040.00 + J_17_07 950840.00 1942040.00 + J_17_08 950960.00 1942040.00 + J_17_09 951080.00 1942040.00 + J_17_10 951200.00 1942040.00 + J_17_11 951320.00 1942040.00 + J_17_12 951440.00 1942040.00 + J_17_13 951560.00 1942040.00 + J_17_14 951680.00 1942040.00 + J_17_15 951800.00 1942040.00 + J_17_16 951920.00 1942040.00 + J_17_17 952040.00 1942040.00 + J_17_18 952160.00 1942040.00 + J_17_19 952280.00 1942040.00 + J_17_20 952400.00 1942040.00 + J_17_21 952520.00 1942040.00 + J_17_22 952640.00 1942040.00 + J_17_23 952760.00 1942040.00 + J_17_24 952880.00 1942040.00 + J_17_25 953000.00 1942040.00 + J_17_26 953120.00 1942040.00 + J_17_27 953240.00 1942040.00 + J_17_28 953360.00 1942040.00 + J_17_29 953480.00 1942040.00 + J_17_30 953600.00 1942040.00 + J_17_31 953720.00 1942040.00 + J_17_32 953840.00 1942040.00 + J_17_33 953960.00 1942040.00 + J_17_34 954080.00 1942040.00 + J_17_35 954200.00 1942040.00 + J_17_36 954320.00 1942040.00 + J_17_37 954440.00 1942040.00 + J_17_38 954560.00 1942040.00 + J_17_39 954680.00 1942040.00 + J_17_40 954800.00 1942040.00 + J_17_41 954920.00 1942040.00 + J_17_42 955040.00 1942040.00 + J_17_43 955160.00 1942040.00 + J_17_44 955280.00 1942040.00 + J_18_00 950000.00 1942160.00 + J_18_01 950120.00 1942160.00 + J_18_02 950240.00 1942160.00 + J_18_03 950360.00 1942160.00 + J_18_04 950480.00 1942160.00 + J_18_05 950600.00 1942160.00 + J_18_06 950720.00 1942160.00 + J_18_07 950840.00 1942160.00 + J_18_08 950960.00 1942160.00 + J_18_09 951080.00 1942160.00 + J_18_10 951200.00 1942160.00 + J_18_11 951320.00 1942160.00 + J_18_12 951440.00 1942160.00 + J_18_13 951560.00 1942160.00 + J_18_14 951680.00 1942160.00 + J_18_15 951800.00 1942160.00 + J_18_16 951920.00 1942160.00 + J_18_17 952040.00 1942160.00 + J_18_18 952160.00 1942160.00 + J_18_19 952280.00 1942160.00 + J_18_20 952400.00 1942160.00 + J_18_21 952520.00 1942160.00 + J_18_22 952640.00 1942160.00 + J_18_23 952760.00 1942160.00 + J_18_24 952880.00 1942160.00 + J_18_25 953000.00 1942160.00 + J_18_26 953120.00 1942160.00 + J_18_27 953240.00 1942160.00 + J_18_28 953360.00 1942160.00 + J_18_29 953480.00 1942160.00 + J_18_30 953600.00 1942160.00 + J_18_31 953720.00 1942160.00 + J_18_32 953840.00 1942160.00 + J_18_33 953960.00 1942160.00 + J_18_34 954080.00 1942160.00 + J_18_35 954200.00 1942160.00 + J_18_36 954320.00 1942160.00 + J_18_37 954440.00 1942160.00 + J_18_38 954560.00 1942160.00 + J_18_39 954680.00 1942160.00 + J_18_40 954800.00 1942160.00 + J_18_41 954920.00 1942160.00 + J_18_42 955040.00 1942160.00 + J_18_43 955160.00 1942160.00 + J_18_44 955280.00 1942160.00 + J_19_00 950000.00 1942280.00 + J_19_01 950120.00 1942280.00 + J_19_02 950240.00 1942280.00 + J_19_03 950360.00 1942280.00 + J_19_04 950480.00 1942280.00 + J_19_05 950600.00 1942280.00 + J_19_06 950720.00 1942280.00 + J_19_07 950840.00 1942280.00 + J_19_08 950960.00 1942280.00 + J_19_09 951080.00 1942280.00 + J_19_10 951200.00 1942280.00 + J_19_11 951320.00 1942280.00 + J_19_12 951440.00 1942280.00 + J_19_13 951560.00 1942280.00 + J_19_14 951680.00 1942280.00 + J_19_15 951800.00 1942280.00 + J_19_16 951920.00 1942280.00 + J_19_17 952040.00 1942280.00 + J_19_18 952160.00 1942280.00 + J_19_19 952280.00 1942280.00 + J_19_20 952400.00 1942280.00 + J_19_21 952520.00 1942280.00 + J_19_22 952640.00 1942280.00 + J_19_23 952760.00 1942280.00 + J_19_24 952880.00 1942280.00 + J_19_25 953000.00 1942280.00 + J_19_26 953120.00 1942280.00 + J_19_27 953240.00 1942280.00 + J_19_28 953360.00 1942280.00 + J_19_29 953480.00 1942280.00 + J_19_30 953600.00 1942280.00 + J_19_31 953720.00 1942280.00 + J_19_32 953840.00 1942280.00 + J_19_33 953960.00 1942280.00 + J_19_34 954080.00 1942280.00 + J_19_35 954200.00 1942280.00 + J_19_36 954320.00 1942280.00 + J_19_37 954440.00 1942280.00 + J_19_38 954560.00 1942280.00 + J_19_39 954680.00 1942280.00 + J_19_40 954800.00 1942280.00 + J_19_41 954920.00 1942280.00 + J_19_42 955040.00 1942280.00 + J_19_43 955160.00 1942280.00 + J_19_44 955280.00 1942280.00 + J_20_00 950000.00 1942400.00 + J_20_01 950120.00 1942400.00 + J_20_02 950240.00 1942400.00 + J_20_03 950360.00 1942400.00 + J_20_04 950480.00 1942400.00 + J_20_05 950600.00 1942400.00 + J_20_06 950720.00 1942400.00 + J_20_07 950840.00 1942400.00 + J_20_08 950960.00 1942400.00 + J_20_09 951080.00 1942400.00 + J_20_10 951200.00 1942400.00 + J_20_11 951320.00 1942400.00 + J_20_12 951440.00 1942400.00 + J_20_13 951560.00 1942400.00 + J_20_14 951680.00 1942400.00 + J_20_15 951800.00 1942400.00 + J_20_16 951920.00 1942400.00 + J_20_17 952040.00 1942400.00 + J_20_18 952160.00 1942400.00 + J_20_19 952280.00 1942400.00 + J_20_20 952400.00 1942400.00 + J_20_21 952520.00 1942400.00 + J_20_22 952640.00 1942400.00 + J_20_23 952760.00 1942400.00 + J_20_24 952880.00 1942400.00 + J_20_25 953000.00 1942400.00 + J_20_26 953120.00 1942400.00 + J_20_27 953240.00 1942400.00 + J_20_28 953360.00 1942400.00 + J_20_29 953480.00 1942400.00 + J_20_30 953600.00 1942400.00 + J_20_31 953720.00 1942400.00 + J_20_32 953840.00 1942400.00 + J_20_33 953960.00 1942400.00 + J_20_34 954080.00 1942400.00 + J_20_35 954200.00 1942400.00 + J_20_36 954320.00 1942400.00 + J_20_37 954440.00 1942400.00 + J_20_38 954560.00 1942400.00 + J_20_39 954680.00 1942400.00 + J_20_40 954800.00 1942400.00 + J_20_41 954920.00 1942400.00 + J_20_42 955040.00 1942400.00 + J_20_43 955160.00 1942400.00 + J_20_44 955280.00 1942400.00 + J_21_00 950000.00 1942520.00 + J_21_01 950120.00 1942520.00 + J_21_02 950240.00 1942520.00 + J_21_03 950360.00 1942520.00 + J_21_04 950480.00 1942520.00 + J_21_05 950600.00 1942520.00 + J_21_06 950720.00 1942520.00 + J_21_07 950840.00 1942520.00 + J_21_08 950960.00 1942520.00 + J_21_09 951080.00 1942520.00 + J_21_10 951200.00 1942520.00 + J_21_11 951320.00 1942520.00 + J_21_12 951440.00 1942520.00 + J_21_13 951560.00 1942520.00 + J_21_14 951680.00 1942520.00 + J_21_15 951800.00 1942520.00 + J_21_16 951920.00 1942520.00 + J_21_17 952040.00 1942520.00 + J_21_18 952160.00 1942520.00 + J_21_19 952280.00 1942520.00 + J_21_20 952400.00 1942520.00 + J_21_21 952520.00 1942520.00 + J_21_22 952640.00 1942520.00 + J_21_23 952760.00 1942520.00 + J_21_24 952880.00 1942520.00 + J_21_25 953000.00 1942520.00 + J_21_26 953120.00 1942520.00 + J_21_27 953240.00 1942520.00 + J_21_28 953360.00 1942520.00 + J_21_29 953480.00 1942520.00 + J_21_30 953600.00 1942520.00 + J_21_31 953720.00 1942520.00 + J_21_32 953840.00 1942520.00 + J_21_33 953960.00 1942520.00 + J_21_34 954080.00 1942520.00 + J_21_35 954200.00 1942520.00 + J_21_36 954320.00 1942520.00 + J_21_37 954440.00 1942520.00 + J_21_38 954560.00 1942520.00 + J_21_39 954680.00 1942520.00 + J_21_40 954800.00 1942520.00 + J_21_41 954920.00 1942520.00 + J_21_42 955040.00 1942520.00 + J_21_43 955160.00 1942520.00 + J_21_44 955280.00 1942520.00 + J_22_00 950000.00 1942640.00 + J_22_01 950120.00 1942640.00 + J_22_02 950240.00 1942640.00 + J_22_03 950360.00 1942640.00 + J_22_04 950480.00 1942640.00 + J_22_05 950600.00 1942640.00 + J_22_06 950720.00 1942640.00 + J_22_07 950840.00 1942640.00 + J_22_08 950960.00 1942640.00 + J_22_09 951080.00 1942640.00 + J_22_10 951200.00 1942640.00 + J_22_11 951320.00 1942640.00 + J_22_12 951440.00 1942640.00 + J_22_13 951560.00 1942640.00 + J_22_14 951680.00 1942640.00 + J_22_15 951800.00 1942640.00 + J_22_16 951920.00 1942640.00 + J_22_17 952040.00 1942640.00 + J_22_18 952160.00 1942640.00 + J_22_19 952280.00 1942640.00 + J_22_20 952400.00 1942640.00 + J_22_21 952520.00 1942640.00 + J_22_22 952640.00 1942640.00 + J_22_23 952760.00 1942640.00 + J_22_24 952880.00 1942640.00 + J_22_25 953000.00 1942640.00 + J_22_26 953120.00 1942640.00 + J_22_27 953240.00 1942640.00 + J_22_28 953360.00 1942640.00 + J_22_29 953480.00 1942640.00 + J_22_30 953600.00 1942640.00 + J_22_31 953720.00 1942640.00 + J_22_32 953840.00 1942640.00 + J_22_33 953960.00 1942640.00 + J_22_34 954080.00 1942640.00 + J_22_35 954200.00 1942640.00 + J_22_36 954320.00 1942640.00 + J_22_37 954440.00 1942640.00 + J_22_38 954560.00 1942640.00 + J_22_39 954680.00 1942640.00 + J_22_40 954800.00 1942640.00 + J_22_41 954920.00 1942640.00 + J_22_42 955040.00 1942640.00 + J_22_43 955160.00 1942640.00 + J_22_44 955280.00 1942640.00 + J_23_00 950000.00 1942760.00 + J_23_01 950120.00 1942760.00 + J_23_02 950240.00 1942760.00 + J_23_03 950360.00 1942760.00 + J_23_04 950480.00 1942760.00 + J_23_05 950600.00 1942760.00 + J_23_06 950720.00 1942760.00 + J_23_07 950840.00 1942760.00 + J_23_08 950960.00 1942760.00 + J_23_09 951080.00 1942760.00 + J_23_10 951200.00 1942760.00 + J_23_11 951320.00 1942760.00 + J_23_12 951440.00 1942760.00 + J_23_13 951560.00 1942760.00 + J_23_14 951680.00 1942760.00 + J_23_15 951800.00 1942760.00 + J_23_16 951920.00 1942760.00 + J_23_17 952040.00 1942760.00 + J_23_18 952160.00 1942760.00 + J_23_19 952280.00 1942760.00 + J_23_20 952400.00 1942760.00 + J_23_21 952520.00 1942760.00 + J_23_22 952640.00 1942760.00 + J_23_23 952760.00 1942760.00 + J_23_24 952880.00 1942760.00 + J_23_25 953000.00 1942760.00 + J_23_26 953120.00 1942760.00 + J_23_27 953240.00 1942760.00 + J_23_28 953360.00 1942760.00 + J_23_29 953480.00 1942760.00 + J_23_30 953600.00 1942760.00 + J_23_31 953720.00 1942760.00 + J_23_32 953840.00 1942760.00 + J_23_33 953960.00 1942760.00 + J_23_34 954080.00 1942760.00 + J_23_35 954200.00 1942760.00 + J_23_36 954320.00 1942760.00 + J_23_37 954440.00 1942760.00 + J_23_38 954560.00 1942760.00 + J_23_39 954680.00 1942760.00 + J_23_40 954800.00 1942760.00 + J_23_41 954920.00 1942760.00 + J_23_42 955040.00 1942760.00 + J_23_43 955160.00 1942760.00 + J_23_44 955280.00 1942760.00 + J_24_00 950000.00 1942880.00 + J_24_01 950120.00 1942880.00 + J_24_02 950240.00 1942880.00 + J_24_03 950360.00 1942880.00 + J_24_04 950480.00 1942880.00 + J_24_05 950600.00 1942880.00 + J_24_06 950720.00 1942880.00 + J_24_07 950840.00 1942880.00 + J_24_08 950960.00 1942880.00 + J_24_09 951080.00 1942880.00 + J_24_10 951200.00 1942880.00 + J_24_11 951320.00 1942880.00 + J_24_12 951440.00 1942880.00 + J_24_13 951560.00 1942880.00 + J_24_14 951680.00 1942880.00 + J_24_15 951800.00 1942880.00 + J_24_16 951920.00 1942880.00 + J_24_17 952040.00 1942880.00 + J_24_18 952160.00 1942880.00 + J_24_19 952280.00 1942880.00 + J_24_20 952400.00 1942880.00 + J_24_21 952520.00 1942880.00 + J_24_22 952640.00 1942880.00 + J_24_23 952760.00 1942880.00 + J_24_24 952880.00 1942880.00 + J_24_25 953000.00 1942880.00 + J_24_26 953120.00 1942880.00 + J_24_27 953240.00 1942880.00 + J_24_28 953360.00 1942880.00 + J_24_29 953480.00 1942880.00 + J_24_30 953600.00 1942880.00 + J_24_31 953720.00 1942880.00 + J_24_32 953840.00 1942880.00 + J_24_33 953960.00 1942880.00 + J_24_34 954080.00 1942880.00 + J_24_35 954200.00 1942880.00 + J_24_36 954320.00 1942880.00 + J_24_37 954440.00 1942880.00 + J_24_38 954560.00 1942880.00 + J_24_39 954680.00 1942880.00 + J_24_40 954800.00 1942880.00 + J_24_41 954920.00 1942880.00 + J_24_42 955040.00 1942880.00 + J_24_43 955160.00 1942880.00 + J_24_44 955280.00 1942880.00 + J_25_00 950000.00 1943000.00 + J_25_01 950120.00 1943000.00 + J_25_02 950240.00 1943000.00 + J_25_03 950360.00 1943000.00 + J_25_04 950480.00 1943000.00 + J_25_05 950600.00 1943000.00 + J_25_06 950720.00 1943000.00 + J_25_07 950840.00 1943000.00 + J_25_08 950960.00 1943000.00 + J_25_09 951080.00 1943000.00 + J_25_10 951200.00 1943000.00 + J_25_11 951320.00 1943000.00 + J_25_12 951440.00 1943000.00 + J_25_13 951560.00 1943000.00 + J_25_14 951680.00 1943000.00 + J_25_15 951800.00 1943000.00 + J_25_16 951920.00 1943000.00 + J_25_17 952040.00 1943000.00 + J_25_18 952160.00 1943000.00 + J_25_19 952280.00 1943000.00 + J_25_20 952400.00 1943000.00 + J_25_21 952520.00 1943000.00 + J_25_22 952640.00 1943000.00 + J_25_23 952760.00 1943000.00 + J_25_24 952880.00 1943000.00 + J_25_25 953000.00 1943000.00 + J_25_26 953120.00 1943000.00 + J_25_27 953240.00 1943000.00 + J_25_28 953360.00 1943000.00 + J_25_29 953480.00 1943000.00 + J_25_30 953600.00 1943000.00 + J_25_31 953720.00 1943000.00 + J_25_32 953840.00 1943000.00 + J_25_33 953960.00 1943000.00 + J_25_34 954080.00 1943000.00 + J_25_35 954200.00 1943000.00 + J_25_36 954320.00 1943000.00 + J_25_37 954440.00 1943000.00 + J_25_38 954560.00 1943000.00 + J_25_39 954680.00 1943000.00 + J_25_40 954800.00 1943000.00 + J_25_41 954920.00 1943000.00 + J_25_42 955040.00 1943000.00 + J_25_43 955160.00 1943000.00 + J_25_44 955280.00 1943000.00 + J_26_00 950000.00 1943120.00 + J_26_01 950120.00 1943120.00 + J_26_02 950240.00 1943120.00 + J_26_03 950360.00 1943120.00 + J_26_04 950480.00 1943120.00 + J_26_05 950600.00 1943120.00 + J_26_06 950720.00 1943120.00 + J_26_07 950840.00 1943120.00 + J_26_08 950960.00 1943120.00 + J_26_09 951080.00 1943120.00 + J_26_10 951200.00 1943120.00 + J_26_11 951320.00 1943120.00 + J_26_12 951440.00 1943120.00 + J_26_13 951560.00 1943120.00 + J_26_14 951680.00 1943120.00 + J_26_15 951800.00 1943120.00 + J_26_16 951920.00 1943120.00 + J_26_17 952040.00 1943120.00 + J_26_18 952160.00 1943120.00 + J_26_19 952280.00 1943120.00 + J_26_20 952400.00 1943120.00 + J_26_21 952520.00 1943120.00 + J_26_22 952640.00 1943120.00 + J_26_23 952760.00 1943120.00 + J_26_24 952880.00 1943120.00 + J_26_25 953000.00 1943120.00 + J_26_26 953120.00 1943120.00 + J_26_27 953240.00 1943120.00 + J_26_28 953360.00 1943120.00 + J_26_29 953480.00 1943120.00 + J_26_30 953600.00 1943120.00 + J_26_31 953720.00 1943120.00 + J_26_32 953840.00 1943120.00 + J_26_33 953960.00 1943120.00 + J_26_34 954080.00 1943120.00 + J_26_35 954200.00 1943120.00 + J_26_36 954320.00 1943120.00 + J_26_37 954440.00 1943120.00 + J_26_38 954560.00 1943120.00 + J_26_39 954680.00 1943120.00 + J_26_40 954800.00 1943120.00 + J_26_41 954920.00 1943120.00 + J_26_42 955040.00 1943120.00 + J_26_43 955160.00 1943120.00 + J_26_44 955280.00 1943120.00 + J_27_00 950000.00 1943240.00 + J_27_01 950120.00 1943240.00 + J_27_02 950240.00 1943240.00 + J_27_03 950360.00 1943240.00 + J_27_04 950480.00 1943240.00 + J_27_05 950600.00 1943240.00 + J_27_06 950720.00 1943240.00 + J_27_07 950840.00 1943240.00 + J_27_08 950960.00 1943240.00 + J_27_09 951080.00 1943240.00 + J_27_10 951200.00 1943240.00 + J_27_11 951320.00 1943240.00 + J_27_12 951440.00 1943240.00 + J_27_13 951560.00 1943240.00 + J_27_14 951680.00 1943240.00 + J_27_15 951800.00 1943240.00 + J_27_16 951920.00 1943240.00 + J_27_17 952040.00 1943240.00 + J_27_18 952160.00 1943240.00 + J_27_19 952280.00 1943240.00 + J_27_20 952400.00 1943240.00 + J_27_21 952520.00 1943240.00 + J_27_22 952640.00 1943240.00 + J_27_23 952760.00 1943240.00 + J_27_24 952880.00 1943240.00 + J_27_25 953000.00 1943240.00 + J_27_26 953120.00 1943240.00 + J_27_27 953240.00 1943240.00 + J_27_28 953360.00 1943240.00 + J_27_29 953480.00 1943240.00 + J_27_30 953600.00 1943240.00 + J_27_31 953720.00 1943240.00 + J_27_32 953840.00 1943240.00 + J_27_33 953960.00 1943240.00 + J_27_34 954080.00 1943240.00 + J_27_35 954200.00 1943240.00 + J_27_36 954320.00 1943240.00 + J_27_37 954440.00 1943240.00 + J_27_38 954560.00 1943240.00 + J_27_39 954680.00 1943240.00 + J_27_40 954800.00 1943240.00 + J_27_41 954920.00 1943240.00 + J_27_42 955040.00 1943240.00 + J_27_43 955160.00 1943240.00 + J_27_44 955280.00 1943240.00 + J_28_00 950000.00 1943360.00 + J_28_01 950120.00 1943360.00 + J_28_02 950240.00 1943360.00 + J_28_03 950360.00 1943360.00 + J_28_04 950480.00 1943360.00 + J_28_05 950600.00 1943360.00 + J_28_06 950720.00 1943360.00 + J_28_07 950840.00 1943360.00 + J_28_08 950960.00 1943360.00 + J_28_09 951080.00 1943360.00 + J_28_10 951200.00 1943360.00 + J_28_11 951320.00 1943360.00 + J_28_12 951440.00 1943360.00 + J_28_13 951560.00 1943360.00 + J_28_14 951680.00 1943360.00 + J_28_15 951800.00 1943360.00 + J_28_16 951920.00 1943360.00 + J_28_17 952040.00 1943360.00 + J_28_18 952160.00 1943360.00 + J_28_19 952280.00 1943360.00 + J_28_20 952400.00 1943360.00 + J_28_21 952520.00 1943360.00 + J_28_22 952640.00 1943360.00 + J_28_23 952760.00 1943360.00 + J_28_24 952880.00 1943360.00 + J_28_25 953000.00 1943360.00 + J_28_26 953120.00 1943360.00 + J_28_27 953240.00 1943360.00 + J_28_28 953360.00 1943360.00 + J_28_29 953480.00 1943360.00 + J_28_30 953600.00 1943360.00 + J_28_31 953720.00 1943360.00 + J_28_32 953840.00 1943360.00 + J_28_33 953960.00 1943360.00 + J_28_34 954080.00 1943360.00 + J_28_35 954200.00 1943360.00 + J_28_36 954320.00 1943360.00 + J_28_37 954440.00 1943360.00 + J_28_38 954560.00 1943360.00 + J_28_39 954680.00 1943360.00 + J_28_40 954800.00 1943360.00 + J_28_41 954920.00 1943360.00 + J_28_42 955040.00 1943360.00 + J_28_43 955160.00 1943360.00 + J_28_44 955280.00 1943360.00 + J_29_00 950000.00 1943480.00 + J_29_01 950120.00 1943480.00 + J_29_02 950240.00 1943480.00 + J_29_03 950360.00 1943480.00 + J_29_04 950480.00 1943480.00 + J_29_05 950600.00 1943480.00 + J_29_06 950720.00 1943480.00 + J_29_07 950840.00 1943480.00 + J_29_08 950960.00 1943480.00 + J_29_09 951080.00 1943480.00 + J_29_10 951200.00 1943480.00 + J_29_11 951320.00 1943480.00 + J_29_12 951440.00 1943480.00 + J_29_13 951560.00 1943480.00 + J_29_14 951680.00 1943480.00 + J_29_15 951800.00 1943480.00 + J_29_16 951920.00 1943480.00 + J_29_17 952040.00 1943480.00 + J_29_18 952160.00 1943480.00 + J_29_19 952280.00 1943480.00 + J_29_20 952400.00 1943480.00 + J_29_21 952520.00 1943480.00 + J_29_22 952640.00 1943480.00 + J_29_23 952760.00 1943480.00 + J_29_24 952880.00 1943480.00 + J_29_25 953000.00 1943480.00 + J_29_26 953120.00 1943480.00 + J_29_27 953240.00 1943480.00 + J_29_28 953360.00 1943480.00 + J_29_29 953480.00 1943480.00 + J_29_30 953600.00 1943480.00 + J_29_31 953720.00 1943480.00 + J_29_32 953840.00 1943480.00 + J_29_33 953960.00 1943480.00 + J_29_34 954080.00 1943480.00 + J_29_35 954200.00 1943480.00 + J_29_36 954320.00 1943480.00 + J_29_37 954440.00 1943480.00 + J_29_38 954560.00 1943480.00 + J_29_39 954680.00 1943480.00 + J_29_40 954800.00 1943480.00 + J_29_41 954920.00 1943480.00 + J_29_42 955040.00 1943480.00 + J_29_43 955160.00 1943480.00 + J_29_44 955280.00 1943480.00 + J_30_00 950000.00 1943600.00 + J_30_01 950120.00 1943600.00 + J_30_02 950240.00 1943600.00 + J_30_03 950360.00 1943600.00 + J_30_04 950480.00 1943600.00 + J_30_05 950600.00 1943600.00 + J_30_06 950720.00 1943600.00 + J_30_07 950840.00 1943600.00 + J_30_08 950960.00 1943600.00 + J_30_09 951080.00 1943600.00 + J_30_10 951200.00 1943600.00 + J_30_11 951320.00 1943600.00 + J_30_12 951440.00 1943600.00 + J_30_13 951560.00 1943600.00 + J_30_14 951680.00 1943600.00 + J_30_15 951800.00 1943600.00 + J_30_16 951920.00 1943600.00 + J_30_17 952040.00 1943600.00 + J_30_18 952160.00 1943600.00 + J_30_19 952280.00 1943600.00 + J_30_20 952400.00 1943600.00 + J_30_21 952520.00 1943600.00 + J_30_22 952640.00 1943600.00 + J_30_23 952760.00 1943600.00 + J_30_24 952880.00 1943600.00 + J_30_25 953000.00 1943600.00 + J_30_26 953120.00 1943600.00 + J_30_27 953240.00 1943600.00 + J_30_28 953360.00 1943600.00 + J_30_29 953480.00 1943600.00 + J_30_30 953600.00 1943600.00 + J_30_31 953720.00 1943600.00 + J_30_32 953840.00 1943600.00 + J_30_33 953960.00 1943600.00 + J_30_34 954080.00 1943600.00 + J_30_35 954200.00 1943600.00 + J_30_36 954320.00 1943600.00 + J_30_37 954440.00 1943600.00 + J_30_38 954560.00 1943600.00 + J_30_39 954680.00 1943600.00 + J_30_40 954800.00 1943600.00 + J_30_41 954920.00 1943600.00 + J_30_42 955040.00 1943600.00 + J_30_43 955160.00 1943600.00 + J_30_44 955280.00 1943600.00 + J_31_00 950000.00 1943720.00 + J_31_01 950120.00 1943720.00 + J_31_02 950240.00 1943720.00 + J_31_03 950360.00 1943720.00 + J_31_04 950480.00 1943720.00 + J_31_05 950600.00 1943720.00 + J_31_06 950720.00 1943720.00 + J_31_07 950840.00 1943720.00 + J_31_08 950960.00 1943720.00 + J_31_09 951080.00 1943720.00 + J_31_10 951200.00 1943720.00 + J_31_11 951320.00 1943720.00 + J_31_12 951440.00 1943720.00 + J_31_13 951560.00 1943720.00 + J_31_14 951680.00 1943720.00 + J_31_15 951800.00 1943720.00 + J_31_16 951920.00 1943720.00 + J_31_17 952040.00 1943720.00 + J_31_18 952160.00 1943720.00 + J_31_19 952280.00 1943720.00 + J_31_20 952400.00 1943720.00 + J_31_21 952520.00 1943720.00 + J_31_22 952640.00 1943720.00 + J_31_23 952760.00 1943720.00 + J_31_24 952880.00 1943720.00 + J_31_25 953000.00 1943720.00 + J_31_26 953120.00 1943720.00 + J_31_27 953240.00 1943720.00 + J_31_28 953360.00 1943720.00 + J_31_29 953480.00 1943720.00 + J_31_30 953600.00 1943720.00 + J_31_31 953720.00 1943720.00 + J_31_32 953840.00 1943720.00 + J_31_33 953960.00 1943720.00 + J_31_34 954080.00 1943720.00 + J_31_35 954200.00 1943720.00 + J_31_36 954320.00 1943720.00 + J_31_37 954440.00 1943720.00 + J_31_38 954560.00 1943720.00 + J_31_39 954680.00 1943720.00 + J_31_40 954800.00 1943720.00 + J_31_41 954920.00 1943720.00 + J_31_42 955040.00 1943720.00 + J_31_43 955160.00 1943720.00 + J_31_44 955280.00 1943720.00 + J_32_00 950000.00 1943840.00 + J_32_01 950120.00 1943840.00 + J_32_02 950240.00 1943840.00 + J_32_03 950360.00 1943840.00 + J_32_04 950480.00 1943840.00 + J_32_05 950600.00 1943840.00 + J_32_06 950720.00 1943840.00 + J_32_07 950840.00 1943840.00 + J_32_08 950960.00 1943840.00 + J_32_09 951080.00 1943840.00 + J_32_10 951200.00 1943840.00 + J_32_11 951320.00 1943840.00 + J_32_12 951440.00 1943840.00 + J_32_13 951560.00 1943840.00 + J_32_14 951680.00 1943840.00 + J_32_15 951800.00 1943840.00 + J_32_16 951920.00 1943840.00 + J_32_17 952040.00 1943840.00 + J_32_18 952160.00 1943840.00 + J_32_19 952280.00 1943840.00 + J_32_20 952400.00 1943840.00 + J_32_21 952520.00 1943840.00 + J_32_22 952640.00 1943840.00 + J_32_23 952760.00 1943840.00 + J_32_24 952880.00 1943840.00 + J_32_25 953000.00 1943840.00 + J_32_26 953120.00 1943840.00 + J_32_27 953240.00 1943840.00 + J_32_28 953360.00 1943840.00 + J_32_29 953480.00 1943840.00 + J_32_30 953600.00 1943840.00 + J_32_31 953720.00 1943840.00 + J_32_32 953840.00 1943840.00 + J_32_33 953960.00 1943840.00 + J_32_34 954080.00 1943840.00 + J_32_35 954200.00 1943840.00 + J_32_36 954320.00 1943840.00 + J_32_37 954440.00 1943840.00 + J_32_38 954560.00 1943840.00 + J_32_39 954680.00 1943840.00 + J_32_40 954800.00 1943840.00 + J_32_41 954920.00 1943840.00 + J_32_42 955040.00 1943840.00 + J_32_43 955160.00 1943840.00 + J_32_44 955280.00 1943840.00 + J_33_00 950000.00 1943960.00 + J_33_01 950120.00 1943960.00 + J_33_02 950240.00 1943960.00 + J_33_03 950360.00 1943960.00 + J_33_04 950480.00 1943960.00 + J_33_05 950600.00 1943960.00 + J_33_06 950720.00 1943960.00 + J_33_07 950840.00 1943960.00 + J_33_08 950960.00 1943960.00 + J_33_09 951080.00 1943960.00 + J_33_10 951200.00 1943960.00 + J_33_11 951320.00 1943960.00 + J_33_12 951440.00 1943960.00 + J_33_13 951560.00 1943960.00 + J_33_14 951680.00 1943960.00 + J_33_15 951800.00 1943960.00 + J_33_16 951920.00 1943960.00 + J_33_17 952040.00 1943960.00 + J_33_18 952160.00 1943960.00 + J_33_19 952280.00 1943960.00 + J_33_20 952400.00 1943960.00 + J_33_21 952520.00 1943960.00 + J_33_22 952640.00 1943960.00 + J_33_23 952760.00 1943960.00 + J_33_24 952880.00 1943960.00 + J_33_25 953000.00 1943960.00 + J_33_26 953120.00 1943960.00 + J_33_27 953240.00 1943960.00 + J_33_28 953360.00 1943960.00 + J_33_29 953480.00 1943960.00 + J_33_30 953600.00 1943960.00 + J_33_31 953720.00 1943960.00 + J_33_32 953840.00 1943960.00 + J_33_33 953960.00 1943960.00 + J_33_34 954080.00 1943960.00 + J_33_35 954200.00 1943960.00 + J_33_36 954320.00 1943960.00 + J_33_37 954440.00 1943960.00 + J_33_38 954560.00 1943960.00 + J_33_39 954680.00 1943960.00 + J_33_40 954800.00 1943960.00 + J_33_41 954920.00 1943960.00 + J_33_42 955040.00 1943960.00 + J_33_43 955160.00 1943960.00 + J_33_44 955280.00 1943960.00 + J_34_00 950000.00 1944080.00 + J_34_01 950120.00 1944080.00 + J_34_02 950240.00 1944080.00 + J_34_03 950360.00 1944080.00 + J_34_04 950480.00 1944080.00 + J_34_05 950600.00 1944080.00 + J_34_06 950720.00 1944080.00 + J_34_07 950840.00 1944080.00 + J_34_08 950960.00 1944080.00 + J_34_09 951080.00 1944080.00 + J_34_10 951200.00 1944080.00 + J_34_11 951320.00 1944080.00 + J_34_12 951440.00 1944080.00 + J_34_13 951560.00 1944080.00 + J_34_14 951680.00 1944080.00 + J_34_15 951800.00 1944080.00 + J_34_16 951920.00 1944080.00 + J_34_17 952040.00 1944080.00 + J_34_18 952160.00 1944080.00 + J_34_19 952280.00 1944080.00 + J_34_20 952400.00 1944080.00 + J_34_21 952520.00 1944080.00 + J_34_22 952640.00 1944080.00 + J_34_23 952760.00 1944080.00 + J_34_24 952880.00 1944080.00 + J_34_25 953000.00 1944080.00 + J_34_26 953120.00 1944080.00 + J_34_27 953240.00 1944080.00 + J_34_28 953360.00 1944080.00 + J_34_29 953480.00 1944080.00 + J_34_30 953600.00 1944080.00 + J_34_31 953720.00 1944080.00 + J_34_32 953840.00 1944080.00 + J_34_33 953960.00 1944080.00 + J_34_34 954080.00 1944080.00 + J_34_35 954200.00 1944080.00 + J_34_36 954320.00 1944080.00 + J_34_37 954440.00 1944080.00 + J_34_38 954560.00 1944080.00 + J_34_39 954680.00 1944080.00 + J_34_40 954800.00 1944080.00 + J_34_41 954920.00 1944080.00 + J_34_42 955040.00 1944080.00 + J_34_43 955160.00 1944080.00 + J_34_44 955280.00 1944080.00 + J_35_00 950000.00 1944200.00 + J_35_01 950120.00 1944200.00 + J_35_02 950240.00 1944200.00 + J_35_03 950360.00 1944200.00 + J_35_04 950480.00 1944200.00 + J_35_05 950600.00 1944200.00 + J_35_06 950720.00 1944200.00 + J_35_07 950840.00 1944200.00 + J_35_08 950960.00 1944200.00 + J_35_09 951080.00 1944200.00 + J_35_10 951200.00 1944200.00 + J_35_11 951320.00 1944200.00 + J_35_12 951440.00 1944200.00 + J_35_13 951560.00 1944200.00 + J_35_14 951680.00 1944200.00 + J_35_15 951800.00 1944200.00 + J_35_16 951920.00 1944200.00 + J_35_17 952040.00 1944200.00 + J_35_18 952160.00 1944200.00 + J_35_19 952280.00 1944200.00 + J_35_20 952400.00 1944200.00 + J_35_21 952520.00 1944200.00 + J_35_22 952640.00 1944200.00 + J_35_23 952760.00 1944200.00 + J_35_24 952880.00 1944200.00 + J_35_25 953000.00 1944200.00 + J_35_26 953120.00 1944200.00 + J_35_27 953240.00 1944200.00 + J_35_28 953360.00 1944200.00 + J_35_29 953480.00 1944200.00 + J_35_30 953600.00 1944200.00 + J_35_31 953720.00 1944200.00 + J_35_32 953840.00 1944200.00 + J_35_33 953960.00 1944200.00 + J_35_34 954080.00 1944200.00 + J_35_35 954200.00 1944200.00 + J_35_36 954320.00 1944200.00 + J_35_37 954440.00 1944200.00 + J_35_38 954560.00 1944200.00 + J_35_39 954680.00 1944200.00 + J_35_40 954800.00 1944200.00 + J_35_41 954920.00 1944200.00 + J_35_42 955040.00 1944200.00 + J_35_43 955160.00 1944200.00 + J_35_44 955280.00 1944200.00 + J_36_00 950000.00 1944320.00 + J_36_01 950120.00 1944320.00 + J_36_02 950240.00 1944320.00 + J_36_03 950360.00 1944320.00 + J_36_04 950480.00 1944320.00 + J_36_05 950600.00 1944320.00 + J_36_06 950720.00 1944320.00 + J_36_07 950840.00 1944320.00 + J_36_08 950960.00 1944320.00 + J_36_09 951080.00 1944320.00 + J_36_10 951200.00 1944320.00 + J_36_11 951320.00 1944320.00 + J_36_12 951440.00 1944320.00 + J_36_13 951560.00 1944320.00 + J_36_14 951680.00 1944320.00 + J_36_15 951800.00 1944320.00 + J_36_16 951920.00 1944320.00 + J_36_17 952040.00 1944320.00 + J_36_18 952160.00 1944320.00 + J_36_19 952280.00 1944320.00 + J_36_20 952400.00 1944320.00 + J_36_21 952520.00 1944320.00 + J_36_22 952640.00 1944320.00 + J_36_23 952760.00 1944320.00 + J_36_24 952880.00 1944320.00 + J_36_25 953000.00 1944320.00 + J_36_26 953120.00 1944320.00 + J_36_27 953240.00 1944320.00 + J_36_28 953360.00 1944320.00 + J_36_29 953480.00 1944320.00 + J_36_30 953600.00 1944320.00 + J_36_31 953720.00 1944320.00 + J_36_32 953840.00 1944320.00 + J_36_33 953960.00 1944320.00 + J_36_34 954080.00 1944320.00 + J_36_35 954200.00 1944320.00 + J_36_36 954320.00 1944320.00 + J_36_37 954440.00 1944320.00 + J_36_38 954560.00 1944320.00 + J_36_39 954680.00 1944320.00 + J_36_40 954800.00 1944320.00 + J_36_41 954920.00 1944320.00 + J_36_42 955040.00 1944320.00 + J_36_43 955160.00 1944320.00 + J_36_44 955280.00 1944320.00 + J_37_00 950000.00 1944440.00 + J_37_01 950120.00 1944440.00 + J_37_02 950240.00 1944440.00 + J_37_03 950360.00 1944440.00 + J_37_04 950480.00 1944440.00 + J_37_05 950600.00 1944440.00 + J_37_06 950720.00 1944440.00 + J_37_07 950840.00 1944440.00 + J_37_08 950960.00 1944440.00 + J_37_09 951080.00 1944440.00 + J_37_10 951200.00 1944440.00 + J_37_11 951320.00 1944440.00 + J_37_12 951440.00 1944440.00 + J_37_13 951560.00 1944440.00 + J_37_14 951680.00 1944440.00 + J_37_15 951800.00 1944440.00 + J_37_16 951920.00 1944440.00 + J_37_17 952040.00 1944440.00 + J_37_18 952160.00 1944440.00 + J_37_19 952280.00 1944440.00 + J_37_20 952400.00 1944440.00 + J_37_21 952520.00 1944440.00 + J_37_22 952640.00 1944440.00 + J_37_23 952760.00 1944440.00 + J_37_24 952880.00 1944440.00 + J_37_25 953000.00 1944440.00 + J_37_26 953120.00 1944440.00 + J_37_27 953240.00 1944440.00 + J_37_28 953360.00 1944440.00 + J_37_29 953480.00 1944440.00 + J_37_30 953600.00 1944440.00 + J_37_31 953720.00 1944440.00 + J_37_32 953840.00 1944440.00 + J_37_33 953960.00 1944440.00 + J_37_34 954080.00 1944440.00 + J_37_35 954200.00 1944440.00 + J_37_36 954320.00 1944440.00 + J_37_37 954440.00 1944440.00 + J_37_38 954560.00 1944440.00 + J_37_39 954680.00 1944440.00 + J_37_40 954800.00 1944440.00 + J_37_41 954920.00 1944440.00 + J_37_42 955040.00 1944440.00 + J_37_43 955160.00 1944440.00 + J_37_44 955280.00 1944440.00 + J_38_00 950000.00 1944560.00 + J_38_01 950120.00 1944560.00 + J_38_02 950240.00 1944560.00 + J_38_03 950360.00 1944560.00 + J_38_04 950480.00 1944560.00 + J_38_05 950600.00 1944560.00 + J_38_06 950720.00 1944560.00 + J_38_07 950840.00 1944560.00 + J_38_08 950960.00 1944560.00 + J_38_09 951080.00 1944560.00 + J_38_10 951200.00 1944560.00 + J_38_11 951320.00 1944560.00 + J_38_12 951440.00 1944560.00 + J_38_13 951560.00 1944560.00 + J_38_14 951680.00 1944560.00 + J_38_15 951800.00 1944560.00 + J_38_16 951920.00 1944560.00 + J_38_17 952040.00 1944560.00 + J_38_18 952160.00 1944560.00 + J_38_19 952280.00 1944560.00 + J_38_20 952400.00 1944560.00 + J_38_21 952520.00 1944560.00 + J_38_22 952640.00 1944560.00 + J_38_23 952760.00 1944560.00 + J_38_24 952880.00 1944560.00 + J_38_25 953000.00 1944560.00 + J_38_26 953120.00 1944560.00 + J_38_27 953240.00 1944560.00 + J_38_28 953360.00 1944560.00 + J_38_29 953480.00 1944560.00 + J_38_30 953600.00 1944560.00 + J_38_31 953720.00 1944560.00 + J_38_32 953840.00 1944560.00 + J_38_33 953960.00 1944560.00 + J_38_34 954080.00 1944560.00 + J_38_35 954200.00 1944560.00 + J_38_36 954320.00 1944560.00 + J_38_37 954440.00 1944560.00 + J_38_38 954560.00 1944560.00 + J_38_39 954680.00 1944560.00 + J_38_40 954800.00 1944560.00 + J_38_41 954920.00 1944560.00 + J_38_42 955040.00 1944560.00 + J_38_43 955160.00 1944560.00 + J_38_44 955280.00 1944560.00 + J_39_00 950000.00 1944680.00 + J_39_01 950120.00 1944680.00 + J_39_02 950240.00 1944680.00 + J_39_03 950360.00 1944680.00 + J_39_04 950480.00 1944680.00 + J_39_05 950600.00 1944680.00 + J_39_06 950720.00 1944680.00 + J_39_07 950840.00 1944680.00 + J_39_08 950960.00 1944680.00 + J_39_09 951080.00 1944680.00 + J_39_10 951200.00 1944680.00 + J_39_11 951320.00 1944680.00 + J_39_12 951440.00 1944680.00 + J_39_13 951560.00 1944680.00 + J_39_14 951680.00 1944680.00 + J_39_15 951800.00 1944680.00 + J_39_16 951920.00 1944680.00 + J_39_17 952040.00 1944680.00 + J_39_18 952160.00 1944680.00 + J_39_19 952280.00 1944680.00 + J_39_20 952400.00 1944680.00 + J_39_21 952520.00 1944680.00 + J_39_22 952640.00 1944680.00 + J_39_23 952760.00 1944680.00 + J_39_24 952880.00 1944680.00 + J_39_25 953000.00 1944680.00 + J_39_26 953120.00 1944680.00 + J_39_27 953240.00 1944680.00 + J_39_28 953360.00 1944680.00 + J_39_29 953480.00 1944680.00 + J_39_30 953600.00 1944680.00 + J_39_31 953720.00 1944680.00 + J_39_32 953840.00 1944680.00 + J_39_33 953960.00 1944680.00 + J_39_34 954080.00 1944680.00 + J_39_35 954200.00 1944680.00 + J_39_36 954320.00 1944680.00 + J_39_37 954440.00 1944680.00 + J_39_38 954560.00 1944680.00 + J_39_39 954680.00 1944680.00 + J_39_40 954800.00 1944680.00 + J_39_41 954920.00 1944680.00 + J_39_42 955040.00 1944680.00 + J_39_43 955160.00 1944680.00 + J_39_44 955280.00 1944680.00 + J_40_00 950000.00 1944800.00 + J_40_01 950120.00 1944800.00 + J_40_02 950240.00 1944800.00 + J_40_03 950360.00 1944800.00 + J_40_04 950480.00 1944800.00 + J_40_05 950600.00 1944800.00 + J_40_06 950720.00 1944800.00 + J_40_07 950840.00 1944800.00 + J_40_08 950960.00 1944800.00 + J_40_09 951080.00 1944800.00 + J_40_10 951200.00 1944800.00 + J_40_11 951320.00 1944800.00 + J_40_12 951440.00 1944800.00 + J_40_13 951560.00 1944800.00 + J_40_14 951680.00 1944800.00 + J_40_15 951800.00 1944800.00 + J_40_16 951920.00 1944800.00 + J_40_17 952040.00 1944800.00 + J_40_18 952160.00 1944800.00 + J_40_19 952280.00 1944800.00 + J_40_20 952400.00 1944800.00 + J_40_21 952520.00 1944800.00 + J_40_22 952640.00 1944800.00 + J_40_23 952760.00 1944800.00 + J_40_24 952880.00 1944800.00 + J_40_25 953000.00 1944800.00 + J_40_26 953120.00 1944800.00 + J_40_27 953240.00 1944800.00 + J_40_28 953360.00 1944800.00 + J_40_29 953480.00 1944800.00 + J_40_30 953600.00 1944800.00 + J_40_31 953720.00 1944800.00 + J_40_32 953840.00 1944800.00 + J_40_33 953960.00 1944800.00 + J_40_34 954080.00 1944800.00 + J_40_35 954200.00 1944800.00 + J_40_36 954320.00 1944800.00 + J_40_37 954440.00 1944800.00 + J_40_38 954560.00 1944800.00 + J_40_39 954680.00 1944800.00 + J_40_40 954800.00 1944800.00 + J_40_41 954920.00 1944800.00 + J_40_42 955040.00 1944800.00 + J_40_43 955160.00 1944800.00 + J_40_44 955280.00 1944800.00 + J_41_00 950000.00 1944920.00 + J_41_01 950120.00 1944920.00 + J_41_02 950240.00 1944920.00 + J_41_03 950360.00 1944920.00 + J_41_04 950480.00 1944920.00 + J_41_05 950600.00 1944920.00 + J_41_06 950720.00 1944920.00 + J_41_07 950840.00 1944920.00 + J_41_08 950960.00 1944920.00 + J_41_09 951080.00 1944920.00 + J_41_10 951200.00 1944920.00 + J_41_11 951320.00 1944920.00 + J_41_12 951440.00 1944920.00 + J_41_13 951560.00 1944920.00 + J_41_14 951680.00 1944920.00 + J_41_15 951800.00 1944920.00 + J_41_16 951920.00 1944920.00 + J_41_17 952040.00 1944920.00 + J_41_18 952160.00 1944920.00 + J_41_19 952280.00 1944920.00 + J_41_20 952400.00 1944920.00 + J_41_21 952520.00 1944920.00 + J_41_22 952640.00 1944920.00 + J_41_23 952760.00 1944920.00 + J_41_24 952880.00 1944920.00 + J_41_25 953000.00 1944920.00 + J_41_26 953120.00 1944920.00 + J_41_27 953240.00 1944920.00 + J_41_28 953360.00 1944920.00 + J_41_29 953480.00 1944920.00 + J_41_30 953600.00 1944920.00 + J_41_31 953720.00 1944920.00 + J_41_32 953840.00 1944920.00 + J_41_33 953960.00 1944920.00 + J_41_34 954080.00 1944920.00 + J_41_35 954200.00 1944920.00 + J_41_36 954320.00 1944920.00 + J_41_37 954440.00 1944920.00 + J_41_38 954560.00 1944920.00 + J_41_39 954680.00 1944920.00 + J_41_40 954800.00 1944920.00 + J_41_41 954920.00 1944920.00 + J_41_42 955040.00 1944920.00 + J_41_43 955160.00 1944920.00 + J_41_44 955280.00 1944920.00 + J_42_00 950000.00 1945040.00 + J_42_01 950120.00 1945040.00 + J_42_02 950240.00 1945040.00 + J_42_03 950360.00 1945040.00 + J_42_04 950480.00 1945040.00 + J_42_05 950600.00 1945040.00 + J_42_06 950720.00 1945040.00 + J_42_07 950840.00 1945040.00 + J_42_08 950960.00 1945040.00 + J_42_09 951080.00 1945040.00 + J_42_10 951200.00 1945040.00 + J_42_11 951320.00 1945040.00 + J_42_12 951440.00 1945040.00 + J_42_13 951560.00 1945040.00 + J_42_14 951680.00 1945040.00 + J_42_15 951800.00 1945040.00 + J_42_16 951920.00 1945040.00 + J_42_17 952040.00 1945040.00 + J_42_18 952160.00 1945040.00 + J_42_19 952280.00 1945040.00 + J_42_20 952400.00 1945040.00 + J_42_21 952520.00 1945040.00 + J_42_22 952640.00 1945040.00 + J_42_23 952760.00 1945040.00 + J_42_24 952880.00 1945040.00 + J_42_25 953000.00 1945040.00 + J_42_26 953120.00 1945040.00 + J_42_27 953240.00 1945040.00 + J_42_28 953360.00 1945040.00 + J_42_29 953480.00 1945040.00 + J_42_30 953600.00 1945040.00 + J_42_31 953720.00 1945040.00 + J_42_32 953840.00 1945040.00 + J_42_33 953960.00 1945040.00 + J_42_34 954080.00 1945040.00 + J_42_35 954200.00 1945040.00 + J_42_36 954320.00 1945040.00 + J_42_37 954440.00 1945040.00 + J_42_38 954560.00 1945040.00 + J_42_39 954680.00 1945040.00 + J_42_40 954800.00 1945040.00 + J_42_41 954920.00 1945040.00 + J_42_42 955040.00 1945040.00 + J_42_43 955160.00 1945040.00 + J_42_44 955280.00 1945040.00 + J_43_00 950000.00 1945160.00 + J_43_01 950120.00 1945160.00 + J_43_02 950240.00 1945160.00 + J_43_03 950360.00 1945160.00 + J_43_04 950480.00 1945160.00 + J_43_05 950600.00 1945160.00 + J_43_06 950720.00 1945160.00 + J_43_07 950840.00 1945160.00 + J_43_08 950960.00 1945160.00 + J_43_09 951080.00 1945160.00 + J_43_10 951200.00 1945160.00 + J_43_11 951320.00 1945160.00 + J_43_12 951440.00 1945160.00 + J_43_13 951560.00 1945160.00 + J_43_14 951680.00 1945160.00 + J_43_15 951800.00 1945160.00 + J_43_16 951920.00 1945160.00 + J_43_17 952040.00 1945160.00 + J_43_18 952160.00 1945160.00 + J_43_19 952280.00 1945160.00 + J_43_20 952400.00 1945160.00 + J_43_21 952520.00 1945160.00 + J_43_22 952640.00 1945160.00 + J_43_23 952760.00 1945160.00 + J_43_24 952880.00 1945160.00 + J_43_25 953000.00 1945160.00 + J_43_26 953120.00 1945160.00 + J_43_27 953240.00 1945160.00 + J_43_28 953360.00 1945160.00 + J_43_29 953480.00 1945160.00 + J_43_30 953600.00 1945160.00 + J_43_31 953720.00 1945160.00 + J_43_32 953840.00 1945160.00 + J_43_33 953960.00 1945160.00 + J_43_34 954080.00 1945160.00 + J_43_35 954200.00 1945160.00 + J_43_36 954320.00 1945160.00 + J_43_37 954440.00 1945160.00 + J_43_38 954560.00 1945160.00 + J_43_39 954680.00 1945160.00 + J_43_40 954800.00 1945160.00 + J_43_41 954920.00 1945160.00 + J_43_42 955040.00 1945160.00 + J_43_43 955160.00 1945160.00 + J_43_44 955280.00 1945160.00 + J_44_00 950000.00 1945280.00 + J_44_01 950120.00 1945280.00 + J_44_02 950240.00 1945280.00 + J_44_03 950360.00 1945280.00 + J_44_04 950480.00 1945280.00 + J_44_05 950600.00 1945280.00 + J_44_06 950720.00 1945280.00 + J_44_07 950840.00 1945280.00 + J_44_08 950960.00 1945280.00 + J_44_09 951080.00 1945280.00 + J_44_10 951200.00 1945280.00 + J_44_11 951320.00 1945280.00 + J_44_12 951440.00 1945280.00 + J_44_13 951560.00 1945280.00 + J_44_14 951680.00 1945280.00 + J_44_15 951800.00 1945280.00 + J_44_16 951920.00 1945280.00 + J_44_17 952040.00 1945280.00 + J_44_18 952160.00 1945280.00 + J_44_19 952280.00 1945280.00 + J_44_20 952400.00 1945280.00 + J_44_21 952520.00 1945280.00 + J_44_22 952640.00 1945280.00 + J_44_23 952760.00 1945280.00 + J_44_24 952880.00 1945280.00 + J_44_25 953000.00 1945280.00 + J_44_26 953120.00 1945280.00 + J_44_27 953240.00 1945280.00 + J_44_28 953360.00 1945280.00 + J_44_29 953480.00 1945280.00 + J_44_30 953600.00 1945280.00 + J_44_31 953720.00 1945280.00 + J_44_32 953840.00 1945280.00 + J_44_33 953960.00 1945280.00 + J_44_34 954080.00 1945280.00 + J_44_35 954200.00 1945280.00 + J_44_36 954320.00 1945280.00 + J_44_37 954440.00 1945280.00 + J_44_38 954560.00 1945280.00 + J_44_39 954680.00 1945280.00 + J_44_40 954800.00 1945280.00 + J_44_41 954920.00 1945280.00 + J_44_42 955040.00 1945280.00 + J_44_43 955160.00 1945280.00 + J_44_44 955280.00 1945280.00 + +[END] diff --git a/public/test_water_network.zip b/public/test_water_network.zip new file mode 100644 index 0000000000000000000000000000000000000000..9b7382a537101cccb8c874867da38077f388536b GIT binary patch literal 832 zcmWIWW@Zs#U|`^2SlFNuTfA3hkrR+7!pOiN2Bb?;i%a6m6H8Ky;`35V%JYk|^@=kJ zk`n@+CmrD16=z^ZiraIjTv|HJcb=>f~+J03Vpw*TH?{&4om|IbR+Z}mlMdZd;f)?9jS z_U7XUGj3YHzaed%EaD-P`tcT{Wy@33wF<{J&J_>2U2GY#-MBbiOu?`Q&vh;~xp`H_TWv$6#Htj=7K8uaCv|cO?e0KGrOwpBB z>(~_XHYmN#|NX2ps?;m$z>fVN!_u-+`_KAr`^;`OO(1DIlljftJR0hY+jj4DnEst# z(k)l6`(gdF?Vp8vw@r=oJ(OK}rfbQcH43Nn4Fx{T&|k2w9vHHWOd<@p(-$zp!Jq*c z*0@p|x*6!H1!4jNLjz+Ob~Au!2i*+xI7XPk0(1$MR1b{t0B=?{kUC}{JOiZTm_R%L DA*3#s literal 0 HcmV?d00001 diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000..f89c130 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,6 @@ +[pytest] +# Run from the repo root: backend.* (API tests) and blocksys.* (its own tests +# import it as a top-level package) must both be importable. +pythonpath = . backend +testpaths = backend/tests backend/blocksys/tests +addopts = -p no:cacheprovider diff --git a/src/AddElementModal.tsx b/src/AddElementModal.tsx new file mode 100644 index 0000000..b8d50f1 --- /dev/null +++ b/src/AddElementModal.tsx @@ -0,0 +1,402 @@ +import React, { useState } from 'react'; +import { X, Plus } from 'lucide-react'; +import type { NetworkModel } from './inpModel'; +import { + addNode, + addPipe, + addPump, + addValve, + addCurve, + addRule, + addControl, + updatePattern, + getNextNodeId, + getNextPipeId, + getNextPumpId, + getNextValveId, + getNextCurveId, +} from './inpModel'; +import type { TableCategory } from './FullAttributeTableModal'; + +interface AddElementModalProps { + category: TableCategory; + model: NetworkModel; + onAdd: (newModel: NetworkModel) => void; + onClose: () => void; +} + +const LABELS: Partial> = { + junctions: '절점 (Junction)', + pipes: '관로 (Pipe)', + pumps: '펌프 (Pump)', + valves: '밸브 (Valve)', + reservoirs: '저수지 (Reservoir)', + tanks: '탱크 (Tank)', + patterns: '패턴 (Pattern)', + controls: '컨트롤 (Control)', + rules: '규칙 (Rule)', + curves: '펌프 곡선 (Curve)', +}; + +function averageExistingCoords(model: NetworkModel): { x: number; y: number } { + const nodes = Object.values(model.nodes); + if (nodes.length === 0) return { x: 0, y: 0 }; + const sum = nodes.reduce((acc, n) => ({ x: acc.x + n.x, y: acc.y + n.y }), { x: 0, y: 0 }); + return { x: Math.round((sum.x / nodes.length) * 100) / 100, y: Math.round((sum.y / nodes.length) * 100) / 100 }; +} + +export const AddElementModal: React.FC = ({ category, model, onAdd, onClose }) => { + const [error, setError] = useState(null); + const nodeIds = Object.keys(model.nodes); + const linkIds = [...Object.keys(model.pipes), ...Object.keys(model.pumps), ...Object.keys(model.valves || {})]; + const defaultCoords = averageExistingCoords(model); + + // Shared field state (only relevant fields are rendered/used per category) + const [id, setId] = useState(''); + const [node1, setNode1] = useState(nodeIds[0] || ''); + const [node2, setNode2] = useState(nodeIds[1] || nodeIds[0] || ''); + const [elevation, setElevation] = useState('0'); + const [demand, setDemand] = useState('0'); + const [pattern, setPattern] = useState(''); + const [head, setHead] = useState('0'); + const [initLevel, setInitLevel] = useState('5'); + const [minLevel, setMinLevel] = useState('0'); + const [maxLevel, setMaxLevel] = useState('10'); + const [diameter, setDiameter] = useState('10'); + const [minVol, setMinVol] = useState('0'); + const [length, setLength] = useState('100'); + const [pipeDiameter, setPipeDiameter] = useState('200'); + const [roughness, setRoughness] = useState('100'); + const [minorLoss, setMinorLoss] = useState('0'); + const [status, setStatus] = useState('Open'); + const [parameters, setParameters] = useState(''); + const [valveType, setValveType] = useState('PRV'); + const [valveSetting, setValveSetting] = useState('0'); + const [multipliers, setMultipliers] = useState('1.0 1.0 1.0 1.0 1.0 1.0'); + const [controlLinkId, setControlLinkId] = useState(linkIds[0] || ''); + const [controlStatus, setControlStatus] = useState('Open'); + const [ruleText, setRuleText] = useState('RULE 1\nIF NODE J1 PRESSURE BELOW 10\nTHEN PIPE P1 STATUS = OPEN\nPRIORITY 1'); + const [curvePoints, setCurvePoints] = useState('0 50\n50 40\n100 20'); + + const title = LABELS[category] || category; + + const handleSubmit = () => { + setError(null); + try { + if (category === 'junctions') { + const trimmedId = id.trim(); + if (!trimmedId) throw new Error('절점 ID를 입력하세요.'); + if (model.nodes[trimmedId]) throw new Error(`이미 존재하는 절점 ID입니다: ${trimmedId}`); + const next = addNode(model, { + id: trimmedId, + type: 'JUNCTION', + x: defaultCoords.x, + y: defaultCoords.y, + elevation: parseFloat(elevation) || 0, + demand: parseFloat(demand) || 0, + pattern: pattern.trim() || undefined, + }); + onAdd(next); + } else if (category === 'reservoirs') { + const trimmedId = id.trim(); + if (!trimmedId) throw new Error('저수지 ID를 입력하세요.'); + if (model.nodes[trimmedId]) throw new Error(`이미 존재하는 절점 ID입니다: ${trimmedId}`); + const next = addNode(model, { + id: trimmedId, + type: 'RESERVOIR', + x: defaultCoords.x, + y: defaultCoords.y, + elevation: parseFloat(head) || 0, + head: parseFloat(head) || 0, + pattern: pattern.trim() || undefined, + }); + onAdd(next); + } else if (category === 'tanks') { + const trimmedId = id.trim(); + if (!trimmedId) throw new Error('탱크 ID를 입력하세요.'); + if (model.nodes[trimmedId]) throw new Error(`이미 존재하는 절점 ID입니다: ${trimmedId}`); + const next = addNode(model, { + id: trimmedId, + type: 'TANK', + x: defaultCoords.x, + y: defaultCoords.y, + elevation: parseFloat(elevation) || 0, + initLevel: parseFloat(initLevel) || 0, + minLevel: parseFloat(minLevel) || 0, + maxLevel: parseFloat(maxLevel) || 0, + diameter: parseFloat(diameter) || 0, + minVol: parseFloat(minVol) || 0, + }); + onAdd(next); + } else if (category === 'pipes') { + if (!node1 || !node2) throw new Error('시작/끝 절점을 선택하세요.'); + if (node1 === node2) throw new Error('시작과 끝 절점은 달라야 합니다.'); + const trimmedId = id.trim() || getNextPipeId(model); + if (model.pipes[trimmedId] || model.pumps[trimmedId] || model.valves?.[trimmedId]) { + throw new Error(`이미 존재하는 링크 ID입니다: ${trimmedId}`); + } + const next = addPipe(model, { + id: trimmedId, + node1, + node2, + length: parseFloat(length) || 0, + diameter: parseFloat(pipeDiameter) || 0, + roughness: parseFloat(roughness) || 100, + minorLoss: parseFloat(minorLoss) || 0, + status, + }); + onAdd(next); + } else if (category === 'pumps') { + if (!node1 || !node2) throw new Error('상류/하류 절점을 선택하세요.'); + if (node1 === node2) throw new Error('상류와 하류 절점은 달라야 합니다.'); + const trimmedId = id.trim() || getNextPumpId(model); + if (model.pipes[trimmedId] || model.pumps[trimmedId] || model.valves?.[trimmedId]) { + throw new Error(`이미 존재하는 링크 ID입니다: ${trimmedId}`); + } + if (!parameters.trim()) throw new Error('펌프 특성 (예: HEAD Curve1 또는 POWER 10)을 입력하세요.'); + const next = addPump(model, { id: trimmedId, node1, node2, parameters: parameters.trim() }); + onAdd(next); + } else if (category === 'valves') { + if (!node1 || !node2) throw new Error('상류/하류 절점을 선택하세요.'); + if (node1 === node2) throw new Error('상류와 하류 절점은 달라야 합니다.'); + const trimmedId = id.trim() || getNextValveId(model); + if (model.pipes[trimmedId] || model.pumps[trimmedId] || model.valves?.[trimmedId]) { + throw new Error(`이미 존재하는 링크 ID입니다: ${trimmedId}`); + } + const settingNum = parseFloat(valveSetting); + const next = addValve(model, { + id: trimmedId, + node1, + node2, + diameter: parseFloat(diameter) || 0, + valveType, + setting: isNaN(settingNum) ? valveSetting : settingNum, + minorLoss: parseFloat(minorLoss) || 0, + }); + onAdd(next); + } else if (category === 'patterns') { + const trimmedId = id.trim(); + if (!trimmedId) throw new Error('패턴 ID를 입력하세요.'); + if (model.patterns[trimmedId]) throw new Error(`이미 존재하는 패턴 ID입니다: ${trimmedId}`); + const values = multipliers + .split(/[\s,]+/) + .map((v) => v.trim()) + .filter(Boolean) + .map(Number); + if (values.length === 0 || values.some((v) => isNaN(v))) { + throw new Error('시간별 배율은 공백/쉼표로 구분된 숫자여야 합니다.'); + } + const next = updatePattern(model, trimmedId, values); + onAdd(next); + } else if (category === 'controls') { + if (!controlLinkId) throw new Error('대상 링크를 선택하세요.'); + const next = addControl(model, { linkId: controlLinkId, status: controlStatus }); + onAdd(next); + } else if (category === 'rules') { + const next = addRule(model, ruleText); + onAdd(next); + } else if (category === 'curves') { + const trimmedId = id.trim(); + if (!trimmedId) throw new Error('곡선 ID를 입력하세요.'); + if (model.curves[trimmedId]) throw new Error(`이미 존재하는 곡선 ID입니다: ${trimmedId}`); + const points = curvePoints + .split('\n') + .map((line) => line.trim()) + .filter(Boolean) + .map((line) => { + const [xStr, yStr] = line.split(/[\s,]+/); + return { x: parseFloat(xStr), y: parseFloat(yStr) }; + }); + if (points.length === 0 || points.some((p) => isNaN(p.x) || isNaN(p.y))) { + throw new Error('곡선 점은 한 줄당 "X Y" 형식의 숫자 쌍이어야 합니다.'); + } + const next = addCurve(model, { id: trimmedId, points }); + onAdd(next); + } + } catch (err: unknown) { + setError(err instanceof Error ? err.message : String(err)); + } + }; + + const inputStyle: React.CSSProperties = { + width: '100%', + padding: '5px 8px', + fontSize: '12px', + border: '1px solid var(--border-strong)', + borderRadius: '4px', + }; + const labelStyle: React.CSSProperties = { fontSize: '11px', color: 'var(--text-secondary)', display: 'block', marginBottom: '3px' }; + const fieldWrap: React.CSSProperties = { marginBottom: '10px' }; + + const nodeSelect = (value: string, onChange: (v: string) => void, label: string) => ( +

+ ); + + return ( +
+
+
+

{title} 추가

+ +
+ + {error && ( +
+ {error} +
+ )} + + {(category === 'junctions' || category === 'reservoirs' || category === 'tanks' || category === 'pipes' || category === 'pumps' || category === 'valves' || category === 'patterns' || category === 'curves') && ( +
+ + setId(e.target.value)} style={inputStyle} autoFocus /> +
+ )} + + {category === 'junctions' && ( + <> +
setElevation(e.target.value)} style={inputStyle} />
+
setDemand(e.target.value)} style={inputStyle} />
+
setPattern(e.target.value)} style={inputStyle} />
+ + )} + + {category === 'reservoirs' && ( + <> +
setHead(e.target.value)} style={inputStyle} />
+
setPattern(e.target.value)} style={inputStyle} />
+ + )} + + {category === 'tanks' && ( + <> +
setElevation(e.target.value)} style={inputStyle} />
+
setInitLevel(e.target.value)} style={inputStyle} />
+
setMinLevel(e.target.value)} style={inputStyle} />
+
setMaxLevel(e.target.value)} style={inputStyle} />
+
setDiameter(e.target.value)} style={inputStyle} />
+
setMinVol(e.target.value)} style={inputStyle} />
+ + )} + + {category === 'pipes' && ( + <> + {nodeSelect(node1, setNode1, '시작절점 (Node1)')} + {nodeSelect(node2, setNode2, '끝절점 (Node2)')} +
setLength(e.target.value)} style={inputStyle} />
+
setPipeDiameter(e.target.value)} style={inputStyle} />
+
setRoughness(e.target.value)} style={inputStyle} />
+
setMinorLoss(e.target.value)} style={inputStyle} />
+
+ + +
+ + )} + + {category === 'pumps' && ( + <> + {nodeSelect(node1, setNode1, '상류절점 (Node1)')} + {nodeSelect(node2, setNode2, '하류절점 (Node2)')} +
+ + setParameters(e.target.value)} style={inputStyle} placeholder="HEAD Curve1" /> +
+ + )} + + {category === 'valves' && ( + <> + {nodeSelect(node1, setNode1, '상류절점 (Node1)')} + {nodeSelect(node2, setNode2, '하류절점 (Node2)')} +
+ + +
+
setDiameter(e.target.value)} style={inputStyle} />
+
setValveSetting(e.target.value)} style={inputStyle} />
+
setMinorLoss(e.target.value)} style={inputStyle} />
+ + )} + + {category === 'patterns' && ( +
+ +