From cef51c9848106e5fa123305900d19520708d294f Mon Sep 17 00:00:00 2001 From: cherry2250 Date: Wed, 22 Oct 2025 16:47:27 +0900 Subject: [PATCH] =?UTF-8?q?=EB=85=BC=EB=A6=AC=20=EC=95=84=ED=82=A4?= =?UTF-8?q?=ED=85=8D=EC=B2=98=20Job=20Topic=20=EB=AA=85=EC=B9=AD=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ai-job → ai 이벤트 생성 - image-job → 이미지 생성 - logical-architecture.md 및 .mmd 파일 업데이트 - 테스트용 스크립트 및 파일 정리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- convert-par-to-group.sh | 52 ---------- .../backend/logical/logical-architecture.md | 36 +++---- .../backend/logical/logical-architecture.mmd | 10 +- fix-and-blank-lines.sh | 40 -------- fix-and-labels.sh | 51 ---------- fix-par-blocks.sh | 39 -------- fix-puml-syntax.sh | 74 -------------- test-basic.png | Bin 3066 -> 0 bytes test-basic.puml | 7 -- test-group.png | Bin 4145 -> 0 bytes test-group.puml | 11 --- test-par-correct.png | Bin 14313 -> 0 bytes test-par-correct.puml | 28 ------ test-par-no-activate.png | Bin 14425 -> 0 bytes test-par-no-activate.puml | 28 ------ test-par.png | Bin 13126 -> 0 bytes test-par.puml | 34 ------- test-simple-par.puml | 12 --- test-simple.png | Bin 12747 -> 0 bytes validate-puml-fixed.sh | 93 ------------------ validate-puml.sh | 86 ---------------- 21 files changed, 23 insertions(+), 578 deletions(-) delete mode 100755 convert-par-to-group.sh delete mode 100755 fix-and-blank-lines.sh delete mode 100755 fix-and-labels.sh delete mode 100755 fix-par-blocks.sh delete mode 100755 fix-puml-syntax.sh delete mode 100644 test-basic.png delete mode 100644 test-basic.puml delete mode 100644 test-group.png delete mode 100644 test-group.puml delete mode 100644 test-par-correct.png delete mode 100644 test-par-correct.puml delete mode 100644 test-par-no-activate.png delete mode 100644 test-par-no-activate.puml delete mode 100644 test-par.png delete mode 100644 test-par.puml delete mode 100644 test-simple-par.puml delete mode 100644 test-simple.png delete mode 100755 validate-puml-fixed.sh delete mode 100755 validate-puml.sh diff --git a/convert-par-to-group.sh b/convert-par-to-group.sh deleted file mode 100755 index e0d1b0a..0000000 --- a/convert-par-to-group.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -# PlantUML par/and/end를 group/end로 변환하는 스크립트 -# PlantUML 서버가 par/and 문법을 지원하지 않으므로 group으로 대체 - -echo "Converting par/and/end blocks to group/end blocks..." - -# Inner sequence files -cd design/backend/sequence/inner - -for file in ai-트렌드분석및추천.puml content-이미지생성.puml distribution-다중채널배포.puml event-대시보드조회.puml; do - if [ -f "$file" ]; then - echo "Processing: $file" - - # 1. Replace 'par' with 'group parallel' - sed -i.bak6 's/^ par$/ group parallel/' "$file" - sed -i.bak6 's/^par$/group parallel/' "$file" - - # 2. Remove standalone 'and' lines (they don't exist in group syntax) - sed -i.bak6 '/^ and$/d' "$file" - sed -i.bak6 '/^and$/d' "$file" - - echo " Converted: $file" - fi -done - -cd - > /dev/null - -# Outer sequence files -cd design/backend/sequence/outer - -if [ -f "이벤트생성플로우.puml" ]; then - echo "Processing: 이벤트생성플로우.puml" - - # 1. Replace 'par' with 'group parallel' - sed -i.bak6 's/^par$/group parallel/' "이벤트생성플로우.puml" - - # 2. Remove standalone 'and' lines - sed -i.bak6 '/^and$/d' "이벤트생성플로우.puml" - - echo " Converted: 이벤트생성플로우.puml" -fi - -cd - > /dev/null - -echo "" -echo "All par/and blocks converted to group blocks." -echo "Running validation..." -echo "" - -# Run validation -./validate-puml-fixed.sh diff --git a/design/backend/logical/logical-architecture.md b/design/backend/logical/logical-architecture.md index f75a943..ed517f9 100644 --- a/design/backend/logical/logical-architecture.md +++ b/design/backend/logical/logical-architecture.md @@ -49,7 +49,7 @@ #### Kafka 통합 전략 - **Event Topics**: 도메인 이벤트 발행/구독 (EventCreated, ParticipantRegistered 등) -- **Job Topics**: 비동기 작업 요청/처리 (ai-job, image-job) +- **Job Topics**: 비동기 작업 요청/처리 (ai 이벤트 생성, 이미지 생성) - **단일 메시징 플랫폼**: 운영 복잡도 감소 및 일관된 메시지 처리 #### Resilience 패턴 적용 @@ -88,12 +88,12 @@ #### Async Services (비동기 처리) 1. **AI Service**: AI 기반 이벤트 추천 - - Kafka Job 구독 (ai-job) + - Kafka Job 구독 (ai 이벤트 생성) - 외부 AI API 호출 (Circuit Breaker, Timeout 30초) - 결과 캐싱 (Redis, TTL 24시간) 2. **Content Service**: SNS 이미지 생성 - - Kafka Job 구독 (image-job) + - Kafka Job 구독 (이미지 생성) - 외부 이미지 생성 API 호출 (Circuit Breaker, Timeout 20초) - CDN 업로드 및 캐싱 (Redis, TTL 7일) @@ -110,8 +110,8 @@ - **DistributionCompleted**: 배포 완료 시 **Job Topics** (비동기 작업): -- **ai-job**: AI 추천 작업 -- **image-job**: 이미지 생성 작업 +- **ai 이벤트 생성**: AI 추천 작업 +- **이미지 생성**: 이미지 생성 작업 **특징**: - At-Least-Once Delivery 보장 @@ -169,16 +169,16 @@ - 구독자: Analytics Service **Kafka Job 발행**: -1. **ai-job**: AI 추천 요청 -2. **image-job**: 이미지 생성 요청 +1. **ai 이벤트 생성**: AI 추천 요청 +2. **이미지 생성**: 이미지 생성 요청 **서비스 간 호출**: - **Distribution Service**: 다중 채널 배포 (동기 호출, Circuit Breaker 적용) **주요 플로우**: 1. 이벤트 목적 선택 → Event DB 저장 → EventCreated 발행 -2. AI 추천 요청 → ai-job 발행 -3. 이미지 생성 요청 → image-job 발행 +2. AI 추천 요청 → ai 이벤트 생성 발행 +3. 이미지 생성 요청 → 이미지 생성 발행 4. 배포 승인 → Distribution Service 동기 호출 **데이터 저장**: @@ -248,7 +248,7 @@ **관련 유저스토리**: UFR-AI-010 **Kafka Job 구독**: -- **ai-job**: AI 추천 작업 요청 +- **ai 이벤트 생성**: AI 추천 작업 요청 **Resilience 패턴**: - **Circuit Breaker**: AI API 호출 시 (실패율 50% 초과 시 Open) @@ -273,7 +273,7 @@ **관련 유저스토리**: UFR-CONT-010, 020 **Kafka Job 구독**: -- **image-job**: 이미지 생성 작업 요청 +- **이미지 생성**: 이미지 생성 작업 요청 **Resilience 패턴**: - **Circuit Breaker**: 이미지 생성 API 호출 시 (실패율 50% 초과 시 Open) @@ -342,8 +342,8 @@ | 토픽명 | 발행자 | 구독자 | Payload | 용도 | |---------|--------|--------|---------|------| -| **ai-job** | Event Service | AI Service | eventId, objective, industry, region | AI 트렌드 분석 및 이벤트 추천 요청 | -| **image-job** | Event Service | Content Service | eventId, content, style | SNS 이미지 생성 요청 (3가지 스타일) | +| **ai 이벤트 생성** | Event Service | AI Service | eventId, objective, industry, region | AI 트렌드 분석 및 이벤트 추천 요청 | +| **이미지 생성** | Event Service | Content Service | eventId, content, style | SNS 이미지 생성 요청 (3가지 스타일) | #### 통신 패턴별 설계 @@ -489,13 +489,13 @@ ┌─────────────────────────────────────────────────────────────┐ │ Client → Event Service │ │ - POST /api/events/{id}/ai-recommendations │ - │ - Kafka ai-job 토픽 발행 (AI 작업 요청) │ + │ - Kafka ai 이벤트 생성 토픽 발행 (AI 작업 요청) │ │ - Job ID 즉시 반환 (0.1초) │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ AI Service (Background) │ - │ - Kafka ai-job 토픽 구독 │ + │ - Kafka ai 이벤트 생성 토픽 구독 │ │ - Redis 캐시 확인 (Cache-Aside) │ │ - 캐시 MISS: Claude API 호출 (10초) [Circuit Breaker] │ │ - 결과 캐싱 (TTL 24시간) │ @@ -512,13 +512,13 @@ ┌─────────────────────────────────────────────────────────────┐ │ Client → Event Service │ │ - POST /api/events/{id}/content-generation │ - │ - Kafka image-job 토픽 발행 (이미지 생성 요청) │ + │ - Kafka 이미지 생성 토픽 발행 (이미지 생성 요청) │ │ - Job ID 즉시 반환 (0.1초) │ └─────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ Content Service (Background) │ - │ - Kafka image-job 토픽 구독 │ + │ - Kafka 이미지 생성 토픽 구독 │ │ - Redis 캐시 확인 │ │ - 캐시 MISS: Stable Diffusion API (5초) [Circuit Breaker] │ │ - 이미지 CDN 업로드 │ @@ -858,7 +858,7 @@ 1. **Kafka 통합 메시징 플랫폼 채택**: Event Bus와 Job Queue를 Kafka로 통합하여 운영 복잡도 감소 2. **Event-Driven 아키텍처 채택**: Kafka를 통한 서비스 간 느슨한 결합 및 비동기 통신 3. **도메인 이벤트 정의**: 4개 Event Topics (EventCreated, ParticipantRegistered, WinnerSelected, DistributionCompleted) -4. **Job Topics 정의**: 2개 Job Topics (ai-job, image-job)로 장시간 비동기 작업 처리 +4. **Job Topics 정의**: 2개 Job Topics (ai 이벤트 생성, 이미지 생성)로 장시간 비동기 작업 처리 5. **Resilience 패턴 전면 적용**: Circuit Breaker, Retry, Timeout, Bulkhead, Fallback 6. **At-Least-Once Delivery**: Kafka 메시지 보장 및 멱등성 설계 7. **Cache-Aside 패턴**: AI/이미지 생성 결과 캐싱으로 응답 시간 90% 개선 diff --git a/design/backend/logical/logical-architecture.mmd b/design/backend/logical/logical-architecture.mmd index a06d446..e93b0e6 100644 --- a/design/backend/logical/logical-architecture.mmd +++ b/design/backend/logical/logical-architecture.mmd @@ -17,7 +17,7 @@ graph TB end %% Kafka (Event Bus + Job Queue) - Kafka["Kafka
━━━━━━━━━━

• EventCreated
• ParticipantRegistered
• WinnerSelected
• DistributionCompleted
━━━━━━━━━━

• ai-job
• image-job"] + Kafka["Kafka
━━━━━━━━━━

• EventCreated
• ParticipantRegistered
• WinnerSelected
• DistributionCompleted
━━━━━━━━━━

• ai 이벤트 생성
• 이미지 생성"] %% External System External["외부시스템
[Circuit Breaker]
━━━━━━━━━━
• 국세청 API
• AI API
• 이미지 생성 API
• 배포 채널 APIs
(비동기)"] @@ -29,8 +29,8 @@ graph TB DistSvc ==>|"DistributionCompleted
발행"| Kafka %% Job Publishing (비동기 작업 요청) - EventSvc -->|"ai-job 발행"| Kafka - EventSvc -->|"image-job 발행"| Kafka + EventSvc -->|"ai 이벤트 생성 발행"| Kafka + EventSvc -->|"이미지 생성 발행"| Kafka %% Event Subscription Kafka -.->|"EventCreated
구독"| AnalSvc @@ -38,8 +38,8 @@ graph TB Kafka -.->|"DistributionCompleted
구독"| AnalSvc %% Job Subscription - Kafka -.->|"ai-job 구독"| AISvc - Kafka -.->|"image-job 구독"| ContentSvc + Kafka -.->|"ai 이벤트 생성 구독"| AISvc + Kafka -.->|"이미지 생성 구독"| ContentSvc %% Service to Service (동기 호출) EventSvc -->|"다중 채널 배포
[Circuit Breaker]"| DistSvc diff --git a/fix-and-blank-lines.sh b/fix-and-blank-lines.sh deleted file mode 100755 index 76d2c5a..0000000 --- a/fix-and-blank-lines.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# PlantUML and 키워드 앞 공백 라인 제거 스크립트 -# par/and 블록에서 and 키워드 앞의 빈 줄을 제거 - -echo "Removing blank lines before 'and' keywords..." - -# Inner sequence files -cd design/backend/sequence/inner - -for file in ai-트렌드분석및추천.puml content-이미지생성.puml distribution-다중채널배포.puml event-대시보드조회.puml; do - if [ -f "$file" ]; then - echo "Processing: $file" - # Remove blank line immediately before 'and' keyword - # Look for pattern: empty line + line with spaces + 'and' - perl -i.bak5 -pe 's/^\s*\n(\s+and\s*$)/$1/g' "$file" - echo " Fixed: $file" - fi -done - -cd - > /dev/null - -# Outer sequence files -cd design/backend/sequence/outer - -if [ -f "이벤트생성플로우.puml" ]; then - echo "Processing: 이벤트생성플로우.puml" - perl -i.bak5 -pe 's/^\s*\n(\s+and\s*$)/$1/g' "이벤트생성플로우.puml" - echo " Fixed: 이벤트생성플로우.puml" -fi - -cd - > /dev/null - -echo "" -echo "Blank lines before 'and' keywords removed." -echo "Running validation..." -echo "" - -# Run validation -./validate-puml-fixed.sh diff --git a/fix-and-labels.sh b/fix-and-labels.sh deleted file mode 100755 index 2734946..0000000 --- a/fix-and-labels.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -# PlantUML and 키워드 레이블 제거 스크립트 -# and 키워드 뒤에 오는 레이블을 제거하여 문법 오류 수정 - -echo "Fixing 'and' keyword labels in PlantUML files..." - -# Inner sequence files -cd design/backend/sequence/inner - -# event-대시보드조회.puml: 2개 수정 -if [ -f "event-대시보드조회.puml" ]; then - echo "Processing: event-대시보드조회.puml" - # 'and 예정 이벤트 조회' → 'and' - sed -i.bak4 's/^ and 예정 이벤트 조회$/ and/' "event-대시보드조회.puml" - # 'and 종료 이벤트 조회' → 'and' - sed -i.bak4 's/^ and 종료 이벤트 조회$/ and/' "event-대시보드조회.puml" - echo " Fixed: event-대시보드조회.puml" -fi - -# content-이미지생성.puml: 2개 수정 -if [ -f "content-이미지생성.puml" ]; then - echo "Processing: content-이미지생성.puml" - # 'and 화려한 스타일' → 'and' - sed -i.bak4 's/^ and 화려한 스타일$/ and/' "content-이미지생성.puml" - # 'and 트렌디 스타일' → 'and' - sed -i.bak4 's/^ and 트렌디 스타일$/ and/' "content-이미지생성.puml" - echo " Fixed: content-이미지생성.puml" -fi - -# distribution-다중채널배포.puml: 3개 수정 -if [ -f "distribution-다중채널배포.puml" ]; then - echo "Processing: distribution-다중채널배포.puml" - # 'and 링고비즈 배포' → 'and' - sed -i.bak4 's/^and 링고비즈 배포$/and/' "distribution-다중채널배포.puml" - # 'and 지니TV 배포' → 'and' - sed -i.bak4 's/^and 지니TV 배포$/and/' "distribution-다중채널배포.puml" - # 'and SNS 배포 (Instagram, Naver, Kakao)' → 'and' - sed -i.bak4 's/^and SNS 배포 (Instagram, Naver, Kakao)$/and/' "distribution-다중채널배포.puml" - echo " Fixed: distribution-다중채널배포.puml" -fi - -cd - > /dev/null - -echo "" -echo "All 'and' keyword labels removed." -echo "Running validation..." -echo "" - -# Run validation -./validate-puml-fixed.sh diff --git a/fix-par-blocks.sh b/fix-par-blocks.sh deleted file mode 100755 index a4a5be8..0000000 --- a/fix-par-blocks.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# PlantUML par 블록 수정 스크립트 -# 한글 레이블을 note로 변경 - -echo "Fixing par blocks in PlantUML files..." - -# Inner sequence files -cd design/backend/sequence/inner - -for file in ai-트렌드분석및추천.puml content-이미지생성.puml distribution-다중채널배포.puml event-대시보드조회.puml; do - if [ -f "$file" ]; then - echo "Processing: $file" - # note over : 패턴 제거 (par 다음 줄) - sed -i.bak3 '/^ par$/{ - N - s/\n note over : .*// - }' "$file" - echo " Fixed: $file" - fi -done - -cd - > /dev/null - -# Outer sequence files -cd design/backend/sequence/outer - -if [ -f "이벤트생성플로우.puml" ]; then - echo "Processing: 이벤트생성플로우.puml" - sed -i.bak3 '/^par$/{ - N - s/\n note over : .*// - }' "이벤트생성플로우.puml" - echo " Fixed: 이벤트생성플로우.puml" -fi - -cd - > /dev/null - -echo "All par blocks fixed." diff --git a/fix-puml-syntax.sh b/fix-puml-syntax.sh deleted file mode 100755 index f247161..0000000 --- a/fix-puml-syntax.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash - -# PlantUML 문법 오류 수정 스크립트 -# [ 문법을 Client participant로 변경 - -echo "=====================================" -echo "PlantUML 파일 문법 수정 시작" -echo "=====================================" -echo "" - -# 수정할 파일 목록 -FILES=( - "design/backend/sequence/inner/user-로그인.puml" - "design/backend/sequence/inner/user-로그아웃.puml" - "design/backend/sequence/inner/user-프로필수정.puml" - "design/backend/sequence/inner/ai-트렌드분석및추천.puml" - "design/backend/sequence/inner/content-이미지생성.puml" - "design/backend/sequence/inner/distribution-다중채널배포.puml" - "design/backend/sequence/inner/event-대시보드조회.puml" - "design/backend/sequence/outer/이벤트생성플로우.puml" -) - -for file in "${FILES[@]}"; do - if [ ! -f "$file" ]; then - echo "❌ 파일이 존재하지 않음: $file" - continue - fi - - echo "수정 중: $file" - - # 백업 생성 - cp "$file" "${file}.bak" - - # 1. Client actor가 없으면 추가 (첫 번째 participant 앞에) - if ! grep -q "^actor Client" "$file"; then - # title 다음 줄에 빈 줄이 있고, 그 다음에 participant가 나오는 경우 - sed -i.tmp '/^title /a\ -\ -actor Client' "$file" - rm "${file}.tmp" 2>/dev/null - echo " - Client actor 추가됨" - fi - - # 2. [-> 패턴을 Client -> 로 변경 - if grep -q "\[-> " "$file"; then - sed -i.tmp 's/\[-> /Client -> /g' "$file" - rm "${file}.tmp" 2>/dev/null - echo " - [-> 패턴 수정됨" - fi - - # 3. -->[ 패턴을 --> Client 로 변경 - if grep -q " -->\[" "$file"; then - sed -i.tmp 's/ -->\[/ --> Client/g' "$file" - rm "${file}.tmp" 2>/dev/null - echo " - -->[ 패턴 수정됨" - fi - - # 4. --> [: 패턴을 --> Client: 로 변경 - if grep -q " --> \[:" "$file"; then - sed -i.tmp 's/ --> \[:/ --> Client:/g' "$file" - rm "${file}.tmp" 2>/dev/null - echo " - --> [: 패턴 수정됨" - fi - - echo " ✅ 완료: $file" - echo "" -done - -echo "=====================================" -echo "모든 파일 수정 완료" -echo "=====================================" -echo "" -echo "백업 파일: *.puml.bak" -echo "백업 삭제: find design/backend/sequence -name '*.bak' -delete" diff --git a/test-basic.png b/test-basic.png deleted file mode 100644 index ceca43981463d56258a997a2a40cd310488e467a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3066 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 IM6N<$f~bJtumAu6 diff --git a/test-basic.puml b/test-basic.puml deleted file mode 100644 index 52fdf74..0000000 --- a/test-basic.puml +++ /dev/null @@ -1,7 +0,0 @@ -@startuml test-basic -!theme mono - -Alice -> Bob: test message -Bob --> Alice: response - -@enduml diff --git a/test-group.png b/test-group.png deleted file mode 100644 index 6436397e40aa7bbc6b866d87052cf97741c07e86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4145 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 Bob: msg1 -group parallel -Alice -> Bob: msg2 -Alice -> Bob: msg3 -end -Alice -> Bob: msg4 - -@enduml diff --git a/test-par-correct.png b/test-par-correct.png deleted file mode 100644 index b257c77bfec82a8f046cd2ef1b2f0b6958e431ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14313 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 Repo: query1 - activate Repo - Repo -> DB: SELECT 1 - activate DB - DB --> Repo: result1 - deactivate DB - Repo --> Service: data1 - deactivate Repo - and - Service -> Repo: query2 - activate Repo - Repo -> DB: SELECT 2 - activate DB - DB --> Repo: result2 - deactivate DB - Repo --> Service: data2 - deactivate Repo -end - -@enduml diff --git a/test-par-no-activate.png b/test-par-no-activate.png deleted file mode 100644 index 4fe325d19e06185d0175ad07dc58b40f9e9c61fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14425 zcmb_@Wl$YW_vb}|TX1&??(XjH!94_b=LQe%PH+hB?(R--hl{&AEP0;y{qKI*+D}_G zH9gZkeXOVE{LVQ&p-Kvph;X=Y0000{T1rd>002t?0Kkc0AU=9Ln|RVbni(ZIHSv!Y z90maK8308HfTjQ-0RS*m0Avz$SXuxa8vvdgfG7%vEC==(06Y0rss)B-1cqS= zhUE-~2LNEZf?>OZ;e~+Vhl3Hsf)S>Gkplq4nP9}(V5CK0#0U`p0Lf#i zrse$KegN199ruh=O+BY=4s@UUN~K!HR^)tGY6K%!S69CiNjOVN(|f%k&TM0H%{XaG zs`qxy8bp>P`KM)SR;Im7r|7d})8{-6wN&eP6o_SKl@cBi*DtKzvWQ}WsTkHjtn*`( z1GBdxeyd?SazNMbB22){31JR(LVas>#reZu^(w}%_7}K#7LsWAUOFo~VYT&u z^6;q1qOXp^o)7zY0vh{^^!6FUB*;dJ`_Ls)? zUl@tk&R`XvF<2(_PO~U%DOtCiiw_FNXk&4=+na29uqt8g0A106M=q@QPfyF?2Tgl{ zrakgujk-dC%ni`JER6a>;8tr&-PigBfp}6Vw);=CXAr}m*fw=l$wqy5Z++gKn1^Ha zos4iADqs#VB6nG_WUs`~Y-Cd`vHfzKMyVvs<|Pv2CRJ0(`4TPJr^S11r5@sCO>LQQ zwa%)*zf$rwgb!SZIfM||MfULZI%)n+5N@N2Fe~JW+9cr9c~4vumUe*_-_0Q8Fq+;E zc&yS=ivmXaFljEr(p_TXNC&CReZGs;g=NJ|`OzbfBkpm0OeJbrUgob|d5G#=9cLiq zLV{fMZ3&TmP)!JzE;-qva|5}@m-eV=WjGm2BXwAw=9BpX=|3w@~%QY&F#%90#+}k z5!>N(Y=$mvdu#KZJia|^rP;bKNMnD{BEs+lIa>>7@GtUaPW*(HWXkj*iHdI|Aq1LW zpj7z^Pqc9nFweoE(n!aw;ouyyyz^S>CI6YbAkbBt*YxQxJ zb2#Or38g2KrQ$Y8#alD$&q6gi)>So8aMGSxb?kakYrD)n$f+sfKuTmCF}>I8Xe##r0!r0@Q(4DAUyb7{pmg?lcW zRZn;D+1Oxs| zD*$#ux#l#b&$FRmp%a2Req{@eysME;C%+Dsf_RVtrGs-DMv9N*zdKV%>9r;rO{bRQ zwR!2{P8tV#Q;w0hD`DcPOIky2jJmifI$%l)Ok1Sswdc`%>~0dTaYsWrvX^2NwIp3n z&LOZigFzl-iCC2JX}7~G@lx}ozOM^*L#YT*E1*~wW_V3qm?@n(HoNaFC&R}k@Z9L7 zDuHq~bXLVYVTC{1jrzVAk~t08WG6dCB?`$#z$bjZ8XvIhYkE3)1W$!uxRu54UYxiY z>+M|EpvMoh(ETGoRX-PuD#U8#tfqDA?lY1c4jqcv{50N-R3k$hJU4f>g7jq}oP4>)@s)$ESqXcPzEpfUjMrZq0#bEmNhs=djk<~iDX&D?rV z0}MvG+;x*A_x)vB?g+jVSir^X=FP`{hjnGYeHQSR;B6OCjDf>Rk+EUZYCLd!dCMMT z3@osiQSJmwf-eF3T`z#u<)~KRZa`W{|JE<>SvOo-vwt>($orXHyc17W3Eoi3|7WO> znY(WImpEj4)YK1w^4o(g0pis5oPyqCTpV(hDlAsbD80pqkb<=aAWdAUCZ{g+LuQ5} zBV<33;%n;bSNFH7fQ1@1YeO2QH%6eJemG(A`3fGMC=f+TCi+FO!hq%nJVrm+y;n_p z|vfj6R+K@-|2W31816>o)7w2R3ht@uyQg`K3o+S32`+L5GJOY< zemT@mfQJ1Xuf{Na;j8ab`$e@9Dk~>^n7gp3U;Q6NSbuWNd{P*H;{P0uk&uE!Z|+Ou z4?_>;mx5<{N0OMPmz!OyD)xr9)LV9~k{m+i-=Sr;6ZPqNYiN(f4~g37hbLLdcHB|x z0;m^q9gW%RnH-{DI*aLAuQ8>$AlGt;6SjPa5d^h5VAG&vCmgJPvwZ}PfPjz29M-hHC$`N&l2@PE_J+AI z$D%rk4?w*H{@{gN2gkxC7aJ#DGWvHuD~Jnx&JwxzCQnF*(@Rz`%JW>M zwy9e8n-2Yy+u*VqbjeV5TqZSHoM7p?+sDo+Rk0JbX#X_xnk~11SyJZCLsl%qHm@Ck zi+FAY6n2-eK`@HUU@K=OIDmUiW_K0)ict8!)oV}|t>Zw=hEPmt9plP?&H^7WSmeGLd;<9~by&}hNyd^l>FEmX%@cL$g z`h}UD-@7t%M$@xh4~{`Hrx5~Z2e>~gic4-HS&2Ti*|CkIi-YxLcYceVin0}2sySqx z<0&%dT|H6Y&#sLS^}LIj(;w)<56FQUZ{a=9l3z0+43e#*ebMX^$_55x6liHY9$p$U zedFgK(GUFXZ?G<#WYj>+nnw{Q!=exx1#v?tCb@go_Cw<(GU&$HfDF1eDfK%x(|UDF zA>dJvAU4is{7?e(+0|Bk1ytSTR2Z+2eX?<5gQD?ND(k=PH%$`&VZ}D~Hp1kos>+v+ zzfB{j4RSa zA^LvBg4lMhc1Fyv1E{_7<5t)$#p`whb9rK*h+th?Zu-w1m6qoo7W$do>>KB02jt`=5+)tRb$(pzyOuJ2!(Gcojj^od>=k8@DeW`A}Z;mVDBLqE%ud6E>Fpv7q~sBZ&}(^l<9kK^)HbB?FHhOXsIBtr#BW`OcK zFBcN!dY)ef@kdvQ^T3pR_u18EVlPYp4Ol7pa9i#T;2|EgSinvI44 zwk{Wul1y-nhlP$ZDn8I|&xHJK^5-gpEcOfakj7oKfmcZ;(=XwZ1k25w&$643(*E2x zz1CuRP#Ok6@(8cX`R8I~D_hPJmHF~4B6VM>v#=}|Bw?=^2guY609lNI!g?&4(aKlZ z8`~d(if|7p}2z z93y0}po}HNxJlI5^VNfl^Aq~&gPGrBWp5Yrt}kNtXIXovga|X( z#*f|tisY(1Y78_Y8VoV9EpRq$7KUCIYns-W{LGGF*sJahOETGbk;i$sB)4Y86Mz=2 zw%D72t^uIC1|i#5hf?A1|E@!iD)6=Ya2ir(d&CD6{F;gWKSj&TJ9eY3foVD_i!LG;2QMMjsDvXIBiXWRe%2F!Ig&pX;SH zPS4=mbrhWxEFN$G=bn zMJA~D{+OS!+Q_Qiv>;gpL|FyLzGTKh+X89<*=aM%qA}`w2O~=4al0n10pUeyWOS`= zRzaAmLA5uiAhY3Y*DSRrpbXY+2+QM32Q>1r^DT&2qiqUmuvpqI`C~?&y&(r&i-kcA zV~P;9$J+O*eEtAmJZHyTu5x8dd0ST~r{&GM^W(&B{6_(qFsQ;@cY=l@c6R%+yv>*9 z-x0`sqKAk>Dt0ycNBF|lp_DP~7J9i>RhB#!#&hQTqNNlsU$mA3KXb3@n1)hD68hnn zaZ z`I_@R%}Nn<8~{|)xbsLQ_?_xGHl);J{VI@wQ4qFd={9XPIj4va2 zn^%e8Vn@KWWfPPEb@jL@Q|16<`oZ~H;V66nWNAQ^tVQ=PT z)vnB*gWxR%d6miSMM{12vxv4SK>wxvF3a+Vbyr1-aMr7K})hAxXlI?-(DdUK@AM$I#5 ze(zeJrbc1vriLquYRu9F3AwzV<(6fDE-NPl>J^{J%yhYIi8s}Z1#N`=nYhk%YT^rf z*1ZZ+hf9(5?EPZK+FMY0Azz)Nn~jki;uyYwsGe|g<6yg`&i4tO@6E7~l@uvgc@^;R z*;g5CuK8+-rEOJ*Zc@{Pbiu`bmp;Kl2AW3B*2>W&mB5p}Uq8E+{I1}O?!hf6+^EK! zCjpPl83;}3%HJsDHdl;hGwQT_;(e+Je{lS$FQMZJ&|(%`a*GRV%TiJAfhcxDIvzMc zLG4f(dxH4UXet+odI7$rFY&y)LUw@Y7M*gG*-f?;*zw~#)SkCwS+QR0<6i+d8isPp zT*}AgFCcABBQdx?KQ6vSTdS+94jHEu|ASFbT5y_kFp>-dSA6U!f9XBS@}#^yd$X@W z=~em;(*7>?i&q1^CX~#u9Bx^EpcitV0`KEEC<4z4cLg=#BDMyD4*oE!p4c^|#9A3d zff$#oLC$?%;{rDuSco0B`M-bxQ6_!LgQ`8D!L1fXNCn+PYj1>(!;-$>COv^QCIJbx1$4bDRuFQ7yIUOz}~s_{D5e&F_Jx ze%}tCC+@5$8y4zeVrm*G#0%wg8L2@5V}MnK%Up30rT^du@L7Nxx>D8he@J7S+8B7R08OP=(EI)0ruB z@QVJ@kXFPp{e8YC(8cdusZGdxZu=J>6C&1fJ=`_PPgkzhfNu+!f(%O#WI~&=ln=I& znVnu}9a-yOa!}oef-+{t9z!`t%kfh(o*#^iE#o0jd?BrRXPk`wV9filDl=;n2+cfG z=gHhrZPAL$BQyuBID>WYY$th{_xtsx83{3(BeA#{NkfR@TE(@a4sEcw2oX@IQ2jm} zqeI)6?HZRd(r6gG>Bz)T*qPprAiQYX0+|tO8owK zJ-Qlodaqu?M%w1`ll?{7lZMtjSH6a8BIU%ZEk9Fh>?$#5l??m*)CRt*cvdm1B-~pJ z6X2MiC9@{&a@@=tvH3{kyV+bq#PdJ!?i;ePLA&yZ=(!1?1Icz$CwM9fM=vVqIXD*x z!gY*by?IZfvN@1CRln0{dGTXs{AhN-uf#8kPoUtRGpsxfrCM9OjnHhi3t*Od%oU&i z)mg{Cq!g^-DOqzLo{kH2r1R)Rn#5q7aqREeEHZ^3b(Jv_}ebEgTF zN#Rtd8+{Jdr1qFi+MdU70GZV}RJ@L?&t0;=5VA{(b1Dz3TSBfYRwiGj&(*|K*cxBb z%{;>j$Ea_5-lXJvGMkaohoS#rmW9@i<8i#!jV6p&V^pCm6p!`iF&|fRqln!z+2*-T zu|``U4O``}$Q=|jhRMN{BjdCo)kNR2Vpb+Mqn`Q3B9=C{N8>3+9?W!`TPOH;EOg#D zS84=x;qMs6{&!EgF$H7X<{`0)FL7EsA0sM7(+IMvq~j${?EIAe3S^oAj*K=vj9r}l zVzGT`E-5CVmTaOXGWpsr6@`O<^IH&`V{E9dGI=%T`zycs2hTw2So68z7nf8S(yklq zp(zuE$ybNaaFRnykOB%6FHdv{9Qwo4Eh|awnQxir_p^>V@^gn;oP(Q)4nFo-?OC*R7C#BJ?e%C~SY=^FYw%3h_7oJ6_K1sphP4;!$WM&$O{j1wxtwrd9LXj!Rf%`RSO}luryHvj=D|FN<`ZENsxNSW2Br1jxX|(0_4sx6RJgKr%mo z6^b%!tT*o*63ijkw=F&U@zR}-TU@IsW1(8*rbnUjRC47C)BP0L){+&IFJykYlW|U` z5b}5E*Ier{At9|)V$VvxqN>u_-AG0+fH@LE^cb4Nh7p(pCEXYtdB80Q-6+R#RjW9r zR=J%9{&ptnGjit6g2TG5-Q24^PRxgGa7;qf=OMPB$x3(hD=$|dh_EqJfA{5`3-LV2 zun;P`#vUqhe+~eXQXH8xy}<8`x-OJxXpE~j9bDW>lwY?!XjxyhG03}I5d$@$i|vKx zo?oo*zh=PA$Lo-5)0mdp__5M?;dDEdb-YQz>~Id`!kP6ghSD704}U41yJN@gl)vyZ ziuHgb^a+WEigeo{(*7`jxOiNF$UKL&&P=xKcz(cs#vxp13+?2Is%|BLgY0=8s zCd}wy{FvD{-B2^*ZtcTTqzb_X~-eM;)RECdZ>K40`zpvv_ z(VsS2#~IyYxX&ZZ6yvU}nZ?|ECy~Ocop7fSnuAH5FM+goz%Y6 zxWfG>*+brEY&C=MdMetBZ#|v;bpZcpw5?FU+}!szQO&@Ac_Z8hL$(Y(QD*uy;N`}1 z*(b8lmWuQDV9b6KLDK>{8*O>&gTw(xB`~8c*kM%qmSXe|f-Dii#}k2z(&OZ8A`Kq? z4R-@!7W+x@N3u!92(qJRE63O=cvB`)Z&dzZ&$cQEMiPc-Jm>kzGxG|%K3hrkflqNZ z-$!O@p6@)N%(pxda^R)}uTMYR5UWTgl493k8Qw5z&aSeE&oGC&^`S|?#!GXPvF9%& zUAgGcF!V#_P2X1NryU`LX*SAWCbDjjB6U4+4d1_UQa!1vc#?p?hY?8D_A;#GMbD}F zP|O1v5QP;95tv6|Zz)#PVhf_9(`QY*qi}onRszj?B82{h78qgO{mBU*!j%lo3=WPT zG7FqhdyL5ZBpHJ_aSm)b^Oo{?YnyF)p%))f@-zF;?^WoR& zuRgrE^sc`a#}{P6=kRsQ(O9DK=cAnh_zJi!oLWl-{{=5mSn>olQt3b?Sy(1ris4HR zhmJfu^mLaeoo-X2GU#jy_B3m|WNx?$K5N4>PJr_}bhHvUECmKbC<;w|KA=}UE}>Cc zSH;0qAOQDtBMyo3HJCZ1QP#D)Rh)^b0LppYlJUU!i(g=zjGT2Us-Xx`VqK$jPfkD1 z=o`DTyM%y16Vv}ZZdPKX)lQ>_L=mH;655wU4MusROnt}k+5a2TUx3??=t($wlj_r6C?yH=^9i1zPubb zEO}z!A`3+qQzD3MV@0fNJ$$`B%QKXIaK+5EdyWbl+e)j$KpEqwEU{lcOH??$B^afe zbg;)dkPH<>m+p-jwIiu)w!zmXW~}GBI#k%9I0b{mQnwo=^xdq!-?TI-KIW}#6oaG(5 zLqRd=+gBg`F#fB!VSGWOCHn~Q`}V0o+vb@5Nq9{a!#Z%ZNf7j1Z04it$;mIQgv`G~ z;)9^#H7c($Hhft$O55zdzjfrSg(cj$SR| zGMqyeABmlBOFk`|eh#3*MWP3iW#eh5A_*s3@WXidLlo34UzOV7N9X#lHmkOZlNoHZ zl+oXVy9v(Nhq)rmSeOdMWN->yQhp+!*A4Og>f$#F+G8IkO3AbFfN#4CF}=YrnZ7xf zy-lL7ZjSA-7d%`79Te{&y7ql7U&61CeyoJO?gw3xMLz7Mdq?pq2XR;4+VjayDolSwDWSiyFB=1U1pE3 z^hvw|gL+b=EHN9owc}69h&;3xY?vx2whm0$Xu%o*2i#kH4u2{A8FHO>F>1zs1CvN1%Bla^HeIgv-dW5K*Yv{sB;s-9oU-xPI zyv8z_W8E;VD$*=;Wqob_!^Dp5%N0#9@}bZ4f)OX%BK zF<1HM8^J)6qLp5wYw}vPCdIqgSaUhHsqWp-_8&e68^$!u*ng?qKg~_wOy*&Q4fpOh z1^D1a_zBK#IIH*iPLTp}?H+mduJl>NH;7D>y?ccC`faN4U)k2?2ygJDwUI}YblAuuEdH#soQ-FF!y{eL-lQ?pZjp)V=d>^3^Zgph;Rq4=Px}iU zrdat3(-T15|0OqRL z=qZz%H_rUtxDu6!BS^rSE#yGm=rl(9ZP23SbObq;GQA@+{VajZvm>_Mi2o(~0@6IkX{Tvx2A}QA~RVi;(8;cqRsmSZsQP zXGp-^Vq6pnhrc}z3|p1e9t)sW>+#2yqx)rPb_gS{?YNY{pz$SwMBr2MeG0Uy91HCT zrujtdXiwmW+TcNoW@p|!O9^?ZwtMa(u}r~Tj)5#UaUv+7wBgQ2gOCIf8}|ks!zf-! z>F%BNp+r;HjV+yn--U2@#O~+F#=#nWvec!=j;a-+GO*T*RP?rI#DwzPXZRTTz0b8F z!PhorOiLmik+!qm6KAs*Ts&8zsTC2)Do{b3@8L4kGp0|>OQ;yTe!@O_ZApeB(Jhw{ z-a0OmdUJ+r@`?!{>i&i)tUs+}1tm8WUxuBnE`I7=wWw<;he7T2sK_Lx&$!);JJ%{q zgboX6Aq(O4WyEbyD6`SZVcdBDE|L~8WGp&b$5!lbGzMg;1D2vkv0_we))F#)O=e3# z73K#V0_{RG;*2Mh$=f9acrKlyY+~6CrY`T!W>j6LyL5$QF544`d*ws7Bg{O*Q8Htr zkr~7kq?z}>q`m$0_QpH+ZV->`jPTI>!e_FVq$0vtfWS!+wuv0*1{d65gGlx}Kg9_> z=#4GSyKh_PER#uzjY*q9qBcLFE*-Ui^po2q1aV_veP7UraX)9c9YR&ni~h`vKSv0H zU~No5b*DCKrUv^t=e24j>v?M^{LcZ8pVVtUIu@NYU5&z`sd zMoz}#+k7{-j1+ad!T`x>WXNv_pfuT}DHUw=xsxi1$u6%Xb70x0ea4S4EZFGjvrz6N zI!hVo=DX9nIu>OCIyFBm`lao-9q0b!8+^RV9*5%ss1E*!`AY#Yj3Zt%*gH1mPY^ z6NpEH-6bUjkMx(<pYh*?*|u#FD=tG6Q8ctlGcITwzQY0U? zSon6}k{Yu-RryLRsLtu%=yNJF#xx?cyODy!SZxnI5V1QN*@1v1N z+Z)0(*Em~mMf)2EUrj5W5INycn~~JWia>nT`<;Sa`(nbtP(WuI#$o^ghn}VG8Wu`| zN%8gnz;0%sj_xV`H`9euv=)nj3C#R)iUM8HgG^$sNrimSH+e+-QhxOrje}L(LT9?15*n{?}s7{rlUCbCFK8VW1rg6V_b%)=}GF?HR|0gzeT|&{Ll- zlQS}8w@2=3+ClqOb{uBaj_1@7tLpV+oQk(wN~3d8jgK({W(&0cCZDol_UFHKQdMQo zRq17Mr^HltrfVr`O@uWFVf)N4_n_0@isQ(&O`MCUw=)esCTRi7uXJyV>FhN}F3m(N3P)9$n9}#iU%iIQ&xjQrMB-P zNsO~7zfu_#&$<$d^UZD#)Qp+C!#${}a~M^1+tTjL9H&zcXFyrZIZYVxRonV9*Uv0D ztg~iA1Sy{nTaB1%36raul2Px?!ooFYJLC?=oIM<&2XK?lHPwO`9AT}nJ*gcGC@J+n zi5LE>4yf~@k=K8j>tP#x$-UtB0KxJ|s~jnPJ=La8E)*Fo8099GZ)UM6wLQ*1 z#^7f>KiA6@gpe%!ndoTQGT$WtrdlCaeZdc_NZB|_flqT_A4^rj;Ak86C#P;X&oS~_ zfo@s_dzE5W0<9`~2i4xNm`~zFbD-!a0){KGIq?bkSe^t8uZO4a4&{D6j=HJt51CCQ zN2P!EQIRMzsu+^Oc{%(4k}?T89z7dL$4d!^x})9?y#Ek>JJ|cZU8)DH6W0I~%9ldA zUzqYQt(w*=&*rla(Wo^GnYt4`Uv5Q45>n&tnwLe#|Rw?Sc6A^Y; z$fUqh;Abg;LU*_SBaiVhZGZiTiBcTRwzs?r15=fHF1JV(6F#I7|7#jc@nc$yeMve6 zSH)p8MG?irh*W45$)e+lkci5l_JztQRK@B22IFtO51G_P!O~n{IYX@U8-0HjVGWyq zJ!f}38XX@T8HcR@!``&XACELvlkUyg)g=JqUj~r9 ziWbgF(WV<0+)J}a)8S6qA)5UU+PT*mcYHC~OS3$)t)+X%PT`+jT{EYCW4<0|b8FO& z0*>jjj<4A`0{i412fwAA6PbAaQXt;2co-BqAnJ7tf^G9|>V9=az8M@2YI=TYF|%`{fXo z6k56Z-YdT+9nDoVY_?Ck8F+*o`EkW|KU_cuVL2Q$_U;RIZ;$J`KB6 z$*0$TTFSH`>NC4G;;J+%qfoN(W(9iJ(B^d{UA)Kxd|0wBJy+eVnSxCE#kn_wd^sd8 zx@aeQ&^(~+LN4g*_n4|&biL7La8y|G*t^ftbhC1_;UN za;!Rd6O+=PjX#V*Vrx#?oSHom@R2t0*Ns*R*5zegr=?vOdpsdth;Vm78zMD~9*u1% zxXExC)+{p?!ExNF@(Zmi7plIB+WEMyU$>4c@JaGuLnz?-U&Ay;b6klRm_blEKVummRbC5!9i=Or)f6 zqEK;sM1On-t9IRDKGVN7;*!_OT4gVEmfmr1-G~l%jqZLw0h8B8c%_(_uA-eJgS_8h zJIxtBH(#I$qh#e1UW<-9ZRnfZ7M}_cET(JUISu;|jU!&jZYk>VxB$91HJ3uOEaQRF zm2dT?uY=&vHq73|89@Y}fjB15Xr61!JdZvasaeMpf*>95ijPf&wNKl?cnG8Gla0mY z$r4P0;jFTF*OyDU=e(ndKi_xZ7B;ti^oS?Y(2?YHqdh2F+b5VTdN`#stABGCCB0`N zw6o&P_YiG<-^?QqU^m}k`-d}(`G(fKFUlxfKmO~p!@wL$dtQ~ z>p}A&2&%w9bU#{*XTPfl=kNjG{Eoog2xbCi^-(nksQSiuy|s*!xfk zs62`@Y!34jpt!3i!+;TtuoJ*p?f?3n-NbM;?s4}ZdWV@ik7gXL2p%)RtR6Dk`_aw} zHV_U$Sd&0$F6;FU8Cd#uaV|)^veoqCLiOtMHYGuc+)*izUC6}E) zsae%wfIC`SJ62CL5P8mGyHCA7lEI+pCnz^x-5Qrql#J?r&u)l9bw!ZGl|cLTYNO>s zwuTIEIuy4&$qd=u>h*Lvu%m4Nw?{QDIKcJOGtV4+=ZnQA#wbQifZgY|YUMm%qu_dR z-Y!*-zn5>-R9W?^|g^wo3vQv}_#{z&*5@ z3%!q%1?BT&w09Eq?hj6j;2YW9fF~?G@ozEz*?KW31=7D>xQ){kZ#`Z!DSl6EyyNOv zvxC`)4%{*{T9FBoUXe(iYXi#7FI zM4*X%e1|WdC0oA+#$eJPbko{AWe9K|p0*%i(IoP;7h!P8{>0e5J zzVaFZePtTkfY#rp_ZZdOM-{Lgfq5l8iZW9n9l7j^cjvG`-UjJ%Z<456L_V|-yG_Cb z!Z@gx<<2|XS=@C#806YNG z!O5!^Qn=6k_-8@r)~-CZTnu!688o+@6!40Q3P@HZB^tmd41*t9y9{=SYa(Y86}(35 z7v}jICgqVqvxL7@jDzF*JpB;V1??A&F(d;c$88b}q}#}kRs3$H`Gy0hSicA`0e!B5 z@i$5&_ix#8dqBvS8c^*IN6WutAHG& zCm>cax*l}o{%S7{Tk<_=4YRpcb$XmrzT)C78TF9(_%_kqWdJQR1zH zv#P^@#$AHdt7X;u+L7D5DD2!FST_ocgYjw?>x#&7^>=-rF|yCZ_a$KCnDqvfo_NnE z^EH7NV?g_dP`0;0gHeNveV@zsnCQE6RI`pHr3GIK+RG|_i4)oo@${Ewz#z!n5h(w* zb#U1ASqAjOlaL`If5Z-S$XV85`F-4=Nu|K&YA>hdj+130^skW5zcH?XeR_VmuS2AZ z3-MZv32(M#0k4P`VHo^vk0Fuc*6164U)Vda>Ng_hCeBTyY1|6J&s`>C*;p8EP#%Nx zI~CdPkRddc#|2%pRq{y34b(T+9)4-QvBXlpVjSERviI=E`+=zQ4T! zW9`@pDqA#uPbPaC4T6o2z{EbP8?YS*ixRr(e>iwCCu?#|534O?AH@@d?sSFW56Rpa z5h!`MS}()6+p4uA!(55;K!W!|r8KsD#XX84rkW$shMZhTzD8exSxW~;183sC)=5N> z>-&^%ZR_v9`+|?4O0yWPqZK|j99EMx#1F;lBI?KzxqvnjjOWJdiOR6vT36qH7d}#| zUpkkfMLs2Ny>#{=nI<4S^U6KFWEz-z8jARSoe%02?8=ROmw32OPrZGWbplyZoR6o6 zqi?qhLGSgb*Z4J~bkb${^kdc%B##7pbv!uuUD{z8NdDlbhCefW7ui9*^*`3%w#fn2 ou6Vy(%ilu(lPGPBdPm+3u=s3uIB50p7aTxZTtTct#L)kL0n<9_9{>OV diff --git a/test-par-no-activate.puml b/test-par-no-activate.puml deleted file mode 100644 index 6c738ec..0000000 --- a/test-par-no-activate.puml +++ /dev/null @@ -1,28 +0,0 @@ -@startuml test-par-no-activate -!theme mono - -participant "Service" as Service -participant "Repo" as Repo -database "DB" as DB - -par - Service -> Repo: query1 - activate Repo - Repo -> DB: SELECT 1 - activate DB - DB --> Repo: result1 - deactivate DB - Repo --> Service: data1 - deactivate Repo -and - Service -> Repo: query2 - activate Repo - Repo -> DB: SELECT 2 - activate DB - DB --> Repo: result2 - deactivate DB - Repo --> Service: data2 - deactivate Repo -end - -@enduml diff --git a/test-par.png b/test-par.png deleted file mode 100644 index 28f39160eeaa7b68f51916c1d1e809d5df674418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13126 zcmb_@WpLcwvhA3e?HFQaX2zIl%*@QpY{w8YjydKS5;Mlk%*@QpG2?T-b57lNtIqrP zrc@(otJU4RrPf;Anu$=9mqdccg9iWrNYYYb$^ZaZ8UO%J1Pk#o;@!ym{bMz!2vimS zScAg?AkYBNga8-{05SjoO9g@xsBK>QiU9Sp}4>~k0xeiRr%0vKT$7&!nyoC8Lj3r6}2jJytvq7jU;6Py|V zpdJ9H83m`E1*cmCXWR#8It6D30GQ9gS#H4D-ob?cfDdmJ000#LKo`&y9C87GUjRTY0MG~kbOHdQ0KhB&um}Kb0sw~qz%2mq{vp=n=LrA+ zXkEoMT}>Puy==|QT>+A2_GZpTu4bmh#$LphuC9(Qyi81vwnp}@Zg#eeCJuJ)xG?<}DiyO*cfl6=zjXmA69MCWPzxrRtq5l8S-ixX5yi18PpCoGo=+Ga>{-tYDX312HFBt)eGUhBB zRX7~sAenqWTxaC9N0+Nm(T?ME%(nY|2vWx7I<%harOA#EEZqZc zesOBVO<)k*BcmlX23~#}Z@NHM78{bR&{8@P^FGpB`dyG<^5wwKi(&~{)sS1^e zcIiQJq)EcBg6zW|W*oiSG_t1lEO?sdRp1hRq|WkWp2m$-_>3_k{5=p|h8C{yCcf3@=D0$7eB#1OWDJ*rKElB z7nhb=f7%~cl(ErgKH<;_awwZ+$}J*6`L*PXU>#fhwMLVXX~MsQDCAY0eae=?K%aX= z*A9KvP-))2U3}nv>c=+E_4td=Cvkfj7XX)gVVoz*X8Qr))T?<@ zwq(M@9JnH#5FAKp@nuGjq9S<$PDrz~j}!?>6T_h@?zS=_C)Wo{HEJVp#XP8>krB4V zhHi{dh*}N`a#-DXjPyaOTnPH|n2ZPLl;P}S#jME>MPDcWJ(y&j7XDQSro<#R4!_${p=7_e!oYwd{VCgcjJr_ zr=WvF)Zpl{+&$)mU?8va;Jn(sW`*F5>NPX?qLi6MQx3C zmV)!mvD6R>6;k-01s7W>(+vR?eBkXm4zMa*3N{RL=dolvqWDwG9oo@=*9uhFh5S`1 zct4^eS!v4DzVd_#!KP$4`>e$@57NTNz7aXj6ST^6S&OBCRdrXUb>Fj!hEE8E^hBz$ ze^0B8gXe8&v|3(yD(?MUugyO5nUp-bMASJ23WFp{+{Rr6rdgsB#j zWq;A_lWV9*?!~S>4{IWG1i~#dZ9xQ<&t*m)z@3ahV4 zR3YOxF=2F`c{QnT4etK%5hW*gMdZskoZQFy>Kt>!tOfn8)=u$D;|%HR`(#OH!ikyS zX&rwKR-g~$WXVj8j2ifTtediq&3U&dg!g@}+cM2(b)h@;RMPyk6pP#S&J}B&!)VONjj(Qf#LmvPbU%ik;>8C+PM!ay&_7oN}bml)~3v(llK_hpwYz@`c?0jb=hEg zIhLjS<7BZS5kAKQRtv-W?TD+lZUmNs1-aT)Kda58$u*Rcdv1QSo2LG^3OCIlnYM~9 zJCZY;)RJBbxIQDxvE04geT`NrF3e$CC# z6u(wfP_SUlvNHMk)sI@}P{3myWE0-f_lhx!a(b~Q-#4=C))>cgD5Y?Rx2-aP%7Bi8 z$FJVefcM)!OS39F>~1Bu$QqILyeA9mpk@8aI^OU?G!N46Vmtw6VGq;s2_xIgfieBL zlC{dm(hUpq8mT-;SFrFNQXI>3KoRq)KRpcbyg?>!^bh`}f4~%JVAc<0@lu5i^O7KA z_TVx3edsK+f(zeC1b;e5;DwojSJL3n%yz@KQI37#DzT2Gbvnb&sg5^-K-3Xh0l`D} zmfJAs-Y7`V1IARX@Jl;kdx>pAv>=!4rZdd!OMTWyQpB%~8%=UdxiS96BpdIs@CQ>) z@n075-lwf`@eu=X8NQB+@+3;^+*V5GtGsy{w(`6;bGG{r(5b( zTB&CV`m?bNzv{Jchyq;)r$;^7+)@#TkbOneW|Ivb@Dr5U?{f1xat%-KF+Q4S@s3ns zRr!5v6W=r*g7`iA{%WP4z77_`h`5slk;Z5pq$s73}dIJq{OZ> zB%uKAUC*Y&GKGu$)eGo1uL#FFBF24H3a7^vD-7O^C?Xgg_cND8<*nEBm7LdLG6|>7 z(Kcnr;mhuq@Vc-2dE;3~jhCjHHm+wRVMkRZi+7=|g!ZgMxUSU>kVTA1zwhZ&naX3f zy3?8OB}Zo`8_e6HxG-i-_Ax)Qc-z1vvev$T^l+)x9xR9$_P;E;$Xl;+rj50u8MW(` zpA~NOwVaA!+sw(b8`aO-hH2PLUBdG^j}D`;wZ4c9IHE+muPAY?ms2wm5VRSxrA-5Z%gJUNf5b}V$!=F1TCeOG)`?|5Q8a><+C zjkUL;za5shOx_EAnjW3hr3;O#E0mfijFCXu53Tz#piyk`oKNzz#r3t}g{PUq)|v$) z<`Wa=a2xh!Cm~Nt9aV|U+o0snpdroywCon5FIPD)D&yQpTs7C-wD^RVM8lzuCApR+SihUbEX%Lps~ty*cLtL7G75Vf;F<&PtgmU&Men(zAkd){z@psG|@LJvgu z7|Svx_X}|_;B@M3U$lij@7Y60 zCr}<6pk9=%gT$Ad#lUfw^YT?UU&#I}_`1=|1$~m(&&sAs6geNsg+{%9ga2^2-^9$+ zHzsGw_T>H~))K!Sq9qV2MQ*uf*l_wt26Ve>tvNtw%aA2VcdPqbcATVMhazJT>C{SE zL->?%A$q#SM+rCJ&!(R6d`2cqH}^%!57xB&iA zKN4H-ctsieOa@XK=PgBpy9Rexq&#B|`Be}MvkU?dY{5*z{=*di#TWnoeed3Nn^RTd z-0{5!`;oGR-oImxKtCJi3`TERtO5Ro#v#Pfz&0JLmIx$|6fd^6Bx6hPQbjZZ^V(d5 zibU<}CFfokBgpbzbRt@uBa$m!6zTFg4ASR|Ri z*Q^*v4VS>zduyBRa;7`7tGO9@khd8qCut7<^7mx z4J^uc?IfZwzSGlCtdvInc~Y7)*t4j)hVKM9^HV;)N~p^n$9~SWpXAKR`u&4aamR&- zwA0CM{+Dr)l1s+w-T9^OKCm980B-|$d<>TOvi<56ywntFJFLPdY%D|6KG z(&e&e2kU6(Xn0{1>elDcZz4I2LbSK_`8E{~tGhqiv zU968Pep4|itm)unrH-DR0o0Y8CS$p2#PGpd_nS#Lw>s&tT|D_PtC9-m&aS_8kK4l6 z5Pr*X|6q(}@>-e5LY8v9MJ=l>vqSEDJtq=q#MT+^j6U2gd%6^Ck`CwS>1p4@^Gd|s zOA{uB?=);-u$&vKX&@b{=HJylcv!<=cr**VYd^G`_>Dxc!b6rFm2%ChL{@+mS;E^U z`~!DWt^OAba5ACEJGwB8kvjmcyU3V*2r8Ayu05QP6@GUZah--qJ5ty_F!k=iSiX-S zMwLNWsGS{Bd4;eEVe3JYjUUqy`%d_S0$d=gf0IH+8p+dR+e zO%1L7o3HP#J7c*xJN%*Rij7JUHl<^^KfU0*mrDC!WLz{*%X^j4y%&1@s5$;*b0r04 zY2nQSKQi{n95eead#w4rsDH5KyQt{i5<@)Ojgl|(Afvdddb7QfGs?A$Hjk{RV|k`I z{q3E_l-WX$)Ij3|6SW{2O;i6%etV?SCPhE(J~_`%lBo>CB)&+5ZN9 ze-UwTyJwwFWggmm%}+>WP^~-2JztX<0HD)o+QQU4X9iKD`q&D;4#TGKn6 zNq*QS2AB%ZVHq)B6BPUQU_KbE8t~J(OdF_b|gh$?!j_J_cWt$tDsTOm8j+}AC^xKX8h5ebZTQz0^ zazD-O(N+=b(6mW5w0GqoEVg5)+BKfA+h`$vq8ZTl9eh4;uY4D~x|DROZd|6%X4>c- z@@u}|&kr1zyRPNcrm!J0O!uX^u_H22C&&GP(Sc#K0%X*t?{dq>f%g-l zFpD0>EMPq1%LkK6wFV5tcH)*hwV^TN_k?5LrMesL$}Aj z7F2)tw$B(bMA(uTnFXJ5$jy|rjM1?RDul$+#Ir#zVL6-B3QVT#v=QC0@sQH)@(ng& zV@jvMH@a8{t}!&uj_OCHMQl5l$KJ)Ccz}MJ)++rN{ue*^x0ZzZGS)Q8qlpiYPw673 z2`0G6Fsr{!4k{$zV5A1oV^!5npG44RDzW_o`Pm^>ZgR*uEZy2QOR#OZtb0x)`{aiP zg;!prFT-_DW`}1Y_c+nXo?rT{MwB@A+cl6TORe93kQOUPODN1sFSJ1~T3!F1Gvjk- zTO)_ra;id~1&v9-($%gVFViYq%vX*-@OO=K{{!zg<3p{ppWjBHCGEeg4Mpx^?VC1S z=x4HU>1g6I370LGvIq+Gw$DMlkM2Z!3%Vyp>|hSjoobtyjgEa%Pbs^#j-EgnWvOR& zB7dZa{75=r*vX8Em=>n^{r1Qi&hbcNkv;3e&w`c+c`K{qM%VbCwB<{f zyowmBTz47;1t@cKW`W>jrWqr}vP@;3cazS_enV`@CRX!)K3K6$&;p^m0li0;X=n+^>BbEyx26%D z&P;jjyBTwh8F zHML4U{ThFTLLAAOITt)fn`buahu#`h_95l%5!BkuzqVs)T>pH`pnoTKcNvL6M|8AQu(g`4bbk`E^&+!@=;Fmv!sgNFIESa@O!~b?=OTEiQAh^u zDBl{ZRgW)X2E8Q(KmU=J#FV>^dm;Jx+}^{P5cftbgRdu8xp_wFFRMd;ZyXyTOG~&j zkV=l3wys1V0%umq)4mR3^lZVY7}%Ai#W246(tbaw`t(4b+g}5$!Pe?5tLn*Xu79E6u;xf8M`*mMn z8U|g8xHtp^JL#gQ{P!HyI%!?yY6Cw+{dahA>KUqNmLGc82+sWuzYK)I(?DKuC}b`M;#i zT6Z>bkzzl;HfrMa9-2Zp;2;2%bz%QdK|`zIl6O=x_n` zg(D%Qn%%yuZ$QZS5U#HvNCF6cMUfn`2tqSVlW}I}Uk+g^7kxnR-KVH0nPSAo*7fxr z&|K@*lS?3B4155|FfrB_K&5@5UiS>2X`8v63`Z~4Vk--RIO9DhAB zxZYG%bYofVzk%4AqO`Ak4EpGqG8=fH7mNPTV`TJry!&n!6>uWUm^r=g^U zLsZ^0-J(QM4}@%u@%b{b2QqM|aAc6LDf_KT_MAJs@buY8^RKSf`@h>sax7|!2*0St zLw=lPT-FTrQK3Hca-;m&?~_)D7Da)_ZmxWAE>y4m9%esnN&2i=d*%tDqonzwnl_6_ znu%^Q$3Q&F(nHlhl!Z;j^9dg_8x-eYc{6%M)6w4Q?Vip4eNb@TmhYC=hUhbhk=+qf zj2j8J)ZPd-$RtcYI+2fQd@{mmx3C7>LVfr{eWCdZT%z)yM|#HpC>@Y9KY22G78z5F zVC(+cHhGw)ZqgLVv3QH|`cOJZtM(wwW6}45{rQsdl{4>>~A}%T0l*u-(Kz z4K9=Yi%r)bx3Gh_-J~0A?MIW3v9ly`b}w|YY$-Y61=TSzobNygM6bkF?)~sfzMU2gf%PF%^qQkN=;k^OyLt^1qBk@u0VAx#xeSU_w5cEBoyC83*qe z=7Wua{pxPf)J!A_V?W{CfbUhZnizxGJMJQe*Sy||H(%S=>7xEO&xrs}(Zok*^^@S~ zza@?C73)NYCNRMGDD#M^n2#ehJJFr>K5Dc&v*a%J9WdEJHx}B_iaDl_!U3%+L>Id! z$3#%^drQ!vflAHC(IhmB^QV1TDm=`TkTrwqt4|$vCpnIDPnzB_#$M*p%^^KnW~biueoI^ z)N99aO>rdK%kuBu(@gL}7GD1qV7@8CvkrKkRy_JHigy)0v!&R3aBYHgZPlWeJNe%aiv%E!!Y8U5Sj&wy!c`tXZT2>O=;_T;Q$;ex<0!w+2la8L1w zvs5pVi-FB^?Z|pB7rpLqpC#R-i0vJPd*bGKxhHk#6o|ClnS)K|KR^s!j5?o6(0Xnu zK9AVADPiiLKFXq!{vPJ~bB%iTX4{L@Cl@*)xRYE~-L{6P#5IE*;x-o17tDDd+4+0& zvu=R){iccq>%iYw#Rb!P96XENeL*_5^x%-DFnIlNrc|e~l!jIB^rPt`9@5$r97_xG z_%?MuB~!Y8UiR!wO6e2Z1j^gip2#6E^(S(Z|3XJu17kf|`blHzv>_sFUJqd~hCt7I z0phh)Je5@~ouES;ogirLxltPUlsH-!7KunD+xcW12>LfqSRDGCbXy64)(!z?+kr%h?Yu_HGxQ8Iew$mKL#Ryiy#e%2AQR zv(W~9X2fb1!st$yei+`g+6!EYNWKoKj%IWpNvEDpHlWABi<-TDK8@{-NH)WvDy^I>qmKg#VejtR1h6^{u8Id_S*zgrZPA?#q@O8fA=OIFi*}~nE{_yc=6Dq;)k#sV)hh!b9%kd3yjqmwR-XHs!_<1G zcPvyQxDwJNu-Ae>_p1(Yns477pU0_PgdLLx%@y1R(OWLXG7f8LEZmMxY6SDLGH{BL zW)v{?+QDi1xTg3@B=_&WM|}F$rR2}r%0nT0=TSZFs||wNd86O#ck#_g-Zg z`Lt=5C*x+Nyvj=Cf4JG2rlK-Eccl3kd*?)RP&17V#}#C0b5`aD?Kp6_@3fI zrrQn_*MKZ0EUn~-Dd+!1uwB-*y+iuW|FfPcrJ!+tigIWejS}|;+Bw|evBW}j5a`Dy zb+d>8w!)ebRK_P=oU~aMFBS=GX_{hY3K`*>j;mk+;?$7i6;Ewce5jiux*0$~BAmbH z=r(J$$zN@uGzmIg)4UFXEFaf8Pj()+O|da_yQI%Coe8=8qohByX*KR#KDT@7(^H}tbxRAC;n-C=2%1+)E_&+ z1!>a0h~NH>e{9P6BKB#Rf(x6^zcPD_k_(1*W2SeluOoat{`;!?LlUT*(8V)xoi@m_ zg($QoNAEhnEbZ2wPcV1L{!KBnur_CG^^=S^+0%&#*lrzjX>Yg@XZvZz6#F}Rs{&- zpot$JqiLFOxCE=)E`BQa%v}~rLB`uYoJMc0n<>B|y0qqjoU8-2G(9b~E>4up2cRG- zykHbMCdLl>v@>NRMGqEmZD(Q}!#wP#@5a*#0$Cj(E}%WB%jMU>*J!%e2z( z%`h)ZUfrj1>wfzpBm&@^iNWS;5i^_0OeO_EI)^nxNcsA6vjUqRiez{s|8^8&>JYY_ zCxe{Q7l?msrfg|Pw%)n&2)ZeZ!vMVK(V1nIE0zRwCoGy6RMt?j+=Z4O+2Rx?#{R%%dgx+P_f z`2JH^AD+i?w(6ZFV%-YbElbPQFmna8FskWPQ?K5Va&ZTjM7?xSIwMUd1MA1Fk3G_s z5NotO7jIY;Wt`5OHe>-$A_{E9Lmzc@qQ`({Q=;TIo{t8@a1`yLBN(k4?Ja#VEc&t> zq{=*_3BGD)%sQ}IjvnXvLyFw9FgP9jidHC%MoMo4noWRROLv8p*FMzk$0rET|2} zJA-fvJSWjQcjqlGLFv}Q%qmF;=zAv7czWmaED0uuM}s$^^HG>(w#+KJt;5i4kHtJ) zz(?@aax>EZ6kbJ!S*F41X`Xx7Ly#ZG&3V(T=)ul8S(awHE1>q;?{~4G$v#YPR|A&} zDO0{9nMeMO#1T66mNX@zM7JU3UxwWzt^3?72-bBf(1WWm*(62KT#P2SAXtr3%9+__ z!QCVAQx>EeHf=pI7GwGSsaKFNU8<<}R6rDmlXq<}Qu%+4FP;hvNl{M0W8&uq$uk@3 zB{6(j#Vi)J`b{+(Zf`F(GfQ=MH7Ld^UVGn5mad9>s@Mfadk6_JFTP~lC6~aPr0ydU zbGXlX8{yYF0VG%9_E8W?%d3__fq)7l{YUJ_W|0(uOsT+>qI>Q6`iaYE0md_A9agjv)inG_19Rogd)YWNcrm-w-w_F2Td#adhH0WamlZ(30&we8 z0N038(UG4thHCVG%s6~ZkYat^`Gd~%LnW){KoS3Lj5O~U^P;sC2yl;YjIzHm)w?yn z7=mR3c3r{2l#SpXR-uk@>HyDbu+-LNY?SgY!u$eGB$072HC3*9NjxkS#dwUa}h>39?H;v+k}~tvWvfOK=(?@g)4(bj3MeR zO2&c0M$9^tO+PW)m+j;{jcA`z(7Y^R-yY2clL!Jkj-Bgdy;)+PLeRW5Vc&dBXJK%) zcOaT$dX>TW2N6r+70cUKM-BF+2?~ktI=257vq!@ahebjxE~ubo=C0;gLj675CY)+O zX>j#F6odv>q-ol@^v4{zKQ)5mbRaXf>{-~JK#y#V3*rG?rZXOHXbE-FEfzD1ogO32 zZ_?8Z!$MEveJVl9(m&B8H}s5&*$tvlx(-N zdguHeTMMmsq#Ah=$&6W}$&XE3l(&TXv7eFtI0#rGMWf+V@0yni z&-lENNw6RLBZ>p$K>@7>WsPZyp}>s1*dc_sh!9rOWkfe1<_iYeH+Yg6^FtRPxm{m) z2Av)`!ay;IY-^%K2ZHI_PO{aN2|eS>xzKPk2O$Z@L=PL$#=9K* zJAa>l2C~86PhrX4923s^LoMsG2PQAG_Sw@7#D)j4+c!+ccG%LN0me2$wCS^n zLgaDP+Y1-fLXqYc>QNU?{RC~5D!uyfuV?|WUi3U?>K=oK_CH*^vhQHAp-!YH1<$&a zFWo(HTaDIT@7`s21lnIvow3hP>K=xb1d*0eSIR{GD7fOoJ%}8=qP0%sgcsRe9t4Es z{33n<*EV?nMSL0i7h&lug zn57KMfy^AI%FZQ|6o(fM1Mu!Lh4=&9L08{y-8vLve;J?Q&}PCxMIg&D23-9Ng4IQ9 z&ZXg`9*zsRZ3xitzdVUUXzOI^^ph8CKT1Tef#rPuV+N%w|0cDB%-JB!+PQugg_$eq z&|<}#I3hlbEd_xQKG_>J9kD+Hhz^(mu~zo(Pf+RpyU!4bBbLJlc5 zO6|s$1ytz9f&gX8Bm*olB~_3%S(PgWuP9qXR~Gm$*h|#-wgJN0S3ilY?-nLQOq`vb zY}MYn8divkJ5<-Ojg0KS`IfciQDzJ@zYk~z{@Jki?cG>I=8_ds$t2d4hIUwRJ+$3O zm0reJe{~}g6bS#c?dVV@7vJ!kZ&mcymz}sLh2DTi(Q+~CMZ|$aV0mb{K(xa>9{Rat zchv<>edVhr)1^cEYm<73I93bbREyElmccqH!S>ri&BtY!UPjjpuy>#Y0XLT#$j;M* z0!pwU<=7%(V2 z8^nd;%CY>C4$ia$CR*X3D*TWKAUGV{J$X7uzQ1@SEauP+H}OY^dpze{1=|v|>SStl zxqvP=dbYphko|D@wxJT6#9FF~2(HIJ&(L6}?UEtWs;cW7)_X@)WNx)i58fUc2hXW; zP4QHy-Lk9^IuBB6Z7i5`?AoGgc$Y%}t-tzB7~>W%s83P$mZ~qvzvP+SSg9Egf++f z^5X2$tE$YXBS@18Rm1INlV06PY;rL#=9)Gl)l_e|S}=kNcWY(KY2an$iu2K*t^n;U zR(}sVAgW>dqVF01<@JH>g0lp=UUNoLurW=4FdMv@$T3s6PQ?$emkR6kg24^7xauxK zHT)C4KBV4Itqv77S21Ea7Tz-EzSQ3Fc0v4!-8@U-wP;3aU}zD$tMi=TUYpA*75DhI0dQQz__ zg)ekq=~8}gZWFO{HYjZ&ixpqBQNPzz*1e(2Dt9|ZKIk{tDN*?6acOUWZg%mF0{A>k z3t!w2BF$(AUm9UsUiBI-#Yt73&<-aKGAp=mN#e2$cwT<)e!=y<-5<-i7##Y2l#)Vw z^Tw*XSS`%q5<2oA8^%T3ENAat|D22TgXb%#)W~M5k|5Q=t!u1kck9BY6?+^8Z?SR* zD=Z{t%to~if`?+LHdq^!<*CfVj}OwL5g=YWV|eXl4#--u^t1B-<)jqC%xC097^w4h z$l6XWXufWBhkEgko`XI2b7Js-N`-BX%42V2Nz~UgpS!%bI;68U=7v{_BWug$*^e!n zUjs1s;#F7=FNlw3`1I4uOuz-1ELXcW440*Z4&GeT4fZJy5PF=|x?cT#Kq5v=iUUAh z3YSr_mpaEMES=GX7lh`Sw048s_tK+neu g{usve{Nepz@^{sJrpn&O|2+WG;__k@B8EZ#2NSdyZ~y=R diff --git a/test-par.puml b/test-par.puml deleted file mode 100644 index 64e10f8..0000000 --- a/test-par.puml +++ /dev/null @@ -1,34 +0,0 @@ -@startuml test-par -!theme mono - -participant "Service" as Service -participant "Repo" as Repo -database "DB" as DB - -Service -> Service: test -activate Service - - par - Service -> Repo: query1 - activate Repo - Repo -> DB: SELECT 1 - activate DB - DB --> Repo: result1 - deactivate DB - Repo --> Service: data1 - deactivate Repo - and - Service -> Repo: query2 - activate Repo - Repo -> DB: SELECT 2 - activate DB - DB --> Repo: result2 - deactivate DB - Repo --> Service: data2 - deactivate Repo - end - -Service --> Service: done -deactivate Service - -@enduml diff --git a/test-simple-par.puml b/test-simple-par.puml deleted file mode 100644 index f15d700..0000000 --- a/test-simple-par.puml +++ /dev/null @@ -1,12 +0,0 @@ -@startuml test-simple -!theme mono - -Alice -> Bob: msg1 -par -Alice -> Bob: msg2 -and -Alice -> Bob: msg3 -end -Alice -> Bob: msg4 - -@enduml diff --git a/test-simple.png b/test-simple.png deleted file mode 100644 index 58cf15a7a28f76c00f719f46904f9cbe51bb8e8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12747 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 diff --git a/validate-puml-fixed.sh b/validate-puml-fixed.sh deleted file mode 100755 index d4f0932..0000000 --- a/validate-puml-fixed.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash - -# PlantUML 파일 검증 스크립트 (UTF-8 인코딩 수정 버전) -# localhost:38080 서버를 사용하여 문법 검사 - -echo "=====================================" -echo "PlantUML 파일 검증 시작 (UTF-8)" -echo "=====================================" -echo "" - -SUCCESS_COUNT=0 -FAIL_COUNT=0 -TOTAL_COUNT=0 - -# 검증 결과 저장 디렉토리 -RESULT_DIR="debug/puml-validation" -mkdir -p "$RESULT_DIR" - -# 결과 파일 초기화 -RESULT_FILE="$RESULT_DIR/validation-result.txt" -ERROR_FILE="$RESULT_DIR/validation-errors.txt" -> "$RESULT_FILE" -> "$ERROR_FILE" - -# design/backend/sequence 하위의 모든 .puml 파일 검증 -while IFS= read -r file; do - TOTAL_COUNT=$((TOTAL_COUNT + 1)) - filename=$(basename "$file") - - echo "[$TOTAL_COUNT] 검증 중: $file" - - # PlantUML 서버로 POST 요청 (UTF-8 charset 명시) - HTTP_CODE=$(curl -s -w "%{http_code}" -X POST \ - http://localhost:38080/png \ - -H "Content-Type: text/plain; charset=UTF-8" \ - --data-binary "@$file" \ - -o "$RESULT_DIR/${filename}.png" 2>&1 | tail -1) - - if [ "$HTTP_CODE" = "200" ]; then - # PNG 파일이 정상적으로 생성되었는지 확인 - if [ -f "$RESULT_DIR/${filename}.png" ] && [ -s "$RESULT_DIR/${filename}.png" ]; then - # 이미지가 실제 유효한지 확인 (파일 매직 넘버 확인) - if file "$RESULT_DIR/${filename}.png" | grep -q "PNG image data"; then - echo " ✅ 성공: $filename" - echo "✅ $file - HTTP $HTTP_CODE" >> "$RESULT_FILE" - SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) - else - echo " ❌ 실패: $filename (유효하지 않은 PNG)" - echo "❌ $file - 유효하지 않은 PNG 파일" >> "$ERROR_FILE" - FAIL_COUNT=$((FAIL_COUNT + 1)) - fi - else - echo " ❌ 실패: $filename (빈 파일)" - echo "❌ $file - 빈 PNG 파일" >> "$ERROR_FILE" - FAIL_COUNT=$((FAIL_COUNT + 1)) - fi - else - echo " ❌ 실패: $filename (HTTP $HTTP_CODE)" - echo "❌ $file - HTTP $HTTP_CODE" >> "$ERROR_FILE" - - # 오류 내용 저장 (txt 엔드포인트로 오류 메시지 확인) - curl -s -X POST \ - http://localhost:38080/txt \ - -H "Content-Type: text/plain; charset=UTF-8" \ - --data-binary "@$file" \ - -o "$RESULT_DIR/${filename}.error.txt" 2>&1 - - echo " 오류 상세: $RESULT_DIR/${filename}.error.txt" >> "$ERROR_FILE" - FAIL_COUNT=$((FAIL_COUNT + 1)) - fi - - echo "" -done < <(find design/backend/sequence -name "*.puml" -type f | sort) - -echo "=====================================" -echo "검증 완료" -echo "=====================================" -echo "총 파일 수: $TOTAL_COUNT" -echo "성공: $SUCCESS_COUNT" -echo "실패: $FAIL_COUNT" -echo "" -echo "상세 결과: $RESULT_FILE" -if [ $FAIL_COUNT -gt 0 ]; then - echo "오류 상세: $ERROR_FILE" -fi -echo "=====================================" - -# 실패한 파일이 있으면 종료 코드 1 반환 -if [ $FAIL_COUNT -gt 0 ]; then - exit 1 -else - exit 0 -fi diff --git a/validate-puml.sh b/validate-puml.sh deleted file mode 100755 index db5a942..0000000 --- a/validate-puml.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash - -# PlantUML 파일 검증 스크립트 -# localhost:38080 서버를 사용하여 문법 검사 - -echo "=====================================" -echo "PlantUML 파일 검증 시작" -echo "=====================================" -echo "" - -SUCCESS_COUNT=0 -FAIL_COUNT=0 -TOTAL_COUNT=0 - -# 검증 결과 저장 디렉토리 -RESULT_DIR="debug/puml-validation" -mkdir -p "$RESULT_DIR" - -# 결과 파일 초기화 -RESULT_FILE="$RESULT_DIR/validation-result.txt" -ERROR_FILE="$RESULT_DIR/validation-errors.txt" -> "$RESULT_FILE" -> "$ERROR_FILE" - -# design/backend/sequence 하위의 모든 .puml 파일 검증 -while IFS= read -r file; do - TOTAL_COUNT=$((TOTAL_COUNT + 1)) - filename=$(basename "$file") - - echo "[$TOTAL_COUNT] 검증 중: $file" - - # PlantUML 서버로 POST 요청 - HTTP_CODE=$(curl -s -w "%{http_code}" -X POST \ - http://localhost:38080/png \ - -H "Content-Type: text/plain" \ - --data-binary "@$file" \ - -o "$RESULT_DIR/${filename}.png" 2>&1 | tail -1) - - if [ "$HTTP_CODE" = "200" ]; then - # PNG 파일이 정상적으로 생성되었는지 확인 - if [ -f "$RESULT_DIR/${filename}.png" ] && [ -s "$RESULT_DIR/${filename}.png" ]; then - echo " ✅ 성공: $filename" - echo "✅ $file - HTTP $HTTP_CODE" >> "$RESULT_FILE" - SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) - else - echo " ❌ 실패: $filename (빈 파일)" - echo "❌ $file - 빈 PNG 파일" >> "$ERROR_FILE" - FAIL_COUNT=$((FAIL_COUNT + 1)) - fi - else - echo " ❌ 실패: $filename (HTTP $HTTP_CODE)" - echo "❌ $file - HTTP $HTTP_CODE" >> "$ERROR_FILE" - - # 오류 내용 저장 - curl -s -X POST \ - http://localhost:38080/png \ - -H "Content-Type: text/plain" \ - --data-binary "@$file" \ - -o "$RESULT_DIR/${filename}.error.txt" 2>&1 - - echo " 오류 상세: $RESULT_DIR/${filename}.error.txt" >> "$ERROR_FILE" - FAIL_COUNT=$((FAIL_COUNT + 1)) - fi - - echo "" -done < <(find design/backend/sequence -name "*.puml" -type f | sort) - -echo "=====================================" -echo "검증 완료" -echo "=====================================" -echo "총 파일 수: $TOTAL_COUNT" -echo "성공: $SUCCESS_COUNT" -echo "실패: $FAIL_COUNT" -echo "" -echo "상세 결과: $RESULT_FILE" -if [ $FAIL_COUNT -gt 0 ]; then - echo "오류 상세: $ERROR_FILE" -fi -echo "=====================================" - -# 실패한 파일이 있으면 종료 코드 1 반환 -if [ $FAIL_COUNT -gt 0 ]; then - exit 1 -else - exit 0 -fi