diff --git a/.env b/.env
new file mode 100644
index 0000000..b2093ba
--- /dev/null
+++ b/.env
@@ -0,0 +1,17 @@
+# Supabase 설정 (localhost - 같은 서버에서 실행 중)
+SUPABASE_URL=http://localhost:8000
+SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU4NTUxNjY2LCJleHAiOjQxMDI0NDQ4MDB9.jMCGL3Q-N2o_l7JQE_HrO7Uoct86CMgLsVxpabisG4I
+
+# Kong Basic Auth (선택사항)
+SUPABASE_BASIC_USER=
+SUPABASE_BASIC_PASSWORD=
+
+# Flask 설정
+PORT=5000
+# Flask 세션 보안 키 (프로덕션에서는 반드시 변경!)
+SECRET_KEY=b62388775209d9176081ad7297f8cf68b8d0f98db0e84b317304255d414680be
+
+# Web Push Notifications
+VAPID_PUBLIC_KEY=BF5nMFp4VrnV4hHkG9Rmy2n-EwEH8Z9MP_Q2sPyBYdopg-J5y61XECovyD9s9lEKAgyl_a97ZD6CEV1qzMRHaHM
+VAPID_PRIVATE_KEY=J6YKVvwLQ5FFI0nUQfF3KkwNGhXxxi-SGKCMkgfoNOI
+VAPID_SUBJECT=mailto:example@humetrain.me
diff --git a/.gradle/8.11.1/checksums/checksums.lock b/.gradle/8.11.1/checksums/checksums.lock
new file mode 100644
index 0000000..29a4775
Binary files /dev/null and b/.gradle/8.11.1/checksums/checksums.lock differ
diff --git a/.gradle/8.11.1/checksums/md5-checksums.bin b/.gradle/8.11.1/checksums/md5-checksums.bin
new file mode 100644
index 0000000..4dbe9aa
Binary files /dev/null and b/.gradle/8.11.1/checksums/md5-checksums.bin differ
diff --git a/.gradle/8.11.1/checksums/sha1-checksums.bin b/.gradle/8.11.1/checksums/sha1-checksums.bin
new file mode 100644
index 0000000..8090a08
Binary files /dev/null and b/.gradle/8.11.1/checksums/sha1-checksums.bin differ
diff --git a/.gradle/8.11.1/executionHistory/executionHistory.bin b/.gradle/8.11.1/executionHistory/executionHistory.bin
new file mode 100644
index 0000000..d00f1f5
Binary files /dev/null and b/.gradle/8.11.1/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.11.1/executionHistory/executionHistory.lock b/.gradle/8.11.1/executionHistory/executionHistory.lock
new file mode 100644
index 0000000..de534f1
Binary files /dev/null and b/.gradle/8.11.1/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.11.1/fileChanges/last-build.bin b/.gradle/8.11.1/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/.gradle/8.11.1/fileChanges/last-build.bin differ
diff --git a/.gradle/8.11.1/fileHashes/fileHashes.bin b/.gradle/8.11.1/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..9ea62ce
Binary files /dev/null and b/.gradle/8.11.1/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.11.1/fileHashes/fileHashes.lock b/.gradle/8.11.1/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..0a59093
Binary files /dev/null and b/.gradle/8.11.1/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.11.1/fileHashes/resourceHashesCache.bin b/.gradle/8.11.1/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000..f2f19f5
Binary files /dev/null and b/.gradle/8.11.1/fileHashes/resourceHashesCache.bin differ
diff --git a/43576520 b/.gradle/8.11.1/gc.properties
similarity index 100%
rename from 43576520
rename to .gradle/8.11.1/gc.properties
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..b947c44
Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..1894ada
--- /dev/null
+++ b/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Tue Oct 14 08:46:41 KST 2025
+gradle.version=8.11.1
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000..a692611
Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
new file mode 100644
index 0000000..a3f74da
Binary files /dev/null and b/.gradle/file-system.probe differ
diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/AUTHENTICATION_SUMMARY.md b/AUTHENTICATION_SUMMARY.md
new file mode 100644
index 0000000..969b7fa
--- /dev/null
+++ b/AUTHENTICATION_SUMMARY.md
@@ -0,0 +1,340 @@
+# 회원 관리 및 인증 시스템 구축 완료 ✅
+
+## 📝 작업 요약
+
+부산교통공사 1호선 고장코드 시스템에 회원 관리 및 인증 기능을 성공적으로 추가했습니다.
+
+---
+
+## 🎯 구현된 기능
+
+### 1. **이메일 인증 시스템**
+- ✅ Supabase Auth를 활용한 이메일 기반 회원가입 및 로그인
+- ✅ **humetro.busan.kr** 도메인만 허용하는 이메일 검증
+- ✅ 비밀번호 암호화 및 안전한 인증 처리
+
+### 2. **회원가입 기능**
+- ✅ 사번, 이름, 소속부서, 이메일 정보 수집
+- ✅ 부서 선택은 미리 정의된 부서 목록에서만 가능
+- ✅ 이메일 도메인 자동 검증
+- ✅ 비밀번호 확인 및 유효성 검사
+
+### 3. **부서별 권한 관리 기반 구축**
+- ✅ 부서 테이블 및 권한 테이블 설계
+- ✅ 향후 부서별 조회/수정/삭제 권한 제어 가능
+- ✅ RLS(Row Level Security) 정책 설정
+
+---
+
+## 📂 생성된 파일
+
+### 1. **auth.py** - 인증 모듈
+회원 관리 및 인증 로직을 담당하는 별도 모듈
+
+**주요 클래스: AuthManager**
+- `validate_email()`: 이메일 도메인 검증 (humetro.busan.kr)
+- `get_departments()`: 가입 가능한 부서 목록 조회
+- `signup_user()`: 회원가입 처리 (Supabase Auth + users 테이블)
+- `login_user()`: 로그인 처리 및 세션 데이터 생성
+- `logout_user()`: 로그아웃 처리
+- `check_email_exists()`: 이메일 중복 체크
+- `check_employee_id_exists()`: 사번 중복 체크
+
+### 2. **database_schema.sql** - 데이터베이스 DDL
+Supabase에서 실행할 데이터베이스 스키마 정의
+
+**생성되는 테이블:**
+
+#### 📋 departments (부서)
+```sql
+- id (SERIAL PRIMARY KEY)
+- code (VARCHAR, UNIQUE) - 부서 코드
+- name (VARCHAR) - 부서명
+- description (TEXT) - 부서 설명
+- is_active (BOOLEAN) - 활성화 여부
+- created_at, updated_at (TIMESTAMPTZ)
+```
+
+**초기 부서 데이터:**
+- SPC: 신평차량
+- NPC: 노포차량
+- VHD: 차량처
+
+> **참고**: 부서 목록은 Supabase의 `public.departments` 테이블에서 동적으로 관리됩니다.
+
+#### 👤 users (사용자)
+```sql
+- id (SERIAL PRIMARY KEY)
+- auth_id (UUID, UNIQUE) - Supabase Auth ID
+- email (VARCHAR, UNIQUE) - 이메일
+- employee_id (VARCHAR, UNIQUE) - 사번
+- name (VARCHAR) - 이름
+- department_id (INTEGER, FK) - 부서 ID
+- is_active (BOOLEAN) - 계정 활성화 여부
+- last_login_at (TIMESTAMPTZ) - 마지막 로그인
+- created_at, updated_at (TIMESTAMPTZ)
+```
+
+#### 🔐 department_permissions (부서별 권한)
+```sql
+- id (SERIAL PRIMARY KEY)
+- department_id (INTEGER, FK)
+- resource_type (VARCHAR) - 'fault_code', 'signal', 'mmi_code'
+- can_read (BOOLEAN) - 조회 권한
+- can_write (BOOLEAN) - 수정 권한
+- can_delete (BOOLEAN) - 삭제 권한
+- created_at, updated_at (TIMESTAMPTZ)
+```
+
+#### 📊 audit_logs (감사 로그)
+```sql
+- id (SERIAL PRIMARY KEY)
+- user_id (INTEGER, FK)
+- action (VARCHAR) - 'login', 'logout', 'create', 'update', 'delete'
+- resource_type (VARCHAR)
+- resource_id (VARCHAR)
+- details (JSONB)
+- ip_address (VARCHAR)
+- created_at (TIMESTAMPTZ)
+```
+
+**추가 기능:**
+- ✅ RLS(Row Level Security) 정책 적용
+- ✅ 트리거를 통한 updated_at 자동 업데이트
+- ✅ 인덱스 최적화
+- ✅ 뷰(users_with_department) 생성
+
+### 3. **templates/login.html** - 로그인 페이지
+- 이메일/비밀번호 입력 폼
+- 회원가입 페이지 링크
+- 에러/성공 메시지 표시
+- 반응형 디자인 (Pico CSS)
+
+### 4. **templates/signup.html** - 회원가입 페이지
+- 사번, 이름, 부서, 이메일, 비밀번호 입력 폼
+- 부서 선택 드롭다운 (Supabase에서 동적으로 로드)
+- 이메일 도메인 검증 (humetro.busan.kr)
+- 비밀번호 확인 검증
+- 에러 메시지 표시
+
+### 5. **app.py** - 수정된 메인 애플리케이션
+**추가된 기능:**
+- Flask 세션 설정 (SECRET_KEY, 쿠키 보안)
+- 인증 라우트 추가:
+ - `/auth/login` (GET, POST): 로그인
+ - `/auth/signup` (GET, POST): 회원가입
+ - `/auth/logout`: 로그아웃
+- `@login_required` 데코레이터: 로그인 필요 페이지 보호
+- `get_current_user()` 함수: 현재 로그인 사용자 정보 조회
+
+### 6. **templates/index.html** - 수정된 메인 페이지
+- 헤더에 사용자 정보 표시 (이름, 사번)
+- 로그아웃 버튼 추가
+- 로그인된 사용자만 접근 가능
+
+### 7. **AUTH_SETUP.md** - 설정 가이드
+상세한 설정 및 사용 방법 문서
+
+---
+
+## 🚀 설정 방법 (빠른 시작)
+
+### 1단계: 데이터베이스 스키마 적용
+
+Supabase SQL 에디터에서 실행:
+```bash
+# database_schema.sql 파일 내용 복사 후 실행
+```
+
+### 2단계: 환경 변수 설정
+
+`.env` 파일에 추가:
+```bash
+# Supabase 설정
+SUPABASE_URL=http://localhost:8000
+SUPABASE_ANON_KEY=your-anon-key-here
+
+# Flask 세션 보안 키 (반드시 변경!)
+SECRET_KEY=your-secret-key-here
+```
+
+### 3단계: 서버 실행
+
+```bash
+python app.py
+```
+
+### 4단계: 회원가입 및 로그인
+
+1. 브라우저에서 `http://localhost:5000` 접속
+2. 자동으로 로그인 페이지로 리다이렉트
+3. "회원가입" 클릭하여 계정 생성
+4. humetro.busan.kr 도메인 이메일로 가입
+
+---
+
+## 🔑 주요 보안 기능
+
+### 1. 이메일 도메인 제한 (애플리케이션 레벨)
+
+> ⚠️ **Docker 기반 Supabase 환경**: 대시보드 Authentication 설정이 제한적이므로, **애플리케이션 레벨에서만** 도메인 검증을 수행합니다.
+
+- **검증 위치**: `auth.py`의 `validate_email()` 함수
+- **검증 패턴**: `@humetro.busan.kr`로 끝나는 이메일만 허용
+
+```python
+def validate_email(self, email: str) -> tuple[bool, str]:
+ domain = email.split('@')[1]
+ if domain != self.ALLOWED_EMAIL_DOMAIN:
+ return False, f"{self.ALLOWED_EMAIL_DOMAIN} 도메인의 이메일만 사용 가능합니다."
+ return True, "OK"
+```
+
+### 2. 중복 검사
+- 이메일 중복 체크
+- 사번 중복 체크
+
+### 3. 세션 보안
+- HTTPOnly 쿠키
+- SameSite 설정
+- SECRET_KEY 암호화
+
+### 4. Row Level Security (RLS)
+- 사용자는 본인 정보만 조회/수정 가능
+- 부서 정보는 모든 인증된 사용자가 조회 가능
+
+---
+
+## 📊 데이터베이스 관계도
+
+```
+departments (부서)
+ ↓ (1:N)
+users (사용자) ← auth_id → Supabase Auth
+ ↓
+department_permissions (부서별 권한)
+ ↓
+audit_logs (감사 로그)
+```
+
+---
+
+## 🎨 사용자 흐름
+
+### 회원가입 플로우
+```
+1. /auth/signup 접속
+2. 부서 목록 로드 (Supabase departments 테이블)
+3. 정보 입력 (사번, 이름, 부서, 이메일, 비밀번호)
+4. 이메일 도메인 검증 (humetro.busan.kr)
+5. Supabase Auth에 사용자 생성
+6. users 테이블에 정보 저장
+7. 로그인 페이지로 리다이렉트
+```
+
+### 로그인 플로우
+```
+1. /auth/login 접속
+2. 이메일/비밀번호 입력
+3. Supabase Auth 인증
+4. users 테이블에서 사용자 정보 조회
+5. 세션에 사용자 정보 저장
+6. 메인 페이지로 리다이렉트
+```
+
+### 로그아웃 플로우
+```
+1. /auth/logout 접속
+2. Supabase Auth 로그아웃
+3. 세션 클리어
+4. 로그인 페이지로 리다이렉트
+```
+
+---
+
+## 🔍 API 엔드포인트
+
+### 인증 관련
+- `GET /auth/login` - 로그인 페이지
+- `POST /auth/login` - 로그인 처리
+- `GET /auth/signup` - 회원가입 페이지
+- `POST /auth/signup` - 회원가입 처리
+- `GET /auth/logout` - 로그아웃
+
+### 메인
+- `GET /` - 메인 페이지 (로그인 필요)
+
+---
+
+## 🛠️ 향후 확장 가능 사항
+
+### 1. 부서별 권한 적용
+`department_permissions` 테이블을 활용하여:
+- 고장코드 조회/수정 권한 제어
+- TCMS 신호 조회/수정 권한 제어
+- MMI 코드 조회/수정 권한 제어
+
+### 2. 감사 로그 활용
+`audit_logs` 테이블을 활용하여:
+- 사용자 활동 추적
+- 데이터 수정 이력 관리
+- 보안 모니터링
+
+### 3. 비밀번호 정책 강화
+- 대문자, 숫자, 특수문자 포함 필수
+- 비밀번호 변경 주기 설정
+- 비밀번호 재사용 방지
+
+### 4. 2단계 인증 (2FA)
+- OTP 인증 추가
+- SMS 인증 추가
+
+### 5. 관리자 페이지
+- 사용자 관리 (활성화/비활성화)
+- 부서 관리
+- 권한 관리
+
+---
+
+## 📋 체크리스트
+
+### 설정 완료 확인
+- [ ] `database_schema.sql` 실행
+- [ ] `.env` 파일에 `SECRET_KEY` 설정
+- [ ] Supabase Auth 이메일 인증 활성화
+- [ ] 부서 데이터 확인 (`SELECT * FROM departments`)
+- [ ] 테스트 회원가입 수행
+- [ ] 테스트 로그인 수행
+
+### 프로덕션 배포 전
+- [ ] `SECRET_KEY` 변경 (강력한 랜덤 키)
+- [ ] HTTPS 활성화
+- [ ] CORS 설정 검토
+- [ ] Supabase 프로덕션 환경 설정
+- [ ] 이메일 템플릿 커스터마이징
+- [ ] 로그 모니터링 설정
+
+---
+
+## 📚 관련 문서
+
+- **AUTH_SETUP.md**: 상세 설정 가이드 및 트러블슈팅
+- **database_schema.sql**: 데이터베이스 스키마 전체
+- **auth.py**: 인증 모듈 소스 코드
+
+---
+
+## 🤝 기술 스택
+
+- **Backend**: Flask (Python)
+- **Authentication**: Supabase Auth
+- **Database**: Supabase (PostgreSQL)
+- **Frontend**: Pico CSS, HTMX
+- **Session**: Flask Session (서버 사이드)
+
+---
+
+**작성일**: 2024년 10월
+**부산교통공사 차량처**
+**1호선 고장코드 시스템 v2.0**
+
diff --git a/AUTH_SETUP.md b/AUTH_SETUP.md
new file mode 100644
index 0000000..30064f3
--- /dev/null
+++ b/AUTH_SETUP.md
@@ -0,0 +1,370 @@
+# 회원 관리 및 인증 시스템 설정 가이드
+
+## 📋 개요
+
+부산교통공사 1호선 고장코드 시스템에 회원 관리 및 인증 기능이 추가되었습니다.
+
+### 주요 기능
+- ✅ **이메일 인증**: Supabase Auth를 사용한 이메일 기반 인증
+- ✅ **도메인 제한**: humetro.busan.kr 도메인만 가입 가능
+- ✅ **부서별 관리**: 부서 단위로 사용자 관리 및 권한 제어
+- ✅ **세션 관리**: Flask 세션을 통한 로그인 상태 유지
+
+---
+
+## 🗄️ 1. 데이터베이스 설정
+
+### 1.1 Supabase SQL 에디터에서 스키마 생성
+
+`database_schema.sql` 파일의 내용을 Supabase SQL 에디터에서 실행하세요.
+
+```bash
+# 파일 위치
+./database_schema.sql
+```
+
+이 스크립트는 다음 테이블을 생성합니다:
+- **departments**: 부서 정보
+- **users**: 사용자 정보
+- **department_permissions**: 부서별 권한 (조회/수정/삭제)
+- **audit_logs**: 감사 로그 (선택사항)
+
+### 1.2 초기 부서 데이터
+
+스크립트 실행 시 다음 부서가 자동으로 생성됩니다:
+
+| 코드 | 부서명 | 설명 |
+|------|--------|------|
+| SPC | 신평차량 | 신평차량사업소 |
+| NPC | 노포차량 | 노포차량사업소 |
+| VHD | 차량처 | 차량처 |
+
+> **참고**: 추가 부서가 필요한 경우 Supabase에서 직접 추가하거나 관리자 페이지를 통해 관리할 수 있습니다.
+
+**추가 부서가 필요한 경우**:
+```sql
+INSERT INTO public.departments (code, name, description)
+VALUES ('NEW001', '새로운부서', '부서 설명');
+```
+
+---
+
+## 🔐 2. Supabase Auth 설정
+
+### 2.1 Docker 기반 Supabase 환경
+
+> ⚠️ **중요**: Docker 기반 Supabase를 사용하는 경우, 대시보드의 Authentication 설정이 제한적입니다.
+>
+> 따라서 **애플리케이션 레벨에서만 이메일 도메인 검증**을 수행합니다.
+
+### 2.2 이메일 도메인 검증 (애플리케이션 레벨)
+
+`auth.py` 모듈에서 자동으로 처리됩니다:
+
+```python
+# humetro.busan.kr 도메인만 허용
+ALLOWED_EMAIL_DOMAIN = "humetro.busan.kr"
+
+def validate_email(self, email: str) -> tuple[bool, str]:
+ domain = email.split('@')[1]
+ if domain != self.ALLOWED_EMAIL_DOMAIN:
+ return False, f"{self.ALLOWED_EMAIL_DOMAIN} 도메인의 이메일만 사용 가능합니다."
+ return True, "OK"
+```
+
+### 2.3 Supabase Auth 기본 설정 확인
+
+Docker Supabase에서 확인할 사항:
+- Supabase가 정상적으로 실행 중인지 확인
+- Kong Gateway (기본 포트 8000)가 작동하는지 확인
+- Auth 서비스가 활성화되어 있는지 확인
+
+```bash
+# Supabase 상태 확인
+docker ps | grep supabase
+```
+
+---
+
+## ⚙️ 3. 환경 변수 설정
+
+### 3.1 Flask 백엔드 `.env` 파일 위치
+
+> ⚠️ **중요**: `SECRET_KEY`는 **Flask 백엔드**의 `.env` 파일에 설정해야 합니다!
+
+**파일 위치**: `/home/ckh08045/Tr_Code/.env` (app.py가 있는 디렉토리)
+
+```bash
+# Supabase 설정
+SUPABASE_URL=http://localhost:8000
+SUPABASE_ANON_KEY=your-anon-key-here
+
+# Flask 세션 보안 키 (프로덕션에서는 반드시 변경!)
+SECRET_KEY=your-secret-key-here-change-in-production
+
+# Kong Basic Auth (선택사항)
+SUPABASE_BASIC_USER=
+SUPABASE_BASIC_PASSWORD=
+```
+
+### 3.2 SECRET_KEY 생성
+
+Python으로 안전한 SECRET_KEY 생성:
+
+```python
+import secrets
+print(secrets.token_hex(32))
+```
+
+생성된 키를 **Flask 백엔드 `.env`** 파일의 `SECRET_KEY`에 설정하세요.
+
+### 3.3 프론트엔드와 백엔드 .env 구분
+
+**Flask 백엔드 .env** (`/home/ckh08045/Tr_Code/.env`):
+- `SUPABASE_URL`
+- `SUPABASE_ANON_KEY`
+- `SECRET_KEY` ← **여기에 설정!**
+- `SUPABASE_BASIC_USER`
+- `SUPABASE_BASIC_PASSWORD`
+
+**TWA 프론트엔드 .env** (`/home/ckh08045/Tr_Code/twa-frontend/.env`):
+- Vue.js 관련 설정
+- API 엔드포인트 등
+- `SECRET_KEY`는 **필요 없음**
+
+---
+
+## 🚀 4. 애플리케이션 실행
+
+### 4.1 의존성 설치
+
+```bash
+pip install -r requirements.txt
+```
+
+### 4.2 서버 실행
+
+```bash
+python app.py
+```
+
+서버가 `http://localhost:5000`에서 실행됩니다.
+
+---
+
+## 📱 5. 사용 방법
+
+### 5.1 회원가입
+
+1. 브라우저에서 `http://localhost:5000` 접속
+2. 자동으로 로그인 페이지로 리다이렉트됨
+3. **회원가입** 버튼 클릭
+4. 다음 정보 입력:
+ - 사번
+ - 이름
+ - 소속 부서 (드롭다운에서 선택)
+ - 이메일 (humetro.busan.kr 도메인만)
+ - 비밀번호 (최소 8자)
+
+5. 회원가입 완료 후 이메일 인증 (Supabase Auth 설정에 따라)
+
+### 5.2 로그인
+
+1. 등록한 이메일과 비밀번호로 로그인
+2. 로그인 성공 시 메인 페이지로 이동
+3. 헤더에 사용자 이름과 사번 표시
+
+### 5.3 로그아웃
+
+- 헤더의 **로그아웃** 버튼 클릭
+
+---
+
+## 🔑 6. 권한 관리 (향후 확장)
+
+### 6.1 부서별 권한 조회
+
+```sql
+SELECT d.name, dp.resource_type, dp.can_read, dp.can_write, dp.can_delete
+FROM public.department_permissions dp
+JOIN public.departments d ON dp.department_id = d.id
+WHERE d.code = 'SPC';
+```
+
+### 6.2 권한 수정
+
+```sql
+UPDATE public.department_permissions
+SET can_write = true
+WHERE department_id = 1 AND resource_type = 'fault_code';
+```
+
+### 6.3 애플리케이션에서 권한 체크 (예시)
+
+```python
+def check_permission(user, resource_type, action):
+ """
+ user: 현재 사용자 정보
+ resource_type: 'fault_code', 'signal', 'mmi_code'
+ action: 'read', 'write', 'delete'
+ """
+ with build_pg_client() as c:
+ r = c.get(
+ "/department_permissions",
+ params={
+ "department_id": f"eq.{user['department_id']}",
+ "resource_type": f"eq.{resource_type}"
+ }
+ )
+ r.raise_for_status()
+ perms = r.json()
+ if perms:
+ return perms[0].get(f"can_{action}", False)
+ return False
+```
+
+---
+
+## 📊 7. 데이터베이스 스키마
+
+### 7.1 테이블 구조
+
+#### departments (부서)
+- `id` (PK): 부서 ID
+- `code`: 부서 코드 (UNIQUE)
+- `name`: 부서명
+- `description`: 설명
+- `is_active`: 활성화 여부
+- `created_at`, `updated_at`: 타임스탬프
+
+#### users (사용자)
+- `id` (PK): 사용자 ID
+- `auth_id`: Supabase Auth 사용자 ID (UNIQUE)
+- `email`: 이메일 (UNIQUE)
+- `employee_id`: 사번 (UNIQUE)
+- `name`: 이름
+- `department_id` (FK): 부서 ID
+- `is_active`: 계정 활성화 여부
+- `last_login_at`: 마지막 로그인 시각
+- `created_at`, `updated_at`: 타임스탬프
+
+#### department_permissions (부서별 권한)
+- `id` (PK): 권한 ID
+- `department_id` (FK): 부서 ID
+- `resource_type`: 리소스 타입 ('fault_code', 'signal', 'mmi_code')
+- `can_read`: 조회 권한
+- `can_write`: 수정 권한
+- `can_delete`: 삭제 권한
+- `created_at`, `updated_at`: 타임스탬프
+
+---
+
+## 🔍 8. 트러블슈팅
+
+### 8.1 로그인 실패
+
+**증상**: "이메일 또는 비밀번호가 올바르지 않습니다."
+
+**해결 방법**:
+1. 이메일 주소가 `@humetro.busan.kr`로 끝나는지 확인
+2. 비밀번호가 8자 이상인지 확인
+3. Supabase Auth가 활성화되어 있는지 확인
+4. `users` 테이블에 사용자가 존재하는지 확인:
+ ```sql
+ SELECT * FROM public.users WHERE email = 'user@humetro.busan.kr';
+ ```
+
+### 8.2 회원가입 실패
+
+**증상**: "회원가입에 실패했습니다."
+
+**해결 방법**:
+1. Supabase Auth가 활성화되어 있는지 확인
+2. 이메일이 이미 등록되어 있는지 확인
+3. 사번이 중복되지 않는지 확인
+4. `departments` 테이블에 부서가 존재하는지 확인
+
+### 8.3 부서 목록이 표시되지 않음
+
+**증상**: 회원가입 페이지에서 부서 선택 드롭다운이 비어있음
+
+**해결 방법**:
+1. `database_schema.sql`이 정상적으로 실행되었는지 확인
+2. `departments` 테이블에 데이터가 있는지 확인:
+ ```sql
+ SELECT * FROM public.departments WHERE is_active = true;
+ ```
+
+### 8.4 세션이 유지되지 않음
+
+**증상**: 페이지를 새로고침하면 로그인이 풀림
+
+**해결 방법**:
+1. `.env` 파일에 `SECRET_KEY`가 설정되어 있는지 확인
+2. Flask 앱이 세션 쿠키를 설정할 수 있는지 확인 (HTTPS/HTTP 설정)
+
+---
+
+## 🛡️ 9. 보안 고려사항
+
+### 9.1 프로덕션 체크리스트
+
+- [ ] `SECRET_KEY` 변경 (절대 기본값 사용 금지)
+- [ ] HTTPS 사용
+- [ ] Supabase RLS(Row Level Security) 활성화
+- [ ] 비밀번호 정책 강화 (대문자, 숫자, 특수문자 포함)
+- [ ] 세션 타임아웃 설정
+- [ ] CORS 설정 검토 (프로덕션에서는 특정 도메인만 허용)
+- [ ] 로그 모니터링 (`audit_logs` 테이블 활용)
+
+### 9.2 RLS 정책 (이미 적용됨)
+
+`database_schema.sql`에 다음 RLS 정책이 포함되어 있습니다:
+- 부서 목록은 모든 인증된 사용자가 조회 가능
+- 사용자는 본인 정보만 조회/수정 가능
+
+---
+
+## 📚 10. 참고 자료
+
+### 10.1 파일 구조
+
+```
+Tr_Code/
+├── app.py # 메인 애플리케이션 (인증 라우트 포함)
+├── auth.py # 인증 모듈 (AuthManager 클래스)
+├── database_schema.sql # 데이터베이스 스키마
+├── templates/
+│ ├── index.html # 메인 페이지 (로그인 필요)
+│ ├── login.html # 로그인 페이지
+│ └── signup.html # 회원가입 페이지
+└── .env # 환경 변수 설정
+```
+
+### 10.2 핵심 모듈
+
+#### `auth.py` - AuthManager 클래스
+- `validate_email()`: 이메일 도메인 검증
+- `get_departments()`: 부서 목록 조회
+- `signup_user()`: 회원가입 처리
+- `login_user()`: 로그인 처리
+- `logout_user()`: 로그아웃 처리
+
+#### `app.py` - 인증 라우트
+- `/auth/login`: 로그인 페이지 및 처리
+- `/auth/signup`: 회원가입 페이지 및 처리
+- `/auth/logout`: 로그아웃 처리
+- `/`: 메인 페이지 (로그인 필요)
+
+---
+
+## 🤝 11. 문의 및 지원
+
+시스템 관련 문의사항은 차량처 시스템 관리자에게 연락하세요.
+
+---
+
+**작성일**: 2024년 10월
+**버전**: 1.0
+**부산교통공사 차량처**
+
diff --git a/BIOMETRIC_AUTH_GUIDE.md b/BIOMETRIC_AUTH_GUIDE.md
new file mode 100644
index 0000000..99e1bad
--- /dev/null
+++ b/BIOMETRIC_AUTH_GUIDE.md
@@ -0,0 +1,317 @@
+# 생체인증 가이드 (Credential Management API)
+
+## 📱 개요
+
+TWA(Trusted Web Activity) 환경에서 WebAuthn / Credential Management API를 활용한 생체인증 기능을 제공합니다.
+
+## ✨ 주요 기능
+
+### 1. 생체인증 등록
+- 로그인 후 생체인증(지문, 얼굴 인식 등)을 등록할 수 있습니다
+- 사용자의 사번과 이름으로 credential을 생성합니다
+- 등록된 credential은 Supabase에 안전하게 저장됩니다
+
+### 2. 생체인증 로그인
+- 등록된 생체인증으로 빠르게 로그인할 수 있습니다
+- 비밀번호 입력 없이 지문/얼굴 인식만으로 인증됩니다
+- 플랫폼 인증 기능을 사용하여 보안성이 높습니다
+
+### 3. 생체인증 해제
+- 필요시 생체인증을 해제할 수 있습니다
+- 해제 후 다시 등록할 수 있습니다
+
+## 🏗️ 아키텍처
+
+### Frontend (Vue.js/TypeScript)
+
+#### 1. Composable: `useBiometric.ts`
+```typescript
+// 생체인증 지원 여부 확인
+await biometric.checkSupport()
+
+// 생체인증 등록
+const result = await biometric.register(employeeId, userName)
+
+// 생체인증 로그인
+const result = await biometric.authenticate()
+
+// 생체인증 해제
+const result = await biometric.unregister()
+```
+
+#### 2. 상태 관리
+- `isSupported`: 브라우저가 WebAuthn을 지원하는지 여부
+- `isAvailable`: 플랫폼 생체인증이 사용 가능한지 여부
+- `isEnrolled`: 사용자가 생체인증을 등록했는지 여부
+- `canUse`: 생체인증을 사용할 수 있는지 여부
+- `canRegister`: 생체인증을 등록할 수 있는지 여부
+- `canAuthenticate`: 생체인증으로 로그인할 수 있는지 여부
+
+### Backend (Flask/Python)
+
+#### 1. 생체인증 등록 Challenge
+```
+POST /api/biometric/register-challenge
+{
+ "employeeId": "20240001"
+}
+```
+
+**Response:**
+```json
+{
+ "success": true,
+ "challenge": "random_base64_string",
+ "userId": "20240001"
+}
+```
+
+#### 2. Credential 등록
+```
+POST /api/biometric/register
+{
+ "employeeId": "20240001",
+ "credential": {
+ "id": "credential_id",
+ "rawId": "base64_raw_id",
+ "response": {
+ "clientDataJSON": "base64_client_data",
+ "attestationObject": "base64_attestation"
+ },
+ "type": "public-key"
+ }
+}
+```
+
+#### 3. 로그인 Challenge
+```
+POST /api/biometric/login-challenge
+{
+ "employeeId": "20240001"
+}
+```
+
+#### 4. 생체인증 로그인
+```
+POST /api/biometric/login
+{
+ "employeeId": "20240001",
+ "assertion": {
+ "id": "credential_id",
+ "rawId": "base64_raw_id",
+ "response": {
+ "clientDataJSON": "base64_client_data",
+ "authenticatorData": "base64_auth_data",
+ "signature": "base64_signature"
+ },
+ "type": "public-key"
+ }
+}
+```
+
+**Response:**
+```json
+{
+ "success": true,
+ "user": {
+ "id": 1,
+ "employee_id": "20240001",
+ "name": "홍길동",
+ "email": "hong@humetro.busan.kr",
+ "department_id": 1
+ }
+}
+```
+
+#### 5. 생체인증 해제
+```
+POST /api/biometric/unregister
+{
+ "employeeId": "20240001"
+}
+```
+
+## 🗄️ 데이터베이스 스키마
+
+### biometric_credentials 테이블
+
+```sql
+CREATE TABLE IF NOT EXISTS public.biometric_credentials (
+ id SERIAL PRIMARY KEY,
+ employee_id VARCHAR(50) NOT NULL REFERENCES public.users(employee_id) ON DELETE CASCADE,
+ credential_id VARCHAR(255) UNIQUE NOT NULL,
+ credential_data JSONB NOT NULL,
+ created_at TIMESTAMPTZ DEFAULT NOW(),
+ last_used_at TIMESTAMPTZ,
+ UNIQUE(employee_id, credential_id)
+);
+
+CREATE INDEX idx_biometric_employee_id ON public.biometric_credentials(employee_id);
+CREATE INDEX idx_biometric_credential_id ON public.biometric_credentials(credential_id);
+```
+
+**필드 설명:**
+- `employee_id`: 사용자 사번 (외래키)
+- `credential_id`: WebAuthn credential ID (고유값)
+- `credential_data`: Credential 전체 데이터 (JSON)
+- `created_at`: 등록 일시
+- `last_used_at`: 마지막 사용 일시
+
+## 🔐 보안 고려사항
+
+### 1. Challenge-Response 인증
+- 서버에서 생성한 랜덤 challenge를 사용합니다
+- Challenge는 세션에 저장되고 10분간 유효합니다
+- 각 인증 시도마다 새로운 challenge를 생성합니다
+
+### 2. 플랫폼 인증
+- `authenticatorAttachment: 'platform'`을 사용하여 기기 내장 생체인식만 허용합니다
+- `userVerification: 'required'`로 사용자 검증을 필수로 합니다
+
+### 3. Credential 검증
+- 서버에 저장된 credential과 비교하여 검증합니다
+- 실제 프로덕션에서는 공개키 암호화를 사용한 서명 검증이 필요합니다 (현재는 간소화된 버전)
+
+### 4. 세션 관리
+- 생체인증 성공 시 Flask 세션에 사용자 정보를 저장합니다
+- 세션은 httponly 쿠키로 안전하게 관리됩니다
+
+## 📱 TWA 환경에서의 동작
+
+### 1. Android TWA
+- Chrome의 WebAuthn API를 통해 Android 생체인식(지문, 얼굴)을 사용합니다
+- Android Keystore에 안전하게 credential이 저장됩니다
+- Google Play Services를 통한 FIDO2 인증을 지원합니다
+
+### 2. 지원 여부 확인
+```javascript
+// PublicKeyCredential API 지원 확인
+if (!window.PublicKeyCredential) {
+ console.log('생체인증 미지원')
+}
+
+// 플랫폼 인증 가능 여부
+const available = await PublicKeyCredential
+ .isUserVerifyingPlatformAuthenticatorAvailable()
+```
+
+### 3. 사용자 경험
+1. 로그인 페이지에서 생체인증 가능 여부를 자동으로 확인합니다
+2. 등록된 생체인증이 있으면 "생체인증으로 로그인" 버튼이 표시됩니다
+3. 버튼 클릭 시 기기의 생체인증 UI가 표시됩니다
+4. 인증 성공 시 자동으로 로그인됩니다
+
+## 🚀 사용 방법
+
+### 1. 생체인증 등록 (로그인 후)
+
+```typescript
+import { useBiometric } from '@/composables/useBiometric'
+
+const biometric = useBiometric()
+
+// 지원 여부 확인
+await biometric.checkSupport()
+
+if (biometric.canRegister.value) {
+ // 등록
+ const result = await biometric.register(employeeId, userName)
+
+ if (result.success) {
+ console.log('생체인증 등록 성공')
+ }
+}
+```
+
+### 2. 생체인증 로그인
+
+```typescript
+if (biometric.canAuthenticate.value) {
+ const result = await biometric.authenticate()
+
+ if (result.success && result.user) {
+ // 로그인 성공
+ authStore.setUser(result.user)
+ router.push('/')
+ }
+}
+```
+
+### 3. LoginView에서의 통합
+
+```vue
+
+
+
+
+
+
+ 로그인 후 생체인증을 등록할 수 있습니다.
+
+
+
+
+```
+
+## 🔧 문제 해결
+
+### 1. 생체인증이 표시되지 않음
+- 브라우저가 WebAuthn을 지원하는지 확인
+- HTTPS 환경에서만 동작 (localhost는 예외)
+- 기기에 생체인증이 설정되어 있는지 확인
+
+### 2. 등록 실패
+- Challenge가 만료되었을 수 있음 (10분)
+- 네트워크 연결 확인
+- 콘솔 로그에서 에러 메시지 확인
+
+### 3. 로그인 실패
+- 등록된 credential이 삭제되었을 수 있음
+- localStorage에서 `biometric_credential_id` 확인
+- 데이터베이스에 credential이 존재하는지 확인
+
+## 📝 TODO (향후 개선사항)
+
+1. **서명 검증 구현**
+ - 현재는 credential_id만 비교하는 간소화된 버전
+ - 실제 공개키 암호화 서명 검증 추가 필요
+
+2. **여러 Credential 지원**
+ - 한 사용자가 여러 기기에서 생체인증 등록 가능하도록
+
+3. **Credential 관리 UI**
+ - 등록된 기기 목록 표시
+ - 개별 credential 삭제 기능
+
+4. **마지막 사용 시간 업데이트**
+ - 로그인 시 `last_used_at` 필드 업데이트
+
+5. **에러 로깅 개선**
+ - 생체인증 관련 에러를 audit_logs에 기록
+
+## 🔗 참고 자료
+
+- [WebAuthn Guide](https://webauthn.guide/)
+- [MDN - Web Authentication API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API)
+- [FIDO Alliance](https://fidoalliance.org/)
+- [Chrome WebAuthn](https://developers.google.com/web/updates/2018/05/webauthn)
+
diff --git a/200-mmi.csv b/Back_Data/200-mmi.csv
similarity index 100%
rename from 200-mmi.csv
rename to Back_Data/200-mmi.csv
diff --git a/FaultCode.xlsx b/Back_Data/FaultCode.xlsx
similarity index 100%
rename from FaultCode.xlsx
rename to Back_Data/FaultCode.xlsx
diff --git a/rotem_f.csv b/Back_Data/rotem_f.csv
similarity index 100%
rename from rotem_f.csv
rename to Back_Data/rotem_f.csv
diff --git a/rotem_f2.csv b/Back_Data/rotem_f2.csv
similarity index 100%
rename from rotem_f2.csv
rename to Back_Data/rotem_f2.csv
diff --git a/woo.csv b/Back_Data/woo.csv
similarity index 100%
rename from woo.csv
rename to Back_Data/woo.csv
diff --git a/woo.csv.bak b/Back_Data/woo.csv.bak
similarity index 100%
rename from woo.csv.bak
rename to Back_Data/woo.csv.bak
diff --git a/woo_sig.csv b/Back_Data/woo_sig.csv
similarity index 100%
rename from woo_sig.csv
rename to Back_Data/woo_sig.csv
diff --git a/woojin.xlsx b/Back_Data/woojin.xlsx
similarity index 100%
rename from woojin.xlsx
rename to Back_Data/woojin.xlsx
diff --git a/로템_고장.xlsx b/Back_Data/로템_고장.xlsx
similarity index 100%
rename from 로템_고장.xlsx
rename to Back_Data/로템_고장.xlsx
diff --git a/우진200량 TCMS 고장목록.xlsm b/Back_Data/우진200량 TCMS 고장목록.xlsm
similarity index 100%
rename from 우진200량 TCMS 고장목록.xlsm
rename to Back_Data/우진200량 TCMS 고장목록.xlsm
diff --git a/우진신호.xlsx b/Back_Data/우진신호.xlsx
similarity index 100%
rename from 우진신호.xlsx
rename to Back_Data/우진신호.xlsx
diff --git a/DEPARTMENTS_API.md b/DEPARTMENTS_API.md
new file mode 100644
index 0000000..aaee7a9
--- /dev/null
+++ b/DEPARTMENTS_API.md
@@ -0,0 +1,311 @@
+# 📋 부서 관리 API 문서
+
+## 개요
+
+회원가입 시 부서 선택을 위한 동적 부서 목록 API입니다.
+
+---
+
+## API 엔드포인트
+
+### GET `/api/departments`
+
+부서 목록을 조회합니다.
+
+**인증**: 불필요 (공개 API)
+
+**요청**:
+```http
+GET /api/departments HTTP/1.1
+Host: localhost:5000
+```
+
+**응답 (성공)**:
+```json
+{
+ "success": true,
+ "departments": [
+ {
+ "id": 1,
+ "code": "SPC",
+ "name": "신평차량",
+ "description": "신평차량사업소",
+ "is_active": true
+ },
+ {
+ "id": 2,
+ "code": "NPC",
+ "name": "노포차량",
+ "description": "노포차량사업소",
+ "is_active": true
+ },
+ {
+ "id": 3,
+ "code": "VHD",
+ "name": "차량처",
+ "description": "차량처",
+ "is_active": true
+ }
+ ]
+}
+```
+
+**응답 (실패)**:
+```json
+{
+ "success": false,
+ "error": "오류 메시지"
+}
+```
+
+---
+
+## 프론트엔드 사용법
+
+### Vue.js (TWA 프론트엔드)
+
+`SignupView.vue`에서 부서 목록 로드:
+
+```typescript
+// 부서 목록 가져오기
+async function fetchDepartments() {
+ loadingDepartments.value = true
+ try {
+ const response = await fetch('/api/departments')
+
+ if (!response.ok) {
+ throw new Error('부서 목록을 가져오는데 실패했습니다.')
+ }
+
+ const data = await response.json()
+ departments.value = data.departments || []
+ } catch (error) {
+ console.error('부서 목록 로딩 실패:', error)
+ errorMessage.value = '부서 목록을 불러오는데 실패했습니다.'
+ } finally {
+ loadingDepartments.value = false
+ }
+}
+
+// 컴포넌트 마운트 시 로드
+onMounted(() => {
+ fetchDepartments()
+})
+```
+
+### HTML 템플릿 사용
+
+```html
+
+```
+
+---
+
+## 데이터베이스 구조
+
+### departments 테이블
+
+```sql
+CREATE TABLE public.departments (
+ id SERIAL PRIMARY KEY,
+ code VARCHAR(20) UNIQUE NOT NULL,
+ name VARCHAR(100) NOT NULL,
+ description TEXT,
+ is_active BOOLEAN DEFAULT true,
+ created_at TIMESTAMPTZ DEFAULT NOW(),
+ updated_at TIMESTAMPTZ DEFAULT NOW()
+);
+```
+
+### 초기 데이터
+
+```sql
+INSERT INTO public.departments (code, name, description) VALUES
+ ('SPC', '신평차량', '신평차량사업소'),
+ ('NPC', '노포차량', '노포차량사업소'),
+ ('VHD', '차량처', '차량처')
+ON CONFLICT (code) DO NOTHING;
+```
+
+---
+
+## 부서 추가 방법
+
+### 1. Supabase SQL 에디터에서 직접 추가
+
+```sql
+INSERT INTO public.departments (code, name, description)
+VALUES ('NEW001', '새로운부서', '부서 설명');
+```
+
+### 2. 관리자 페이지 (향후 구현)
+
+관리자 권한이 있는 사용자가 웹 인터페이스를 통해 부서를 추가/수정/삭제할 수 있습니다.
+
+---
+
+## 필터링
+
+### 활성화된 부서만 조회
+
+현재 API는 모든 부서를 반환합니다. 비활성화된 부서를 제외하려면:
+
+```python
+@app.route("/api/departments")
+def api_departments():
+ """부서 목록 조회 API (활성화된 부서만)"""
+ try:
+ with build_pg_client() as c:
+ r = c.get(
+ "/departments",
+ params={
+ "select": "id,code,name,description,is_active",
+ "is_active": "eq.true", # 활성화된 부서만
+ "order": "name.asc"
+ }
+ )
+ r.raise_for_status()
+ departments = r.json() or []
+
+ return {
+ "success": True,
+ "departments": departments
+ }
+ except Exception as e:
+ return {
+ "success": False,
+ "error": str(e)
+ }, 500
+```
+
+---
+
+## 에러 처리
+
+### 프론트엔드 에러 처리
+
+```typescript
+try {
+ const response = await fetch('/api/departments')
+
+ if (!response.ok) {
+ throw new Error('부서 목록을 가져오는데 실패했습니다.')
+ }
+
+ const data = await response.json()
+
+ if (!data.success) {
+ throw new Error(data.error || '알 수 없는 오류')
+ }
+
+ departments.value = data.departments || []
+} catch (error) {
+ console.error('부서 목록 로딩 실패:', error)
+ errorMessage.value = '부서 목록을 불러오는데 실패했습니다.'
+ setTimeout(() => errorMessage.value = '', 3000)
+}
+```
+
+---
+
+## 성능 최적화
+
+### 캐싱
+
+부서 목록은 자주 변경되지 않으므로 캐싱을 적용할 수 있습니다:
+
+```typescript
+// 간단한 메모리 캐시 (5분)
+let cachedDepartments: Department[] | null = null
+let cacheTime: number | null = null
+const CACHE_DURATION = 5 * 60 * 1000 // 5분
+
+async function fetchDepartments() {
+ const now = Date.now()
+
+ // 캐시가 유효한 경우
+ if (cachedDepartments && cacheTime && now - cacheTime < CACHE_DURATION) {
+ departments.value = cachedDepartments
+ return
+ }
+
+ // API 호출
+ loadingDepartments.value = true
+ try {
+ const response = await fetch('/api/departments')
+ const data = await response.json()
+
+ if (data.success) {
+ cachedDepartments = data.departments
+ cacheTime = now
+ departments.value = data.departments
+ }
+ } finally {
+ loadingDepartments.value = false
+ }
+}
+```
+
+---
+
+## 테스트
+
+### cURL로 테스트
+
+```bash
+curl -X GET http://localhost:5000/api/departments
+```
+
+### 브라우저 콘솔에서 테스트
+
+```javascript
+fetch('/api/departments')
+ .then(res => res.json())
+ .then(data => console.log(data))
+```
+
+---
+
+## 문제 해결
+
+### 부서 목록이 비어있음
+
+**원인**: `departments` 테이블에 데이터가 없음
+
+**해결**:
+```sql
+SELECT * FROM public.departments;
+
+-- 데이터가 없으면 초기 데이터 삽입
+INSERT INTO public.departments (code, name, description) VALUES
+ ('SPC', '신평차량', '신평차량사업소'),
+ ('NPC', '노포차량', '노포차량사업소'),
+ ('VHD', '차량처', '차량처')
+ON CONFLICT (code) DO NOTHING;
+```
+
+### API 호출 실패
+
+**원인**: Flask 서버가 실행되지 않음 또는 CORS 오류
+
+**해결**:
+```bash
+# 서버 실행 확인
+python app.py
+
+# CORS 설정 확인 (app.py)
+CORS(app, origins=["*"], supports_credentials=True)
+```
+
+---
+
+**부산교통공사 차량처**
+**1호선 고장코드 시스템**
+
diff --git a/EMAIL_CODE_AUTH_GUIDE.md b/EMAIL_CODE_AUTH_GUIDE.md
new file mode 100644
index 0000000..28c10ec
--- /dev/null
+++ b/EMAIL_CODE_AUTH_GUIDE.md
@@ -0,0 +1,490 @@
+# 이메일 코드 인증 가이드
+
+## 📧 개요
+
+링크 클릭 방식 대신 **6자리 숫자 코드 입력 방식**의 이메일 인증을 사용합니다. 이는 스팸/피싱 의심을 줄이고 더 안전한 인증 경험을 제공합니다.
+
+## ✨ 주요 기능
+
+### 1. 회원가입 이메일 인증
+- 회원가입 시 입력한 이메일로 6자리 인증 코드 발송
+- 코드 입력 및 검증 후 회원가입 완료
+- 코드 유효 시간: 5분
+- 최대 5회 시도 가능
+
+### 2. 비밀번호 재설정 이메일 인증
+- 비밀번호 찾기 시 이메일로 6자리 인증 코드 발송
+- 코드 검증 후 비밀번호 재설정 페이지로 이동
+- 코드 유효 시간: 5분
+- 재설정 페이지 접근 유효 시간: 10분
+
+### 3. 코드 재전송
+- 코드가 만료되거나 받지 못한 경우 재전송 가능
+- 재전송은 첫 발송 후 30초 경과 시 가능
+
+## 🎨 UI/UX 특징
+
+### 1. 6자리 코드 입력
+- 각 자리별 개별 입력 필드
+- 자동으로 다음 칸으로 포커스 이동
+- 붙여넣기 지원 (6자리 숫자 자동 분배)
+- 백스페이스로 이전 칸으로 이동
+
+### 2. 실시간 타이머
+- 남은 시간을 시각적으로 표시 (분:초)
+- 시간 만료 시 경고 메시지
+- 재전송 버튼 활성화 타이밍 표시
+
+### 3. 에러 처리
+- 잘못된 코드 입력 시 shake 애니메이션
+- 남은 시도 횟수 표시
+- 명확한 에러 메시지
+
+## 🏗️ 아키텍처
+
+### Frontend Component: `EmailCodeVerification.vue`
+
+#### Props
+```typescript
+interface Props {
+ email: string // 인증 대상 이메일
+ title?: string // 제목 (기본값: '이메일 인증')
+ expirySeconds?: number // 만료 시간 (기본값: 300초 = 5분)
+}
+```
+
+#### Events
+```typescript
+// 코드 검증 요청
+emit('verify', code: string)
+
+// 코드 재전송 요청
+emit('resend')
+```
+
+#### 사용 예시
+```vue
+
+```
+
+### Backend API
+
+#### 1. 코드 발송
+```
+POST /api/email/send-code
+Content-Type: application/json
+
+{
+ "email": "user@humetro.busan.kr",
+ "type": "signup" // 또는 "password_reset"
+}
+```
+
+**Response:**
+```json
+{
+ "success": true,
+ "message": "인증 코드를 이메일로 전송했습니다.",
+ "debug_code": "123456" // 개발 환경에서만
+}
+```
+
+#### 2. 코드 검증
+```
+POST /api/email/verify-code
+Content-Type: application/json
+
+{
+ "email": "user@humetro.busan.kr",
+ "code": "123456",
+ "type": "signup" // 또는 "password_reset"
+}
+```
+
+**Response (성공):**
+```json
+{
+ "success": true,
+ "message": "인증이 완료되었습니다."
+}
+```
+
+**Response (실패):**
+```json
+{
+ "success": false,
+ "error": "인증 코드가 올바르지 않습니다. (남은 시도: 3회)"
+}
+```
+
+## 🔐 보안 기능
+
+### 1. 코드 생성
+- 6자리 무작위 숫자 생성 (`random.choices(string.digits, k=6)`)
+- 각 이메일/타입별 고유 세션 키 사용
+- 코드는 세션에 암호화되어 저장
+
+### 2. 검증 제한
+- **시도 횟수 제한**: 5회까지만 시도 가능
+- **시간 제한**: 5분 후 자동 만료
+- **일회성**: 한 번 검증되면 코드 즉시 삭제
+
+### 3. 도메인 제한
+- `@humetro.busan.kr` 도메인만 허용
+- 백엔드에서 이메일 도메인 검증
+
+### 4. 세션 관리
+```python
+# 코드 저장 (5분간 유효)
+session[f"email_code_{email}_{type}"] = {
+ "code": "123456",
+ "expiry": timestamp + 300,
+ "attempts": 0
+}
+
+# 검증 완료 표시 (10분간 유효)
+session[f"email_verified_{email}_{type}"] = {
+ "verified_at": timestamp
+}
+```
+
+## 📱 사용 흐름
+
+### 회원가입 흐름
+
+```mermaid
+sequenceDiagram
+ participant U as User
+ participant F as Frontend
+ participant B as Backend
+ participant E as Email
+
+ U->>F: 회원가입 정보 입력
+ F->>B: POST /api/email/send-code
+ B->>B: 6자리 코드 생성
+ B->>E: 이메일 발송 (TODO)
+ B->>F: {success: true}
+ F->>U: 코드 입력 화면 표시
+ U->>F: 코드 입력
+ F->>B: POST /api/email/verify-code
+ B->>B: 코드 검증
+ B->>F: {success: true}
+ F->>B: POST /auth/signup
+ B->>F: 회원가입 완료
+ F->>U: 로그인 페이지로 이동
+```
+
+### 비밀번호 재설정 흐름
+
+```mermaid
+sequenceDiagram
+ participant U as User
+ participant F as Frontend
+ participant B as Backend
+
+ U->>F: 이메일 입력
+ F->>B: POST /api/email/send-code (type: password_reset)
+ B->>F: {success: true}
+ F->>U: 코드 입력 화면
+ U->>F: 코드 입력
+ F->>B: POST /api/email/verify-code
+ B->>B: 세션에 인증 완료 표시
+ B->>F: {success: true}
+ F->>F: /reset-password?email=...&verified=true
+ U->>F: 새 비밀번호 입력
+ F->>B: POST /api/auth/reset-password
+ B->>B: 세션에서 인증 확인
+ B->>B: 비밀번호 업데이트
+ B->>F: {success: true}
+ F->>U: 로그인 페이지로 이동
+```
+
+## 🎯 회원가입 통합
+
+### SignupView.vue
+
+```vue
+
+
+
+
+
+
+
+
+
+```
+
+## 🔄 비밀번호 재설정 통합
+
+### ForgotPasswordView.vue → ResetPasswordView.vue
+
+```vue
+
+
+
+
+
+
+
+
+```
+
+```vue
+
+
+```
+
+## 🔧 개발 환경 설정
+
+### 1. 이메일 발송 (TODO)
+
+현재는 콘솔에만 코드를 출력하고, 개발 환경에서는 API 응답에 코드를 포함시킵니다:
+
+```python
+# 개발 환경에서만
+return {
+ "success": True,
+ "message": "인증 코드를 이메일로 전송했습니다.",
+ "debug_code": code if app.debug else None
+}
+```
+
+프로덕션에서는 실제 이메일 발송 서비스 연동 필요:
+- SMTP 서버
+- SendGrid / AWS SES
+- Supabase Email (Docker 환경에서는 제한적)
+
+### 2. 콘솔에서 코드 확인
+
+백엔드 콘솔:
+```
+=== 이메일 인증 코드 ===
+To: user@humetro.busan.kr
+Code: 123456
+Type: signup
+Expiry: 2025-10-14 15:30:00
+=======================
+```
+
+프론트엔드 콘솔:
+```
+=== 개발 환경 인증 코드 ===
+코드: 123456
+=======================
+```
+
+## 📊 에러 처리
+
+### Frontend 에러 메시지
+
+| 상황 | 메시지 |
+|------|--------|
+| 잘못된 코드 | "인증 코드가 올바르지 않습니다. (남은 시도: N회)" |
+| 시도 횟수 초과 | "인증 시도 횟수를 초과했습니다. 코드를 재전송해주세요." |
+| 코드 만료 | "인증 코드가 만료되었습니다. 코드를 재전송해주세요." |
+| 코드 미존재 | "인증 코드가 존재하지 않거나 만료되었습니다." |
+
+### Backend 에러 응답
+
+```python
+# 시도 횟수 초과
+if stored_data["attempts"] >= 5:
+ session.pop(session_key, None)
+ return {
+ "success": False,
+ "error": "인증 시도 횟수를 초과했습니다. 코드를 재전송해주세요."
+ }, 400
+
+# 만료
+if datetime.now().timestamp() > stored_data["expiry"]:
+ session.pop(session_key, None)
+ return {
+ "success": False,
+ "error": "인증 코드가 만료되었습니다. 코드를 재전송해주세요."
+ }, 400
+
+# 불일치
+if stored_data["code"] != code:
+ stored_data["attempts"] += 1
+ session[session_key] = stored_data
+ return {
+ "success": False,
+ "error": f"인증 코드가 올바르지 않습니다. (남은 시도: {5 - stored_data['attempts']}회)"
+ }, 400
+```
+
+## 🎨 UI 커스터마이징
+
+### 다크모드 지원
+
+```css
+:root.dark .code-digit {
+ background: #1a202c;
+ border-color: #4a5568;
+ color: #f7fafc;
+}
+
+:root.dark .timer {
+ color: #a78bfa;
+}
+```
+
+### 애니메이션
+
+```css
+/* Shake 애니메이션 (에러 시) */
+@keyframes shake {
+ 0%, 100% { transform: translateX(0); }
+ 25% { transform: translateX(-5px); }
+ 75% { transform: translateX(5px); }
+}
+
+.code-digit.error {
+ border-color: #dc2626;
+ animation: shake 0.3s;
+}
+```
+
+## 📝 TODO (향후 개선사항)
+
+### 1. 이메일 발송 구현
+```python
+# SMTP 또는 이메일 서비스 연동
+import smtplib
+from email.mime.text import MIMEText
+
+def send_verification_email(email, code):
+ msg = MIMEText(f"인증 코드: {code}")
+ msg['Subject'] = '부산교통공사 1호선 - 이메일 인증'
+ msg['From'] = 'noreply@humetro.busan.kr'
+ msg['To'] = email
+
+ # SMTP 발송...
+```
+
+### 2. 이메일 템플릿
+- HTML 이메일 템플릿 디자인
+- 회사 로고 및 브랜딩 추가
+- 다국어 지원
+
+### 3. 보안 강화
+- Rate limiting (IP별 요청 제한)
+- Captcha 추가 (무차별 대입 공격 방지)
+- 로그 기록 (audit_logs)
+
+### 4. 사용자 경험 개선
+- 이메일 자동 완성
+- 코드 자동 감지 (SMS/Email OTP)
+- 음성 안내 (접근성)
+
+## 🔗 참고 자료
+
+- [OWASP Authentication Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html)
+- [Email OTP Best Practices](https://www.twilio.com/docs/verify/email)
+- [Flask Session Management](https://flask.palletsprojects.com/en/2.3.x/quickstart/#sessions)
+
diff --git a/ENV_SETUP_GUIDE.md b/ENV_SETUP_GUIDE.md
new file mode 100644
index 0000000..cbac81c
--- /dev/null
+++ b/ENV_SETUP_GUIDE.md
@@ -0,0 +1,217 @@
+# 🔧 환경 변수 설정 가이드
+
+## 📍 Flask 백엔드 `.env` 파일 설정
+
+### ⚠️ 중요사항
+
+**`SECRET_KEY`는 Flask 백엔드의 `.env` 파일에 설정합니다!**
+
+```
+Flask 백엔드: /home/ckh08045/Tr_Code/.env ← SECRET_KEY 여기에!
+TWA 프론트엔드: /home/ckh08045/Tr_Code/twa-frontend/.env ← SECRET_KEY 불필요
+```
+
+---
+
+## 🚀 빠른 설정 (3단계)
+
+### 1단계: .env 파일 생성
+
+```bash
+cd /home/ckh08045/Tr_Code
+cp env.example .env
+```
+
+### 2단계: SECRET_KEY 생성
+
+터미널에서 실행:
+
+```bash
+python -c "import secrets; print(secrets.token_hex(32))"
+```
+
+출력 예시:
+```
+a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345
+```
+
+### 3단계: .env 파일 수정
+
+생성한 `.env` 파일을 열어서 `SECRET_KEY` 값을 변경:
+
+```bash
+# 변경 전
+SECRET_KEY=dev-secret-key-change-in-production
+
+# 변경 후 (위에서 생성한 키 사용)
+SECRET_KEY=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345
+```
+
+---
+
+## 📝 .env 파일 전체 예시
+
+**파일 위치**: `/home/ckh08045/Tr_Code/.env`
+
+```bash
+# Supabase 설정 (Docker 기반)
+SUPABASE_URL=http://localhost:8000
+SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU4NTUxNjY2LCJleHAiOjQxMDI0NDQ4MDB9.jMCGL3Q-N2o_l7JQE_HrO7Uoct86CMgLsVxpabisG4I
+
+# Flask 세션 보안 키 (반드시 변경!)
+SECRET_KEY=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345
+
+# Kong Basic Auth (선택사항 - 사용하지 않으면 비워두기)
+SUPABASE_BASIC_USER=
+SUPABASE_BASIC_PASSWORD=
+
+# Flask 서버 포트
+PORT=5000
+```
+
+---
+
+## ✅ 설정 확인
+
+### 1. .env 파일 존재 확인
+
+```bash
+ls -la /home/ckh08045/Tr_Code/.env
+```
+
+### 2. SECRET_KEY 설정 확인
+
+```bash
+grep SECRET_KEY /home/ckh08045/Tr_Code/.env
+```
+
+**올바른 설정**:
+```
+SECRET_KEY=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345
+```
+
+**잘못된 설정** (기본값 그대로):
+```
+SECRET_KEY=dev-secret-key-change-in-production ← 변경 필요!
+```
+
+### 3. Flask 앱 실행
+
+```bash
+cd /home/ckh08045/Tr_Code
+python app.py
+```
+
+정상 실행 시 출력:
+```
+ * Running on http://0.0.0.0:5000
+```
+
+---
+
+## 🔐 보안 체크리스트
+
+### 개발 환경
+- [x] `.env` 파일 생성
+- [x] `SECRET_KEY` 값 변경 (기본값 사용 금지)
+- [x] `SUPABASE_URL` 확인 (Docker: `http://localhost:8000`)
+- [x] `.env` 파일이 `.gitignore`에 포함되어 있는지 확인
+
+### 프로덕션 환경
+- [ ] `SECRET_KEY`를 강력한 랜덤 키로 변경
+- [ ] `SUPABASE_URL`을 프로덕션 URL로 변경
+- [ ] `SUPABASE_ANON_KEY`를 프로덕션 키로 변경
+- [ ] `.env` 파일 권한 설정 (`chmod 600 .env`)
+- [ ] 환경 변수를 시스템 환경 변수로 설정 (선택사항)
+
+---
+
+## 🛠️ 트러블슈팅
+
+### 문제: "세션이 유지되지 않음"
+
+**원인**: `SECRET_KEY`가 설정되지 않았거나 기본값 사용
+
+**해결**:
+```bash
+# 1. SECRET_KEY 확인
+grep SECRET_KEY /home/ckh08045/Tr_Code/.env
+
+# 2. 새 키 생성
+python -c "import secrets; print(secrets.token_hex(32))"
+
+# 3. .env 파일에 설정
+nano /home/ckh08045/Tr_Code/.env
+```
+
+### 문제: "Supabase 연결 실패"
+
+**원인**: `SUPABASE_URL` 또는 `SUPABASE_ANON_KEY` 오류
+
+**해결**:
+```bash
+# 1. Docker Supabase 상태 확인
+docker ps | grep supabase
+
+# 2. Kong Gateway 포트 확인 (기본 8000)
+curl http://localhost:8000/rest/v1/
+
+# 3. .env 파일에서 URL 확인
+grep SUPABASE_URL /home/ckh08045/Tr_Code/.env
+```
+
+### 문제: ".env 파일을 찾을 수 없음"
+
+**원인**: 잘못된 위치에 .env 파일 생성
+
+**해결**:
+```bash
+# Flask 백엔드 디렉토리로 이동
+cd /home/ckh08045/Tr_Code
+
+# .env 파일 생성
+cp env.example .env
+
+# 파일 위치 확인 (app.py와 같은 디렉토리에 있어야 함)
+ls -la | grep -E "(app.py|.env)"
+```
+
+---
+
+## 📚 참고
+
+### Flask와 TWA 프론트엔드의 환경 변수 비교
+
+| 항목 | Flask 백엔드 | TWA 프론트엔드 |
+|------|-------------|---------------|
+| 파일 위치 | `/home/ckh08045/Tr_Code/.env` | `/home/ckh08045/Tr_Code/twa-frontend/.env` |
+| SECRET_KEY | ✅ **필수** | ❌ 불필요 |
+| SUPABASE_URL | ✅ 필수 | ✅ 필요 (다를 수 있음) |
+| SUPABASE_ANON_KEY | ✅ 필수 | ✅ 필요 |
+| PORT | ✅ 선택 | ❌ 불필요 |
+
+### 환경 변수 로드 방식
+
+Flask (`app.py`):
+```python
+from dotenv import load_dotenv
+load_dotenv() # .env 파일을 자동으로 로드
+
+# 환경 변수 사용
+SECRET_KEY = os.environ.get("SECRET_KEY", "default-key")
+```
+
+Vue.js (`twa-frontend`):
+```javascript
+// .env 파일의 VUE_APP_* 변수만 자동 로드
+const apiUrl = process.env.VUE_APP_API_URL
+```
+
+---
+
+## 📞 문의
+
+환경 변수 설정 관련 문의는 시스템 관리자에게 연락하세요.
+
+**부산교통공사 차량처**
+
diff --git a/IMPLEMENTATION_SUMMARY.md b/IMPLEMENTATION_SUMMARY.md
new file mode 100644
index 0000000..cc93b00
--- /dev/null
+++ b/IMPLEMENTATION_SUMMARY.md
@@ -0,0 +1,322 @@
+# 구현 완료 요약
+
+## ✅ 완료된 작업
+
+### 1. 생체인증 (Credential Management API)
+
+#### Frontend
+- **`useBiometric.ts`** Composable 생성
+ - WebAuthn API 통합
+ - PublicKeyCredential 생성 및 검증
+ - Base64 URL 인코딩/디코딩 헬퍼 함수
+ - 상태 관리 (isSupported, isAvailable, isEnrolled)
+ - Challenge-Response 인증 플로우
+
+- **LoginView.vue** 업데이트
+ - 생체인증 버튼 추가
+ - 지원 여부에 따른 조건부 렌더링
+ - 로그인 성공 시 생체인증 등록 제안
+ - 다크모드 스타일 지원
+
+#### Backend
+- **생체인증 API 엔드포인트** 추가
+ - `/api/biometric/register-challenge` - Challenge 생성
+ - `/api/biometric/register` - Credential 등록
+ - `/api/biometric/login-challenge` - 로그인 Challenge
+ - `/api/biometric/login` - 생체인증 로그인
+ - `/api/biometric/unregister` - 생체인증 해제
+
+- **database_schema.sql** 업데이트
+ - `biometric_credentials` 테이블 추가
+ - Credential ID, 데이터, 생성/사용 시간 관리
+ - 인덱스 최적화
+
+#### 문서
+- **BIOMETRIC_AUTH_GUIDE.md** 작성
+ - 아키텍처 설명
+ - API 문서
+ - 사용 방법
+ - TWA 환경 가이드
+ - 문제 해결 가이드
+
+### 2. 이메일 코드 인증
+
+#### Frontend
+- **`EmailCodeVerification.vue`** 컴포넌트 생성
+ - 6자리 코드 입력 UI
+ - 자동 포커스 이동
+ - 붙여넣기 지원
+ - 실시간 타이머 (5분)
+ - Shake 애니메이션 (에러 시)
+ - 다크모드 지원
+
+- **SignupView.vue** 통합
+ - 회원가입 폼 → 코드 인증 → 회원가입 완료 플로우
+ - `sendEmailCode()` 함수 추가
+ - `handleCodeVerify()` 코드 검증
+ - `completeSignup()` 회원가입 완료
+
+- **ForgotPasswordView.vue** 통합
+ - 이메일 입력 → 코드 인증 → 비밀번호 재설정 플로우
+ - 코드 검증 후 ResetPasswordView로 이동
+
+- **ResetPasswordView.vue** 수정
+ - 이메일 인증 확인 (쿼리 파라미터)
+ - 인증되지 않은 접근 차단
+ - 비밀번호 재설정 API 호출
+
+#### Backend
+- **이메일 코드 API 엔드포인트** 추가
+ - `/api/email/send-code` - 코드 발송
+ - `/api/email/verify-code` - 코드 검증
+ - `/api/auth/reset-password` - 비밀번호 재설정
+
+- **보안 기능**
+ - 6자리 랜덤 숫자 코드 생성
+ - 세션 기반 코드 저장 (5분 유효)
+ - 시도 횟수 제한 (5회)
+ - 이메일 도메인 검증 (`@humetro.busan.kr`)
+ - 검증 완료 후 세션 표시 (10분 유효)
+
+#### 문서
+- **EMAIL_CODE_AUTH_GUIDE.md** 작성
+ - UI/UX 특징 설명
+ - 아키텍처 및 플로우 다이어그램
+ - API 문서
+ - 회원가입/비밀번호 재설정 통합 가이드
+ - 개발 환경 설정
+ - 에러 처리 가이드
+
+### 3. 문서 업데이트
+
+- **README.md** 업데이트
+ - 새로운 인증 기능 추가
+ - 문서 링크 정리
+
+- **database_schema.sql** 업데이트
+ - `biometric_credentials` 테이블 추가
+
+## 📁 생성/수정된 파일
+
+### Frontend (Vue.js/TypeScript)
+```
+twa-frontend/src/
+├── composables/
+│ └── useBiometric.ts # ✨ NEW
+├── components/
+│ └── EmailCodeVerification.vue # ✨ NEW
+└── views/
+ ├── LoginView.vue # ✏️ MODIFIED
+ ├── SignupView.vue # ✏️ MODIFIED
+ ├── ForgotPasswordView.vue # ✏️ MODIFIED
+ └── ResetPasswordView.vue # ✏️ MODIFIED
+```
+
+### Backend (Flask/Python)
+```
+/home/ckh08045/Tr_Code/
+├── app.py # ✏️ MODIFIED
+│ ├── 이메일 코드 API (+3 endpoints)
+│ ├── 생체인증 API (+5 endpoints)
+│ └── 비밀번호 재설정 API (+1 endpoint)
+└── database_schema.sql # ✏️ MODIFIED
+```
+
+### 문서
+```
+/home/ckh08045/Tr_Code/
+├── README.md # ✏️ MODIFIED
+├── BIOMETRIC_AUTH_GUIDE.md # ✨ NEW
+├── EMAIL_CODE_AUTH_GUIDE.md # ✨ NEW
+└── IMPLEMENTATION_SUMMARY.md # ✨ NEW (this file)
+```
+
+## 🔑 주요 기능
+
+### 생체인증 (Biometric Authentication)
+- ✅ WebAuthn/Credential Management API 활용
+- ✅ 플랫폼 인증 (지문, 얼굴 인식)
+- ✅ Challenge-Response 인증
+- ✅ TWA 환경 지원
+- ✅ 로그인 후 등록 제안
+- ✅ 빠른 생체인증 로그인
+
+### 이메일 코드 인증
+- ✅ 6자리 숫자 코드 방식
+- ✅ 스팸/피싱 의심 방지
+- ✅ 5분 유효 시간
+- ✅ 5회 시도 제한
+- ✅ 실시간 타이머 UI
+- ✅ 코드 재전송 기능
+- ✅ 회원가입 및 비밀번호 재설정 통합
+
+### 비밀번호 재설정
+- ✅ 이메일 코드 인증
+- ✅ 인증된 사용자만 재설정 가능
+- ✅ 10분 세션 유효 시간
+- ✅ 비밀번호 강도 표시
+
+## 🔐 보안 강화
+
+### 1. 생체인증
+- Challenge는 세션에 저장 (10분 유효)
+- Credential ID 검증 (향후 서명 검증 추가 필요)
+- 플랫폼 인증 강제 (`authenticatorAttachment: 'platform'`)
+- 사용자 검증 필수 (`userVerification: 'required'`)
+
+### 2. 이메일 코드 인증
+- 무작위 6자리 숫자 생성
+- 세션 기반 저장 (5분 유효)
+- 시도 횟수 제한 (5회)
+- 도메인 검증 (`@humetro.busan.kr`)
+- 일회성 코드 (검증 후 즉시 삭제)
+
+### 3. 비밀번호 재설정
+- 이메일 인증 필수
+- 세션에서 인증 여부 확인
+- 10분 내 재설정 완료 필요
+- 쿼리 파라미터 검증
+
+## 🎯 사용 흐름
+
+### 신규 사용자
+1. 회원가입 버튼 클릭
+2. 정보 입력 (사번, 이름, 부서, 이메일, 비밀번호)
+3. 이메일로 6자리 코드 수신
+4. 코드 입력 및 검증
+5. 회원가입 완료
+6. 로그인
+7. (선택) 생체인증 등록
+
+### 기존 사용자 (생체인증 등록)
+1. 로그인
+2. "생체인증을 등록하시겠습니까?" 확인
+3. 생체인증 실행 (지문/얼굴)
+4. 등록 완료
+5. 다음 로그인부터 생체인증 사용
+
+### 비밀번호 재설정
+1. "비밀번호 찾기" 클릭
+2. 이메일 입력
+3. 6자리 코드 수신
+4. 코드 입력 및 검증
+5. 새 비밀번호 입력
+6. 재설정 완료
+
+## 📊 API 엔드포인트 추가
+
+### 이메일 코드 인증
+```
+POST /api/email/send-code
+POST /api/email/verify-code
+```
+
+### 생체인증
+```
+POST /api/biometric/register-challenge
+POST /api/biometric/register
+POST /api/biometric/login-challenge
+POST /api/biometric/login
+POST /api/biometric/unregister
+```
+
+### 비밀번호 재설정
+```
+POST /api/auth/reset-password
+```
+
+## 🗄️ 데이터베이스 변경
+
+### 새 테이블: `biometric_credentials`
+```sql
+CREATE TABLE IF NOT EXISTS public.biometric_credentials (
+ id SERIAL PRIMARY KEY,
+ employee_id VARCHAR(50) NOT NULL,
+ credential_id VARCHAR(255) UNIQUE NOT NULL,
+ credential_data JSONB NOT NULL,
+ created_at TIMESTAMPTZ DEFAULT NOW(),
+ last_used_at TIMESTAMPTZ,
+ UNIQUE(employee_id, credential_id)
+);
+```
+
+## 🚀 배포 가이드
+
+### 1. 데이터베이스 마이그레이션
+```bash
+# Supabase SQL 에디터에서 실행
+# database_schema.sql의 biometric_credentials 테이블 부분 실행
+```
+
+### 2. 환경 변수 확인
+```bash
+# .env 파일에 SECRET_KEY 설정 확인
+SECRET_KEY=your_secret_key_here
+```
+
+### 3. 프론트엔드 빌드
+```bash
+cd twa-frontend
+npm run build
+```
+
+### 4. 서버 재시작
+```bash
+sudo systemctl restart Tr_Code
+sudo systemctl status Tr_Code
+```
+
+### 5. 테스트
+1. 로그인 페이지에서 생체인증 버튼 확인
+2. 회원가입에서 이메일 코드 인증 테스트
+3. 비밀번호 재설정 플로우 테스트
+4. 개발 환경에서 콘솔로 인증 코드 확인
+
+## 📝 TODO (향후 개선사항)
+
+### 이메일 발송
+- [ ] 실제 SMTP/이메일 서비스 연동
+- [ ] HTML 이메일 템플릿 작성
+- [ ] 이메일 발송 로그 기록
+
+### 생체인증
+- [ ] 서명 검증 구현 (공개키 암호화)
+- [ ] 여러 기기 지원 (다중 credential)
+- [ ] Credential 관리 UI
+- [ ] 마지막 사용 시간 업데이트
+
+### 보안 강화
+- [ ] Rate limiting (IP별 요청 제한)
+- [ ] Captcha 추가
+- [ ] 감사 로그 기록 (audit_logs)
+- [ ] 2FA (Two-Factor Authentication) 옵션
+
+### UX 개선
+- [ ] 이메일 자동 완성
+- [ ] SMS OTP 대안
+- [ ] 생체인증 실패 시 대체 방법
+- [ ] 접근성 개선 (음성 안내)
+
+## 🎉 완료!
+
+모든 요청사항이 성공적으로 구현되었습니다:
+
+1. ✅ **Credential Management API로 생체인증 활성화**
+ - WebAuthn 기반 구현
+ - TWA 환경 지원
+ - 등록/로그인/해제 기능 완료
+
+2. ✅ **이메일 인증을 링크 클릭에서 코드 입력으로 변경**
+ - 6자리 숫자 코드
+ - 회원가입 통합
+ - 비밀번호 재설정 통합
+ - 스팸/피싱 의심 방지
+
+## 📚 관련 문서
+
+- [BIOMETRIC_AUTH_GUIDE.md](./BIOMETRIC_AUTH_GUIDE.md) - 생체인증 상세 가이드
+- [EMAIL_CODE_AUTH_GUIDE.md](./EMAIL_CODE_AUTH_GUIDE.md) - 이메일 코드 인증 상세 가이드
+- [README.md](./README.md) - 프로젝트 메인 문서
+- [AUTH_SETUP.md](./AUTH_SETUP.md) - 인증 시스템 설정
+- [ENV_SETUP_GUIDE.md](./ENV_SETUP_GUIDE.md) - 환경 설정
+
diff --git a/NPM_SETUP.md b/NPM_SETUP.md
new file mode 100644
index 0000000..5be9e03
--- /dev/null
+++ b/NPM_SETUP.md
@@ -0,0 +1,388 @@
+# NPM (Nginx Proxy Manager) 설정 가이드
+
+M1T 서버의 Tr_Code 애플리케이션을 외부에서 접근할 수 있도록 NPM을 설정하는 방법입니다.
+
+## 📋 현재 서버 구조
+
+```
+외부 인터넷
+ ↓
+R3 공유기 1번 포트
+ ↓
+Proxmox 서버
+ ↓
+NPM 컨테이너 (:80, :443)
+ ↓ 프록시 패스
+M1T 서버 (192.168.0.180:80)
+ ↓ nginx 리버스 프록시
+ ↓ Unix Socket
+Gunicorn (Tr_Code.sock)
+ ↓
+Flask App
+ ↓ localhost:8000
+Supabase (Docker)
+```
+
+## ✅ M1T 서버 현재 설정
+
+### 1. Gunicorn (WSGI 서버)
+- **방식**: Unix Socket
+- **위치**: `/home/ckh08045/Tr_Code/Tr_Code.sock`
+- **Workers**: 3개
+- **상태**: ✅ 실행 중
+
+### 2. nginx (리버스 프록시)
+- **포트**: 80 (HTTP)
+- **설정**: `/etc/nginx/sites-enabled/tr_code`
+- **소켓 연결**: `unix:/home/ckh08045/Tr_Code/Tr_Code.sock`
+- **상태**: ✅ 실행 중
+
+### 3. 내부 IP
+- **IP**: `192.168.0.180`
+- **포트**: `80`
+
+## 🔧 NPM (Proxmox) 설정 방법
+
+### 1. NPM 웹 인터페이스 접속
+
+일반적으로 NPM은 다음 주소로 접속합니다:
+```
+http://proxmox-ip:81
+```
+
+기본 로그인:
+- Email: `admin@example.com`
+- Password: `changeme` (첫 로그인 후 변경)
+
+### 2. Proxy Host 추가
+
+**Dashboard** → **Hosts** → **Proxy Hosts** → **Add Proxy Host**
+
+#### Details 탭
+
+```
+Domain Names:
+ - trcode.yourdomain.com
+ (또는 원하는 도메인/서브도메인)
+
+Scheme: http
+Forward Hostname / IP: 192.168.0.180
+Forward Port: 80
+
+☐ Cache Assets
+☑ Block Common Exploits
+☑ Websockets Support (선택사항, 필요시 체크)
+```
+
+#### SSL 탭
+
+```
+SSL Certificate:
+ - Request a new SSL Certificate (Let's Encrypt)
+ 또는
+ - 기존 인증서 선택
+
+☑ Force SSL (권장)
+☑ HTTP/2 Support (권장)
+☑ HSTS Enabled (권장)
+☑ HSTS Subdomains (선택사항)
+
+이메일 입력:
+ - your-email@example.com
+
+☑ I Agree to the Let's Encrypt Terms of Service
+```
+
+#### Advanced 탭 (선택사항)
+
+추가 nginx 설정이 필요한 경우:
+
+```nginx
+# 클라이언트 업로드 크기 제한
+client_max_body_size 10M;
+
+# 타임아웃 설정 (필요시)
+proxy_connect_timeout 60s;
+proxy_send_timeout 60s;
+proxy_read_timeout 60s;
+
+# 실제 클라이언트 IP 전달 (이미 기본 설정되어 있음)
+proxy_set_header X-Real-IP $remote_addr;
+proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+proxy_set_header X-Forwarded-Proto $scheme;
+```
+
+### 3. 저장 및 확인
+
+**Save** 버튼 클릭 → SSL 인증서 자동 발급 (Let's Encrypt 사용 시)
+
+## 🌐 접속 방법
+
+### 외부 접속 (인터넷에서)
+
+```
+https://trcode.yourdomain.com
+```
+
+### 내부 네트워크 접속
+
+#### 방법 1: M1T 서버 IP 직접 접근 (같은 네트워크)
+
+```
+http://192.168.0.180
+```
+
+- ✅ 빠름 (라우터 거치지 않음)
+- ✅ SSL 없음 (내부망이므로 안전)
+- ⚠️ M1T와 같은 네트워크에서만 가능
+
+#### 방법 2: NPM을 통한 접근 (모든 내부망)
+
+```
+https://trcode.yourdomain.com
+또는
+http://npm-server-ip
+```
+
+- ✅ 도메인 사용
+- ✅ SSL 적용
+- ⚠️ 약간의 오버헤드 (NPM 경유)
+
+#### 방법 3: hosts 파일 수정 (개발용)
+
+내부 네트워크에서 도메인 이름으로 접근하려면:
+
+**Windows**: `C:\Windows\System32\drivers\etc\hosts`
+**Linux/Mac**: `/etc/hosts`
+
+```
+192.168.0.180 trcode.yourdomain.com
+```
+
+그 후:
+```
+http://trcode.yourdomain.com
+```
+
+## 🔍 테스트
+
+### 1. 내부 직접 접근 테스트
+
+```bash
+# M1T 서버에서
+curl http://localhost/health
+
+# 같은 네트워크 다른 컴퓨터에서
+curl http://192.168.0.180/health
+
+# 응답 예시
+{"status":"ok"}
+```
+
+### 2. NPM을 통한 접근 테스트
+
+```bash
+# 외부/내부 어디서든
+curl https://trcode.yourdomain.com/health
+
+# 응답 예시
+{"status":"ok"}
+```
+
+### 3. Supabase 연결 테스트
+
+```bash
+curl http://192.168.0.180/sb/health
+
+# 응답 예시
+{"sb":"ok","url":"http://localhost:8000"}
+```
+
+## 🛡️ 보안 설정 (권장)
+
+### 1. 방화벽 설정 (M1T 서버)
+
+외부에서 M1T 80 포트 직접 접근을 차단하고, NPM만 허용:
+
+```bash
+# ufw 방화벽 사용 시
+sudo ufw status
+
+# NPM IP만 허용 (예: 192.168.0.100)
+sudo ufw allow from 192.168.0.100 to any port 80
+
+# 또는 같은 서브넷 전체 허용
+sudo ufw allow from 192.168.0.0/24 to any port 80
+```
+
+### 2. nginx 추가 보안 설정
+
+`/etc/nginx/sites-available/tr_code`에 추가:
+
+```nginx
+# 특정 IP만 허용 (선택사항)
+# allow 192.168.0.0/24;
+# deny all;
+
+# 보안 헤더
+add_header X-Frame-Options "SAMEORIGIN" always;
+add_header X-Content-Type-Options "nosniff" always;
+add_header X-XSS-Protection "1; mode=block" always;
+add_header Referrer-Policy "no-referrer-when-downgrade" always;
+```
+
+```bash
+# 적용
+sudo systemctl reload nginx
+```
+
+## 📱 모바일/PWA 접속
+
+### Android/iOS 브라우저
+
+```
+https://trcode.yourdomain.com
+```
+
+### PWA 설치 (홈 화면에 추가)
+
+**Android (Chrome)**:
+1. 사이트 접속
+2. 메뉴 (⋮) → "홈 화면에 추가"
+3. 이름 입력 → 추가
+
+**iOS (Safari)**:
+1. 사이트 접속
+2. 공유 버튼 (□↑) → "홈 화면에 추가"
+3. 이름 입력 → 추가
+
+## 🔧 문제 해결
+
+### 502 Bad Gateway (NPM에서)
+
+```bash
+# M1T에서 nginx 확인
+sudo systemctl status nginx
+curl http://localhost/health
+
+# 방화벽 확인
+sudo ufw status
+```
+
+### 503 Service Unavailable
+
+```bash
+# M1T에서 Tr_Code 서비스 확인
+sudo systemctl status Tr_Code
+
+# 재시작
+sudo systemctl restart Tr_Code
+```
+
+### SSL 인증서 발급 실패 (NPM)
+
+1. **도메인이 NPM IP를 가리키는지 확인**
+ ```bash
+ nslookup trcode.yourdomain.com
+ ```
+
+2. **80 포트가 열려있는지 확인**
+ - Let's Encrypt는 80 포트로 인증
+
+3. **NPM 로그 확인**
+ - Dashboard → System → Logs
+
+### 내부 IP 접근 안됨
+
+```bash
+# M1T에서 nginx 포트 확인
+sudo netstat -tlnp | grep :80
+
+# 방화벽 확인
+sudo ufw status
+
+# ping 테스트
+ping 192.168.0.180
+```
+
+## 📊 성능 비교
+
+| 접속 방법 | 속도 | SSL | 외부 접근 | 추천 |
+|----------|------|-----|----------|------|
+| 내부 직접 (192.168.0.180) | ⚡ 가장 빠름 | ❌ | ❌ | 내부 개발/테스트 |
+| NPM 경유 (도메인) | 🔥 빠름 | ✅ | ✅ | 운영 환경 |
+| localhost (M1T에서) | ⚡⚡ 즉시 | ❌ | ❌ | 서버 직접 작업 |
+
+## 🎯 권장 설정
+
+### 개발/테스트 환경
+```
+내부 네트워크: http://192.168.0.180
+M1T 서버: http://localhost
+```
+
+### 운영 환경
+```
+모든 접속: https://trcode.yourdomain.com (NPM 경유)
+```
+
+## 📝 NPM 추가 설정 예시
+
+### 여러 서브도메인 설정
+
+```
+trcode.yourdomain.com → 192.168.0.180:80 (Tr_Code)
+supabase.yourdomain.com → 192.168.0.180:8000 (Supabase)
+api.yourdomain.com → 192.168.0.180:3000 (다른 API)
+```
+
+각각 별도의 Proxy Host로 추가하면 됩니다.
+
+### 로드 밸런싱 (미래 확장)
+
+M1T 서버가 여러 대가 될 경우:
+```
+trcode.yourdomain.com →
+ - 192.168.0.180:80 (M1T-1)
+ - 192.168.0.181:80 (M1T-2)
+ - 192.168.0.182:80 (M1T-3)
+```
+
+NPM에서 자동 로드 밸런싱 지원합니다.
+
+## 💡 팁
+
+### 1. 도메인이 없는 경우
+
+무료 도메인 서비스 사용:
+- Duck DNS (https://www.duckdns.org)
+- No-IP (https://www.noip.com)
+- FreeDNS (https://freedns.afraid.org)
+
+예: `trcode.duckdns.org`
+
+### 2. 동적 IP 문제
+
+가정용 인터넷은 IP가 변경될 수 있으므로:
+- DDNS (Dynamic DNS) 사용
+- Duck DNS, No-IP 등에서 자동 업데이트 클라이언트 제공
+
+### 3. 포트 포워딩 (R3 공유기)
+
+외부 접근을 위해 R3 공유기 설정:
+```
+외부 포트 80 → Proxmox IP:80
+외부 포트 443 → Proxmox IP:443
+```
+
+## 🔗 관련 문서
+
+- [README.md](README.md) - 전체 설치 가이드
+- [PWA_README.md](PWA_README.md) - 안드로이드 앱 변환 가이드
+
+---
+
+**작성일**: 2025-10-13
+**M1T 서버 IP**: 192.168.0.180
+**현재 포트**: 80 (nginx) → Unix Socket (gunicorn)
+
diff --git a/PWA_README.md b/PWA_README.md
new file mode 100644
index 0000000..89973b5
--- /dev/null
+++ b/PWA_README.md
@@ -0,0 +1,586 @@
+# PWA (Progressive Web App) 가이드
+
+이 문서는 Tr_Code 웹 애플리케이션을 안드로이드 앱으로 패키징하여 Google Play Store에 배포하는 방법을 설명합니다.
+
+## 📋 목차
+
+- [PWA란?](#pwa란)
+- [TWA (Trusted Web Activity)](#twa-trusted-web-activity)
+- [준비사항](#준비사항)
+- [Android Studio 설정](#android-studio-설정)
+- [앱 빌드](#앱-빌드)
+- [Play Store 배포](#play-store-배포)
+- [오프라인 기능](#오프라인-기능)
+- [FAQ](#faq)
+
+## 🌐 PWA란?
+
+**Progressive Web App(PWA)**는 웹 기술로 만들어졌지만 네이티브 앱처럼 동작하는 애플리케이션입니다.
+
+### PWA의 장점
+
+✅ **설치 가능** - 홈 화면에 아이콘 추가
+✅ **오프라인 작동** - 네트워크 없이도 사용 가능
+✅ **빠른 로딩** - 캐시를 통한 빠른 시작
+✅ **푸시 알림** - 사용자에게 알림 전송
+✅ **자동 업데이트** - 별도 앱 업데이트 불필요
+✅ **크로스 플랫폼** - Android, iOS, Desktop 모두 지원
+
+### Tr_Code PWA 특징
+
+- **완전한 오프라인 지원**: 한 번 방문 후 네트워크 없이도 사용 가능
+- **빠른 응답속도**: HTMX 기반 부분 렌더링
+- **모바일 최적화**: 반응형 디자인
+- **다크모드**: 자동 다크모드 지원
+
+## 📱 TWA (Trusted Web Activity)
+
+**TWA**는 PWA를 안드로이드 네이티브 앱으로 패키징하는 기술입니다.
+
+### TWA vs WebView
+
+| 특징 | TWA | WebView |
+|------|-----|---------|
+| 성능 | Chrome 브라우저 엔진 사용 (빠름) | 앱 내장 (느림) |
+| 업데이트 | 자동 (서버만 업데이트) | 앱 재배포 필요 |
+| 보안 | Chrome 보안 정책 적용 | 개발자 구현 필요 |
+| 캐시 | Service Worker | 수동 구현 |
+| 크기 | 작음 (~2MB) | 큼 (WebView 포함) |
+
+## 🛠️ 준비사항
+
+### 1. 도메인 및 HTTPS
+
+PWA는 HTTPS가 **필수**입니다 (localhost 제외).
+
+```bash
+# 현재 구조
+http://your-domain.com → NPM (Proxmox) → M1T nginx → App
+```
+
+NPM(Nginx Proxy Manager)에서 SSL 인증서를 설정하세요:
+- Let's Encrypt 자동 발급
+- 또는 기존 인증서 업로드
+
+### 2. Android Studio
+
+[Android Studio 다운로드](https://developer.android.com/studio)
+
+```bash
+# 시스템 요구사항
+- OS: Windows 10/11, macOS, Linux
+- RAM: 8GB 이상 권장
+- 저장공간: 10GB 이상
+```
+
+### 3. Java Development Kit (JDK)
+
+Android Studio에 포함되어 있지만, 별도 설치도 가능:
+
+```bash
+# Ubuntu/Linux
+sudo apt install openjdk-17-jdk
+
+# 확인
+java -version
+```
+
+### 4. Google Play Console 계정
+
+- [Google Play Console](https://play.google.com/console) 가입
+- **일회성 등록 비용**: $25 (평생 사용)
+- 개발자 계정 승인까지 1-2일 소요
+
+## 🏗️ Android Studio 설정
+
+### 1. 프로젝트 생성
+
+이미 `build.gradle` 파일이 있으므로 다음 단계를 진행합니다.
+
+### 2. 기존 프로젝트 구조
+
+```
+Tr_Code/
+├── app/ # Android 앱 소스
+│ ├── src/
+│ │ └── main/
+│ │ ├── AndroidManifest.xml
+│ │ ├── res/ # 리소스 (아이콘, 문자열 등)
+│ │ └── java/ # Java/Kotlin 코드
+├── build.gradle # 프로젝트 빌드 설정
+├── settings.gradle # 프로젝트 설정
+└── twa-manifest.json # TWA 설정
+```
+
+### 3. twa-manifest.json 설정
+
+```json
+{
+ "packageId": "com.trcode.app",
+ "host": "your-domain.com",
+ "name": "1호선 고장코드",
+ "launcherName": "고장코드",
+ "display": "standalone",
+ "themeColor": "#1f2937",
+ "backgroundColor": "#111827",
+ "enableNotifications": false,
+ "startUrl": "/",
+ "iconUrl": "https://your-domain.com/static/icon.png",
+ "maskableIconUrl": "https://your-domain.com/static/icon-maskable.png",
+ "splashScreenFadeOutDuration": 300,
+ "signingKey": {
+ "path": "android.keystore",
+ "alias": "trcode"
+ },
+ "features": {
+ "locationDelegation": {
+ "enabled": false
+ },
+ "playBilling": {
+ "enabled": false
+ }
+ }
+}
+```
+
+### 4. AndroidManifest.xml 주요 설정
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### 5. Digital Asset Links 설정
+
+TWA가 작동하려면 **도메인과 앱을 연결**해야 합니다.
+
+#### 서버 측: `.well-known/assetlinks.json`
+
+```bash
+# M1T 서버에 파일 생성
+sudo mkdir -p /home/ckh08045/Tr_Code/static/.well-known
+sudo nano /home/ckh08045/Tr_Code/static/.well-known/assetlinks.json
+```
+
+```json
+[{
+ "relation": ["delegate_permission/common.handle_all_urls"],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "com.trcode.app",
+ "sha256_cert_fingerprints": [
+ "YOUR_SHA256_FINGERPRINT_HERE"
+ ]
+ }
+}]
+```
+
+**SHA256 Fingerprint 얻는 방법:**
+
+```bash
+# 키스토어에서 추출
+keytool -list -v -keystore android.keystore -alias trcode
+
+# 출력에서 SHA256 찾기
+# 예: AA:BB:CC:DD:EE:FF:...
+# 콜론(:) 제거하고 입력
+```
+
+#### nginx 설정 추가
+
+```nginx
+# /etc/nginx/sites-available/tr_code에 추가
+location /.well-known/assetlinks.json {
+ alias /home/ckh08045/Tr_Code/static/.well-known/assetlinks.json;
+ default_type application/json;
+ add_header Access-Control-Allow-Origin *;
+}
+```
+
+```bash
+# nginx 재시작
+sudo systemctl reload nginx
+
+# 테스트
+curl https://your-domain.com/.well-known/assetlinks.json
+```
+
+## 🔨 앱 빌드
+
+### 1. 키스토어 생성 (처음 한 번만)
+
+```bash
+cd /home/ckh08045/Tr_Code
+
+# 키스토어 생성
+keytool -genkey -v -keystore android.keystore \
+ -alias trcode \
+ -keyalg RSA -keysize 2048 -validity 10000
+
+# 정보 입력
+# - 비밀번호 (잘 기억하세요!)
+# - 이름, 조직, 도시, 국가 등
+```
+
+**⚠️ 중요**: `android.keystore` 파일과 비밀번호를 **안전하게 백업**하세요!
+
+### 2. Gradle 빌드 설정
+
+`build.gradle` 파일 확인:
+
+```gradle
+android {
+ compileSdkVersion 33
+
+ defaultConfig {
+ applicationId "com.trcode.app"
+ minSdkVersion 21
+ targetSdkVersion 33
+ versionCode 1
+ versionName "1.0"
+ }
+
+ signingConfigs {
+ release {
+ storeFile file('android.keystore')
+ storePassword 'your_password'
+ keyAlias 'trcode'
+ keyPassword 'your_password'
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ }
+ }
+}
+```
+
+### 3. 빌드 실행
+
+**Android Studio에서:**
+
+1. `Build` → `Select Build Variant` → `release` 선택
+2. `Build` → `Build Bundle(s) / APK(s)` → `Build Bundle(s)`
+3. 완료되면: `app/build/outputs/bundle/release/app-release.aab`
+
+**명령줄에서:**
+
+```bash
+cd /home/ckh08045/Tr_Code
+
+# Clean
+./gradlew clean
+
+# AAB (Play Store용) 빌드
+./gradlew bundleRelease
+
+# 또는 APK (테스트용) 빌드
+./gradlew assembleRelease
+
+# 출력 위치
+# AAB: app/build/outputs/bundle/release/app-release.aab
+# APK: app/build/outputs/apk/release/app-release.apk
+```
+
+### 4. 테스트
+
+```bash
+# APK 설치 (USB 디버깅 활성화된 안드로이드 기기)
+adb install app/build/outputs/apk/release/app-release.apk
+
+# 또는 Android Studio에서 Run
+```
+
+## 🚀 Play Store 배포
+
+### 1. Google Play Console 준비
+
+1. [Google Play Console](https://play.google.com/console) 로그인
+2. `모든 앱` → `앱 만들기`
+3. 앱 세부정보 입력:
+ - 앱 이름: `1호선 고장코드`
+ - 기본 언어: `한국어`
+ - 앱/게임: `앱`
+ - 무료/유료: `무료`
+
+### 2. 앱 콘텐츠 작성
+
+**개인정보처리방침**
+- URL 제공 (필수)
+- 예: `https://your-domain.com/privacy-policy`
+
+**앱 카테고리**
+- 카테고리: `비즈니스` 또는 `생산성`
+- 콘텐츠 등급: 설문조사 진행
+
+**광고**
+- 광고 포함 여부 선택
+
+### 3. 프로덕션 릴리스 생성
+
+1. `프로덕션` → `새 릴리스 만들기`
+2. `app-release.aab` 업로드
+3. 출시 노트 작성:
+
+```
+첫 번째 릴리스
+- 고장코드 조회
+- TCMS 신호 조회
+- MMI 코드 조회
+- 오프라인 지원
+```
+
+4. 검토 제출
+
+### 4. 스토어 등록정보
+
+**스크린샷** (필수)
+- 휴대전화: 2개 이상 (16:9 비율)
+- 7인치 태블릿: 선택사항
+- 10인치 태블릿: 선택사항
+
+**그래픽 애셋**
+- 앱 아이콘: 512x512 PNG
+- 기능 그래픽: 1024x500 PNG
+
+**설명**
+```
+1호선 철도 차량 고장코드 및 TCMS 신호 조회 애플리케이션
+
+주요 기능:
+✓ 제조사별 고장코드 검색
+✓ TCMS 신호 조회
+✓ MMI 코드 데이터베이스
+✓ 오프라인 지원
+✓ 빠른 검색 및 필터링
+
+철도 유지보수 및 정비 업무를 위한 필수 도구입니다.
+```
+
+### 5. 심사 및 배포
+
+- 제출 후 **1-7일** 심사 기간
+- 승인되면 자동으로 Play Store에 배포
+- 거부 시 피드백 확인 후 수정하여 재제출
+
+## 💾 오프라인 기능
+
+### Service Worker
+
+PWA의 오프라인 기능은 **Service Worker**로 구현됩니다.
+
+`static/sw.js` 예시:
+
+```javascript
+const CACHE_NAME = 'tr-code-v1';
+const urlsToCache = [
+ '/',
+ '/static/css/main.css',
+ '/static/js/main.js',
+ '/static/icon.png',
+];
+
+// 설치
+self.addEventListener('install', event => {
+ event.waitUntil(
+ caches.open(CACHE_NAME)
+ .then(cache => cache.addAll(urlsToCache))
+ );
+});
+
+// 요청 가로채기
+self.addEventListener('fetch', event => {
+ event.respondWith(
+ caches.match(event.request)
+ .then(response => response || fetch(event.request))
+ );
+});
+
+// 업데이트
+self.addEventListener('activate', event => {
+ event.waitUntil(
+ caches.keys().then(cacheNames => {
+ return Promise.all(
+ cacheNames.map(cacheName => {
+ if (cacheName !== CACHE_NAME) {
+ return caches.delete(cacheName);
+ }
+ })
+ );
+ })
+ );
+});
+```
+
+### manifest.json
+
+`static/manifest.json`:
+
+```json
+{
+ "name": "1호선 고장코드",
+ "short_name": "고장코드",
+ "start_url": "/",
+ "display": "standalone",
+ "background_color": "#111827",
+ "theme_color": "#1f2937",
+ "orientation": "portrait-primary",
+ "icons": [
+ {
+ "src": "/static/icon-192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "any maskable"
+ },
+ {
+ "src": "/static/icon-512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "any maskable"
+ }
+ ]
+}
+```
+
+### HTML에서 등록
+
+`templates/base.html`:
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+## ❓ FAQ
+
+### Q1: localhost로 테스트할 수 있나요?
+
+**A:** 네! PWA는 `localhost`에서 HTTPS 없이도 작동합니다. 하지만 TWA는 실제 도메인이 필요합니다.
+
+### Q2: 앱 업데이트는 어떻게 하나요?
+
+**A:** 서버만 업데이트하면 됩니다! 앱을 다시 빌드/배포할 필요가 없습니다. 사용자가 앱을 열면 자동으로 최신 버전을 로드합니다.
+
+단, 앱 아이콘이나 이름 변경 시에는 Play Store에 새 버전을 제출해야 합니다.
+
+### Q3: iOS는 지원되나요?
+
+**A:** PWA 자체는 iOS에서도 작동합니다 (Safari). 하지만 TWA는 Android 전용이므로, iOS 앱을 만들려면:
+- **웹 앱 추가**: Safari에서 "홈 화면에 추가"
+- **App Store**: Apple Developer Program ($99/년) 가입 후 네이티브 앱 개발 필요
+
+### Q4: 서버가 다운되면 앱도 작동하지 않나요?
+
+**A:** Service Worker로 캐시를 구현하면 오프라인에서도 기본 기능은 사용할 수 있습니다. 단, 새 데이터는 서버 연결이 필요합니다.
+
+### Q5: 데이터는 어디에 저장되나요?
+
+**A:**
+- **서버**: Supabase (PostgreSQL)
+- **클라이언트**: 브라우저 캐시 (Service Worker)
+- **앱 내부**: 없음 (모든 데이터는 웹에서 로드)
+
+### Q6: 보안은 어떻게 되나요?
+
+**A:**
+- HTTPS 필수 (데이터 암호화)
+- Digital Asset Links (앱-도메인 인증)
+- Chrome 브라우저의 보안 정책 적용
+- Supabase Row Level Security
+
+### Q7: 앱 크기는 얼마나 되나요?
+
+**A:** TWA 앱은 매우 작습니다:
+- **APK/AAB**: 약 2-5MB
+- **설치 후**: 10-20MB (캐시 포함)
+
+비교: 일반 네이티브 앱은 20-100MB 이상
+
+### Q8: Play Store 심사에서 거부될 수 있나요?
+
+**A:** 가능성 있는 거부 사유:
+- Digital Asset Links 미설정
+- 개인정보처리방침 누락
+- 앱 콘텐츠 설명 불충분
+- 스크린샷 부족
+
+모두 수정 후 재제출 가능합니다.
+
+### Q9: 현재 서버 구조에서 PWA가 잘 작동하나요?
+
+**A:** 네! 현재 구조는 PWA에 최적화되어 있습니다:
+- ✅ nginx 리버스 프록시
+- ✅ HTMX (빠른 로딩)
+- ✅ 반응형 디자인
+- ✅ localhost Supabase (빠른 응답)
+
+NPM(Proxmox)에서 HTTPS만 설정하면 완벽합니다!
+
+### Q10: 비용은 얼마나 드나요?
+
+**A:**
+- Google Play Console: **$25** (평생)
+- 도메인: 연간 $10-20
+- SSL 인증서: **무료** (Let's Encrypt)
+- 서버: 기존 사용 중
+
+**총 초기 비용: 약 $25-50**
+
+## 📚 추가 자료
+
+- [Google TWA 문서](https://developer.chrome.com/docs/android/trusted-web-activity/)
+- [PWA 완벽 가이드](https://web.dev/progressive-web-apps/)
+- [Android Studio 가이드](https://developer.android.com/studio/intro)
+- [Play Console 도움말](https://support.google.com/googleplay/android-developer/)
+
+## 🆘 도움이 필요하신가요?
+
+문제가 발생하거나 질문이 있으면 시스템 관리자에게 문의하세요.
+
+---
+
+**작성일**: 2025-10-13
+**버전**: 1.0
+
diff --git a/README.md b/README.md
index e167cc3..e3ba80f 100644
--- a/README.md
+++ b/README.md
@@ -1,37 +1,484 @@
-1호선 고장코드 (Flask + HTMX, Supabase)
+# 1호선 고장코드 (Tr_Code)
-실행 방법
+Flask + HTMX 기반의 철도 차량 고장코드 및 TCMS 신호 조회 웹 애플리케이션입니다.
-1) 의존성 설치 (venv 권장)
+## 📋 목차
+
+- [주요 기능](#주요-기능)
+- [시스템 아키텍처](#시스템-아키텍처)
+- [설치 및 배포](#설치-및-배포)
+- [환경 설정](#환경-설정)
+- [회원 인증 시스템](#회원-인증-시스템) ⭐ NEW!
+- [서비스 관리](#서비스-관리)
+- [개발 환경](#개발-환경)
+- [API 엔드포인트](#api-엔드포인트)
+- [문제 해결](#문제-해결)
+
+## 🎯 주요 기능
+
+### 🔐 회원 관리 및 인증 (NEW!)
+- **이메일 코드 인증** - 6자리 숫자 코드 입력 (링크 클릭 방식 대신)
+- **생체인증** - WebAuthn API 활용 (지문, 얼굴 인식)
+- **비밀번호 재설정** - 이메일 코드 인증 후 재설정
+- **humetro.busan.kr 도메인 제한** (회사 이메일만 가입 가능)
+- 부서별 사용자 관리 (신평차량, 노포차량, 차량처)
+- 사번 기반 사용자 식별
+- 동적 부서 목록 로드 (Supabase departments 테이블)
+- 부서별 권한 관리 기반 구축 (조회/수정 권한 제어 가능)
+- 세션 기반 로그인 상태 유지
+
+### 고장코드 조회
+- 제조사별 필터링 (우진, 로템 등)
+- 장치별, 차량 타입별 검색
+- 실시간 검색 (HTMX 기반)
+- 코드 그룹핑 옵션
+- 상세 정보 모달 표시
+
+### TCMS 신호 조회
+- 신호 분류별 필터링
+- 제조사/차량별 검색
+- 신호 상태값 확인
+
+### MMI 코드 조회
+- MMI 코드 데이터베이스 검색
+- 차량분류별 필터링
+
+### UI/UX
+- 반응형 디자인 (모바일 최적화)
+- 다크모드 지원
+- PWA 지원 (오프라인 사용 가능)
+- 빠른 페이지 전환 (HTMX)
+- 로그인 사용자 정보 표시
+
+## 🏗️ 시스템 아키텍처
```
+외부 클라이언트 (브라우저/PWA)
+ ↓ HTTPS/HTTP
+NPM 리버스 프록시 (Proxmox, 선택적)
+ ↓ HTTP
+M1T 서버 nginx (:80)
+ ↓ Unix Socket
+gunicorn (Tr_Code.sock)
+ ↓
+Flask App (app.py)
+ ↓ localhost:8000
+Supabase (Docker)
+```
+
+### 기술 스택
+
+**백엔드**
+- Flask 3.0.3 - 웹 프레임워크
+- Gunicorn 23.0.0 - WSGI 서버
+- httpx - 비동기 HTTP 클라이언트
+
+**프론트엔드**
+- HTMX - 동적 UI
+- TailwindCSS - 스타일링
+- Jinja2 템플릿
+
+**데이터베이스**
+- Supabase (PostgreSQL)
+- PostgREST API
+
+**인프라**
+- nginx - 리버스 프록시
+- systemd - 프로세스 관리
+- Ubuntu 22.04 LTS
+
+## 🚀 설치 및 배포
+
+### 1. 시스템 요구사항
+
+```bash
+# OS
+Ubuntu 22.04 LTS 이상
+
+# Python
+Python 3.10 이상
+
+# 필수 패키지
+sudo apt update
+sudo apt install -y python3 python3-venv python3-pip nginx
+```
+
+### 2. 프로젝트 설치
+
+```bash
+# 프로젝트 클론 또는 복사
+cd /home/ckh08045
+git clone Tr_Code
+cd Tr_Code
+
+# 가상환경 생성
+python3 -m venv .
+
+# 가상환경 활성화
+source bin/activate
+
+# 의존성 설치
pip install -r requirements.txt
```
-2) 환경변수 설정
+### 3. 환경 설정
-```
-# Windows PowerShell 예시
-$env:SUPABASE_URL="http://192.168.0.180:54321" # 로컬 도커 기본 포트
-$env:SUPABASE_ANON_KEY=""
+#### 3.1 데이터베이스 스키마 생성
+
+회원 관리 시스템을 사용하려면 먼저 데이터베이스 스키마를 생성해야 합니다:
+
+```bash
+# database_schema.sql 파일의 내용을 Supabase SQL 에디터에서 실행
+# 부서, 사용자, 권한 테이블이 자동으로 생성됩니다
```
-3) 서버 실행
+#### 3.2 `.env` 파일 생성
+```bash
+# env.example 파일을 .env로 복사
+cp env.example .env
+
+# SECRET_KEY 생성
+python -c "import secrets; print(secrets.token_hex(32))"
+
+# .env 파일 편집
+nano .env
```
+
+`.env` 파일 내용:
+
+```bash
+# Supabase 설정 (localhost - 같은 서버에서 실행 중)
+SUPABASE_URL=http://localhost:8000
+SUPABASE_ANON_KEY=your_anon_key_here
+
+# Flask 세션 보안 키 (반드시 변경!)
+SECRET_KEY=위에서-생성한-랜덤-키-입력
+
+# Kong Basic Auth (선택사항)
+SUPABASE_BASIC_USER=
+SUPABASE_BASIC_PASSWORD=
+
+# Flask 설정
+PORT=5000
+```
+
+## 🔐 회원 인증 시스템
+
+### 빠른 시작
+
+회원 관리 및 인증 시스템 설정을 위한 문서:
+
+📖 **[ENV_SETUP_GUIDE.md](ENV_SETUP_GUIDE.md)** - 환경 변수 설정 가이드
+📖 **[AUTH_SETUP.md](AUTH_SETUP.md)** - 상세 인증 시스템 설정
+📖 **[EMAIL_CODE_AUTH_GUIDE.md](EMAIL_CODE_AUTH_GUIDE.md)** - 이메일 코드 인증 가이드
+📖 **[BIOMETRIC_AUTH_GUIDE.md](BIOMETRIC_AUTH_GUIDE.md)** - 생체인증 가이드
+📖 **[AUTHENTICATION_SUMMARY.md](AUTHENTICATION_SUMMARY.md)** - 기술 문서
+📖 **[DEPARTMENTS_API.md](DEPARTMENTS_API.md)** - 부서 API 문서
+
+### 주요 기능
+
+- ✅ **이메일 코드 인증** - 6자리 숫자 코드 입력 방식 (스팸/피싱 의심 방지)
+- ✅ **생체인증** - WebAuthn/Credential Management API (지문, 얼굴 인식)
+- ✅ **비밀번호 재설정** - 이메일 코드 인증 후 재설정
+- ✅ **humetro.busan.kr 도메인만 가입 가능**
+- ✅ 부서별 사용자 관리 (동적 부서 목록)
+- ✅ 사번 기반 사용자 식별
+- ✅ 부서별 권한 관리 (조회/수정 권한 제어 가능)
+
+### Docker 기반 Supabase 환경
+
+> ⚠️ **중요**: Docker 기반 Supabase는 대시보드 Authentication 설정이 제한적입니다.
+> 이메일 도메인 검증은 **애플리케이션 레벨에서만** 처리됩니다.
+
+### 3단계 설정
+
+```bash
+# 1. 데이터베이스 스키마 생성 (Supabase SQL 에디터)
+# database_schema.sql 실행
+
+# 2. .env 파일 설정
+cp env.example .env
+python -c "import secrets; print(secrets.token_hex(32))"
+# 출력된 키를 .env의 SECRET_KEY에 설정
+
+# 3. 서버 실행
python app.py
```
-브라우저에서 http://localhost:5000 접속
+### 사용 방법
-기능
-- Supabase의 `public.Falut_Code_Table`에서 필터/검색
-- 항목 클릭 시 모달 상세 표시
-- 다크모드 토글
+1. `http://localhost:5000` 접속 → 로그인 페이지
+2. "회원가입" 클릭
+3. 정보 입력 (humetro.busan.kr 이메일 사용)
+4. 로그인
-비고
-- 로컬 SQLite 및 `/api/meta`, `/api/db` 기반 동기화는 제거됨
-- Supabase 접속 실패 시 안내 메시지를 화면에 표시
-- 사내망 주소/포트 방화벽 허용 필요 (예: 54321, 8000 등 구성에 따라 상이)
+### 4. Systemd 서비스 설정
+
+`/etc/systemd/system/Tr_Code.service`:
+
+```ini
+[Unit]
+Description=Gunicorn instance to serve Tr_Code
+After=network.target
+
+[Service]
+User=ckh08045
+Group=ckh08045
+WorkingDirectory=/home/ckh08045/Tr_Code
+Environment="PATH=/home/ckh08045/Tr_Code/bin"
+ExecStart=/home/ckh08045/Tr_Code/bin/gunicorn --workers 3 --bind unix:Tr_Code.sock -m 007 app:app
+
+[Install]
+WantedBy=multi-user.target
+```
+
+### 5. nginx 설정
+
+`/etc/nginx/sites-available/tr_code`:
+
+```nginx
+server {
+ listen 80;
+ server_name _;
+
+ client_max_body_size 10M;
+
+ location /static/ {
+ alias /home/ckh08045/Tr_Code/static/;
+ expires 30d;
+ add_header Cache-Control "public, immutable";
+ }
+
+ location / {
+ proxy_pass http://unix:/home/ckh08045/Tr_Code/Tr_Code.sock;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+
+ proxy_connect_timeout 60s;
+ proxy_send_timeout 60s;
+ proxy_read_timeout 60s;
+ }
+}
+```
+
+**nginx 활성화:**
+
+```bash
+# 심볼릭 링크 생성
+sudo ln -sf /etc/nginx/sites-available/tr_code /etc/nginx/sites-enabled/
+
+# 기본 사이트 비활성화
+sudo rm -f /etc/nginx/sites-enabled/default
+
+# nginx 사용자를 애플리케이션 그룹에 추가 (Unix 소켓 접근 권한)
+sudo usermod -a -G ckh08045 www-data
+
+# 설정 테스트
+sudo nginx -t
+
+# nginx 재시작
+sudo systemctl restart nginx
+```
+
+### 6. 서비스 시작
+
+```bash
+# systemd 설정 리로드
+sudo systemctl daemon-reload
+
+# 서비스 활성화 (부팅 시 자동 시작)
+sudo systemctl enable Tr_Code
+
+# 서비스 시작
+sudo systemctl start Tr_Code
+
+# 상태 확인
+sudo systemctl status Tr_Code
+```
+
+## ⚙️ 환경 설정
+
+### 환경변수 설명
+
+| 변수 | 설명 | 기본값 |
+|------|------|--------|
+| `SUPABASE_URL` | Supabase 서버 주소 | `http://localhost:8000` |
+| `SUPABASE_ANON_KEY` | Supabase Anonymous Key | - |
+| `SUPABASE_BASIC_USER` | Kong Basic Auth 사용자명 (선택) | - |
+| `SUPABASE_BASIC_PASSWORD` | Kong Basic Auth 비밀번호 (선택) | - |
+| `PORT` | Flask 개발 서버 포트 | `5000` |
+
+### Supabase 연결
+
+- **같은 서버**: `http://localhost:8000` 사용 (최적 성능)
+- **다른 서버**: `http://ip:port` 형식으로 지정
+- **Kong 프록시**: Basic Auth 정보 추가
+
+## 🔧 서비스 관리
+
+### 서비스 명령어
+
+```bash
+# 시작
+sudo systemctl start Tr_Code
+
+# 중지
+sudo systemctl stop Tr_Code
+
+# 재시작
+sudo systemctl restart Tr_Code
+
+# 상태 확인
+sudo systemctl status Tr_Code
+
+# 로그 확인
+sudo journalctl -u Tr_Code -f
+
+# 부팅 시 자동 시작 활성화
+sudo systemctl enable Tr_Code
+
+# 부팅 시 자동 시작 비활성화
+sudo systemctl disable Tr_Code
+```
+
+### nginx 명령어
+
+```bash
+# 설정 테스트
+sudo nginx -t
+
+# 재시작
+sudo systemctl restart nginx
+
+# 리로드 (무중단)
+sudo systemctl reload nginx
+
+# 에러 로그 확인
+sudo tail -f /var/log/nginx/error.log
+
+# 액세스 로그 확인
+sudo tail -f /var/log/nginx/access.log
+```
+
+## 💻 개발 환경
+
+### 로컬 개발 서버
+
+```bash
+# 가상환경 활성화
+source bin/activate
+
+# 개발 모드로 실행 (디버그 활성화)
+python app.py
+
+# 접속
+# http://localhost:5000
+```
+
+### 코드 수정 후
+
+```bash
+# 서비스 재시작
+sudo systemctl restart Tr_Code
+```
+
+## 📡 API 엔드포인트
+
+### 헬스체크
+- `GET /health` - 애플리케이션 상태
+- `GET /sb/health` - Supabase 연결 상태
+
+### 고장코드
+- `GET /sb` - 메인 페이지
+- `GET /sb/faults/list` - 고장코드 목록
+- `GET /sb/faults/` - 고장코드 상세
+
+### TCMS 신호
+- `GET /sb/signals/list` - 신호 목록
+- `GET /sb/signals/` - 신호 상세
+
+### MMI 코드
+- `GET /sb?section=mmicode` - MMI 코드 목록
+
+### 디버그
+- `GET /sb/signals/test` - Signals 테이블 테스트
+- `GET /sb/signals/debug` - 상세 디버그 정보
+
+## 🐛 문제 해결
+
+### 서비스가 시작되지 않을 때
+
+```bash
+# 로그 확인
+sudo journalctl -u Tr_Code -n 50
+
+# 가상환경 경로 확인
+ls -la /home/ckh08045/Tr_Code/bin/gunicorn
+
+# 권한 확인
+ls -la /home/ckh08045/Tr_Code/
+```
+
+### nginx Permission Denied
+
+```bash
+# www-data 사용자가 소켓에 접근할 수 있는지 확인
+sudo usermod -a -G ckh08045 www-data
+sudo systemctl restart nginx
+```
+
+### Supabase 연결 실패
+
+```bash
+# Supabase 컨테이너 상태 확인
+docker ps | grep supabase
+
+# 포트 확인
+sudo netstat -tlnp | grep 8000
+
+# .env 파일 확인
+cat .env
+
+# 연결 테스트
+curl http://localhost:8000/rest/v1/
+```
+
+### 502 Bad Gateway
+
+```bash
+# gunicorn 서비스 상태 확인
+sudo systemctl status Tr_Code
+
+# 소켓 파일 확인
+ls -la /home/ckh08045/Tr_Code/Tr_Code.sock
+
+# nginx 에러 로그
+sudo tail -f /var/log/nginx/error.log
+```
+
+## 📱 PWA 지원
+
+PWA(Progressive Web App)로 변환하여 모바일 앱처럼 사용할 수 있습니다.
+
+자세한 내용은 [PWA_README.md](PWA_README.md)를 참조하세요.
+
+## 📄 라이선스
+
+이 프로젝트는 내부 사용을 위한 것입니다.
+
+## 🤝 기여
+
+문제가 발생하거나 개선 사항이 있으면 이슈를 등록해주세요.
+
+---
+
+**문의**: 시스템 관리자
diff --git a/SMTP_SETUP.md b/SMTP_SETUP.md
new file mode 100644
index 0000000..7cd7b9c
--- /dev/null
+++ b/SMTP_SETUP.md
@@ -0,0 +1,527 @@
+# SMTP 이메일 발신 시스템 설정 가이드
+
+이메일 인증 및 비밀번호 재설정을 위한 SMTP 서버 설정 방법입니다.
+
+## 📋 목차
+
+- [방법 1: Python Flask-Mail (권장)](#방법-1-python-flask-mail-권장)
+- [방법 2: Docker MailHog (개발용)](#방법-2-docker-mailhog-개발용)
+- [방법 3: Docker Postfix (운영용)](#방법-3-docker-postfix-운영용)
+- [방법 4: 외부 SMTP 서비스](#방법-4-외부-smtp-서비스)
+
+---
+
+## 방법 1: Python Flask-Mail (권장) ⭐
+
+Flask 앱에 직접 통합하는 가장 간단한 방법입니다.
+
+### 1-1. 설치
+
+```bash
+cd /home/ckh08045/Tr_Code
+source bin/activate
+pip install Flask-Mail
+pip freeze > requirements.txt
+```
+
+### 1-2. .env 설정
+
+```bash
+# SMTP 설정 추가
+MAIL_SERVER=smtp.gmail.com
+MAIL_PORT=587
+MAIL_USE_TLS=True
+MAIL_USE_SSL=False
+MAIL_USERNAME=your-email@gmail.com
+MAIL_PASSWORD=your-app-password
+MAIL_DEFAULT_SENDER=your-email@gmail.com
+```
+
+**Gmail 앱 비밀번호 생성:**
+1. Google 계정 → 보안
+2. 2단계 인증 활성화
+3. 앱 비밀번호 생성
+4. `.env`에 입력
+
+### 1-3. app.py에 추가
+
+```python
+from flask_mail import Mail, Message
+
+# Flask-Mail 설정
+app.config['MAIL_SERVER'] = os.environ.get('MAIL_SERVER', 'smtp.gmail.com')
+app.config['MAIL_PORT'] = int(os.environ.get('MAIL_PORT', 587))
+app.config['MAIL_USE_TLS'] = os.environ.get('MAIL_USE_TLS', 'True').lower() == 'true'
+app.config['MAIL_USE_SSL'] = os.environ.get('MAIL_USE_SSL', 'False').lower() == 'true'
+app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
+app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
+app.config['MAIL_DEFAULT_SENDER'] = os.environ.get('MAIL_DEFAULT_SENDER')
+
+mail = Mail(app)
+
+def send_reset_email(to_email, reset_token, employee_id):
+ """비밀번호 재설정 이메일 전송"""
+ reset_url = url_for('reset_password', token=reset_token, _external=True)
+
+ msg = Message(
+ subject='[1호선 고장코드] 비밀번호 재설정',
+ recipients=[to_email]
+ )
+
+ msg.body = f"""
+안녕하세요,
+
+비밀번호 재설정을 요청하셨습니다.
+
+사번: {employee_id}
+
+아래 링크를 클릭하여 비밀번호를 재설정하세요:
+{reset_url}
+
+이 링크는 1시간 동안 유효합니다.
+
+본인이 요청하지 않았다면 이 이메일을 무시하세요.
+
+---
+부산교통공사 1호선 차량 고장코드 시스템
+ """
+
+ msg.html = f"""
+
+
+
+```
+
+---
+
+## 🐛 문제 해결
+
+### Gmail 전송 실패
+
+**원인:** 앱 비밀번호 미설정
+**해결:**
+1. Google 계정 → 보안
+2. 2단계 인증 활성화
+3. 앱 비밀번호 생성
+
+### SMTP 연결 실패
+
+```bash
+# 포트 확인
+telnet smtp.gmail.com 587
+
+# 방화벽 확인
+sudo ufw allow 587/tcp
+```
+
+### MailHog 접속 안됨
+
+```bash
+# 컨테이너 상태 확인
+docker ps | grep mailhog
+
+# 로그 확인
+docker logs mailhog
+
+# 재시작
+docker restart mailhog
+```
+
+---
+
+## 🔒 보안 고려사항
+
+1. **환경변수 사용**: 비밀번호를 코드에 하드코딩하지 마세요
+2. **TLS 사용**: 암호화된 연결 사용
+3. **Rate Limiting**: 과도한 이메일 전송 방지
+4. **토큰 만료**: 재설정 링크에 시간 제한 설정
+5. **.env 보호**: `.gitignore`에 추가
+
+---
+
+## 📊 비교표
+
+| 방법 | 설정 난이도 | 비용 | 전달률 | 제어 | 추천 |
+|------|-----------|------|--------|------|------|
+| Flask-Mail + Gmail | ⭐ 쉬움 | 무료 | 높음 | 낮음 | 소규모 |
+| MailHog | ⭐ 쉬움 | 무료 | N/A | 높음 | 개발 |
+| Postfix | ⭐⭐⭐ 어려움 | 무료 | 낮음 | 높음 | 내부망 |
+| SendGrid | ⭐⭐ 보통 | 무료/유료 | 높음 | 보통 | 운영 |
+| AWS SES | ⭐⭐ 보통 | 유료 | 높음 | 보통 | 대규모 |
+
+---
+
+**작성일**: 2025-10-15
+**권장 방법**: Flask-Mail + Gmail (개발), SendGrid (운영)
+
diff --git a/android.keystore b/android.keystore
new file mode 100644
index 0000000..5a59ef9
Binary files /dev/null and b/android.keystore differ
diff --git a/app-release-bundle.aab b/app-release-bundle.aab
new file mode 100644
index 0000000..9ff6045
Binary files /dev/null and b/app-release-bundle.aab differ
diff --git a/app-release-signed.apk b/app-release-signed.apk
new file mode 100644
index 0000000..d312aca
Binary files /dev/null and b/app-release-signed.apk differ
diff --git a/app-release-signed.apk.idsig b/app-release-signed.apk.idsig
new file mode 100644
index 0000000..b1be65b
Binary files /dev/null and b/app-release-signed.apk.idsig differ
diff --git a/app-release-unsigned-aligned.apk b/app-release-unsigned-aligned.apk
new file mode 100644
index 0000000..155ab9c
Binary files /dev/null and b/app-release-unsigned-aligned.apk differ
diff --git a/app.py b/app.py
index 437e4b7..0cb784b 100644
--- a/app.py
+++ b/app.py
@@ -1,11 +1,16 @@
import os
from typing import Optional, List, Dict
import httpx
+import json
-from flask import Flask, g, render_template, request, abort
+from flask import Flask, g, request, abort, session, jsonify
from urllib.parse import urlencode
from dotenv import load_dotenv
-
+from flask_cors import CORS
+from functools import wraps
+from pywebpush import webpush, WebPushException
+from flask_sqlalchemy import SQLAlchemy
+from datetime import datetime
APP_NAME = "1호선 고장코드"
@@ -14,18 +19,65 @@ APP_NAME = "1호선 고장코드"
def create_app() -> Flask:
app = Flask(__name__)
app.config.update(TEMPLATES_AUTO_RELOAD=True)
+
+ # 세션 설정
+ app.secret_key = os.environ.get("SECRET_KEY", "dev-secret-key-change-in-production")
+ app.config["SESSION_COOKIE_HTTPONLY"] = True
+ app.config["SESSION_COOKIE_SAMESITE"] = "Lax"
+
+ # SQLAlchemy 설정
+ app.config["SQLALCHEMY_DATABASE_URI"] = f"sqlite:///{os.path.abspath('push_subscriptions.db')}"
+ app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
+ db = SQLAlchemy(app)
+
+ # 푸시 구독 모델
+ class PushSubscription(db.Model):
+ __tablename__ = "push_subscriptions"
+
+ id = db.Column(db.Integer, primary_key=True)
+ user_id = db.Column(db.String(255), unique=True, nullable=False)
+ endpoint = db.Column(db.String(1000), nullable=False)
+ p256dh = db.Column(db.String(500), nullable=False)
+ auth = db.Column(db.String(500), nullable=False)
+ created_at = db.Column(db.DateTime, default=datetime.utcnow)
+ updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
+
+ def to_dict(self):
+ return {
+ "endpoint": self.endpoint,
+ "keys": {
+ "p256dh": self.p256dh,
+ "auth": self.auth
+ }
+ }
+
+ # DB 테이블 생성
+ with app.app_context():
+ db.create_all()
+
+ # CORS 설정 (Vue PWA에서 접근 허용)
+ # 프로덕션: 특정 도메인만 허용
+ allowed_origins = [
+ "https://humetrain.me",
+ "http://localhost:5173", # 개발 서버
+ "http://localhost:8080", # 로컬 nginx
+ ]
+ if app.debug:
+ allowed_origins.append("*") # 개발 모드에서는 모든 도메인 허용
+
+ CORS(app,
+ origins=allowed_origins if not app.debug else ["*"],
+ supports_credentials=True,
+ allow_headers=["Content-Type", "Authorization"],
+ methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"])
# 환경변수 로드 및 Supabase 기본값 설정
load_dotenv()
- # 기본: Kong 프록시(8000) 또는 사용자가 지정한 URL
- app.config.setdefault("SUPABASE_URL", os.environ.get("SUPABASE_URL", "http://192.168.0.180:8000"))
+ app.config.setdefault("SUPABASE_URL", os.environ.get("SUPABASE_URL", "http://localhost:8000"))
app.config.setdefault("SUPABASE_ANON_KEY", os.environ.get("SUPABASE_ANON_KEY", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU4NTUxNjY2LCJleHAiOjQxMDI0NDQ4MDB9.jMCGL3Q-N2o_l7JQE_HrO7Uoct86CMgLsVxpabisG4I"))
- # Kong Basic Auth(선택)
app.config.setdefault("SUPABASE_BASIC_USER", os.environ.get("SUPABASE_BASIC_USER", ""))
app.config.setdefault("SUPABASE_BASIC_PASSWORD", os.environ.get("SUPABASE_BASIC_PASSWORD", ""))
- # 더 이상 SQLite 초기화/연결을 사용하지 않음 (Supabase만 사용)
-
# PostgREST(REST) 클라이언트 빌더
def build_pg_client() -> httpx.Client:
base = app.config["SUPABASE_URL"].rstrip("/") + "/rest/v1"
@@ -68,40 +120,539 @@ def create_app() -> Flask:
out.append(v)
return out
- @app.route("/")
- def index():
- return render_template(
- "index.html",
- app_name=APP_NAME,
- )
+ # 인증 헬퍼 함수
+ def login_required(f):
+ """로그인이 필요한 라우트를 위한 데코레이터"""
+ @wraps(f)
+ def decorated_function(*args, **kwargs):
+ if "user_id" not in session:
+ return jsonify({"success": False, "error": "Authentication required"}), 401
+ return f(*args, **kwargs)
+ return decorated_function
+
+ def get_current_user() -> Optional[Dict]:
+ """현재 로그인한 사용자 정보 반환"""
+ if "user_id" in session:
+ return {
+ "user_id": session.get("user_id"),
+ "email": session.get("email"),
+ "employee_id": session.get("employee_id"),
+ "name": session.get("name"),
+ "department_id": session.get("department_id"),
+ "access_token": session.get("access_token")
+ }
+ return None
- # 기존 SQLite 기반 라우트 제거됨
-
- @app.route("/modal/close")
- def modal_close():
- return ""
+ # ============= 인증 API =============
+
+ @app.route("/api/auth/login", methods=["POST"])
+ def api_login():
+ """로그인 API"""
+ try:
+ from auth import AuthManager
+
+ data = request.json
+ employee_id = data.get("employee_id", "").strip()
+ password = data.get("password", "").strip()
+
+ if not employee_id or not password:
+ return jsonify({
+ "success": False,
+ "error": "사번과 비밀번호를 모두 입력해주세요."
+ }), 400
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ success, message, session_data = auth_manager.login_user_by_employee_id(employee_id, password)
+
+ if success and session_data:
+ # 세션에 사용자 정보 저장
+ session["user_id"] = session_data["user_id"]
+ session["auth_id"] = session_data["auth_id"]
+ session["email"] = session_data["email"]
+ session["employee_id"] = session_data["employee_id"]
+ session["name"] = session_data["name"]
+ session["department_id"] = session_data["department_id"]
+ session["access_token"] = session_data["access_token"]
+ session.permanent = True
+
+ return jsonify({
+ "success": True,
+ "user": {
+ "user_id": session_data["user_id"],
+ "email": session_data["email"],
+ "employee_id": session_data["employee_id"],
+ "name": session_data["name"],
+ "department_id": session_data["department_id"]
+ }
+ })
+ else:
+ return jsonify({
+ "success": False,
+ "error": message
+ }), 401
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/signup", methods=["POST"])
+ def api_signup():
+ """회원가입 API"""
+ try:
+ from auth import AuthManager
+
+ data = request.json
+ email = data.get("email", "").strip()
+ password = data.get("password", "").strip()
+ password_confirm = data.get("password_confirm", "").strip()
+ employee_id = data.get("employee_id", "").strip()
+ name = data.get("name", "").strip()
+ department_id = data.get("department_id", "").strip()
+
+ # 입력값 검증
+ if not all([email, password, password_confirm, employee_id, name, department_id]):
+ return jsonify({
+ "success": False,
+ "error": "모든 필드를 입력해주세요."
+ }), 400
+
+ # 비밀번호 확인
+ if password != password_confirm:
+ return jsonify({
+ "success": False,
+ "error": "비밀번호가 일치하지 않습니다."
+ }), 400
+
+ # 비밀번호 길이 검증
+ if len(password) < 8:
+ return jsonify({
+ "success": False,
+ "error": "비밀번호는 최소 8자 이상이어야 합니다."
+ }), 400
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ # 회원가입 처리
+ success, message, _ = auth_manager.signup_user(
+ email=email,
+ password=password,
+ employee_id=employee_id,
+ name=name,
+ department_id=int(department_id)
+ )
+
+ if success:
+ return jsonify({
+ "success": True,
+ "message": message
+ })
+ else:
+ return jsonify({
+ "success": False,
+ "error": message
+ }), 400
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/logout", methods=["POST"])
+ def api_logout():
+ """로그아웃 API"""
+ try:
+ from auth import AuthManager
+
+ # 세션에서 access_token 가져오기
+ access_token = session.get("access_token")
+
+ if access_token:
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+ auth_manager.logout_user(access_token)
+
+ # 세션 클리어
+ session.clear()
+
+ return jsonify({
+ "success": True,
+ "message": "로그아웃되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/me")
+ @login_required
+ def api_current_user():
+ """현재 로그인한 사용자 정보 조회 API"""
+ user = get_current_user()
+ return jsonify({
+ "success": True,
+ "user": user
+ })
+
+ @app.route("/api/departments")
+ def api_departments():
+ """부서 목록 조회 API"""
+ try:
+ from auth import AuthManager
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ departments = auth_manager.get_departments()
+
+ return jsonify({
+ "success": True,
+ "departments": departments
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ============= 이메일 코드 인증 API =============
+
+ @app.route("/api/email/send-code", methods=["POST"])
+ def send_email_code():
+ """이메일 인증 코드 발송"""
+ try:
+ import random
+ import string
+ from datetime import datetime, timedelta
+
+ data = request.json
+ email = data.get("email", "").strip().lower()
+ code_type = data.get("type", "signup") # signup, password_reset
+
+ # 이메일 도메인 검증
+ if not email.endswith("@humetro.busan.kr"):
+ return jsonify({
+ "success": False,
+ "error": "humetro.busan.kr 도메인의 이메일만 사용 가능합니다."
+ }), 400
+
+ # 6자리 숫자 코드 생성
+ code = ''.join(random.choices(string.digits, k=6))
+
+ # 세션에 코드 저장 (5분간 유효)
+ expiry = datetime.now() + timedelta(minutes=5)
+ session[f"email_code_{email}_{code_type}"] = {
+ "code": code,
+ "expiry": expiry.timestamp(),
+ "attempts": 0
+ }
+
+ # TODO: 실제 이메일 발송
+ print(f"\n=== 이메일 인증 코드 ===")
+ print(f"To: {email}")
+ print(f"Code: {code}")
+ print(f"Type: {code_type}")
+ print(f"Expiry: {expiry}")
+ print(f"=======================\n")
+
+ return jsonify({
+ "success": True,
+ "message": "인증 코드를 이메일로 전송했습니다.",
+ "debug_code": code if app.debug else None
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/email/verify-code", methods=["POST"])
+ def verify_email_code():
+ """이메일 인증 코드 검증"""
+ try:
+ from datetime import datetime
+
+ data = request.json
+ email = data.get("email", "").strip().lower()
+ code = data.get("code", "").strip()
+ code_type = data.get("type", "signup")
+
+ # 세션에서 코드 확인
+ session_key = f"email_code_{email}_{code_type}"
+ stored_data = session.get(session_key)
+
+ if not stored_data:
+ return jsonify({
+ "success": False,
+ "error": "인증 코드가 존재하지 않거나 만료되었습니다."
+ }), 400
+
+ # 시도 횟수 체크
+ if stored_data["attempts"] >= 5:
+ session.pop(session_key, None)
+ return jsonify({
+ "success": False,
+ "error": "인증 시도 횟수를 초과했습니다."
+ }), 400
+
+ # 만료 시간 체크
+ if datetime.now().timestamp() > stored_data["expiry"]:
+ session.pop(session_key, None)
+ return jsonify({
+ "success": False,
+ "error": "인증 코드가 만료되었습니다."
+ }), 400
+
+ # 코드 검증
+ if stored_data["code"] != code:
+ stored_data["attempts"] += 1
+ session[session_key] = stored_data
+ return jsonify({
+ "success": False,
+ "error": f"인증 코드가 올바르지 않습니다. (남은 시도: {5 - stored_data['attempts']}회)"
+ }), 400
+
+ # 인증 성공
+ session[f"email_verified_{email}_{code_type}"] = {
+ "verified_at": datetime.now().timestamp()
+ }
+ session.pop(session_key, None)
+
+ return jsonify({
+ "success": True,
+ "message": "인증이 완료되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ============= 생체인증 API =============
+
+ @app.route("/api/biometric/register-challenge", methods=["POST"])
+ def biometric_register_challenge():
+ """생체인증 등록을 위한 challenge 생성"""
+ try:
+ import secrets
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ challenge = secrets.token_urlsafe(32)
+ session[f"biometric_challenge_{employee_id}"] = {
+ "challenge": challenge,
+ "timestamp": datetime.now().timestamp()
+ }
+
+ return jsonify({
+ "success": True,
+ "challenge": challenge,
+ "userId": employee_id
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/register", methods=["POST"])
+ def biometric_register():
+ """생체인증 credential 등록"""
+ try:
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+ credential = data.get("credential")
+
+ with build_pg_client() as c:
+ r = c.post(
+ "/biometric_credentials",
+ json={
+ "employee_id": employee_id,
+ "credential_id": credential["id"],
+ "credential_data": credential,
+ "created_at": datetime.now().isoformat()
+ }
+ )
+ r.raise_for_status()
+
+ session.pop(f"biometric_challenge_{employee_id}", None)
+
+ return jsonify({
+ "success": True,
+ "message": "생체인증이 등록되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/login-challenge", methods=["POST"])
+ def biometric_login_challenge():
+ """생체인증 로그인을 위한 challenge 생성"""
+ try:
+ import secrets
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ challenge = secrets.token_urlsafe(32)
+ session[f"biometric_login_challenge_{employee_id}"] = {
+ "challenge": challenge,
+ "timestamp": datetime.now().timestamp()
+ }
+
+ return jsonify({
+ "success": True,
+ "challenge": challenge
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/login", methods=["POST"])
+ def biometric_login():
+ """생체인증으로 로그인"""
+ try:
+ data = request.json
+ employee_id = data.get("employeeId")
+ assertion = data.get("assertion")
+
+ with build_pg_client() as c:
+ r = c.get(
+ "/biometric_credentials",
+ params={
+ "employee_id": f"eq.{employee_id}",
+ "limit": "1"
+ }
+ )
+ r.raise_for_status()
+ credentials = r.json() or []
+
+ if not credentials:
+ return jsonify({
+ "success": False,
+ "error": "등록된 생체인증 정보가 없습니다."
+ }), 404
+
+ stored_credential = credentials[0]
+ if stored_credential["credential_id"] != assertion["id"]:
+ return jsonify({
+ "success": False,
+ "error": "인증 실패"
+ }), 401
+
+ # users 테이블에서 사용자 정보 조회
+ with build_pg_client() as c:
+ r = c.get(
+ "/users",
+ params={
+ "employee_id": f"eq.{employee_id}",
+ "limit": "1"
+ }
+ )
+ r.raise_for_status()
+ users = r.json() or []
+
+ if not users:
+ return jsonify({
+ "success": False,
+ "error": "사용자를 찾을 수 없습니다."
+ }), 404
+
+ user_data = users[0]
+
+ # 세션에 사용자 정보 저장
+ session["user_id"] = user_data["id"]
+ session["email"] = user_data["email"]
+ session["employee_id"] = user_data["employee_id"]
+ session["name"] = user_data["name"]
+ session["department_id"] = user_data["department_id"]
+ session.permanent = True
+
+ session.pop(f"biometric_login_challenge_{employee_id}", None)
+
+ return jsonify({
+ "success": True,
+ "user": {
+ "id": user_data["id"],
+ "email": user_data["email"],
+ "employee_id": user_data["employee_id"],
+ "name": user_data["name"],
+ "department_id": user_data["department_id"]
+ }
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/unregister", methods=["POST"])
+ def biometric_unregister():
+ """생체인증 해제"""
+ try:
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ with build_pg_client() as c:
+ r = c.delete(
+ "/biometric_credentials",
+ params={"employee_id": f"eq.{employee_id}"}
+ )
+ r.raise_for_status()
+
+ return jsonify({
+ "success": True,
+ "message": "생체인증이 해제되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+ # ============= 데이터 조회 API =============
+
@app.route("/health")
def health():
- return {"status": "ok"}
+ return jsonify({"status": "ok"})
- # 빈 파비콘 응답으로 404 제거
@app.route("/favicon.ico")
def favicon():
return ("", 204, {"Content-Type": "image/x-icon"})
-
- # 브라우저/툴 호환을 위해 루트 경로에도 매니페스트 노출 (정적 파일 경로 사용 권장)
- # 더 이상 /api/* 동기화 엔드포인트 제공하지 않음
-
- # ----------------- Supabase 기반 라우트 -----------------
- @app.route("/sb/tabs")
- def sb_tabs():
+
+ @app.route("/api/manufacturers")
+ def api_manufacturers():
+ """제조사 목록을 JSON으로 반환"""
try:
with build_pg_client() as c:
+ # Fault_Code_Table에서 제조사
r1 = c.get("/Fault_Code_Table", params={"select": "manufacturer"})
r1.raise_for_status()
vals1 = [row.get("manufacturer") for row in (r1.json() or []) if row.get("manufacturer")]
- vals2: List[str] = []
+
+ # Signals 테이블에서 제조사
+ vals2 = []
for path in ("/Signals", "/signals"):
try:
r2 = c.get(path, params={"select": "manufacturer"})
@@ -110,111 +661,51 @@ def create_app() -> Flask:
break
except httpx.HTTPError:
continue
- vals = vals1 + vals2
- seen: Dict[str, bool] = {}
- manufacturers: List[str] = []
- for v in vals:
- if v not in seen:
- seen[v] = True
- manufacturers.append(v)
- return render_template("partials/sb_tabs.html", manufacturers=manufacturers)
- except Exception as e:
- return render_template(
- "partials/sb_error.html",
- error_message=str(e),
- supabase_url=app.config.get("SUPABASE_URL"),
- )
- @app.route("/sb")
- def sb_home():
- try:
- # ---- MMI 코드 분기 ----
- if request.args.get("section", "fault").strip() == "mmicode":
- PAGE_SIZE = 50
- page = int(request.args.get("page", "0"))
- offset = page * PAGE_SIZE
-
- # 셀렉트박스/검색 필드
- with build_pg_client() as c:
- # 제조사
- res = c.get("/MMI_Code", params={"select": "manufacturer"})
- res.raise_for_status()
- manufacturers = sorted({row.get("manufacturer") for row in (res.json() or []) if row.get("manufacturer")})
- # 차량분류(alias_name)
- res2 = c.get("/MMI_Code", params={"select": "alias_name"})
- res2.raise_for_status()
- alias_names = sorted({row.get("alias_name") for row in (res2.json() or []) if row.get("alias_name")})
-
- selected_manufacturer = request.args.get("manufacturer", "").strip()
- selected_alias_name = request.args.get("alias_name", "").strip()
- q = request.args.get("q", "").strip()
- group_code = request.args.get("group_code", "").strip().lower() == "on"
- # MMI 쿼리
- params = {
- "select": "id,code_name,code_description,data_type,car_id,alias_name,manufacturer",
- "order": "code_name.asc",
- "limit": str(PAGE_SIZE),
- "offset": str(offset),
- }
- if selected_manufacturer:
- params["manufacturer"] = f"eq.{selected_manufacturer}"
- if selected_alias_name:
- params["alias_name"] = f"eq.{selected_alias_name}"
- if q:
- # 여러 컬럼에 대해 ilike filter
- params["or"] = f"(code_name.ilike.*{q}*,code_description.ilike.*{q}*,alias_name.ilike.*{q}*)"
-
- with build_pg_client() as c:
- res = c.get("/MMI_Code", params=params)
- res.raise_for_status()
- rows = res.json() or []
- # dedup if group_code on
- if group_code:
- seen = set()
- dedup = []
- for r in rows:
- code = r.get("code_name")
- if code and code not in seen:
- seen.add(code)
- dedup.append(r)
- rows = dedup
- query_params = request.args.to_dict()
- if "page" in query_params:
- del query_params["page"]
- query_params_string = urlencode(query_params)
-
- # 템플릿 렌더 및 선택 파라미터 전달
- return render_template(
- "partials/sb_mmi_list.html",
- rows=rows,
- manufacturers=manufacturers,
- alias_names=alias_names,
- selected_manufacturer=selected_manufacturer,
- selected_alias_name=selected_alias_name,
- q=q,
- group_code="on" if group_code else "off",
- section="mmicode",
- page=page,
- page_size=PAGE_SIZE,
- query_params_string=query_params_string,
- )
-
- # ---- 기존(고장코드/TCMS) ----
- mf_fault = pg_unique("manufacturer")
- mf_signal = pg_unique_from("Signals", "manufacturer")
- seen_mf: Dict[str, bool] = {}
- manufacturers: List[str] = []
- for v in (mf_fault + mf_signal):
- if v and v not in seen_mf:
- seen_mf[v] = True
- manufacturers.append(v)
-
+ # MMI_Code 테이블에서 제조사
+ vals3 = []
+ try:
+ r3 = c.get("/MMI_Code", params={"select": "manufacturer"})
+ r3.raise_for_status()
+ vals3 = [row.get("manufacturer") for row in (r3.json() or []) if row.get("manufacturer")]
+ except httpx.HTTPError:
+ pass
+
+ # 중복 제거
+ all_manufacturers = vals1 + vals2 + vals3
+ seen = set()
+ unique_manufacturers = []
+ for v in all_manufacturers:
+ if v and v not in seen:
+ seen.add(v)
+ unique_manufacturers.append(v)
+
+ unique_manufacturers.sort()
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "manufacturers": unique_manufacturers
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/fault")
+ def api_fault_filters():
+ """고장코드 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
devices = pg_unique("device")
car_types = pg_unique("car_type")
car_ids = pg_unique("car_id")
- # alias_name 필터는 제작사에 따라 값 제한: 우진/로템/다대 포함
+
all_alias = pg_unique("alias_name")
- selected_manufacturer = request.args.get("manufacturer", "").strip()
def alias_allowed(name: str) -> bool:
if not name:
return False
@@ -225,47 +716,162 @@ def create_app() -> Flask:
return ("로템" in name) or ("다대" in name) or ("rotem" in low)
return True
alias_names = [a for a in all_alias if alias_allowed(a)]
- signal_classifications = pg_unique_from("Signals", "classification")
-
- # 선택값 처리 (쿼리스트링에 manufacturer 키가 있으면 빈 문자열이라도 그대로 유지)
- if "manufacturer" in request.args:
- selected_manufacturer = (request.args.get("manufacturer") or "").strip()
- else:
- selected_manufacturer = manufacturers[0] if manufacturers else ""
-
- # 다른 필터의 현재 선택값 유지
- selected_device = request.args.get("device", "").strip()
- selected_car_type = request.args.get("car_type", "").strip()
- selected_alias_name = request.args.get("alias_name", "").strip()
- selected_classification = request.args.get("classification", "").strip()
- q = request.args.get("q", "").strip()
- section = request.args.get("section", "fault").strip() or "fault"
-
- return render_template(
- "partials/sb_manufacturer.html",
- manufacturers=manufacturers,
- devices=devices,
- car_types=car_types,
- car_ids=car_ids,
- alias_names=alias_names,
- signal_classifications=signal_classifications,
- selected_manufacturer=selected_manufacturer,
- selected_device=selected_device,
- selected_car_type=selected_car_type,
- selected_alias_name=selected_alias_name,
- selected_classification=selected_classification,
- q=q,
- section=section,
- )
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "devices": sorted(devices),
+ "car_types": sorted(car_types),
+ "car_ids": sorted(car_ids),
+ "alias_names": sorted(alias_names)
+ }
+ })
+
except Exception as e:
- return render_template(
- "partials/sb_error.html",
- error_message=str(e),
- supabase_url=app.config.get("SUPABASE_URL"),
- )
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/signal")
+ def api_signal_filters():
+ """TCMS 신호 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
+ all_alias = pg_unique_from("Signals", "alias_name")
+ def alias_allowed(name: str) -> bool:
+ if not name:
+ return False
+ low = name.lower()
+ if selected_manufacturer.lower() == "woojin":
+ return ("우진" in name) or ("woojin" in low)
+ if selected_manufacturer.lower() == "rotem":
+ return ("로템" in name) or ("다대" in name) or ("rotem" in low)
+ return True
+ alias_names = [a for a in all_alias if alias_allowed(a)]
+ classifications = pg_unique_from("Signals", "classification")
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "alias_names": sorted(alias_names),
+ "classifications": sorted(classifications)
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/abbreviation")
+ def api_abbreviation_filters():
+ """약어 필터 옵션을 JSON으로 반환"""
+ try:
+ classifications = pg_unique_from("drawer_abbreviation", "classification")
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "classifications": sorted(classifications)
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/mmi")
+ def api_mmi_filters():
+ """MMI 코드 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
+ with build_pg_client() as c:
+ res = c.get("/MMI_Code", params={"select": "alias_name"})
+ res.raise_for_status()
+ all_alias = sorted({row.get("alias_name") for row in (res.json() or []) if row.get("alias_name")})
+
+ def alias_allowed(name: str) -> bool:
+ if not name:
+ return False
+ low = name.lower()
+ if selected_manufacturer.lower() == "woojin":
+ return ("우진" in name) or ("woojin" in low)
+ if selected_manufacturer.lower() == "rotem":
+ return ("로템" in name) or ("다대" in name) or ("rotem" in low)
+ return True
+ alias_names = [a for a in all_alias if alias_allowed(a)]
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "alias_names": alias_names
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/mmi/list")
+ def api_mmi_list():
+ """MMI 코드 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
- @app.route("/sb/faults/list")
- def sb_faults_list():
+ manufacturer = request.args.get("manufacturer", "").strip()
+ alias_name = request.args.get("alias_name", "").strip()
+ q = request.args.get("q", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "id,code_name,code_description,data_type,car_id,alias_name,manufacturer",
+ "order": "code_name.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if alias_name:
+ params["alias_name"] = f"eq.{alias_name}"
+ if q:
+ params["or"] = f"(code_name.ilike.*{q}*,code_description.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ r = c.get("/MMI_Code", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/faults/list")
+ def api_faults_list():
+ """고장코드 목록을 JSON으로 반환"""
try:
PAGE_SIZE = 50
page = int(request.args.get("page", "0"))
@@ -277,13 +883,14 @@ def create_app() -> Flask:
car_id = request.args.get("car_id", "").strip()
alias_name = request.args.get("alias_name", "").strip()
q = request.args.get("q", "").strip()
- section = request.args.get("section", "fault").strip()
+
params: Dict[str, str] = {
"select": "f_code,f_code_num,f_name,manufacturer,device,car_type,car_id,fault_detail,alias_name",
"order": "f_code.asc",
"limit": str(PAGE_SIZE),
"offset": str(offset),
}
+
if manufacturer:
params["manufacturer"] = f"eq.{manufacturer}"
if device:
@@ -301,42 +908,43 @@ def create_app() -> Flask:
r = c.get("/Fault_Code_Table", params=params)
r.raise_for_status()
rows = r.json() or []
- # 그룹핑 옵션: 같은 f_code를 첫 항목만 남김
+
+ # 그룹핑 옵션
group_code = request.args.get("group_code", "").strip().lower()
if group_code == "on":
seen: Dict[str, bool] = {}
dedup: List[Dict] = []
- for r in rows:
- code = r.get("f_code")
+ for row in rows:
+ code = row.get("f_code")
if code and code not in seen:
seen[code] = True
- dedup.append(r)
+ dedup.append(row)
rows = dedup
- query_params = request.args.to_dict()
- if "page" in query_params:
- del query_params["page"]
- query_params_string = urlencode(query_params)
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
- return render_template(
- "partials/sb_fault_list.html",
- rows=rows,
- page=page,
- page_size=PAGE_SIZE,
- query_params_string=query_params_string,
- )
except Exception as e:
- return render_template(
- "partials/sb_error.html",
- error_message=str(e),
- supabase_url=app.config.get("SUPABASE_URL"),
- )
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
- @app.route("/sb/faults/")
- def sb_fault_detail(f_code: str):
+ @app.route("/api/faults/")
+ def api_fault_detail(f_code: str):
+ """고장코드 상세 정보를 JSON으로 반환"""
try:
params = {
- "select": "f_code,f_code_num,f_name,car_type,f_class,grade,device,fault_detail,fault_reaction,fault_detection,fault_clear,fault_action,fault_schematics,car_id,manufacturer",
+ "select": "f_code,f_code_num,f_name,car_type,f_class,grade,device,fault_detail,fault_reaction,fault_detection,fault_clear,fault_action,fault_schematics,car_id,manufacturer,alias_name",
"f_code": f"eq.{f_code}",
"limit": "1",
}
@@ -345,19 +953,24 @@ def create_app() -> Flask:
r.raise_for_status()
rows = r.json() or []
if not rows:
- abort(404)
+ return jsonify({
+ "success": False,
+ "error": "고장코드를 찾을 수 없습니다."
+ }), 404
row = rows[0]
- return render_template("partials/sb_fault_detail.html", row=row)
+ return jsonify({
+ "success": True,
+ "data": row
+ })
except Exception as e:
- return render_template(
- "partials/sb_error.html",
- error_message=str(e),
- supabase_url=app.config.get("SUPABASE_URL"),
- )
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
- # ----------------- Signals (TCMS) -----------------
- @app.route("/sb/signals/list")
- def sb_signals_list():
+ @app.route("/api/signals/list")
+ def api_signals_list():
+ """TCMS 신호 목록을 JSON으로 반환"""
try:
PAGE_SIZE = 50
page = int(request.args.get("page", "0"))
@@ -399,39 +1012,39 @@ def create_app() -> Flask:
continue
if last_error and not rows:
raise last_error
- # TCMS도 group_code=on이면 sig_num/dedup(또는 id?)
+
group_code = request.args.get("group_code", "").strip().lower()
if group_code == "on":
seen: Dict[str, bool] = {}
dedup: List[Dict] = []
- for r in rows:
- code = r.get("id")
+ for row in rows:
+ code = row.get("id")
if code and code not in seen:
seen[code] = True
- dedup.append(r)
+ dedup.append(row)
rows = dedup
- query_params = request.args.to_dict()
- if "page" in query_params:
- del query_params["page"]
- query_params_string = urlencode(query_params)
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
- return render_template(
- "partials/sb_signal_list.html",
- rows=rows,
- page=page,
- page_size=PAGE_SIZE,
- query_params_string=query_params_string,
- )
except Exception as e:
- return render_template(
- "partials/sb_error.html",
- error_message=str(e),
- supabase_url=app.config.get("SUPABASE_URL"),
- )
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
- @app.route("/sb/signals/")
- def sb_signal_detail(item_id: str):
+ @app.route("/api/signals/")
+ def api_signal_detail(item_id: str):
+ """TCMS 신호 상세 정보를 JSON으로 반환"""
try:
params = {
"select": "id,sig_num,signal_abbreviation,signal_description,status_value,manufacturer,classification,alias_name,original_data,created_at,updated_at",
@@ -455,15 +1068,384 @@ def create_app() -> Flask:
if last_error and not rows:
raise last_error
if not rows:
- abort(404)
+ return jsonify({
+ "success": False,
+ "error": "TCMS 신호를 찾을 수 없습니다."
+ }), 404
row = rows[0]
- return render_template("partials/sb_signal_detail.html", row=row)
+ return jsonify({
+ "success": True,
+ "data": row
+ })
except Exception as e:
- return render_template(
- "partials/sb_error.html",
- error_message=str(e),
- supabase_url=app.config.get("SUPABASE_URL"),
- )
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/abbreviations/list")
+ def api_abbreviations_list():
+ """약어 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ manufacturer = request.args.get("manufacturer", "").strip()
+ q = request.args.get("q", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "id,manufacturer,abb,classification,Related_drawings,term",
+ "order": "abb.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if q:
+ params["or"] = f"(abb.ilike.*{q}*,term.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ rows = []
+ last_error: Exception | None = None
+ for path in ("/drawer_abbreviation",):
+ try:
+ r = c.get(path, params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ last_error = None
+ break
+ except Exception as e:
+ last_error = e
+ rows = []
+ continue
+ if last_error and not rows:
+ raise last_error
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/abbreviations")
+ def api_abbreviations():
+ """약어 목록 조회 (페이지네이션 포함)"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ manufacturer = request.args.get("manufacturer", "").strip()
+ q = request.args.get("q", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "id,manufacturer,abb,classification,Related_drawings,term",
+ "order": "abb.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if q:
+ params["or"] = f"(abb.ilike.*{q}*,term.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ rows = []
+ last_error: Exception | None = None
+ for path in ("/drawer_abbreviation",):
+ try:
+ r = c.get(path, params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ last_error = None
+ break
+ except Exception as e:
+ last_error = e
+ rows = []
+ continue
+ if last_error and not rows:
+ raise last_error
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/abbreviations/")
+ def api_abbreviation_detail(abb_id: str):
+ """약어 상세 정보를 JSON으로 반환"""
+ try:
+ params = {
+ "select": "id,manufacturer,abb,classification,Related_drawings,term",
+ "id": f"eq.{abb_id}",
+ "limit": "1",
+ }
+ with build_pg_client() as c:
+ rows = []
+ last_error: Exception | None = None
+ for path in ("/drawer_abbreviation",):
+ try:
+ r = c.get(path, params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ last_error = None
+ break
+ except Exception as e:
+ last_error = e
+ rows = []
+ continue
+ if last_error and not rows:
+ raise last_error
+ if not rows:
+ return jsonify({
+ "success": False,
+ "error": "약어를 찾을 수 없습니다."
+ }), 404
+ row = rows[0]
+ return jsonify({
+ "success": True,
+ "data": row
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ========== Inbox Items (고장기록) API ==========
+
+ @app.route("/api/filters/inbox_items")
+ def api_inbox_items_filters():
+ """고장기록 필터 옵션을 JSON으로 반환"""
+ try:
+ with build_pg_client() as c:
+ # 편성, 호차, 상위장치, 하위장치, 부품 필터 옵션 조회
+ params = {
+ "select": "train_set,car_no,upper_device,lower_device,component"
+ }
+ r = c.get("/inbox_items", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+
+ # 각 필터별로 고유한 값 추출
+ train_sets = sorted({str(row.get("train_set", "")).strip() for row in rows if row.get("train_set")})
+ car_nos = sorted({str(row.get("car_no", "")).strip() for row in rows if row.get("car_no")})
+ upper_devices = sorted({str(row.get("upper_device", "")).strip() for row in rows if row.get("upper_device")})
+ lower_devices = sorted({str(row.get("lower_device", "")).strip() for row in rows if row.get("lower_device")})
+ components = sorted({str(row.get("component", "")).strip() for row in rows if row.get("component")})
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "train_sets": train_sets,
+ "car_nos": car_nos,
+ "upper_devices": upper_devices,
+ "lower_devices": lower_devices,
+ "components": components
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/inbox-items/list")
+ def api_inbox_items_list():
+ """고장기록 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ # 필터 파라미터
+ train_set = request.args.get("train_set", "").strip()
+ car_no = request.args.get("car_no", "").strip()
+ upper_device = request.args.get("upper_device", "").strip()
+ lower_device = request.args.get("lower_device", "").strip()
+ component = request.args.get("component", "").strip()
+ q = request.args.get("q", "").strip()
+
+ # 조회할 필드
+ select_fields = ",".join([
+ "item_id",
+ "system",
+ "manufacturer",
+ "occurred_date",
+ "section_desc",
+ "line_no",
+ "service_no",
+ "train_set",
+ "car_no",
+ "run_category",
+ "delay_min",
+ "severity",
+ "severity2",
+ "impact_category",
+ "upper_device",
+ "lower_device",
+ "component",
+ "title",
+ "body",
+ "action_date",
+ "action_team",
+ "labor_minutes",
+ "labor_count",
+ "action_type",
+ "completion_flag",
+ "approval_flag",
+ "rams_flag",
+ "progress_state"
+ ])
+
+ params: Dict[str, str] = {
+ "select": select_fields,
+ "order": "occurred_date.desc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+
+ # 필터 조건 추가
+ if train_set:
+ params["train_set"] = f"eq.{train_set}"
+ if car_no:
+ params["car_no"] = f"eq.{car_no}"
+ if upper_device:
+ params["upper_device"] = f"eq.{upper_device}"
+ if lower_device:
+ params["lower_device"] = f"eq.{lower_device}"
+ if component:
+ params["component"] = f"eq.{component}"
+ if q:
+ params["or"] = f"(title.ilike.*{q}*,body.ilike.*{q}*,component.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ r = c.get("/inbox_items", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/inbox-items/")
+ def api_inbox_item_detail(item_id: str):
+ """고장기록 상세 정보를 JSON으로 반환"""
+ try:
+ select_fields = ",".join([
+ "item_id",
+ "system",
+ "manufacturer",
+ "occurred_date",
+ "section_desc",
+ "line_no",
+ "service_no",
+ "train_set",
+ "car_no",
+ "run_category",
+ "delay_min",
+ "severity",
+ "severity2",
+ "impact_category",
+ "upper_device",
+ "lower_device",
+ "component",
+ "title",
+ "body",
+ "action_date",
+ "action_team",
+ "labor_minutes",
+ "labor_count",
+ "action_type",
+ "completion_flag",
+ "approval_flag",
+ "rams_flag",
+ "progress_state"
+ ])
+
+ params = {
+ "select": select_fields,
+ "item_id": f"eq.{item_id}",
+ "limit": "1",
+ }
+ with build_pg_client() as c:
+ r = c.get("/inbox_items", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+
+ if not rows:
+ return jsonify({
+ "success": False,
+ "error": "고장기록을 찾을 수 없습니다."
+ }), 404
+
+ row = rows[0]
+ return jsonify({
+ "success": True,
+ "data": row
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/.well-known/assetlinks.json")
+ def assetlinks():
+ """TWA Digital Asset Links 파일 제공"""
+ return jsonify([
+ {
+ "relation": ["delegate_permission/common.handle_all_urls"],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "me.humetrain.tr.twa",
+ "sha256_cert_fingerprints": [
+ "EC:CA:CD:61:52:36:79:14:BC:76:06:11:BF:7C:CE:7A:0D:26:7C:F7:57:FA:CD:98:BA:08:36:ED:95:BB:ED:FC"
+ ]
+ }
+ }
+ ])
@app.route("/sb/health")
def sb_health():
@@ -471,67 +1453,121 @@ def create_app() -> Flask:
with build_pg_client() as c:
r = c.get("/Fault_Code_Table", params={"select": "f_code", "limit": "1"})
r.raise_for_status()
- return {"sb": "ok", "url": app.config.get("SUPABASE_URL")}
+ return jsonify({"sb": "ok", "url": app.config.get("SUPABASE_URL")})
except Exception as e:
- return {"sb": "error", "url": app.config.get("SUPABASE_URL"), "error": str(e)}
+ return jsonify({"sb": "error", "url": app.config.get("SUPABASE_URL"), "error": str(e)})
- # 간단한 Signals 테스트 엔드포인트: 상위 5개 레코드를 JSON으로 반환
- @app.route("/sb/signals/test")
- def sb_signals_test():
+ # ============= 웹 푸시 알림 설정 =============
+
+ app.config['VAPID_PUBLIC_KEY'] = os.environ.get('VAPID_PUBLIC_KEY')
+ app.config['VAPID_PRIVATE_KEY'] = os.environ.get('VAPID_PRIVATE_KEY')
+ app.config['VAPID_SUBJECT'] = os.environ.get('VAPID_SUBJECT', 'mailto:admin@humetrain.me')
+
+ @app.route("/api/push/subscribe", methods=["POST"])
+ def subscribe_push():
+ """푸시 알림 구독"""
try:
- params = {
- "select": "uuid,sig_num,signal_abbreviation,manufacturer,classification,alias_name",
- "order": "sig_num.asc",
- "limit": "5",
+ data = request.json
+ subscription = data.get('subscription')
+ user_id = session.get('user_id', 'anonymous')
+
+ if not subscription or not subscription.get('endpoint'):
+ return jsonify({'success': False, 'error': '잘못된 구독 정보'}), 400
+
+ keys = subscription.get('keys', {})
+
+ # DB에 저장 (기존이면 업데이트)
+ existing = PushSubscription.query.filter_by(user_id=user_id).first()
+ if existing:
+ existing.endpoint = subscription['endpoint']
+ existing.p256dh = keys.get('p256dh', '')
+ existing.auth = keys.get('auth', '')
+ existing.updated_at = datetime.utcnow()
+ else:
+ new_sub = PushSubscription(
+ user_id=user_id,
+ endpoint=subscription['endpoint'],
+ p256dh=keys.get('p256dh', ''),
+ auth=keys.get('auth', '')
+ )
+ db.session.add(new_sub)
+
+ db.session.commit()
+
+ return jsonify({
+ 'success': True,
+ 'message': '푸시 알림 구독되었습니다.'
+ })
+ except Exception as e:
+ db.session.rollback()
+ return jsonify({
+ 'success': False,
+ 'error': str(e)
+ }), 500
+
+ @app.route("/api/push/test", methods=["POST"])
+ def test_push():
+ """테스트 푸시 알림 발송"""
+ try:
+ user_id = session.get('user_id', 'anonymous')
+
+ # DB에서 구독 정보 조회
+ push_sub = PushSubscription.query.filter_by(user_id=user_id).first()
+ if not push_sub:
+ return jsonify({
+ 'success': False,
+ 'error': '해당 사용자의 푸시 구독 정보가 없습니다.'
+ }), 404
+
+ subscription = push_sub.to_dict()
+ subscription['endpoint'] = push_sub.endpoint
+ endpoint = push_sub.endpoint
+
+ payload = {
+ 'title': '1호선 고장코드 테스트 알림',
+ 'body': '웹 푸시 알림이 정상적으로 작동합니다!',
+ 'icon': 'https://humetrain.me/icons/icon-192.svg',
+ 'badge': 'https://humetrain.me/icons/icon-192.svg',
+ 'tag': 'test-notification'
}
- with build_pg_client() as c:
- rows = []
- used_path = None
- last_error = None
- for path in ("/Signals", "/signals"):
- try:
- r = c.get(path, params=params)
- r.raise_for_status()
- rows = r.json() or []
- used_path = path
- last_error = None
- break
- except Exception as e:
- last_error = str(e)
- rows = []
- continue
- if last_error and not rows:
- return {"ok": False, "url": app.config.get("SUPABASE_URL"), "tried": ["/Signals", "/signals"], "error": last_error}, 500
- return {"ok": True, "url": app.config.get("SUPABASE_URL"), "path": used_path, "rows": rows}
+
+ # 'aud' 클레임을 위해 endpoint에서 scheme://host[:port] 추출
+ from urllib.parse import urlparse
+ parsed_url = urlparse(endpoint)
+ aud = f"{parsed_url.scheme}://{parsed_url.netloc}"
+
+ webpush(
+ subscription_info=subscription,
+ data=json.dumps(payload),
+ vapid_private_key=app.config['VAPID_PRIVATE_KEY'],
+ vapid_claims={
+ 'sub': app.config['VAPID_SUBJECT'],
+ 'aud': aud
+ }
+ )
+
+ return jsonify({
+ 'success': True,
+ 'message': '테스트 푸시 알림이 발송되었습니다.'
+ })
+ except WebPushException as e:
+ return jsonify({
+ 'success': False,
+ 'error': f'푸시 발송 실패: {str(e)}'
+ }), 500
except Exception as e:
- return {"ok": False, "url": app.config.get("SUPABASE_URL"), "error": str(e)}, 500
-
- # 상세 디버그: 두 경로 각각의 상태/본문을 그대로 반환
- @app.route("/sb/signals/debug")
- def sb_signals_debug():
- try:
- out = []
- with build_pg_client() as c:
- for path in ("/Signals", "/signals"):
- try:
- r = c.get(path, params={"select": "*", "limit": "5"})
- ct = r.headers.get("content-type", "")
- body = None
- try:
- body = r.json()
- except Exception:
- body = r.text
- out.append({
- "path": path,
- "status": r.status_code,
- "content_type": ct,
- "body": body,
- })
- except httpx.HTTPError as e:
- out.append({"path": path, "error": str(e)})
- return {"ok": True, "url": app.config.get("SUPABASE_URL"), "results": out}
- except Exception as e:
- return {"ok": False, "url": app.config.get("SUPABASE_URL"), "error": str(e)}, 500
+ return jsonify({
+ 'success': False,
+ 'error': str(e)
+ }), 500
+
+ @app.route("/api/push/public-key", methods=["GET"])
+ def get_push_public_key():
+ """클라이언트가 사용할 VAPID 공개 키 반환"""
+ return jsonify({
+ 'success': True,
+ 'publicKey': app.config['VAPID_PUBLIC_KEY']
+ })
return app
@@ -540,3 +1576,4 @@ app = create_app()
if __name__ == "__main__":
port = int(os.environ.get("PORT", "5000"))
app.run(host="0.0.0.0", port=port, debug=True)
+
diff --git a/app.py.backup b/app.py.backup
new file mode 100644
index 0000000..2c17946
--- /dev/null
+++ b/app.py.backup
@@ -0,0 +1,1051 @@
+import os
+from typing import Optional, List, Dict
+import httpx
+
+from flask import Flask, g, request, abort, session, jsonify
+from urllib.parse import urlencode
+from dotenv import load_dotenv
+from flask_cors import CORS
+from functools import wraps
+
+
+APP_NAME = "1호선 고장코드"
+
+
+def create_app() -> Flask:
+ app = Flask(__name__)
+ app.config.update(TEMPLATES_AUTO_RELOAD=True)
+
+ # 세션 설정
+ app.secret_key = os.environ.get("SECRET_KEY", "dev-secret-key-change-in-production")
+ app.config["SESSION_COOKIE_HTTPONLY"] = True
+ app.config["SESSION_COOKIE_SAMESITE"] = "Lax"
+
+ # CORS 설정 (Vue PWA에서 접근 허용)
+ # 프로덕션: 특정 도메인만 허용
+ allowed_origins = [
+ "https://humetrain.me",
+ "http://localhost:5173", # 개발 서버
+ "http://127.0.0.1:5173",
+ "http://localhost:8080", # 로컬 nginx
+ "http://127.0.0.1:8080",
+ ]
+
+ # 개발 모드에서는 모든 도메인 허용
+ CORS(app,
+ origins=["*"] if app.debug else allowed_origins,
+ supports_credentials=True,
+ allow_headers=["Content-Type", "Authorization", "apikey", "Accept-Profile", "Content-Profile"],
+ methods=["GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH"])
+
+ # 환경변수 로드 및 Supabase 기본값 설정
+ load_dotenv()
+ app.config.setdefault("SUPABASE_URL", os.environ.get("SUPABASE_URL", "http://localhost:8000"))
+ app.config.setdefault("SUPABASE_ANON_KEY", os.environ.get("SUPABASE_ANON_KEY", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU4NTUxNjY2LCJleHAiOjQxMDI0NDQ4MDB9.jMCGL3Q-N2o_l7JQE_HrO7Uoct86CMgLsVxpabisG4I"))
+ app.config.setdefault("SUPABASE_BASIC_USER", os.environ.get("SUPABASE_BASIC_USER", ""))
+ app.config.setdefault("SUPABASE_BASIC_PASSWORD", os.environ.get("SUPABASE_BASIC_PASSWORD", ""))
+
+ # PostgREST(REST) 클라이언트 빌더
+ def build_pg_client() -> httpx.Client:
+ base = app.config["SUPABASE_URL"].rstrip("/") + "/rest/v1"
+ basic_user = app.config.get("SUPABASE_BASIC_USER") or ""
+ basic_pass = app.config.get("SUPABASE_BASIC_PASSWORD") or ""
+ headers = {
+ "apikey": app.config.get("SUPABASE_ANON_KEY", ""),
+ "Accept-Profile": "public",
+ "Content-Profile": "public",
+ }
+ auth = httpx.BasicAuth(basic_user, basic_pass) if basic_user else None
+ if not auth and app.config.get("SUPABASE_ANON_KEY"):
+ headers["Authorization"] = f"Bearer {app.config['SUPABASE_ANON_KEY']}"
+ return httpx.Client(base_url=base, headers=headers, auth=auth, timeout=10)
+
+ def pg_unique(col: str) -> List[str]:
+ with build_pg_client() as c:
+ r = c.get("/Fault_Code_Table", params={"select": col})
+ r.raise_for_status()
+ vals = [row.get(col) for row in (r.json() or []) if row.get(col)]
+ seen: Dict[str, bool] = {}
+ out: List[str] = []
+ for v in vals:
+ if v not in seen:
+ seen[v] = True
+ out.append(v)
+ return out
+
+ def pg_unique_from(table: str, col: str) -> List[str]:
+ """지정 테이블에서 고유값 리스트를 반환한다."""
+ with build_pg_client() as c:
+ r = c.get(f"/{table}", params={"select": col})
+ r.raise_for_status()
+ vals = [row.get(col) for row in (r.json() or []) if row.get(col)]
+ seen: Dict[str, bool] = {}
+ out: List[str] = []
+ for v in vals:
+ if v not in seen:
+ seen[v] = True
+ out.append(v)
+ return out
+
+ # 인증 헬퍼 함수
+ def login_required(f):
+ """로그인이 필요한 라우트를 위한 데코레이터"""
+ @wraps(f)
+ def decorated_function(*args, **kwargs):
+ if "user_id" not in session:
+ return jsonify({"success": False, "error": "Authentication required"}), 401
+ return f(*args, **kwargs)
+ return decorated_function
+
+ def get_current_user() -> Optional[Dict]:
+ """현재 로그인한 사용자 정보 반환"""
+ if "user_id" in session:
+ return {
+ "user_id": session.get("user_id"),
+ "email": session.get("email"),
+ "employee_id": session.get("employee_id"),
+ "name": session.get("name"),
+ "department_id": session.get("department_id"),
+ "access_token": session.get("access_token")
+ }
+ return None
+
+ # ============= 인증 API =============
+
+ @app.route("/api/auth/login", methods=["POST"])
+ def api_login():
+ """로그인 API"""
+ try:
+ from auth import AuthManager
+
+ data = request.json
+ employee_id = data.get("employee_id", "").strip()
+ password = data.get("password", "").strip()
+
+ if not employee_id or not password:
+ return jsonify({
+ "success": False,
+ "error": "사번과 비밀번호를 모두 입력해주세요."
+ }), 400
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ success, message, session_data = auth_manager.login_user_by_employee_id(employee_id, password)
+
+ if success and session_data:
+ # 세션에 사용자 정보 저장
+ session["user_id"] = session_data["user_id"]
+ session["auth_id"] = session_data["auth_id"]
+ session["email"] = session_data["email"]
+ session["employee_id"] = session_data["employee_id"]
+ session["name"] = session_data["name"]
+ session["department_id"] = session_data["department_id"]
+ session["access_token"] = session_data["access_token"]
+ session.permanent = True
+
+ return jsonify({
+ "success": True,
+ "user": {
+ "user_id": session_data["user_id"],
+ "email": session_data["email"],
+ "employee_id": session_data["employee_id"],
+ "name": session_data["name"],
+ "department_id": session_data["department_id"]
+ }
+ })
+ else:
+ return jsonify({
+ "success": False,
+ "error": message
+ }), 401
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/signup", methods=["POST"])
+ def api_signup():
+ """회원가입 API"""
+ try:
+ from auth import AuthManager
+
+ data = request.json
+ email = data.get("email", "").strip()
+ password = data.get("password", "").strip()
+ password_confirm = data.get("password_confirm", "").strip()
+ employee_id = data.get("employee_id", "").strip()
+ name = data.get("name", "").strip()
+ department_id = data.get("department_id", "").strip()
+
+ # 입력값 검증
+ if not all([email, password, password_confirm, employee_id, name, department_id]):
+ return jsonify({
+ "success": False,
+ "error": "모든 필드를 입력해주세요."
+ }), 400
+
+ # 비밀번호 확인
+ if password != password_confirm:
+ return jsonify({
+ "success": False,
+ "error": "비밀번호가 일치하지 않습니다."
+ }), 400
+
+ # 비밀번호 길이 검증
+ if len(password) < 8:
+ return jsonify({
+ "success": False,
+ "error": "비밀번호는 최소 8자 이상이어야 합니다."
+ }), 400
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ # 회원가입 처리
+ success, message, _ = auth_manager.signup_user(
+ email=email,
+ password=password,
+ employee_id=employee_id,
+ name=name,
+ department_id=int(department_id)
+ )
+
+ if success:
+ return jsonify({
+ "success": True,
+ "message": message
+ })
+ else:
+ return jsonify({
+ "success": False,
+ "error": message
+ }), 400
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/logout", methods=["POST"])
+ def api_logout():
+ """로그아웃 API"""
+ try:
+ from auth import AuthManager
+
+ # 세션에서 access_token 가져오기
+ access_token = session.get("access_token")
+
+ if access_token:
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+ auth_manager.logout_user(access_token)
+
+ # 세션 클리어
+ session.clear()
+
+ return jsonify({
+ "success": True,
+ "message": "로그아웃되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/me")
+ @login_required
+ def api_current_user():
+ """현재 로그인한 사용자 정보 조회 API"""
+ user = get_current_user()
+ return jsonify({
+ "success": True,
+ "user": user
+ })
+
+ @app.route("/api/departments")
+ def api_departments():
+ """부서 목록 조회 API"""
+ try:
+ from auth import AuthManager
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ departments = auth_manager.get_departments()
+
+ return jsonify({
+ "success": True,
+ "departments": departments
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ============= 이메일 코드 인증 API =============
+
+ @app.route("/api/email/send-code", methods=["POST"])
+ def send_email_code():
+ """이메일 인증 코드 발송"""
+ try:
+ import random
+ import string
+ from datetime import datetime, timedelta
+
+ data = request.json
+ email = data.get("email", "").strip().lower()
+ code_type = data.get("type", "signup") # signup, password_reset
+
+ # 이메일 도메인 검증
+ if not email.endswith("@humetro.busan.kr"):
+ return jsonify({
+ "success": False,
+ "error": "humetro.busan.kr 도메인의 이메일만 사용 가능합니다."
+ }), 400
+
+ # 6자리 숫자 코드 생성
+ code = ''.join(random.choices(string.digits, k=6))
+
+ # 세션에 코드 저장 (5분간 유효)
+ expiry = datetime.now() + timedelta(minutes=5)
+ session[f"email_code_{email}_{code_type}"] = {
+ "code": code,
+ "expiry": expiry.timestamp(),
+ "attempts": 0
+ }
+
+ # TODO: 실제 이메일 발송
+ print(f"\n=== 이메일 인증 코드 ===")
+ print(f"To: {email}")
+ print(f"Code: {code}")
+ print(f"Type: {code_type}")
+ print(f"Expiry: {expiry}")
+ print(f"=======================\n")
+
+ return jsonify({
+ "success": True,
+ "message": "인증 코드를 이메일로 전송했습니다.",
+ "debug_code": code if app.debug else None
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/email/verify-code", methods=["POST"])
+ def verify_email_code():
+ """이메일 인증 코드 검증"""
+ try:
+ from datetime import datetime
+
+ data = request.json
+ email = data.get("email", "").strip().lower()
+ code = data.get("code", "").strip()
+ code_type = data.get("type", "signup")
+
+ # 세션에서 코드 확인
+ session_key = f"email_code_{email}_{code_type}"
+ stored_data = session.get(session_key)
+
+ if not stored_data:
+ return jsonify({
+ "success": False,
+ "error": "인증 코드가 존재하지 않거나 만료되었습니다."
+ }), 400
+
+ # 시도 횟수 체크
+ if stored_data["attempts"] >= 5:
+ session.pop(session_key, None)
+ return jsonify({
+ "success": False,
+ "error": "인증 시도 횟수를 초과했습니다."
+ }), 400
+
+ # 만료 시간 체크
+ if datetime.now().timestamp() > stored_data["expiry"]:
+ session.pop(session_key, None)
+ return jsonify({
+ "success": False,
+ "error": "인증 코드가 만료되었습니다."
+ }), 400
+
+ # 코드 검증
+ if stored_data["code"] != code:
+ stored_data["attempts"] += 1
+ session[session_key] = stored_data
+ return jsonify({
+ "success": False,
+ "error": f"인증 코드가 올바르지 않습니다. (남은 시도: {5 - stored_data['attempts']}회)"
+ }), 400
+
+ # 인증 성공
+ session[f"email_verified_{email}_{code_type}"] = {
+ "verified_at": datetime.now().timestamp()
+ }
+ session.pop(session_key, None)
+
+ return jsonify({
+ "success": True,
+ "message": "인증이 완료되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ============= 생체인증 API =============
+
+ @app.route("/api/biometric/register-challenge", methods=["POST"])
+ def biometric_register_challenge():
+ """생체인증 등록을 위한 challenge 생성"""
+ try:
+ import secrets
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ challenge = secrets.token_urlsafe(32)
+ session[f"biometric_challenge_{employee_id}"] = {
+ "challenge": challenge,
+ "timestamp": datetime.now().timestamp()
+ }
+
+ return jsonify({
+ "success": True,
+ "challenge": challenge,
+ "userId": employee_id
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/register", methods=["POST"])
+ def biometric_register():
+ """생체인증 credential 등록"""
+ try:
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+ credential = data.get("credential")
+
+ with build_pg_client() as c:
+ r = c.post(
+ "/biometric_credentials",
+ json={
+ "employee_id": employee_id,
+ "credential_id": credential["id"],
+ "credential_data": credential,
+ "created_at": datetime.now().isoformat()
+ }
+ )
+ r.raise_for_status()
+
+ session.pop(f"biometric_challenge_{employee_id}", None)
+
+ return jsonify({
+ "success": True,
+ "message": "생체인증이 등록되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/login-challenge", methods=["POST"])
+ def biometric_login_challenge():
+ """생체인증 로그인을 위한 challenge 생성"""
+ try:
+ import secrets
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ challenge = secrets.token_urlsafe(32)
+ session[f"biometric_login_challenge_{employee_id}"] = {
+ "challenge": challenge,
+ "timestamp": datetime.now().timestamp()
+ }
+
+ return jsonify({
+ "success": True,
+ "challenge": challenge
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/login", methods=["POST"])
+ def biometric_login():
+ """생체인증으로 로그인"""
+ try:
+ data = request.json
+ employee_id = data.get("employeeId")
+ assertion = data.get("assertion")
+
+ with build_pg_client() as c:
+ r = c.get(
+ "/biometric_credentials",
+ params={
+ "employee_id": f"eq.{employee_id}",
+ "limit": "1"
+ }
+ )
+ r.raise_for_status()
+ credentials = r.json() or []
+
+ if not credentials:
+ return jsonify({
+ "success": False,
+ "error": "등록된 생체인증 정보가 없습니다."
+ }), 404
+
+ stored_credential = credentials[0]
+ if stored_credential["credential_id"] != assertion["id"]:
+ return jsonify({
+ "success": False,
+ "error": "인증 실패"
+ }), 401
+
+ # users 테이블에서 사용자 정보 조회
+ with build_pg_client() as c:
+ r = c.get(
+ "/users",
+ params={
+ "employee_id": f"eq.{employee_id}",
+ "limit": "1"
+ }
+ )
+ r.raise_for_status()
+ users = r.json() or []
+
+ if not users:
+ return jsonify({
+ "success": False,
+ "error": "사용자를 찾을 수 없습니다."
+ }), 404
+
+ user_data = users[0]
+
+ # 세션에 사용자 정보 저장
+ session["user_id"] = user_data["id"]
+ session["email"] = user_data["email"]
+ session["employee_id"] = user_data["employee_id"]
+ session["name"] = user_data["name"]
+ session["department_id"] = user_data["department_id"]
+ session.permanent = True
+
+ session.pop(f"biometric_login_challenge_{employee_id}", None)
+
+ return jsonify({
+ "success": True,
+ "user": {
+ "id": user_data["id"],
+ "email": user_data["email"],
+ "employee_id": user_data["employee_id"],
+ "name": user_data["name"],
+ "department_id": user_data["department_id"]
+ }
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/unregister", methods=["POST"])
+ def biometric_unregister():
+ """생체인증 해제"""
+ try:
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ with build_pg_client() as c:
+ r = c.delete(
+ "/biometric_credentials",
+ params={"employee_id": f"eq.{employee_id}"}
+ )
+ r.raise_for_status()
+
+ return jsonify({
+ "success": True,
+ "message": "생체인증이 해제되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ============= 데이터 조회 API =============
+
+ @app.route("/health")
+ def health():
+ return jsonify({"status": "ok"})
+
+ @app.route("/favicon.ico")
+ def favicon():
+ return ("", 204, {"Content-Type": "image/x-icon"})
+
+ @app.route("/api/manufacturers")
+ def api_manufacturers():
+ """제조사 목록을 JSON으로 반환"""
+ try:
+ with build_pg_client() as c:
+ # Fault_Code_Table에서 제조사
+ r1 = c.get("/Fault_Code_Table", params={"select": "manufacturer"})
+ r1.raise_for_status()
+ vals1 = [row.get("manufacturer") for row in (r1.json() or []) if row.get("manufacturer")]
+
+ # Signals 테이블에서 제조사
+ vals2 = []
+ for path in ("/Signals", "/signals"):
+ try:
+ r2 = c.get(path, params={"select": "manufacturer"})
+ r2.raise_for_status()
+ vals2 = [row.get("manufacturer") for row in (r2.json() or []) if row.get("manufacturer")]
+ break
+ except httpx.HTTPError:
+ continue
+
+ # MMI_Code 테이블에서 제조사
+ vals3 = []
+ try:
+ r3 = c.get("/MMI_Code", params={"select": "manufacturer"})
+ r3.raise_for_status()
+ vals3 = [row.get("manufacturer") for row in (r3.json() or []) if row.get("manufacturer")]
+ except httpx.HTTPError:
+ pass
+
+ # 중복 제거
+ all_manufacturers = vals1 + vals2 + vals3
+ seen = set()
+ unique_manufacturers = []
+ for v in all_manufacturers:
+ if v and v not in seen:
+ seen.add(v)
+ unique_manufacturers.append(v)
+
+ unique_manufacturers.sort()
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "manufacturers": unique_manufacturers
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/fault")
+ def api_fault_filters():
+ """고장코드 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
+ devices = pg_unique("device")
+ car_types = pg_unique("car_type")
+ car_ids = pg_unique("car_id")
+
+ all_alias = pg_unique("alias_name")
+ def alias_allowed(name: str) -> bool:
+ if not name:
+ return False
+ low = name.lower()
+ if selected_manufacturer.lower() == "woojin":
+ return ("우진" in name) or ("woojin" in low)
+ if selected_manufacturer.lower() == "rotem":
+ return ("로템" in name) or ("다대" in name) or ("rotem" in low)
+ return True
+ alias_names = [a for a in all_alias if alias_allowed(a)]
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "devices": sorted(devices),
+ "car_types": sorted(car_types),
+ "car_ids": sorted(car_ids),
+ "alias_names": sorted(alias_names)
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/signal")
+ def api_signal_filters():
+ """TCMS 신호 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
+ all_alias = pg_unique_from("Signals", "alias_name")
+ def alias_allowed(name: str) -> bool:
+ if not name:
+ return False
+ low = name.lower()
+ if selected_manufacturer.lower() == "woojin":
+ return ("우진" in name) or ("woojin" in low)
+ if selected_manufacturer.lower() == "rotem":
+ return ("로템" in name) or ("다대" in name) or ("rotem" in low)
+ return True
+ alias_names = [a for a in all_alias if alias_allowed(a)]
+ classifications = pg_unique_from("Signals", "classification")
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "alias_names": sorted(alias_names),
+ "classifications": sorted(classifications)
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/mmi")
+ def api_mmi_filters():
+ """MMI 코드 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
+ with build_pg_client() as c:
+ res = c.get("/MMI_Code", params={"select": "alias_name"})
+ res.raise_for_status()
+ all_alias = sorted({row.get("alias_name") for row in (res.json() or []) if row.get("alias_name")})
+
+ def alias_allowed(name: str) -> bool:
+ if not name:
+ return False
+ low = name.lower()
+ if selected_manufacturer.lower() == "woojin":
+ return ("우진" in name) or ("woojin" in low)
+ if selected_manufacturer.lower() == "rotem":
+ return ("로템" in name) or ("다대" in name) or ("rotem" in low)
+ return True
+ alias_names = [a for a in all_alias if alias_allowed(a)]
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "alias_names": alias_names
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/mmi/list")
+ def api_mmi_list():
+ """MMI 코드 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ manufacturer = request.args.get("manufacturer", "").strip()
+ alias_name = request.args.get("alias_name", "").strip()
+ q = request.args.get("q", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "id,code_name,code_description,data_type,car_id,alias_name,manufacturer",
+ "order": "code_name.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if alias_name:
+ params["alias_name"] = f"eq.{alias_name}"
+ if q:
+ params["or"] = f"(code_name.ilike.*{q}*,code_description.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ r = c.get("/MMI_Code", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/faults/list")
+ def api_faults_list():
+ """고장코드 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ manufacturer = request.args.get("manufacturer", "").strip()
+ device = request.args.get("device", "").strip()
+ car_type = request.args.get("car_type", "").strip()
+ car_id = request.args.get("car_id", "").strip()
+ alias_name = request.args.get("alias_name", "").strip()
+ q = request.args.get("q", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "f_code,f_code_num,f_name,manufacturer,device,car_type,car_id,fault_detail,alias_name",
+ "order": "f_code.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if device:
+ params["device"] = f"eq.{device}"
+ if car_type:
+ params["car_type"] = f"eq.{car_type}"
+ if car_id:
+ params["car_id"] = f"eq.{car_id}"
+ if alias_name:
+ params["alias_name"] = f"eq.{alias_name}"
+ if q:
+ params["or"] = f"(f_code.ilike.*{q}*,f_name.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ r = c.get("/Fault_Code_Table", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+
+ # 그룹핑 옵션
+ group_code = request.args.get("group_code", "").strip().lower()
+ if group_code == "on":
+ seen: Dict[str, bool] = {}
+ dedup: List[Dict] = []
+ for row in rows:
+ code = row.get("f_code")
+ if code and code not in seen:
+ seen[code] = True
+ dedup.append(row)
+ rows = dedup
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/faults/")
+ def api_fault_detail(f_code: str):
+ """고장코드 상세 정보를 JSON으로 반환"""
+ try:
+ params = {
+ "select": "f_code,f_code_num,f_name,car_type,f_class,grade,device,fault_detail,fault_reaction,fault_detection,fault_clear,fault_action,fault_schematics,car_id,manufacturer,alias_name",
+ "f_code": f"eq.{f_code}",
+ "limit": "1",
+ }
+ with build_pg_client() as c:
+ r = c.get("/Fault_Code_Table", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ if not rows:
+ return jsonify({
+ "success": False,
+ "error": "고장코드를 찾을 수 없습니다."
+ }), 404
+ row = rows[0]
+ return jsonify({
+ "success": True,
+ "data": row
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/signals/list")
+ def api_signals_list():
+ """TCMS 신호 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ manufacturer = request.args.get("manufacturer", "").strip()
+ classification = request.args.get("classification", "").strip()
+ q = request.args.get("q", "").strip()
+ alias_name = request.args.get("alias_name", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "id,sig_num,signal_abbreviation,signal_description,status_value,manufacturer,classification,alias_name",
+ "order": "sig_num.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if classification:
+ params["classification"] = f"eq.{classification}"
+ if alias_name:
+ params["alias_name"] = f"eq.{alias_name}"
+ if q:
+ params["or"] = f"(signal_abbreviation.ilike.*{q}*,signal_description.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ rows = []
+ last_error: Exception | None = None
+ for path in ("/Signals", "/signals"):
+ try:
+ r = c.get(path, params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ last_error = None
+ break
+ except Exception as e:
+ last_error = e
+ rows = []
+ continue
+ if last_error and not rows:
+ raise last_error
+
+ group_code = request.args.get("group_code", "").strip().lower()
+ if group_code == "on":
+ seen: Dict[str, bool] = {}
+ dedup: List[Dict] = []
+ for row in rows:
+ code = row.get("id")
+ if code and code not in seen:
+ seen[code] = True
+ dedup.append(row)
+ rows = dedup
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/signals/")
+ def api_signal_detail(item_id: str):
+ """TCMS 신호 상세 정보를 JSON으로 반환"""
+ try:
+ params = {
+ "select": "id,sig_num,signal_abbreviation,signal_description,status_value,manufacturer,classification,alias_name,original_data,created_at,updated_at",
+ "id": f"eq.{item_id}",
+ "limit": "1",
+ }
+ with build_pg_client() as c:
+ rows = []
+ last_error: Exception | None = None
+ for path in ("/Signals", "/signals"):
+ try:
+ r = c.get(path, params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ last_error = None
+ break
+ except Exception as e:
+ last_error = e
+ rows = []
+ continue
+ if last_error and not rows:
+ raise last_error
+ if not rows:
+ return jsonify({
+ "success": False,
+ "error": "TCMS 신호를 찾을 수 없습니다."
+ }), 404
+ row = rows[0]
+ return jsonify({
+ "success": True,
+ "data": row
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/sb/health")
+ def sb_health():
+ try:
+ with build_pg_client() as c:
+ r = c.get("/Fault_Code_Table", params={"select": "f_code", "limit": "1"})
+ r.raise_for_status()
+ return jsonify({"sb": "ok", "url": app.config.get("SUPABASE_URL")})
+ except Exception as e:
+ return jsonify({"sb": "error", "url": app.config.get("SUPABASE_URL"), "error": str(e)})
+
+ return app
+
+
+app = create_app()
+if __name__ == "__main__":
+ port = int(os.environ.get("PORT", "5000"))
+ app.run(host="0.0.0.0", port=port, debug=True)
+
diff --git a/app.py.htmx_backup b/app.py.htmx_backup
new file mode 100644
index 0000000..62e23ef
--- /dev/null
+++ b/app.py.htmx_backup
@@ -0,0 +1,1037 @@
+import os
+from typing import Optional, List, Dict
+import httpx
+
+from flask import Flask, g, request, abort, session, jsonify
+from urllib.parse import urlencode
+from dotenv import load_dotenv
+from flask_cors import CORS
+from functools import wraps
+
+
+APP_NAME = "1호선 고장코드"
+
+
+def create_app() -> Flask:
+ app = Flask(__name__)
+ app.config.update(TEMPLATES_AUTO_RELOAD=True)
+
+ # 세션 설정
+ app.secret_key = os.environ.get("SECRET_KEY", "dev-secret-key-change-in-production")
+ app.config["SESSION_COOKIE_HTTPONLY"] = True
+ app.config["SESSION_COOKIE_SAMESITE"] = "Lax"
+
+ # CORS 설정 (Vue PWA에서 접근 허용)
+ CORS(app, origins=["*"], supports_credentials=True)
+
+ # 환경변수 로드 및 Supabase 기본값 설정
+ load_dotenv()
+ app.config.setdefault("SUPABASE_URL", os.environ.get("SUPABASE_URL", "http://localhost:8000"))
+ app.config.setdefault("SUPABASE_ANON_KEY", os.environ.get("SUPABASE_ANON_KEY", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU4NTUxNjY2LCJleHAiOjQxMDI0NDQ4MDB9.jMCGL3Q-N2o_l7JQE_HrO7Uoct86CMgLsVxpabisG4I"))
+ app.config.setdefault("SUPABASE_BASIC_USER", os.environ.get("SUPABASE_BASIC_USER", ""))
+ app.config.setdefault("SUPABASE_BASIC_PASSWORD", os.environ.get("SUPABASE_BASIC_PASSWORD", ""))
+
+ # PostgREST(REST) 클라이언트 빌더
+ def build_pg_client() -> httpx.Client:
+ base = app.config["SUPABASE_URL"].rstrip("/") + "/rest/v1"
+ basic_user = app.config.get("SUPABASE_BASIC_USER") or ""
+ basic_pass = app.config.get("SUPABASE_BASIC_PASSWORD") or ""
+ headers = {
+ "apikey": app.config.get("SUPABASE_ANON_KEY", ""),
+ "Accept-Profile": "public",
+ "Content-Profile": "public",
+ }
+ auth = httpx.BasicAuth(basic_user, basic_pass) if basic_user else None
+ if not auth and app.config.get("SUPABASE_ANON_KEY"):
+ headers["Authorization"] = f"Bearer {app.config['SUPABASE_ANON_KEY']}"
+ return httpx.Client(base_url=base, headers=headers, auth=auth, timeout=10)
+
+ def pg_unique(col: str) -> List[str]:
+ with build_pg_client() as c:
+ r = c.get("/Fault_Code_Table", params={"select": col})
+ r.raise_for_status()
+ vals = [row.get(col) for row in (r.json() or []) if row.get(col)]
+ seen: Dict[str, bool] = {}
+ out: List[str] = []
+ for v in vals:
+ if v not in seen:
+ seen[v] = True
+ out.append(v)
+ return out
+
+ def pg_unique_from(table: str, col: str) -> List[str]:
+ """지정 테이블에서 고유값 리스트를 반환한다."""
+ with build_pg_client() as c:
+ r = c.get(f"/{table}", params={"select": col})
+ r.raise_for_status()
+ vals = [row.get(col) for row in (r.json() or []) if row.get(col)]
+ seen: Dict[str, bool] = {}
+ out: List[str] = []
+ for v in vals:
+ if v not in seen:
+ seen[v] = True
+ out.append(v)
+ return out
+
+ # 인증 헬퍼 함수
+ def login_required(f):
+ """로그인이 필요한 라우트를 위한 데코레이터"""
+ @wraps(f)
+ def decorated_function(*args, **kwargs):
+ if "user_id" not in session:
+ return jsonify({"success": False, "error": "Authentication required"}), 401
+ return f(*args, **kwargs)
+ return decorated_function
+
+ def get_current_user() -> Optional[Dict]:
+ """현재 로그인한 사용자 정보 반환"""
+ if "user_id" in session:
+ return {
+ "user_id": session.get("user_id"),
+ "email": session.get("email"),
+ "employee_id": session.get("employee_id"),
+ "name": session.get("name"),
+ "department_id": session.get("department_id"),
+ "access_token": session.get("access_token")
+ }
+ return None
+
+ # ============= 인증 API =============
+
+ @app.route("/api/auth/login", methods=["POST"])
+ def api_login():
+ """로그인 API"""
+ try:
+ from auth import AuthManager
+
+ data = request.json
+ employee_id = data.get("employee_id", "").strip()
+ password = data.get("password", "").strip()
+
+ if not employee_id or not password:
+ return jsonify({
+ "success": False,
+ "error": "사번과 비밀번호를 모두 입력해주세요."
+ }), 400
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ success, message, session_data = auth_manager.login_user_by_employee_id(employee_id, password)
+
+ if success and session_data:
+ # 세션에 사용자 정보 저장
+ session["user_id"] = session_data["user_id"]
+ session["auth_id"] = session_data["auth_id"]
+ session["email"] = session_data["email"]
+ session["employee_id"] = session_data["employee_id"]
+ session["name"] = session_data["name"]
+ session["department_id"] = session_data["department_id"]
+ session["access_token"] = session_data["access_token"]
+ session.permanent = True
+
+ return jsonify({
+ "success": True,
+ "user": {
+ "user_id": session_data["user_id"],
+ "email": session_data["email"],
+ "employee_id": session_data["employee_id"],
+ "name": session_data["name"],
+ "department_id": session_data["department_id"]
+ }
+ })
+ else:
+ return jsonify({
+ "success": False,
+ "error": message
+ }), 401
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/signup", methods=["POST"])
+ def api_signup():
+ """회원가입 API"""
+ try:
+ from auth import AuthManager
+
+ data = request.json
+ email = data.get("email", "").strip()
+ password = data.get("password", "").strip()
+ password_confirm = data.get("password_confirm", "").strip()
+ employee_id = data.get("employee_id", "").strip()
+ name = data.get("name", "").strip()
+ department_id = data.get("department_id", "").strip()
+
+ # 입력값 검증
+ if not all([email, password, password_confirm, employee_id, name, department_id]):
+ return jsonify({
+ "success": False,
+ "error": "모든 필드를 입력해주세요."
+ }), 400
+
+ # 비밀번호 확인
+ if password != password_confirm:
+ return jsonify({
+ "success": False,
+ "error": "비밀번호가 일치하지 않습니다."
+ }), 400
+
+ # 비밀번호 길이 검증
+ if len(password) < 8:
+ return jsonify({
+ "success": False,
+ "error": "비밀번호는 최소 8자 이상이어야 합니다."
+ }), 400
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ # 회원가입 처리
+ success, message, _ = auth_manager.signup_user(
+ email=email,
+ password=password,
+ employee_id=employee_id,
+ name=name,
+ department_id=int(department_id)
+ )
+
+ if success:
+ return jsonify({
+ "success": True,
+ "message": message
+ })
+ else:
+ return jsonify({
+ "success": False,
+ "error": message
+ }), 400
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/logout", methods=["POST"])
+ def api_logout():
+ """로그아웃 API"""
+ try:
+ from auth import AuthManager
+
+ # 세션에서 access_token 가져오기
+ access_token = session.get("access_token")
+
+ if access_token:
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+ auth_manager.logout_user(access_token)
+
+ # 세션 클리어
+ session.clear()
+
+ return jsonify({
+ "success": True,
+ "message": "로그아웃되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/auth/me")
+ @login_required
+ def api_current_user():
+ """현재 로그인한 사용자 정보 조회 API"""
+ user = get_current_user()
+ return jsonify({
+ "success": True,
+ "user": user
+ })
+
+ @app.route("/api/departments")
+ def api_departments():
+ """부서 목록 조회 API"""
+ try:
+ from auth import AuthManager
+
+ auth_manager = AuthManager(
+ app.config["SUPABASE_URL"],
+ app.config["SUPABASE_ANON_KEY"]
+ )
+
+ departments = auth_manager.get_departments()
+
+ return jsonify({
+ "success": True,
+ "departments": departments
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ============= 이메일 코드 인증 API =============
+
+ @app.route("/api/email/send-code", methods=["POST"])
+ def send_email_code():
+ """이메일 인증 코드 발송"""
+ try:
+ import random
+ import string
+ from datetime import datetime, timedelta
+
+ data = request.json
+ email = data.get("email", "").strip().lower()
+ code_type = data.get("type", "signup") # signup, password_reset
+
+ # 이메일 도메인 검증
+ if not email.endswith("@humetro.busan.kr"):
+ return jsonify({
+ "success": False,
+ "error": "humetro.busan.kr 도메인의 이메일만 사용 가능합니다."
+ }), 400
+
+ # 6자리 숫자 코드 생성
+ code = ''.join(random.choices(string.digits, k=6))
+
+ # 세션에 코드 저장 (5분간 유효)
+ expiry = datetime.now() + timedelta(minutes=5)
+ session[f"email_code_{email}_{code_type}"] = {
+ "code": code,
+ "expiry": expiry.timestamp(),
+ "attempts": 0
+ }
+
+ # TODO: 실제 이메일 발송
+ print(f"\n=== 이메일 인증 코드 ===")
+ print(f"To: {email}")
+ print(f"Code: {code}")
+ print(f"Type: {code_type}")
+ print(f"Expiry: {expiry}")
+ print(f"=======================\n")
+
+ return jsonify({
+ "success": True,
+ "message": "인증 코드를 이메일로 전송했습니다.",
+ "debug_code": code if app.debug else None
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/email/verify-code", methods=["POST"])
+ def verify_email_code():
+ """이메일 인증 코드 검증"""
+ try:
+ from datetime import datetime
+
+ data = request.json
+ email = data.get("email", "").strip().lower()
+ code = data.get("code", "").strip()
+ code_type = data.get("type", "signup")
+
+ # 세션에서 코드 확인
+ session_key = f"email_code_{email}_{code_type}"
+ stored_data = session.get(session_key)
+
+ if not stored_data:
+ return jsonify({
+ "success": False,
+ "error": "인증 코드가 존재하지 않거나 만료되었습니다."
+ }), 400
+
+ # 시도 횟수 체크
+ if stored_data["attempts"] >= 5:
+ session.pop(session_key, None)
+ return jsonify({
+ "success": False,
+ "error": "인증 시도 횟수를 초과했습니다."
+ }), 400
+
+ # 만료 시간 체크
+ if datetime.now().timestamp() > stored_data["expiry"]:
+ session.pop(session_key, None)
+ return jsonify({
+ "success": False,
+ "error": "인증 코드가 만료되었습니다."
+ }), 400
+
+ # 코드 검증
+ if stored_data["code"] != code:
+ stored_data["attempts"] += 1
+ session[session_key] = stored_data
+ return jsonify({
+ "success": False,
+ "error": f"인증 코드가 올바르지 않습니다. (남은 시도: {5 - stored_data['attempts']}회)"
+ }), 400
+
+ # 인증 성공
+ session[f"email_verified_{email}_{code_type}"] = {
+ "verified_at": datetime.now().timestamp()
+ }
+ session.pop(session_key, None)
+
+ return jsonify({
+ "success": True,
+ "message": "인증이 완료되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ============= 생체인증 API =============
+
+ @app.route("/api/biometric/register-challenge", methods=["POST"])
+ def biometric_register_challenge():
+ """생체인증 등록을 위한 challenge 생성"""
+ try:
+ import secrets
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ challenge = secrets.token_urlsafe(32)
+ session[f"biometric_challenge_{employee_id}"] = {
+ "challenge": challenge,
+ "timestamp": datetime.now().timestamp()
+ }
+
+ return jsonify({
+ "success": True,
+ "challenge": challenge,
+ "userId": employee_id
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/register", methods=["POST"])
+ def biometric_register():
+ """생체인증 credential 등록"""
+ try:
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+ credential = data.get("credential")
+
+ with build_pg_client() as c:
+ r = c.post(
+ "/biometric_credentials",
+ json={
+ "employee_id": employee_id,
+ "credential_id": credential["id"],
+ "credential_data": credential,
+ "created_at": datetime.now().isoformat()
+ }
+ )
+ r.raise_for_status()
+
+ session.pop(f"biometric_challenge_{employee_id}", None)
+
+ return jsonify({
+ "success": True,
+ "message": "생체인증이 등록되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/login-challenge", methods=["POST"])
+ def biometric_login_challenge():
+ """생체인증 로그인을 위한 challenge 생성"""
+ try:
+ import secrets
+ from datetime import datetime
+
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ challenge = secrets.token_urlsafe(32)
+ session[f"biometric_login_challenge_{employee_id}"] = {
+ "challenge": challenge,
+ "timestamp": datetime.now().timestamp()
+ }
+
+ return jsonify({
+ "success": True,
+ "challenge": challenge
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/login", methods=["POST"])
+ def biometric_login():
+ """생체인증으로 로그인"""
+ try:
+ data = request.json
+ employee_id = data.get("employeeId")
+ assertion = data.get("assertion")
+
+ with build_pg_client() as c:
+ r = c.get(
+ "/biometric_credentials",
+ params={
+ "employee_id": f"eq.{employee_id}",
+ "limit": "1"
+ }
+ )
+ r.raise_for_status()
+ credentials = r.json() or []
+
+ if not credentials:
+ return jsonify({
+ "success": False,
+ "error": "등록된 생체인증 정보가 없습니다."
+ }), 404
+
+ stored_credential = credentials[0]
+ if stored_credential["credential_id"] != assertion["id"]:
+ return jsonify({
+ "success": False,
+ "error": "인증 실패"
+ }), 401
+
+ # users 테이블에서 사용자 정보 조회
+ with build_pg_client() as c:
+ r = c.get(
+ "/users",
+ params={
+ "employee_id": f"eq.{employee_id}",
+ "limit": "1"
+ }
+ )
+ r.raise_for_status()
+ users = r.json() or []
+
+ if not users:
+ return jsonify({
+ "success": False,
+ "error": "사용자를 찾을 수 없습니다."
+ }), 404
+
+ user_data = users[0]
+
+ # 세션에 사용자 정보 저장
+ session["user_id"] = user_data["id"]
+ session["email"] = user_data["email"]
+ session["employee_id"] = user_data["employee_id"]
+ session["name"] = user_data["name"]
+ session["department_id"] = user_data["department_id"]
+ session.permanent = True
+
+ session.pop(f"biometric_login_challenge_{employee_id}", None)
+
+ return jsonify({
+ "success": True,
+ "user": {
+ "id": user_data["id"],
+ "email": user_data["email"],
+ "employee_id": user_data["employee_id"],
+ "name": user_data["name"],
+ "department_id": user_data["department_id"]
+ }
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/biometric/unregister", methods=["POST"])
+ def biometric_unregister():
+ """생체인증 해제"""
+ try:
+ data = request.json
+ employee_id = data.get("employeeId")
+
+ with build_pg_client() as c:
+ r = c.delete(
+ "/biometric_credentials",
+ params={"employee_id": f"eq.{employee_id}"}
+ )
+ r.raise_for_status()
+
+ return jsonify({
+ "success": True,
+ "message": "생체인증이 해제되었습니다."
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ # ============= 데이터 조회 API =============
+
+ @app.route("/health")
+ def health():
+ return jsonify({"status": "ok"})
+
+ @app.route("/favicon.ico")
+ def favicon():
+ return ("", 204, {"Content-Type": "image/x-icon"})
+
+ @app.route("/api/manufacturers")
+ def api_manufacturers():
+ """제조사 목록을 JSON으로 반환"""
+ try:
+ with build_pg_client() as c:
+ # Fault_Code_Table에서 제조사
+ r1 = c.get("/Fault_Code_Table", params={"select": "manufacturer"})
+ r1.raise_for_status()
+ vals1 = [row.get("manufacturer") for row in (r1.json() or []) if row.get("manufacturer")]
+
+ # Signals 테이블에서 제조사
+ vals2 = []
+ for path in ("/Signals", "/signals"):
+ try:
+ r2 = c.get(path, params={"select": "manufacturer"})
+ r2.raise_for_status()
+ vals2 = [row.get("manufacturer") for row in (r2.json() or []) if row.get("manufacturer")]
+ break
+ except httpx.HTTPError:
+ continue
+
+ # MMI_Code 테이블에서 제조사
+ vals3 = []
+ try:
+ r3 = c.get("/MMI_Code", params={"select": "manufacturer"})
+ r3.raise_for_status()
+ vals3 = [row.get("manufacturer") for row in (r3.json() or []) if row.get("manufacturer")]
+ except httpx.HTTPError:
+ pass
+
+ # 중복 제거
+ all_manufacturers = vals1 + vals2 + vals3
+ seen = set()
+ unique_manufacturers = []
+ for v in all_manufacturers:
+ if v and v not in seen:
+ seen.add(v)
+ unique_manufacturers.append(v)
+
+ unique_manufacturers.sort()
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "manufacturers": unique_manufacturers
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/fault")
+ def api_fault_filters():
+ """고장코드 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
+ devices = pg_unique("device")
+ car_types = pg_unique("car_type")
+ car_ids = pg_unique("car_id")
+
+ all_alias = pg_unique("alias_name")
+ def alias_allowed(name: str) -> bool:
+ if not name:
+ return False
+ low = name.lower()
+ if selected_manufacturer.lower() == "woojin":
+ return ("우진" in name) or ("woojin" in low)
+ if selected_manufacturer.lower() == "rotem":
+ return ("로템" in name) or ("다대" in name) or ("rotem" in low)
+ return True
+ alias_names = [a for a in all_alias if alias_allowed(a)]
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "devices": sorted(devices),
+ "car_types": sorted(car_types),
+ "car_ids": sorted(car_ids),
+ "alias_names": sorted(alias_names)
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/signal")
+ def api_signal_filters():
+ """TCMS 신호 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
+ all_alias = pg_unique_from("Signals", "alias_name")
+ def alias_allowed(name: str) -> bool:
+ if not name:
+ return False
+ low = name.lower()
+ if selected_manufacturer.lower() == "woojin":
+ return ("우진" in name) or ("woojin" in low)
+ if selected_manufacturer.lower() == "rotem":
+ return ("로템" in name) or ("다대" in name) or ("rotem" in low)
+ return True
+ alias_names = [a for a in all_alias if alias_allowed(a)]
+ classifications = pg_unique_from("Signals", "classification")
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "alias_names": sorted(alias_names),
+ "classifications": sorted(classifications)
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/filters/mmi")
+ def api_mmi_filters():
+ """MMI 코드 필터 옵션을 JSON으로 반환"""
+ try:
+ selected_manufacturer = request.args.get("manufacturer", "").strip()
+
+ with build_pg_client() as c:
+ res = c.get("/MMI_Code", params={"select": "alias_name"})
+ res.raise_for_status()
+ all_alias = sorted({row.get("alias_name") for row in (res.json() or []) if row.get("alias_name")})
+
+ def alias_allowed(name: str) -> bool:
+ if not name:
+ return False
+ low = name.lower()
+ if selected_manufacturer.lower() == "woojin":
+ return ("우진" in name) or ("woojin" in low)
+ if selected_manufacturer.lower() == "rotem":
+ return ("로템" in name) or ("다대" in name) or ("rotem" in low)
+ return True
+ alias_names = [a for a in all_alias if alias_allowed(a)]
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "alias_names": alias_names
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/mmi/list")
+ def api_mmi_list():
+ """MMI 코드 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ manufacturer = request.args.get("manufacturer", "").strip()
+ alias_name = request.args.get("alias_name", "").strip()
+ q = request.args.get("q", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "id,code_name,code_description,data_type,car_id,alias_name,manufacturer",
+ "order": "code_name.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if alias_name:
+ params["alias_name"] = f"eq.{alias_name}"
+ if q:
+ params["or"] = f"(code_name.ilike.*{q}*,code_description.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ r = c.get("/MMI_Code", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/faults/list")
+ def api_faults_list():
+ """고장코드 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ manufacturer = request.args.get("manufacturer", "").strip()
+ device = request.args.get("device", "").strip()
+ car_type = request.args.get("car_type", "").strip()
+ car_id = request.args.get("car_id", "").strip()
+ alias_name = request.args.get("alias_name", "").strip()
+ q = request.args.get("q", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "f_code,f_code_num,f_name,manufacturer,device,car_type,car_id,fault_detail,alias_name",
+ "order": "f_code.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if device:
+ params["device"] = f"eq.{device}"
+ if car_type:
+ params["car_type"] = f"eq.{car_type}"
+ if car_id:
+ params["car_id"] = f"eq.{car_id}"
+ if alias_name:
+ params["alias_name"] = f"eq.{alias_name}"
+ if q:
+ params["or"] = f"(f_code.ilike.*{q}*,f_name.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ r = c.get("/Fault_Code_Table", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+
+ # 그룹핑 옵션
+ group_code = request.args.get("group_code", "").strip().lower()
+ if group_code == "on":
+ seen: Dict[str, bool] = {}
+ dedup: List[Dict] = []
+ for row in rows:
+ code = row.get("f_code")
+ if code and code not in seen:
+ seen[code] = True
+ dedup.append(row)
+ rows = dedup
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/faults/")
+ def api_fault_detail(f_code: str):
+ """고장코드 상세 정보를 JSON으로 반환"""
+ try:
+ params = {
+ "select": "f_code,f_code_num,f_name,car_type,f_class,grade,device,fault_detail,fault_reaction,fault_detection,fault_clear,fault_action,fault_schematics,car_id,manufacturer,alias_name",
+ "f_code": f"eq.{f_code}",
+ "limit": "1",
+ }
+ with build_pg_client() as c:
+ r = c.get("/Fault_Code_Table", params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ if not rows:
+ return jsonify({
+ "success": False,
+ "error": "고장코드를 찾을 수 없습니다."
+ }), 404
+ row = rows[0]
+ return jsonify({
+ "success": True,
+ "data": row
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/signals/list")
+ def api_signals_list():
+ """TCMS 신호 목록을 JSON으로 반환"""
+ try:
+ PAGE_SIZE = 50
+ page = int(request.args.get("page", "0"))
+ offset = page * PAGE_SIZE
+
+ manufacturer = request.args.get("manufacturer", "").strip()
+ classification = request.args.get("classification", "").strip()
+ q = request.args.get("q", "").strip()
+ alias_name = request.args.get("alias_name", "").strip()
+
+ params: Dict[str, str] = {
+ "select": "id,sig_num,signal_abbreviation,signal_description,status_value,manufacturer,classification,alias_name",
+ "order": "sig_num.asc",
+ "limit": str(PAGE_SIZE),
+ "offset": str(offset),
+ }
+ if manufacturer:
+ params["manufacturer"] = f"eq.{manufacturer}"
+ if classification:
+ params["classification"] = f"eq.{classification}"
+ if alias_name:
+ params["alias_name"] = f"eq.{alias_name}"
+ if q:
+ params["or"] = f"(signal_abbreviation.ilike.*{q}*,signal_description.ilike.*{q}*)"
+
+ with build_pg_client() as c:
+ rows = []
+ last_error: Exception | None = None
+ for path in ("/Signals", "/signals"):
+ try:
+ r = c.get(path, params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ last_error = None
+ break
+ except Exception as e:
+ last_error = e
+ rows = []
+ continue
+ if last_error and not rows:
+ raise last_error
+
+ group_code = request.args.get("group_code", "").strip().lower()
+ if group_code == "on":
+ seen: Dict[str, bool] = {}
+ dedup: List[Dict] = []
+ for row in rows:
+ code = row.get("id")
+ if code and code not in seen:
+ seen[code] = True
+ dedup.append(row)
+ rows = dedup
+
+ return jsonify({
+ "success": True,
+ "data": {
+ "rows": rows,
+ "total": len(rows),
+ "page": page,
+ "page_size": PAGE_SIZE,
+ "has_next": len(rows) == PAGE_SIZE,
+ "has_prev": page > 0
+ }
+ })
+
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/api/signals/")
+ def api_signal_detail(item_id: str):
+ """TCMS 신호 상세 정보를 JSON으로 반환"""
+ try:
+ params = {
+ "select": "id,sig_num,signal_abbreviation,signal_description,status_value,manufacturer,classification,alias_name,original_data,created_at,updated_at",
+ "id": f"eq.{item_id}",
+ "limit": "1",
+ }
+ with build_pg_client() as c:
+ rows = []
+ last_error: Exception | None = None
+ for path in ("/Signals", "/signals"):
+ try:
+ r = c.get(path, params=params)
+ r.raise_for_status()
+ rows = r.json() or []
+ last_error = None
+ break
+ except Exception as e:
+ last_error = e
+ rows = []
+ continue
+ if last_error and not rows:
+ raise last_error
+ if not rows:
+ return jsonify({
+ "success": False,
+ "error": "TCMS 신호를 찾을 수 없습니다."
+ }), 404
+ row = rows[0]
+ return jsonify({
+ "success": True,
+ "data": row
+ })
+ except Exception as e:
+ return jsonify({
+ "success": False,
+ "error": str(e)
+ }), 500
+
+ @app.route("/sb/health")
+ def sb_health():
+ try:
+ with build_pg_client() as c:
+ r = c.get("/Fault_Code_Table", params={"select": "f_code", "limit": "1"})
+ r.raise_for_status()
+ return jsonify({"sb": "ok", "url": app.config.get("SUPABASE_URL")})
+ except Exception as e:
+ return jsonify({"sb": "error", "url": app.config.get("SUPABASE_URL"), "error": str(e)})
+
+ return app
+
+
+app = create_app()
+if __name__ == "__main__":
+ port = int(os.environ.get("PORT", "5000"))
+ app.run(host="0.0.0.0", port=port, debug=True)
+
diff --git a/app/build.gradle b/app/build.gradle
index 9836deb..914d3ec 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -21,11 +21,11 @@ plugins {
}
def twaManifest = [
- applicationId: 'cc.m1tcloud.tr.twa',
- hostName: 'tr.m1tcloud.cc', // The domain being opened in the TWA.
+ applicationId: 'me.humetrain.tr.twa',
+ hostName: 'humetrain.me', // The domain being opened in the TWA.
launchUrl: '/', // The start path for the TWA. Must be relative to the domain.
- name: 'FaultCode_Line1', // The application name.
- launcherName: 'F_Code', // The name shown on the Android Launcher.
+ name: 'Humetrain_1', // The application name.
+ launcherName: 'Humetrain_1', // The name shown on the Android Launcher.
themeColor: '#0F172A', // The color used for the status bar.
themeColorDark: '#000000', // The color used for the dark status bar.
navigationColor: '#000000', // The color used for the navigation bar.
@@ -52,13 +52,13 @@ def twaManifest = [
android {
compileSdkVersion 36
- namespace "cc.m1tcloud.tr.twa"
+ namespace "me.humetrain.tr.twa"
defaultConfig {
- applicationId "cc.m1tcloud.tr.twa"
+ applicationId "me.humetrain.tr.twa"
minSdkVersion 21
targetSdkVersion 35
- versionCode 1
- versionName "1"
+ versionCode 5
+ versionName "5"
// The name for the application
resValue "string", "appName", twaManifest.name
@@ -76,12 +76,12 @@ android {
// The URL the Web Manifest for the Progressive Web App that the TWA points to. This
// is used by Chrome OS and Meta Quest to open the Web version of the PWA instead of
// the TWA, as it will probably give a better user experience for non-mobile devices.
- resValue "string", "webManifestUrl", 'https://tr.m1tcloud.cc/manifest.webmanifest'
+ resValue "string", "webManifestUrl", 'http://localhost:9999/static/manifest.webmanifest'
// This is used by Meta Quest.
- resValue "string", "fullScopeUrl", 'https://tr.m1tcloud.cc/'
+ resValue "string", "fullScopeUrl", 'https://humetrain.me/'
diff --git a/app/build/generated/res/resValues/release/values/gradleResValues.xml b/app/build/generated/res/resValues/release/values/gradleResValues.xml
new file mode 100644
index 0000000..ffb2578
--- /dev/null
+++ b/app/build/generated/res/resValues/release/values/gradleResValues.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ true
+
+ true
+
+ #0F172A
+
+ #0F172A
+
+ #000000
+
+ #000000
+
+ #000000
+
+ #000000
+
+ #000000
+
+ 300
+
+ Humetrain_1
+
+ customtabs
+
+ https://humetrain.me/
+
+ bubblewrap-cli
+
+ humetrain.me
+
+ https://humetrain.me/
+
+ Humetrain_1
+
+ default
+
+ me.humetrain.tr.twa.fileprovider
+
+ http://localhost:9999/static/manifest.webmanifest
+
+
diff --git a/app/build/intermediates/aapt_proguard_file/release/processReleaseResources/aapt_rules.txt b/app/build/intermediates/aapt_proguard_file/release/processReleaseResources/aapt_rules.txt
new file mode 100644
index 0000000..4e6fd97
--- /dev/null
+++ b/app/build/intermediates/aapt_proguard_file/release/processReleaseResources/aapt_rules.txt
@@ -0,0 +1,55 @@
+-keep class androidx.core.app.CoreComponentFactory { (); }
+-keep class androidx.core.content.FileProvider { (); }
+-keep class androidx.profileinstaller.ProfileInstallReceiver { (); }
+-keep class androidx.startup.InitializationProvider { (); }
+-keep class com.google.android.gms.common.api.GoogleApiActivity { (); }
+-keep class com.google.androidbrowserhelper.locationdelegation.PermissionRequestActivity { (); }
+-keep class com.google.androidbrowserhelper.trusted.FocusActivity { (); }
+-keep class com.google.androidbrowserhelper.trusted.ManageDataLauncherActivity { (); }
+-keep class com.google.androidbrowserhelper.trusted.NotificationPermissionRequestActivity { (); }
+-keep class com.google.androidbrowserhelper.trusted.WebViewFallbackActivity { (); }
+-keep class me.humetrain.tr.twa.Application { (); }
+-keep class me.humetrain.tr.twa.DelegationService { (); }
+-keep class me.humetrain.tr.twa.LauncherActivity { (); }
+-keep class android.widget.Space { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.app.AlertController$RecycleListView { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.view.menu.ActionMenuItemView { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.view.menu.ExpandedMenuView { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.view.menu.ListMenuItemView { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.ActionBarContainer { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.ActionBarContextView { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.ActionBarOverlayLayout { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.ActionMenuView { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.ActivityChooserView$InnerLayout { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.AlertDialogLayout { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.ButtonBarLayout { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.ContentFrameLayout { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.DialogTitle { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.FitWindowsFrameLayout { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.FitWindowsLinearLayout { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.SearchView$SearchAutoComplete { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.Toolbar { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.appcompat.widget.ViewStubCompat { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.browser.browseractions.BrowserActionsFallbackMenuView { (android.content.Context, android.util.AttributeSet); }
+
+-keep class androidx.core.widget.NestedScrollView { (android.content.Context, android.util.AttributeSet); }
+
diff --git a/app/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json b/app/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/app/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/app/build/intermediates/apk_ide_redirect_file/release/createReleaseApkListingFileRedirect/redirect.txt b/app/build/intermediates/apk_ide_redirect_file/release/createReleaseApkListingFileRedirect/redirect.txt
new file mode 100644
index 0000000..42e784e
--- /dev/null
+++ b/app/build/intermediates/apk_ide_redirect_file/release/createReleaseApkListingFileRedirect/redirect.txt
@@ -0,0 +1,2 @@
+#- File Locator -
+listingFile=../../../../outputs/apk/release/output-metadata.json
diff --git a/app/build/intermediates/app_metadata/release/writeReleaseAppMetadata/app-metadata.properties b/app/build/intermediates/app_metadata/release/writeReleaseAppMetadata/app-metadata.properties
new file mode 100644
index 0000000..50b0e14
--- /dev/null
+++ b/app/build/intermediates/app_metadata/release/writeReleaseAppMetadata/app-metadata.properties
@@ -0,0 +1,2 @@
+appMetadataVersion=1.1
+androidGradlePluginVersion=8.9.1
diff --git a/app/build/intermediates/binary_art_profile/release/compileReleaseArtProfile/baseline.prof b/app/build/intermediates/binary_art_profile/release/compileReleaseArtProfile/baseline.prof
new file mode 100644
index 0000000..09d44ae
Binary files /dev/null and b/app/build/intermediates/binary_art_profile/release/compileReleaseArtProfile/baseline.prof differ
diff --git a/app/build/intermediates/binary_art_profile_metadata/release/compileReleaseArtProfile/baseline.profm b/app/build/intermediates/binary_art_profile_metadata/release/compileReleaseArtProfile/baseline.profm
new file mode 100644
index 0000000..3bc3025
Binary files /dev/null and b/app/build/intermediates/binary_art_profile_metadata/release/compileReleaseArtProfile/baseline.profm differ
diff --git a/app/build/intermediates/bundle_dependency_report/release/configureReleaseDependencies/dependencies.pb b/app/build/intermediates/bundle_dependency_report/release/configureReleaseDependencies/dependencies.pb
new file mode 100644
index 0000000..0898343
Binary files /dev/null and b/app/build/intermediates/bundle_dependency_report/release/configureReleaseDependencies/dependencies.pb differ
diff --git a/app/build/intermediates/bundle_ide_model/release/produceReleaseBundleIdeListingFile/output-metadata.json b/app/build/intermediates/bundle_ide_model/release/produceReleaseBundleIdeListingFile/output-metadata.json
new file mode 100644
index 0000000..53249db
--- /dev/null
+++ b/app/build/intermediates/bundle_ide_model/release/produceReleaseBundleIdeListingFile/output-metadata.json
@@ -0,0 +1,18 @@
+{
+ "version": 3,
+ "artifactType": {
+ "type": "BUNDLE",
+ "kind": "RegularFile"
+ },
+ "applicationId": "me.humetrain.tr.twa",
+ "variantName": "release",
+ "elements": [
+ {
+ "type": "SINGLE",
+ "filters": [],
+ "attributes": [],
+ "outputFile": "../../../../outputs/bundle/release/app-release.aab"
+ }
+ ],
+ "elementType": "File"
+}
\ No newline at end of file
diff --git a/app/build/intermediates/bundle_ide_redirect_file/release/createReleaseBundleListingFileRedirect/redirect.txt b/app/build/intermediates/bundle_ide_redirect_file/release/createReleaseBundleListingFileRedirect/redirect.txt
new file mode 100644
index 0000000..392ef4f
--- /dev/null
+++ b/app/build/intermediates/bundle_ide_redirect_file/release/createReleaseBundleListingFileRedirect/redirect.txt
@@ -0,0 +1,2 @@
+#- File Locator -
+listingFile=../../../bundle_ide_model/release/produceReleaseBundleIdeListingFile/output-metadata.json
diff --git a/app/build/intermediates/bundle_manifest/release/processApplicationManifestReleaseForBundle/AndroidManifest.xml b/app/build/intermediates/bundle_manifest/release/processApplicationManifestReleaseForBundle/AndroidManifest.xml
new file mode 100644
index 0000000..98cd887
--- /dev/null
+++ b/app/build/intermediates/bundle_manifest/release/processApplicationManifestReleaseForBundle/AndroidManifest.xml
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/combined_art_profile/release/compileReleaseArtProfile/baseline-prof.txt b/app/build/intermediates/combined_art_profile/release/compileReleaseArtProfile/baseline-prof.txt
new file mode 100644
index 0000000..a6b0665
--- /dev/null
+++ b/app/build/intermediates/combined_art_profile/release/compileReleaseArtProfile/baseline-prof.txt
@@ -0,0 +1,873 @@
+Landroidx/activity/a;
+Landroidx/activity/ComponentActivity$4;
+Landroidx/lifecycle/j;
+Landroidx/lifecycle/k;
+HSPLandroidx/activity/ComponentActivity$4;->h(Landroidx/lifecycle/l;Landroidx/lifecycle/g$a;)V
+Landroidx/activity/b;
+Landroidx/core/app/b;
+Landroidx/lifecycle/l;
+Landroidx/lifecycle/E;
+Landroidx/lifecycle/f;
+LI/d;
+Landroidx/activity/c;
+HSPLandroidx/activity/c;->(Z)V
+HSPLandroidx/activity/c;->a()V
+PLandroidx/activity/c;->b(Landroidx/activity/a;)V
+HSPLandroidx/activity/c;->c(Z)V
+Landroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;
+PLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->d()V
+HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->h(Landroidx/lifecycle/l;Landroidx/lifecycle/g$a;)V
+Landroidx/activity/OnBackPressedDispatcher;
+HSPLandroidx/activity/OnBackPressedDispatcher;->a(Landroidx/activity/c;)Landroidx/activity/a;
+Lc/a;
+Lc/d;
+Lc/e;
+Lc/f;
+Lc/g;
+Lc/h;
+Lc/i;
+HSPLc/i;->()V
+Ld/a;
+HSPLd/a;->(II)V
+Le/a;
+Lg/b;
+Lh/a;
+HSPLh/a;->(Landroid/content/Context;)V
+HSPLh/a;->a(Landroid/content/Context;)Lh/a;
+HSPLh/a;->b()I
+HSPLh/a;->c()I
+HSPLh/a;->d()Z
+Lh/b;
+HSPLh/b;->()V
+HSPLh/b;->(Landroid/content/Context;)V
+Li/a;
+Ls/b;
+HSPLi/a;->(Landroid/content/Context;IIIILjava/lang/CharSequence;)V
+Landroidx/appcompat/view/menu/a;
+Landroidx/appcompat/view/menu/h;
+HSPLandroidx/appcompat/view/menu/a;->(Landroid/content/Context;II)V
+HSPLandroidx/appcompat/view/menu/a;->k(Landroid/content/Context;Landroidx/appcompat/view/menu/d;)V
+PLandroidx/appcompat/view/menu/a;->a(Landroidx/appcompat/view/menu/d;Z)V
+HSPLandroidx/appcompat/view/menu/a;->f(Landroidx/appcompat/view/menu/h$a;)V
+HSPLandroidx/appcompat/view/menu/a;->j(Z)V
+Landroidx/appcompat/view/menu/d$a;
+Landroidx/appcompat/view/menu/d$b;
+Landroidx/appcompat/view/menu/d;
+Ls/a;
+HSPLandroidx/appcompat/view/menu/d;->()V
+HSPLandroidx/appcompat/view/menu/d;->(Landroid/content/Context;)V
+HSPLandroidx/appcompat/view/menu/d;->b(Landroidx/appcompat/view/menu/h;Landroid/content/Context;)V
+PLandroidx/appcompat/view/menu/d;->close()V
+PLandroidx/appcompat/view/menu/d;->d(Z)V
+HSPLandroidx/appcompat/view/menu/d;->h(Z)V
+HSPLandroidx/appcompat/view/menu/d;->q()V
+HSPLandroidx/appcompat/view/menu/d;->r()Ljava/util/ArrayList;
+HSPLandroidx/appcompat/view/menu/d;->v()Ljava/util/ArrayList;
+HSPLandroidx/appcompat/view/menu/d;->A()Ljava/util/ArrayList;
+HSPLandroidx/appcompat/view/menu/d;->hasVisibleItems()Z
+HSPLandroidx/appcompat/view/menu/d;->H(Z)V
+HSPLandroidx/appcompat/view/menu/d;->M(Landroidx/appcompat/view/menu/d$a;)V
+HSPLandroidx/appcompat/view/menu/d;->setQwertyMode(Z)V
+HSPLandroidx/appcompat/view/menu/d;->U(Z)V
+HSPLandroidx/appcompat/view/menu/d;->size()I
+HSPLandroidx/appcompat/view/menu/d;->V()V
+HSPLandroidx/appcompat/view/menu/d;->W()V
+Landroidx/appcompat/view/menu/h$a;
+Landroidx/appcompat/view/menu/i;
+Landroidx/appcompat/widget/a$a;
+HSPLandroidx/appcompat/widget/a$a;->(Landroidx/appcompat/widget/a;)V
+Landroidx/appcompat/widget/a;
+HSPLandroidx/appcompat/widget/a;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+Landroidx/appcompat/widget/b;
+HSPLandroidx/appcompat/widget/b;->(Landroidx/appcompat/widget/ActionBarContainer;)V
+HSPLandroidx/appcompat/widget/b;->draw(Landroid/graphics/Canvas;)V
+HSPLandroidx/appcompat/widget/b;->getOpacity()I
+HSPLandroidx/appcompat/widget/b;->getOutline(Landroid/graphics/Outline;)V
+Landroidx/appcompat/widget/ActionBarContainer;
+HSPLandroidx/appcompat/widget/ActionBarContainer;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->drawableStateChanged()V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->jumpDrawablesToCurrentState()V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->onFinishInflate()V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->onLayout(ZIIII)V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->setTabContainer(Landroidx/appcompat/widget/G;)V
+PLandroidx/appcompat/widget/ActionBarContainer;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
+Landroidx/appcompat/widget/ActionBarContextView;
+HSPLandroidx/appcompat/widget/ActionBarContextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/ActionBarContextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+PLandroidx/appcompat/widget/ActionBarContextView;->onDetachedFromWindow()V
+Landroidx/appcompat/widget/ActionBarOverlayLayout$a;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout$a;->(Landroidx/appcompat/widget/ActionBarOverlayLayout;)V
+Landroidx/appcompat/widget/ActionBarOverlayLayout$b;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout$b;->(Landroidx/appcompat/widget/ActionBarOverlayLayout;)V
+Landroidx/appcompat/widget/ActionBarOverlayLayout$c;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout$c;->(Landroidx/appcompat/widget/ActionBarOverlayLayout;)V
+Landroidx/appcompat/widget/ActionBarOverlayLayout$d;
+Landroidx/appcompat/widget/ActionBarOverlayLayout$e;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout$e;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+Landroidx/appcompat/widget/ActionBarOverlayLayout;
+Landroidx/core/view/o;
+Landroidx/core/view/p;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->()V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->h(Landroid/view/View;Landroid/graphics/Rect;ZZZZ)Z
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->k(Landroid/util/AttributeSet;)Landroidx/appcompat/widget/ActionBarOverlayLayout$e;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->l(Landroid/view/View;)Landroidx/appcompat/widget/u;
+PLandroidx/appcompat/widget/ActionBarOverlayLayout;->m()V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->n(Landroid/content/Context;)V
+PLandroidx/appcompat/widget/ActionBarOverlayLayout;->onDetachedFromWindow()V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onLayout(ZIIII)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->f(Landroid/view/View;Landroid/view/View;II)Z
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onWindowVisibilityChanged(I)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->q()V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setActionBarVisibilityCallback(Landroidx/appcompat/widget/ActionBarOverlayLayout$d;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setHasNonEmbeddedTabs(Z)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setWindowCallback(Landroid/view/Window$Callback;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setWindowTitle(Ljava/lang/CharSequence;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->shouldDelayChildPressedState()Z
+Landroidx/appcompat/widget/c$d$a;
+Landroidx/appcompat/widget/y;
+HSPLandroidx/appcompat/widget/c$d$a;->(Landroidx/appcompat/widget/c$d;Landroid/view/View;Landroidx/appcompat/widget/c;)V
+Landroidx/appcompat/widget/c$d;
+Landroidx/appcompat/widget/l;
+Landroidx/appcompat/widget/ActionMenuView$a;
+HSPLandroidx/appcompat/widget/c$d;->(Landroidx/appcompat/widget/c;Landroid/content/Context;)V
+Landroidx/appcompat/widget/c$f;
+HSPLandroidx/appcompat/widget/c$f;->(Landroidx/appcompat/widget/c;)V
+Landroidx/appcompat/widget/c;
+HSPLandroidx/appcompat/widget/c;->(Landroid/content/Context;)V
+PLandroidx/appcompat/widget/c;->w()Z
+HSPLandroidx/appcompat/widget/c;->h()Z
+PLandroidx/appcompat/widget/c;->z()Z
+PLandroidx/appcompat/widget/c;->A()Z
+HSPLandroidx/appcompat/widget/c;->k(Landroid/content/Context;Landroidx/appcompat/view/menu/d;)V
+PLandroidx/appcompat/widget/c;->a(Landroidx/appcompat/view/menu/d;Z)V
+HSPLandroidx/appcompat/widget/c;->D(Z)V
+HSPLandroidx/appcompat/widget/c;->E(Landroidx/appcompat/widget/ActionMenuView;)V
+HSPLandroidx/appcompat/widget/c;->j(Z)V
+Landroidx/appcompat/widget/ActionMenuView$e;
+Landroidx/appcompat/widget/ActionMenuView;
+Landroidx/appcompat/widget/z;
+HSPLandroidx/appcompat/widget/ActionMenuView;->(Landroid/content/Context;)V
+HSPLandroidx/appcompat/widget/ActionMenuView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+PLandroidx/appcompat/widget/ActionMenuView;->w()V
+HSPLandroidx/appcompat/widget/ActionMenuView;->C(Landroidx/appcompat/view/menu/d;)V
+PLandroidx/appcompat/widget/ActionMenuView;->onDetachedFromWindow()V
+HSPLandroidx/appcompat/widget/ActionMenuView;->onLayout(ZIIII)V
+HSPLandroidx/appcompat/widget/ActionMenuView;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/ActionMenuView;->G()Landroidx/appcompat/view/menu/d;
+HSPLandroidx/appcompat/widget/ActionMenuView;->H(Landroidx/appcompat/view/menu/h$a;Landroidx/appcompat/view/menu/d$a;)V
+HSPLandroidx/appcompat/widget/ActionMenuView;->setOnMenuItemClickListener(Landroidx/appcompat/widget/ActionMenuView$e;)V
+HSPLandroidx/appcompat/widget/ActionMenuView;->setOverflowReserved(Z)V
+HSPLandroidx/appcompat/widget/ActionMenuView;->setPopupTheme(I)V
+HSPLandroidx/appcompat/widget/ActionMenuView;->setPresenter(Landroidx/appcompat/widget/c;)V
+Landroidx/appcompat/widget/e;
+HSPLandroidx/appcompat/widget/e;->(Landroid/view/View;)V
+HSPLandroidx/appcompat/widget/e;->b()V
+HSPLandroidx/appcompat/widget/e;->e(Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/e;->k()Z
+Landroidx/appcompat/widget/f$a;
+Landroidx/appcompat/widget/D$f;
+HSPLandroidx/appcompat/widget/f$a;->()V
+HSPLandroidx/appcompat/widget/f$a;->f([II)Z
+HSPLandroidx/appcompat/widget/f$a;->a(Landroidx/appcompat/widget/D;Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
+HSPLandroidx/appcompat/widget/f$a;->b(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
+HSPLandroidx/appcompat/widget/f$a;->d(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z
+HSPLandroidx/appcompat/widget/f$a;->c(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z
+Landroidx/appcompat/widget/f;
+HSPLandroidx/appcompat/widget/f;->()V
+HSPLandroidx/appcompat/widget/f;->()V
+HSPLandroidx/appcompat/widget/f;->a()Landroid/graphics/PorterDuff$Mode;
+HSPLandroidx/appcompat/widget/f;->b()Landroidx/appcompat/widget/f;
+HSPLandroidx/appcompat/widget/f;->e(Landroid/content/Context;I)Landroid/content/res/ColorStateList;
+HSPLandroidx/appcompat/widget/f;->f()V
+Landroidx/appcompat/widget/g;
+HSPLandroidx/appcompat/widget/g;->(Landroid/widget/EditText;)V
+HSPLandroidx/appcompat/widget/g;->a(Landroid/text/method/KeyListener;)Landroid/text/method/KeyListener;
+HSPLandroidx/appcompat/widget/g;->c(Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/g;->e(Z)V
+Landroidx/appcompat/widget/h;
+HSPLandroidx/appcompat/widget/h;->(Landroid/widget/TextView;)V
+HSPLandroidx/appcompat/widget/h;->a([Landroid/text/InputFilter;)[Landroid/text/InputFilter;
+HSPLandroidx/appcompat/widget/h;->b(Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/h;->d(Z)V
+Landroidx/appcompat/widget/j;
+HSPLandroidx/appcompat/widget/j;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/j;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V
+HSPLandroidx/appcompat/widget/j;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V
+Landroidx/appcompat/widget/k;
+HSPLandroidx/appcompat/widget/k;->(Landroid/widget/ImageView;)V
+HSPLandroidx/appcompat/widget/k;->b()V
+HSPLandroidx/appcompat/widget/k;->c()V
+HSPLandroidx/appcompat/widget/k;->g(Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/l;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/l;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V
+HSPLandroidx/appcompat/widget/l;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V
+Landroidx/appcompat/widget/n;
+HSPLandroidx/appcompat/widget/n;->(Landroid/widget/TextView;)V
+Landroidx/appcompat/widget/o$a;
+Landroidx/core/content/res/h$e;
+HSPLandroidx/appcompat/widget/o$a;->(Landroidx/appcompat/widget/o;IILjava/lang/ref/WeakReference;)V
+HSPLandroidx/appcompat/widget/o$a;->f(I)V
+Landroidx/appcompat/widget/o;
+HSPLandroidx/appcompat/widget/o;->(Landroid/widget/TextView;)V
+HSPLandroidx/appcompat/widget/o;->b()V
+HSPLandroidx/appcompat/widget/o;->d(Landroid/content/Context;Landroidx/appcompat/widget/f;I)Landroidx/appcompat/widget/J;
+HSPLandroidx/appcompat/widget/o;->m(Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/o;->o(ZIIII)V
+HSPLandroidx/appcompat/widget/o;->q(Landroid/content/Context;I)V
+HSPLandroidx/appcompat/widget/o;->y(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
+HSPLandroidx/appcompat/widget/o;->C(Landroid/content/Context;Landroidx/appcompat/widget/L;)V
+Landroidx/appcompat/widget/p;
+Landroidx/core/widget/h;
+HSPLandroidx/appcompat/widget/p;->(Landroid/content/Context;)V
+HSPLandroidx/appcompat/widget/p;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/p;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/p;->r()V
+HSPLandroidx/appcompat/widget/p;->drawableStateChanged()V
+HSPLandroidx/appcompat/widget/p;->getEmojiTextViewHelper()Landroidx/appcompat/widget/h;
+HSPLandroidx/appcompat/widget/p;->getText()Ljava/lang/CharSequence;
+HSPLandroidx/appcompat/widget/p;->onLayout(ZIIII)V
+HSPLandroidx/appcompat/widget/p;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/p;->onTextChanged(Ljava/lang/CharSequence;III)V
+HSPLandroidx/appcompat/widget/p;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
+HSPLandroidx/appcompat/widget/p;->setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
+HSPLandroidx/appcompat/widget/p;->setFilters([Landroid/text/InputFilter;)V
+HSPLandroidx/appcompat/widget/p;->setTextAppearance(Landroid/content/Context;I)V
+HSPLandroidx/appcompat/widget/p;->setTypeface(Landroid/graphics/Typeface;I)V
+Landroidx/appcompat/widget/q$b;
+Landroidx/appcompat/widget/q$d;
+HSPLandroidx/appcompat/widget/q$b;->()V
+Landroidx/appcompat/widget/q$c;
+HSPLandroidx/appcompat/widget/q$c;->()V
+HSPLandroidx/appcompat/widget/q$d;->()V
+Landroidx/appcompat/widget/q;
+HSPLandroidx/appcompat/widget/q;->()V
+HSPLandroidx/appcompat/widget/q;->(Landroid/widget/TextView;)V
+HSPLandroidx/appcompat/widget/q;->j()I
+HSPLandroidx/appcompat/widget/q;->o(Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/q;->y()Z
+Landroidx/appcompat/widget/ContentFrameLayout$a;
+Landroidx/appcompat/widget/ContentFrameLayout;
+HSPLandroidx/appcompat/widget/ContentFrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/ContentFrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMajor()Landroid/util/TypedValue;
+HSPLandroidx/appcompat/widget/ContentFrameLayout;->getMinWidthMinor()Landroid/util/TypedValue;
+HSPLandroidx/appcompat/widget/ContentFrameLayout;->onAttachedToWindow()V
+PLandroidx/appcompat/widget/ContentFrameLayout;->onDetachedFromWindow()V
+HSPLandroidx/appcompat/widget/ContentFrameLayout;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/ContentFrameLayout;->setAttachListener(Landroidx/appcompat/widget/ContentFrameLayout$a;)V
+Landroidx/appcompat/widget/u;
+Landroidx/appcompat/widget/v;
+HSPLandroidx/appcompat/widget/y;->(Landroid/view/View;)V
+HSPLandroidx/appcompat/widget/z;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/z;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/z;->getVirtualChildCount()I
+HSPLandroidx/appcompat/widget/z;->p(IIII)V
+HSPLandroidx/appcompat/widget/z;->s(II)V
+HSPLandroidx/appcompat/widget/z;->onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V
+HSPLandroidx/appcompat/widget/z;->onLayout(ZIIII)V
+HSPLandroidx/appcompat/widget/z;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/z;->setBaselineAligned(Z)V
+HSPLandroidx/appcompat/widget/z;->setDividerDrawable(Landroid/graphics/drawable/Drawable;)V
+Landroidx/appcompat/widget/D$c;
+Lp/h;
+Landroidx/appcompat/widget/D;
+Landroidx/appcompat/widget/E;
+Landroidx/appcompat/widget/F;
+HSPLandroidx/appcompat/widget/F;->()V
+HSPLandroidx/appcompat/widget/F;->a()I
+HSPLandroidx/appcompat/widget/F;->d()I
+HSPLandroidx/appcompat/widget/F;->e(II)V
+HSPLandroidx/appcompat/widget/F;->f(Z)V
+HSPLandroidx/appcompat/widget/F;->g(II)V
+Landroidx/appcompat/widget/H;
+HSPLandroidx/appcompat/widget/H;->()V
+HSPLandroidx/appcompat/widget/H;->a(Landroid/view/View;Landroid/content/Context;)V
+Landroidx/appcompat/widget/I;
+HSPLandroidx/appcompat/widget/I;->()V
+HSPLandroidx/appcompat/widget/I;->a(Landroid/content/Context;)Z
+HSPLandroidx/appcompat/widget/I;->b(Landroid/content/Context;)Landroid/content/Context;
+Landroidx/appcompat/widget/K;
+Landroidx/appcompat/widget/L;
+HSPLandroidx/appcompat/widget/L;->(Landroid/content/Context;Landroid/content/res/TypedArray;)V
+HSPLandroidx/appcompat/widget/L;->a(IZ)Z
+HSPLandroidx/appcompat/widget/L;->b(II)I
+HSPLandroidx/appcompat/widget/L;->c(I)Landroid/content/res/ColorStateList;
+HSPLandroidx/appcompat/widget/L;->d(II)I
+HSPLandroidx/appcompat/widget/L;->e(II)I
+HSPLandroidx/appcompat/widget/L;->f(I)Landroid/graphics/drawable/Drawable;
+HSPLandroidx/appcompat/widget/L;->g(IF)F
+HSPLandroidx/appcompat/widget/L;->h(IILandroidx/core/content/res/h$e;)Landroid/graphics/Typeface;
+HSPLandroidx/appcompat/widget/L;->i(II)I
+HSPLandroidx/appcompat/widget/L;->j(II)I
+HSPLandroidx/appcompat/widget/L;->k(II)I
+HSPLandroidx/appcompat/widget/L;->l(II)I
+HSPLandroidx/appcompat/widget/L;->m(I)Ljava/lang/String;
+HSPLandroidx/appcompat/widget/L;->n(I)Ljava/lang/CharSequence;
+HSPLandroidx/appcompat/widget/L;->o()Landroid/content/res/TypedArray;
+HSPLandroidx/appcompat/widget/L;->p(I)Z
+HSPLandroidx/appcompat/widget/L;->q(Landroid/content/Context;I[I)Landroidx/appcompat/widget/L;
+HSPLandroidx/appcompat/widget/L;->r(Landroid/content/Context;Landroid/util/AttributeSet;[I)Landroidx/appcompat/widget/L;
+HSPLandroidx/appcompat/widget/L;->s(Landroid/content/Context;Landroid/util/AttributeSet;[III)Landroidx/appcompat/widget/L;
+HSPLandroidx/appcompat/widget/L;->u()V
+Landroidx/appcompat/widget/Toolbar$a;
+HSPLandroidx/appcompat/widget/Toolbar$a;->(Landroidx/appcompat/widget/Toolbar;)V
+Landroidx/appcompat/widget/Toolbar$b;
+HSPLandroidx/appcompat/widget/Toolbar$b;->(Landroidx/appcompat/widget/Toolbar;)V
+Landroidx/appcompat/widget/Toolbar$f;
+HSPLandroidx/appcompat/widget/Toolbar$f;->(Landroidx/appcompat/widget/Toolbar;)V
+HSPLandroidx/appcompat/widget/Toolbar$f;->h()Z
+HSPLandroidx/appcompat/widget/Toolbar$f;->k(Landroid/content/Context;Landroidx/appcompat/view/menu/d;)V
+PLandroidx/appcompat/widget/Toolbar$f;->a(Landroidx/appcompat/view/menu/d;Z)V
+HSPLandroidx/appcompat/widget/Toolbar$f;->j(Z)V
+Landroidx/appcompat/widget/Toolbar$g;
+HSPLandroidx/appcompat/widget/Toolbar$g;->(II)V
+Landroidx/appcompat/widget/Toolbar;
+HSPLandroidx/appcompat/widget/Toolbar;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/Toolbar;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/Toolbar;->b(Ljava/util/List;I)V
+HSPLandroidx/appcompat/widget/Toolbar;->c(Landroid/view/View;Z)V
+HSPLandroidx/appcompat/widget/Toolbar;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
+HSPLandroidx/appcompat/widget/Toolbar;->f()V
+HSPLandroidx/appcompat/widget/Toolbar;->i()V
+HSPLandroidx/appcompat/widget/Toolbar;->j()V
+HSPLandroidx/appcompat/widget/Toolbar;->k()Landroidx/appcompat/widget/Toolbar$g;
+HSPLandroidx/appcompat/widget/Toolbar;->o(Landroid/view/View;I)I
+HSPLandroidx/appcompat/widget/Toolbar;->p(I)I
+HSPLandroidx/appcompat/widget/Toolbar;->getContentInsetEnd()I
+HSPLandroidx/appcompat/widget/Toolbar;->getContentInsetStart()I
+HSPLandroidx/appcompat/widget/Toolbar;->getCurrentContentInsetEnd()I
+HSPLandroidx/appcompat/widget/Toolbar;->getCurrentContentInsetLeft()I
+HSPLandroidx/appcompat/widget/Toolbar;->getCurrentContentInsetRight()I
+HSPLandroidx/appcompat/widget/Toolbar;->getCurrentContentInsetStart()I
+HSPLandroidx/appcompat/widget/Toolbar;->q(Landroid/view/View;)I
+HSPLandroidx/appcompat/widget/Toolbar;->getNavigationContentDescription()Ljava/lang/CharSequence;
+HSPLandroidx/appcompat/widget/Toolbar;->getNavigationIcon()Landroid/graphics/drawable/Drawable;
+HSPLandroidx/appcompat/widget/Toolbar;->getSubtitle()Ljava/lang/CharSequence;
+HSPLandroidx/appcompat/widget/Toolbar;->getTitle()Ljava/lang/CharSequence;
+HSPLandroidx/appcompat/widget/Toolbar;->r(Landroid/view/View;)I
+HSPLandroidx/appcompat/widget/Toolbar;->s(Ljava/util/List;[I)I
+HSPLandroidx/appcompat/widget/Toolbar;->getWrapper()Landroidx/appcompat/widget/u;
+PLandroidx/appcompat/widget/Toolbar;->t()Z
+HSPLandroidx/appcompat/widget/Toolbar;->w(Landroid/view/View;)Z
+HSPLandroidx/appcompat/widget/Toolbar;->z(Landroid/view/View;I[II)I
+HSPLandroidx/appcompat/widget/Toolbar;->A(Landroid/view/View;IIII[I)I
+HSPLandroidx/appcompat/widget/Toolbar;->B(Landroid/view/View;IIIII)V
+PLandroidx/appcompat/widget/Toolbar;->onDetachedFromWindow()V
+HSPLandroidx/appcompat/widget/Toolbar;->onLayout(ZIIII)V
+HSPLandroidx/appcompat/widget/Toolbar;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/Toolbar;->onRtlPropertiesChanged(I)V
+HSPLandroidx/appcompat/widget/Toolbar;->setCollapsible(Z)V
+HSPLandroidx/appcompat/widget/Toolbar;->F(II)V
+HSPLandroidx/appcompat/widget/Toolbar;->setNavigationContentDescription(Ljava/lang/CharSequence;)V
+HSPLandroidx/appcompat/widget/Toolbar;->setNavigationIcon(Landroid/graphics/drawable/Drawable;)V
+HSPLandroidx/appcompat/widget/Toolbar;->setNavigationOnClickListener(Landroid/view/View$OnClickListener;)V
+HSPLandroidx/appcompat/widget/Toolbar;->setPopupTheme(I)V
+HSPLandroidx/appcompat/widget/Toolbar;->setSubtitle(Ljava/lang/CharSequence;)V
+HSPLandroidx/appcompat/widget/Toolbar;->G(Landroid/content/Context;I)V
+HSPLandroidx/appcompat/widget/Toolbar;->setTitle(Ljava/lang/CharSequence;)V
+HSPLandroidx/appcompat/widget/Toolbar;->H(Landroid/content/Context;I)V
+HSPLandroidx/appcompat/widget/Toolbar;->I()Z
+HSPLandroidx/appcompat/widget/Toolbar;->J(Landroid/view/View;)Z
+Landroidx/appcompat/widget/P$a;
+HSPLandroidx/appcompat/widget/P$a;->(Landroidx/appcompat/widget/P;)V
+Landroidx/appcompat/widget/P;
+HSPLandroidx/appcompat/widget/P;->(Landroidx/appcompat/widget/Toolbar;Z)V
+HSPLandroidx/appcompat/widget/P;->(Landroidx/appcompat/widget/Toolbar;ZII)V
+HSPLandroidx/appcompat/widget/P;->e()Landroid/content/Context;
+HSPLandroidx/appcompat/widget/P;->g(I)V
+HSPLandroidx/appcompat/widget/P;->h(I)V
+HSPLandroidx/appcompat/widget/P;->l(Landroid/graphics/drawable/Drawable;)V
+HSPLandroidx/appcompat/widget/P;->o(Ljava/lang/CharSequence;)V
+HSPLandroidx/appcompat/widget/P;->c(Landroid/view/Window$Callback;)V
+HSPLandroidx/appcompat/widget/P;->b(Ljava/lang/CharSequence;)V
+HSPLandroidx/appcompat/widget/P;->q()V
+Landroidx/appcompat/widget/Q;
+HSPLandroidx/appcompat/widget/Q;->a(Landroid/view/View;Ljava/lang/CharSequence;)V
+Landroidx/appcompat/widget/W;
+HSPLandroidx/appcompat/widget/W;->()V
+HSPLandroidx/appcompat/widget/W;->b()Z
+HSPLandroidx/appcompat/widget/W;->c()Z
+Landroidx/appcompat/widget/X;
+HSPLandroidx/appcompat/widget/X;->()V
+HSPLandroidx/appcompat/widget/X;->a(Landroid/view/View;)Z
+LE/b;
+LE/c;
+HSPLE/c;->()V
+Landroidx/fragment/app/a;
+Landroidx/fragment/app/y;
+Landroidx/fragment/app/q$h;
+HSPLandroidx/fragment/app/a;->(Landroidx/fragment/app/q;)V
+HSPLandroidx/fragment/app/a;->i(I)V
+HSPLandroidx/fragment/app/a;->g(ILandroidx/fragment/app/Fragment;Ljava/lang/String;I)V
+HSPLandroidx/fragment/app/a;->k()V
+HSPLandroidx/fragment/app/a;->m(Ljava/util/ArrayList;Landroidx/fragment/app/Fragment;)Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/a;->a(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
+HSPLandroidx/fragment/app/a;->n()V
+Landroidx/fragment/app/d;
+Landroidx/fragment/app/E;
+HSPLandroidx/fragment/app/d;->(Landroid/view/ViewGroup;)V
+Landroidx/fragment/app/Fragment$a;
+HSPLandroidx/fragment/app/Fragment$a;->(Landroidx/fragment/app/Fragment;)V
+Landroidx/fragment/app/Fragment$c;
+Landroidx/fragment/app/g;
+HSPLandroidx/fragment/app/Fragment$c;->(Landroidx/fragment/app/Fragment;)V
+Landroidx/fragment/app/Fragment$d;
+HSPLandroidx/fragment/app/Fragment$d;->()V
+Landroidx/fragment/app/Fragment$e;
+PLandroidx/fragment/app/Fragment$e;->a(Landroid/view/View;)V
+Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/Fragment;->()V
+HSPLandroidx/fragment/app/Fragment;->()V
+HSPLandroidx/fragment/app/Fragment;->h()Landroidx/fragment/app/g;
+HSPLandroidx/fragment/app/Fragment;->i()Landroidx/fragment/app/Fragment$d;
+HSPLandroidx/fragment/app/Fragment;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/fragment/app/Fragment;->j()Landroidx/fragment/app/e;
+HSPLandroidx/fragment/app/Fragment;->n()Landroidx/fragment/app/q;
+HSPLandroidx/fragment/app/Fragment;->o()Landroid/content/Context;
+HSPLandroidx/fragment/app/Fragment;->v()Landroid/view/View;
+HSPLandroidx/fragment/app/Fragment;->w(Landroid/os/Bundle;)Landroid/view/LayoutInflater;
+HSPLandroidx/fragment/app/Fragment;->g()Landroidx/lifecycle/g;
+HSPLandroidx/fragment/app/Fragment;->x()I
+HSPLandroidx/fragment/app/Fragment;->z()Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/Fragment;->A()Landroidx/fragment/app/q;
+HSPLandroidx/fragment/app/Fragment;->E()F
+HSPLandroidx/fragment/app/Fragment;->b()Landroidx/savedstate/a;
+HSPLandroidx/fragment/app/Fragment;->M()Landroid/view/View;
+HSPLandroidx/fragment/app/Fragment;->c()Landroidx/lifecycle/D;
+HSPLandroidx/fragment/app/Fragment;->N()V
+PLandroidx/fragment/app/Fragment;->O()V
+HSPLandroidx/fragment/app/Fragment;->P()Z
+HSPLandroidx/fragment/app/Fragment;->S()Z
+HSPLandroidx/fragment/app/Fragment;->U(Landroid/os/Bundle;)V
+HSPLandroidx/fragment/app/Fragment;->V(Landroid/os/Bundle;)V
+PLandroidx/fragment/app/Fragment;->b0()V
+PLandroidx/fragment/app/Fragment;->c0()V
+HSPLandroidx/fragment/app/Fragment;->d0(Landroid/os/Bundle;)Landroid/view/LayoutInflater;
+HSPLandroidx/fragment/app/Fragment;->f0(Landroid/content/Context;Landroid/util/AttributeSet;Landroid/os/Bundle;)V
+PLandroidx/fragment/app/Fragment;->h0()V
+HSPLandroidx/fragment/app/Fragment;->j0(Z)V
+HSPLandroidx/fragment/app/Fragment;->k0()V
+HSPLandroidx/fragment/app/Fragment;->m0()V
+PLandroidx/fragment/app/Fragment;->n0()V
+HSPLandroidx/fragment/app/Fragment;->o0(Landroid/view/View;Landroid/os/Bundle;)V
+HSPLandroidx/fragment/app/Fragment;->p0(Landroid/os/Bundle;)V
+HSPLandroidx/fragment/app/Fragment;->q0(Landroid/os/Bundle;)V
+HSPLandroidx/fragment/app/Fragment;->r0()V
+HSPLandroidx/fragment/app/Fragment;->t0(Landroid/os/Bundle;)V
+HSPLandroidx/fragment/app/Fragment;->u0(Landroid/view/Menu;Landroid/view/MenuInflater;)Z
+HSPLandroidx/fragment/app/Fragment;->v0(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)V
+PLandroidx/fragment/app/Fragment;->w0()V
+PLandroidx/fragment/app/Fragment;->x0()V
+HSPLandroidx/fragment/app/Fragment;->y0(Landroid/os/Bundle;)Landroid/view/LayoutInflater;
+PLandroidx/fragment/app/Fragment;->B0()V
+HSPLandroidx/fragment/app/Fragment;->C0(Landroid/view/Menu;)Z
+HSPLandroidx/fragment/app/Fragment;->D0()V
+HSPLandroidx/fragment/app/Fragment;->E0()V
+HSPLandroidx/fragment/app/Fragment;->G0()V
+PLandroidx/fragment/app/Fragment;->H0()V
+HSPLandroidx/fragment/app/Fragment;->I0()V
+HSPLandroidx/fragment/app/Fragment;->L0()Landroid/content/Context;
+HSPLandroidx/fragment/app/Fragment;->M0()Landroid/view/View;
+HSPLandroidx/fragment/app/Fragment;->N0(Landroid/os/Bundle;)V
+HSPLandroidx/fragment/app/Fragment;->O0()V
+HSPLandroidx/fragment/app/Fragment;->P0(Landroid/os/Bundle;)V
+HSPLandroidx/fragment/app/Fragment;->Q0(IIII)V
+HSPLandroidx/fragment/app/Fragment;->R0(Landroid/view/View;)V
+HSPLandroidx/fragment/app/Fragment;->S0(I)V
+HSPLandroidx/fragment/app/Fragment;->T0(Z)V
+HSPLandroidx/fragment/app/Fragment;->U0(F)V
+HSPLandroidx/fragment/app/Fragment;->V0(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
+HSPLandroidx/fragment/app/Fragment;->toString()Ljava/lang/String;
+Landroidx/fragment/app/e;
+HSPLandroidx/fragment/app/g;->()V
+Landroidx/fragment/app/h;
+PLandroidx/fragment/app/h;->a(Landroid/view/View;)V
+HSPLandroidx/fragment/app/h;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
+HSPLandroidx/fragment/app/h;->dispatchDraw(Landroid/graphics/Canvas;)V
+HSPLandroidx/fragment/app/h;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z
+PLandroidx/fragment/app/h;->removeView(Landroid/view/View;)V
+Landroidx/fragment/app/i;
+HSPLandroidx/fragment/app/i;->()V
+HSPLandroidx/fragment/app/i;->()V
+HSPLandroidx/fragment/app/i;->b(Ljava/lang/ClassLoader;Ljava/lang/String;)Z
+HSPLandroidx/fragment/app/i;->c(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;
+Landroidx/fragment/app/j;
+Landroidx/fragment/app/k;
+HSPLandroidx/fragment/app/k;->(Landroidx/fragment/app/q;)V
+HSPLandroidx/fragment/app/k;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
+Landroidx/fragment/app/l;
+HSPLandroidx/fragment/app/l;->(Landroidx/fragment/app/q;)V
+HSPLandroidx/fragment/app/l;->a(Landroidx/fragment/app/Fragment;Landroid/os/Bundle;Z)V
+HSPLandroidx/fragment/app/l;->b(Landroidx/fragment/app/Fragment;Z)V
+HSPLandroidx/fragment/app/l;->c(Landroidx/fragment/app/Fragment;Landroid/os/Bundle;Z)V
+PLandroidx/fragment/app/l;->d(Landroidx/fragment/app/Fragment;Z)V
+PLandroidx/fragment/app/l;->e(Landroidx/fragment/app/Fragment;Z)V
+HSPLandroidx/fragment/app/l;->f(Landroidx/fragment/app/Fragment;Z)V
+HSPLandroidx/fragment/app/l;->g(Landroidx/fragment/app/Fragment;Landroid/os/Bundle;Z)V
+HSPLandroidx/fragment/app/l;->h(Landroidx/fragment/app/Fragment;Z)V
+HSPLandroidx/fragment/app/l;->j(Landroidx/fragment/app/Fragment;Z)V
+PLandroidx/fragment/app/l;->k(Landroidx/fragment/app/Fragment;Z)V
+HSPLandroidx/fragment/app/l;->l(Landroidx/fragment/app/Fragment;Landroid/view/View;Landroid/os/Bundle;Z)V
+PLandroidx/fragment/app/l;->m(Landroidx/fragment/app/Fragment;Z)V
+Landroidx/fragment/app/q$a;
+HSPLandroidx/fragment/app/q$a;->(Landroidx/fragment/app/q;Z)V
+Landroidx/fragment/app/q$b;
+Landroidx/core/view/l;
+HSPLandroidx/fragment/app/q$b;->(Landroidx/fragment/app/q;)V
+Landroidx/fragment/app/q$c;
+HSPLandroidx/fragment/app/q$c;->(Landroidx/fragment/app/q;)V
+Landroidx/fragment/app/q$d;
+Landroidx/fragment/app/F;
+HSPLandroidx/fragment/app/q$d;->(Landroidx/fragment/app/q;)V
+Landroidx/fragment/app/FragmentManager$6;
+Landroidx/fragment/app/q$f;
+Landroidx/fragment/app/u;
+Landroidx/fragment/app/q;
+HSPLandroidx/fragment/app/q;->()V
+HSPLandroidx/fragment/app/q;->()V
+HSPLandroidx/fragment/app/q;->h(Landroidx/fragment/app/Fragment;)Landroidx/fragment/app/w;
+HSPLandroidx/fragment/app/q;->i(Landroidx/fragment/app/u;)V
+HSPLandroidx/fragment/app/q;->j(Landroidx/fragment/app/j;Landroidx/fragment/app/g;Landroidx/fragment/app/Fragment;)V
+HSPLandroidx/fragment/app/q;->l()Landroidx/fragment/app/y;
+HSPLandroidx/fragment/app/q;->m()Z
+HSPLandroidx/fragment/app/q;->n()V
+PLandroidx/fragment/app/q;->o()V
+HSPLandroidx/fragment/app/q;->p()Ljava/util/Set;
+HSPLandroidx/fragment/app/q;->q(Ljava/util/ArrayList;II)Ljava/util/Set;
+HSPLandroidx/fragment/app/q;->r(Landroidx/fragment/app/Fragment;)Landroidx/fragment/app/w;
+HSPLandroidx/fragment/app/q;->t()V
+HSPLandroidx/fragment/app/q;->v()V
+HSPLandroidx/fragment/app/q;->w(Landroid/view/Menu;Landroid/view/MenuInflater;)Z
+PLandroidx/fragment/app/q;->x()V
+PLandroidx/fragment/app/q;->y()V
+HSPLandroidx/fragment/app/q;->C(Landroidx/fragment/app/Fragment;)V
+PLandroidx/fragment/app/q;->D()V
+HSPLandroidx/fragment/app/q;->E(Landroid/view/Menu;)Z
+HSPLandroidx/fragment/app/q;->F()V
+HSPLandroidx/fragment/app/q;->G()V
+HSPLandroidx/fragment/app/q;->H()V
+HSPLandroidx/fragment/app/q;->I(I)V
+PLandroidx/fragment/app/q;->J()V
+HSPLandroidx/fragment/app/q;->K()V
+HSPLandroidx/fragment/app/q;->L()V
+PLandroidx/fragment/app/q;->M()V
+HSPLandroidx/fragment/app/q;->N(Z)V
+HSPLandroidx/fragment/app/q;->O(Z)Z
+HSPLandroidx/fragment/app/q;->Q(Ljava/util/ArrayList;Ljava/util/ArrayList;II)V
+HSPLandroidx/fragment/app/q;->R(Ljava/util/ArrayList;Ljava/util/ArrayList;II)V
+HSPLandroidx/fragment/app/q;->S(Ljava/lang/String;)Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/q;->T(I)Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/q;->Y(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
+HSPLandroidx/fragment/app/q;->Z()I
+HSPLandroidx/fragment/app/q;->a0(Landroidx/fragment/app/Fragment;)Landroidx/fragment/app/t;
+HSPLandroidx/fragment/app/q;->b0()Landroidx/fragment/app/g;
+HSPLandroidx/fragment/app/q;->c0(Landroidx/fragment/app/Fragment;)Landroid/view/ViewGroup;
+HSPLandroidx/fragment/app/q;->d0()Landroidx/fragment/app/i;
+HSPLandroidx/fragment/app/q;->e0()Landroidx/fragment/app/j;
+HSPLandroidx/fragment/app/q;->f0()Landroidx/fragment/app/l;
+HSPLandroidx/fragment/app/q;->g0()Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/q;->h0()Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/q;->i0()Landroidx/fragment/app/F;
+HSPLandroidx/fragment/app/q;->j0()LF/c$c;
+HSPLandroidx/fragment/app/q;->k0(Landroid/view/View;)Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/q;->l0(Landroidx/fragment/app/Fragment;)Landroidx/lifecycle/D;
+PLandroidx/fragment/app/q;->o0()Z
+HSPLandroidx/fragment/app/q;->p0(I)Z
+HSPLandroidx/fragment/app/q;->q0(Landroidx/fragment/app/Fragment;)Z
+HSPLandroidx/fragment/app/q;->t0(Landroidx/fragment/app/Fragment;)Z
+HSPLandroidx/fragment/app/q;->u0(Landroidx/fragment/app/Fragment;)Z
+HSPLandroidx/fragment/app/q;->v0(I)Z
+HSPLandroidx/fragment/app/q;->w0()Z
+HSPLandroidx/fragment/app/q;->x0(IZ)V
+HSPLandroidx/fragment/app/q;->y0()V
+HSPLandroidx/fragment/app/q;->A0(Landroidx/fragment/app/w;)V
+HSPLandroidx/fragment/app/q;->C0(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
+HSPLandroidx/fragment/app/q;->H0(Landroidx/fragment/app/Fragment;Z)V
+HSPLandroidx/fragment/app/q;->J0(Landroidx/fragment/app/Fragment;)V
+HSPLandroidx/fragment/app/q;->M0()V
+HSPLandroidx/fragment/app/q;->N0()V
+Landroidx/fragment/app/r;
+HSPLandroidx/fragment/app/r;->()V
+Landroidx/fragment/app/t$a;
+Landroidx/lifecycle/A$b;
+HSPLandroidx/fragment/app/t$a;->()V
+HSPLandroidx/fragment/app/t$a;->b(Ljava/lang/Class;)Landroidx/lifecycle/z;
+Landroidx/fragment/app/t;
+Landroidx/lifecycle/z;
+HSPLandroidx/fragment/app/t;->()V
+HSPLandroidx/fragment/app/t;->(Z)V
+PLandroidx/fragment/app/t;->f(Landroidx/fragment/app/Fragment;)V
+PLandroidx/fragment/app/t;->g(Ljava/lang/String;)V
+HSPLandroidx/fragment/app/t;->i(Landroidx/fragment/app/Fragment;)Landroidx/fragment/app/t;
+HSPLandroidx/fragment/app/t;->k(Landroidx/fragment/app/Fragment;)Landroidx/lifecycle/D;
+PLandroidx/fragment/app/t;->d()V
+HSPLandroidx/fragment/app/t;->m(Z)V
+PLandroidx/fragment/app/t;->n(Landroidx/fragment/app/Fragment;)Z
+Landroidx/fragment/app/w$a;
+HSPLandroidx/fragment/app/w$a;->(Landroidx/fragment/app/w;Landroid/view/View;)V
+HSPLandroidx/fragment/app/w$a;->onViewAttachedToWindow(Landroid/view/View;)V
+Landroidx/fragment/app/w$b;
+HSPLandroidx/fragment/app/w$b;->()V
+Landroidx/fragment/app/w;
+HSPLandroidx/fragment/app/w;->(Landroidx/fragment/app/l;Landroidx/fragment/app/x;Landroidx/fragment/app/Fragment;)V
+HSPLandroidx/fragment/app/w;->a()V
+HSPLandroidx/fragment/app/w;->b()V
+HSPLandroidx/fragment/app/w;->c()V
+HSPLandroidx/fragment/app/w;->d()I
+HSPLandroidx/fragment/app/w;->e()V
+HSPLandroidx/fragment/app/w;->f()V
+PLandroidx/fragment/app/w;->g()V
+PLandroidx/fragment/app/w;->h()V
+PLandroidx/fragment/app/w;->i()V
+HSPLandroidx/fragment/app/w;->j()V
+HSPLandroidx/fragment/app/w;->k()Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/w;->m()V
+PLandroidx/fragment/app/w;->n()V
+HSPLandroidx/fragment/app/w;->o()V
+PLandroidx/fragment/app/w;->r()V
+HSPLandroidx/fragment/app/w;->s(I)V
+HSPLandroidx/fragment/app/w;->t()V
+PLandroidx/fragment/app/w;->u()V
+Landroidx/fragment/app/x;
+HSPLandroidx/fragment/app/x;->()V
+HSPLandroidx/fragment/app/x;->a(Landroidx/fragment/app/Fragment;)V
+HSPLandroidx/fragment/app/x;->b()V
+HSPLandroidx/fragment/app/x;->c(Ljava/lang/String;)Z
+HSPLandroidx/fragment/app/x;->d(I)V
+HSPLandroidx/fragment/app/x;->e(Ljava/lang/String;)Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/x;->f(I)Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/x;->h(Landroidx/fragment/app/Fragment;)I
+HSPLandroidx/fragment/app/x;->i()Ljava/util/List;
+HSPLandroidx/fragment/app/x;->j()Ljava/util/List;
+HSPLandroidx/fragment/app/x;->l(Ljava/lang/String;)Landroidx/fragment/app/w;
+HSPLandroidx/fragment/app/x;->m()Ljava/util/List;
+PLandroidx/fragment/app/x;->n()Landroidx/fragment/app/t;
+HSPLandroidx/fragment/app/x;->p(Landroidx/fragment/app/w;)V
+PLandroidx/fragment/app/x;->q(Landroidx/fragment/app/w;)V
+HSPLandroidx/fragment/app/x;->r()V
+HSPLandroidx/fragment/app/x;->y(Landroidx/fragment/app/t;)V
+Landroidx/fragment/app/y$a;
+HSPLandroidx/fragment/app/y$a;->(ILandroidx/fragment/app/Fragment;)V
+HSPLandroidx/fragment/app/y$a;->(ILandroidx/fragment/app/Fragment;Z)V
+HSPLandroidx/fragment/app/y;->(Landroidx/fragment/app/i;Ljava/lang/ClassLoader;)V
+HSPLandroidx/fragment/app/y;->d(Landroidx/fragment/app/y$a;)V
+HSPLandroidx/fragment/app/y;->g(ILandroidx/fragment/app/Fragment;Ljava/lang/String;I)V
+HSPLandroidx/fragment/app/y;->h(Z)Landroidx/fragment/app/y;
+Landroidx/fragment/app/C;
+HSPLandroidx/fragment/app/C;->(Landroidx/fragment/app/Fragment;Landroidx/lifecycle/D;)V
+HSPLandroidx/fragment/app/C;->g()Landroidx/lifecycle/g;
+HSPLandroidx/fragment/app/C;->b()Landroidx/savedstate/a;
+HSPLandroidx/fragment/app/C;->d(Landroidx/lifecycle/g$a;)V
+HSPLandroidx/fragment/app/C;->e()V
+HSPLandroidx/fragment/app/C;->h(Landroid/os/Bundle;)V
+PLandroidx/fragment/app/C;->i(Landroid/os/Bundle;)V
+Landroidx/fragment/app/E$a;
+HSPLandroidx/fragment/app/E$a;->(Landroidx/fragment/app/E;Landroidx/fragment/app/E$d;)V
+HSPLandroidx/fragment/app/E$a;->run()V
+Landroidx/fragment/app/E$b;
+HSPLandroidx/fragment/app/E$b;->(Landroidx/fragment/app/E;Landroidx/fragment/app/E$d;)V
+HSPLandroidx/fragment/app/E$b;->run()V
+Landroidx/fragment/app/E$c;
+HSPLandroidx/fragment/app/E$c;->()V
+Landroidx/fragment/app/E$d;
+Landroidx/fragment/app/E$e;
+HSPLandroidx/fragment/app/E$d;->(Landroidx/fragment/app/E$e$c;Landroidx/fragment/app/E$e$b;Landroidx/fragment/app/w;Landroidx/core/os/b;)V
+HSPLandroidx/fragment/app/E$d;->c()V
+HSPLandroidx/fragment/app/E$d;->l()V
+Landroidx/fragment/app/E$e$a;
+Landroidx/core/os/b$a;
+HSPLandroidx/fragment/app/E$e$a;->(Landroidx/fragment/app/E$e;)V
+Landroidx/fragment/app/E$e$b;
+HSPLandroidx/fragment/app/E$e$b;->()V
+HSPLandroidx/fragment/app/E$e$b;->(Ljava/lang/String;I)V
+HSPLandroidx/fragment/app/E$e$b;->values()[Landroidx/fragment/app/E$e$b;
+Landroidx/fragment/app/E$e$c;
+HSPLandroidx/fragment/app/E$e$c;->()V
+HSPLandroidx/fragment/app/E$e$c;->(Ljava/lang/String;I)V
+HSPLandroidx/fragment/app/E$e$c;->a(Landroid/view/View;)V
+HSPLandroidx/fragment/app/E$e$c;->b(I)Landroidx/fragment/app/E$e$c;
+HSPLandroidx/fragment/app/E$e$c;->values()[Landroidx/fragment/app/E$e$c;
+HSPLandroidx/fragment/app/E$e;->(Landroidx/fragment/app/E$e$c;Landroidx/fragment/app/E$e$b;Landroidx/fragment/app/Fragment;Landroidx/core/os/b;)V
+HSPLandroidx/fragment/app/E$e;->a(Ljava/lang/Runnable;)V
+HSPLandroidx/fragment/app/E$e;->b()V
+HSPLandroidx/fragment/app/E$e;->c()V
+HSPLandroidx/fragment/app/E$e;->e()Landroidx/fragment/app/E$e$c;
+HSPLandroidx/fragment/app/E$e;->f()Landroidx/fragment/app/Fragment;
+HSPLandroidx/fragment/app/E$e;->g()Landroidx/fragment/app/E$e$b;
+HSPLandroidx/fragment/app/E$e;->h()Z
+HSPLandroidx/fragment/app/E$e;->k(Landroidx/fragment/app/E$e$c;Landroidx/fragment/app/E$e$b;)V
+HSPLandroidx/fragment/app/E;->(Landroid/view/ViewGroup;)V
+HSPLandroidx/fragment/app/E;->a(Landroidx/fragment/app/E$e$c;Landroidx/fragment/app/E$e$b;Landroidx/fragment/app/w;)V
+HSPLandroidx/fragment/app/E;->b(Landroidx/fragment/app/E$e$c;Landroidx/fragment/app/w;)V
+PLandroidx/fragment/app/E;->d(Landroidx/fragment/app/w;)V
+HSPLandroidx/fragment/app/E;->g()V
+HSPLandroidx/fragment/app/E;->h(Landroidx/fragment/app/Fragment;)Landroidx/fragment/app/E$e;
+HSPLandroidx/fragment/app/E;->i(Landroidx/fragment/app/Fragment;)Landroidx/fragment/app/E$e;
+HSPLandroidx/fragment/app/E;->j()V
+HSPLandroidx/fragment/app/E;->l(Landroidx/fragment/app/w;)Landroidx/fragment/app/E$e$b;
+HSPLandroidx/fragment/app/E;->n(Landroid/view/ViewGroup;Landroidx/fragment/app/q;)Landroidx/fragment/app/E;
+HSPLandroidx/fragment/app/E;->o(Landroid/view/ViewGroup;Landroidx/fragment/app/F;)Landroidx/fragment/app/E;
+HSPLandroidx/fragment/app/E;->p()V
+HSPLandroidx/fragment/app/E;->q()V
+HSPLandroidx/fragment/app/E;->r(Z)V
+LF/c$a;
+HSPLF/c$a;->a()[LF/c$a;
+HSPLF/c$a;->()V
+HSPLF/c$a;->(Ljava/lang/String;I)V
+LF/c$c$a;
+HSPLF/c$c$a;->()V
+HSPLF/c$c$a;->(Lt0/d;)V
+LF/c$c;
+HSPLF/c$c;->()V
+HSPLF/c$c;->(Ljava/util/Set;LF/c$b;Ljava/util/Map;)V
+HSPLF/c$c;->a()Ljava/util/Set;
+LF/c;
+HSPLF/c;->()V
+HSPLF/c;->()V
+HSPLF/c;->b(Landroidx/fragment/app/Fragment;)LF/c$c;
+HSPLF/c;->e(LF/d;)V
+LF/d;
+HSPLF/d;->(Landroidx/fragment/app/Fragment;Ljava/lang/String;)V
+Landroidx/lifecycle/d;
+HSPLandroidx/lifecycle/d;->()V
+HSPLandroidx/lifecycle/d;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+PLandroidx/lifecycle/d;->onActivityDestroyed(Landroid/app/Activity;)V
+PLandroidx/lifecycle/d;->onActivityPaused(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/d;->onActivityResumed(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/d;->onActivityStarted(Landroid/app/Activity;)V
+PLandroidx/lifecycle/d;->onActivityStopped(Landroid/app/Activity;)V
+Landroidx/lifecycle/i$a;
+HSPLandroidx/lifecycle/i$a;->()V
+HSPLandroidx/lifecycle/i$a;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+Landroidx/lifecycle/i;
+HSPLandroidx/lifecycle/i;->()V
+HSPLandroidx/lifecycle/i;->a(Landroid/content/Context;)V
+Landroidx/lifecycle/m$b;
+HSPLandroidx/lifecycle/m$b;->(Landroidx/lifecycle/k;Landroidx/lifecycle/g$b;)V
+HSPLandroidx/lifecycle/m$b;->a(Landroidx/lifecycle/l;Landroidx/lifecycle/g$a;)V
+Landroidx/lifecycle/m;
+Landroidx/lifecycle/g;
+HSPLandroidx/lifecycle/m;->(Landroidx/lifecycle/l;)V
+HSPLandroidx/lifecycle/m;->(Landroidx/lifecycle/l;Z)V
+HSPLandroidx/lifecycle/m;->a(Landroidx/lifecycle/k;)V
+HPLandroidx/lifecycle/m;->d(Landroidx/lifecycle/l;)V
+HSPLandroidx/lifecycle/m;->e(Landroidx/lifecycle/k;)Landroidx/lifecycle/g$b;
+HSPLandroidx/lifecycle/m;->f(Ljava/lang/String;)V
+HSPLandroidx/lifecycle/m;->g(Landroidx/lifecycle/l;)V
+HSPLandroidx/lifecycle/m;->b()Landroidx/lifecycle/g$b;
+HSPLandroidx/lifecycle/m;->h(Landroidx/lifecycle/g$a;)V
+HSPLandroidx/lifecycle/m;->i()Z
+HSPLandroidx/lifecycle/m;->j(Landroidx/lifecycle/g$b;)V
+HSPLandroidx/lifecycle/m;->k()V
+HSPLandroidx/lifecycle/m;->l(Landroidx/lifecycle/g$b;)V
+HSPLandroidx/lifecycle/m;->c(Landroidx/lifecycle/k;)V
+HSPLandroidx/lifecycle/m;->m()V
+Landroidx/lifecycle/LiveData$a;
+HSPLandroidx/lifecycle/LiveData$a;->(Landroidx/lifecycle/LiveData;)V
+HSPLandroidx/lifecycle/LiveData$a;->run()V
+Landroidx/lifecycle/LiveData$LifecycleBoundObserver;
+Landroidx/lifecycle/LiveData$b;
+PLandroidx/lifecycle/LiveData$LifecycleBoundObserver;->i()V
+HSPLandroidx/lifecycle/LiveData$LifecycleBoundObserver;->h(Landroidx/lifecycle/l;Landroidx/lifecycle/g$a;)V
+HSPLandroidx/lifecycle/LiveData$LifecycleBoundObserver;->j()Z
+HSPLandroidx/lifecycle/LiveData$b;->d(Z)V
+HSPLandroidx/lifecycle/LiveData$b;->i()V
+Landroidx/lifecycle/LiveData;
+HSPLandroidx/lifecycle/LiveData;->()V
+HSPLandroidx/lifecycle/LiveData;->()V
+HSPLandroidx/lifecycle/LiveData;->a(Ljava/lang/String;)V
+HSPLandroidx/lifecycle/LiveData;->b(I)V
+HSPLandroidx/lifecycle/LiveData;->c(Landroidx/lifecycle/LiveData$b;)V
+HSPLandroidx/lifecycle/LiveData;->d(Landroidx/lifecycle/LiveData$b;)V
+HSPLandroidx/lifecycle/LiveData;->e()V
+HSPLandroidx/lifecycle/LiveData;->f()V
+HSPLandroidx/lifecycle/LiveData;->g(Landroidx/lifecycle/q;)V
+HSPLandroidx/lifecycle/LiveData;->h(Ljava/lang/Object;)V
+Landroidx/lifecycle/p;
+HSPLandroidx/lifecycle/p;->()V
+HSPLandroidx/lifecycle/p;->h(Ljava/lang/Object;)V
+Landroidx/lifecycle/ProcessLifecycleInitializer;
+LJ/a;
+HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->()V
+HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->c(Landroid/content/Context;)Landroidx/lifecycle/l;
+HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->b(Landroid/content/Context;)Ljava/lang/Object;
+HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->a()Ljava/util/List;
+Landroidx/lifecycle/t;
+HSPLandroidx/lifecycle/t;->()V
+HSPLandroidx/lifecycle/t;->()V
+HSPLandroidx/lifecycle/t;->g()Landroidx/lifecycle/g;
+Landroidx/lifecycle/u$c;
+HSPLandroidx/lifecycle/u$c;->()V
+HSPLandroidx/lifecycle/u$c;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+PLandroidx/lifecycle/u$c;->onActivityDestroyed(Landroid/app/Activity;)V
+PLandroidx/lifecycle/u$c;->onActivityPaused(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/u$c;->onActivityPostCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/u$c;->onActivityPostResumed(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/u$c;->onActivityPostStarted(Landroid/app/Activity;)V
+PLandroidx/lifecycle/u$c;->onActivityPreDestroyed(Landroid/app/Activity;)V
+PLandroidx/lifecycle/u$c;->onActivityPrePaused(Landroid/app/Activity;)V
+PLandroidx/lifecycle/u$c;->onActivityPreStopped(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/u$c;->onActivityResumed(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/u$c;->onActivityStarted(Landroid/app/Activity;)V
+PLandroidx/lifecycle/u$c;->onActivityStopped(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/u$c;->registerIn(Landroid/app/Activity;)V
+Landroidx/lifecycle/u;
+HSPLandroidx/lifecycle/u;->()V
+HSPLandroidx/lifecycle/u;->a(Landroidx/lifecycle/g$a;)V
+HSPLandroidx/lifecycle/u;->b(Landroidx/lifecycle/u$a;)V
+HSPLandroidx/lifecycle/u;->c(Landroidx/lifecycle/u$a;)V
+HSPLandroidx/lifecycle/u;->d(Landroidx/lifecycle/u$a;)V
+HSPLandroidx/lifecycle/u;->onActivityCreated(Landroid/os/Bundle;)V
+PLandroidx/lifecycle/u;->onDestroy()V
+PLandroidx/lifecycle/u;->onPause()V
+HSPLandroidx/lifecycle/u;->onResume()V
+HSPLandroidx/lifecycle/u;->onStart()V
+PLandroidx/lifecycle/u;->onStop()V
+HSPLandroidx/lifecycle/z;->()V
+PLandroidx/lifecycle/z;->a()V
+PLandroidx/lifecycle/z;->d()V
+Landroidx/lifecycle/A;
+HSPLandroidx/lifecycle/A;->(Landroidx/lifecycle/D;Landroidx/lifecycle/A$b;)V
+HSPLandroidx/lifecycle/A;->a(Ljava/lang/Class;)Landroidx/lifecycle/z;
+HSPLandroidx/lifecycle/A;->b(Ljava/lang/String;Ljava/lang/Class;)Landroidx/lifecycle/z;
+Landroidx/lifecycle/D;
+HSPLandroidx/lifecycle/D;->()V
+PLandroidx/lifecycle/D;->a()V
+HSPLandroidx/lifecycle/D;->b(Ljava/lang/String;)Landroidx/lifecycle/z;
+HSPLandroidx/lifecycle/D;->d(Ljava/lang/String;Landroidx/lifecycle/z;)V
+Landroidx/lifecycle/F;
+HSPLandroidx/lifecycle/F;->a(Landroid/view/View;Landroidx/lifecycle/l;)V
+Landroidx/lifecycle/G;
+HSPLandroidx/lifecycle/G;->a(Landroid/view/View;Landroidx/lifecycle/E;)V
+Landroidx/startup/a;
+HSPLandroidx/startup/a;->()V
+HSPLandroidx/startup/a;->(Landroid/content/Context;)V
+HSPLandroidx/startup/a;->a()V
+HSPLandroidx/startup/a;->b(Landroid/os/Bundle;)V
+HSPLandroidx/startup/a;->c(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroidx/startup/a;->d(Ljava/lang/Class;Ljava/util/Set;)Ljava/lang/Object;
+HSPLandroidx/startup/a;->e(Landroid/content/Context;)Landroidx/startup/a;
+HSPLandroidx/startup/a;->f(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroidx/startup/a;->g(Ljava/lang/Class;)Z
+Landroidx/appcompat/widget/N;
+HSPLandroidx/appcompat/widget/N;->(Landroidx/appcompat/widget/Toolbar;)V
+HSPLandroidx/appcompat/widget/N;->run()V
+Landroidx/fragment/app/m;
+Lw/a;
+HSPLandroidx/fragment/app/m;->(Landroidx/fragment/app/q;)V
+Landroidx/fragment/app/n;
+HSPLandroidx/fragment/app/n;->(Landroidx/fragment/app/q;)V
+Landroidx/fragment/app/o;
+HSPLandroidx/fragment/app/o;->(Landroidx/fragment/app/q;)V
+Landroidx/fragment/app/p;
+HSPLandroidx/fragment/app/p;->(Landroidx/fragment/app/q;)V
+Landroidx/lifecycle/s;
+HSPLandroidx/lifecycle/s;->(Landroidx/lifecycle/t;)V
+Lh/c;
+HSPLh/c;->a(Ljava/lang/Object;)V
diff --git a/app/build/intermediates/compatible_screen_manifest/release/createReleaseCompatibleScreenManifests/output-metadata.json b/app/build/intermediates/compatible_screen_manifest/release/createReleaseCompatibleScreenManifests/output-metadata.json
new file mode 100644
index 0000000..d7b2b92
--- /dev/null
+++ b/app/build/intermediates/compatible_screen_manifest/release/createReleaseCompatibleScreenManifests/output-metadata.json
@@ -0,0 +1,10 @@
+{
+ "version": 3,
+ "artifactType": {
+ "type": "COMPATIBLE_SCREEN_MANIFEST",
+ "kind": "Directory"
+ },
+ "applicationId": "me.humetrain.tr.twa",
+ "variantName": "release",
+ "elements": []
+}
\ No newline at end of file
diff --git a/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/release/processReleaseResources/R.jar b/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/release/processReleaseResources/R.jar
new file mode 100644
index 0000000..0aeecb7
Binary files /dev/null and b/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/release/processReleaseResources/R.jar differ
diff --git a/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-8.9.1 b/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-8.9.1
new file mode 100644
index 0000000..5a3e3a5
--- /dev/null
+++ b/app/build/intermediates/default_proguard_files/global/proguard-android-optimize.txt-8.9.1
@@ -0,0 +1,89 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
+# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
+# will be ignored by new version of the Android plugin for Gradle.
+
+# Optimizations: If you don't want to optimize, use the proguard-android.txt configuration file
+# instead of this one, which turns off the optimization flags.
+-allowaccessmodification
+
+# Preserve some attributes that may be required for reflection.
+-keepattributes AnnotationDefault,
+ EnclosingMethod,
+ InnerClasses,
+ RuntimeVisibleAnnotations,
+ RuntimeVisibleParameterAnnotations,
+ RuntimeVisibleTypeAnnotations,
+ Signature
+
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+-keep public class com.google.android.vending.licensing.ILicensingService
+-dontnote com.android.vending.licensing.ILicensingService
+-dontnote com.google.vending.licensing.ILicensingService
+-dontnote com.google.android.vending.licensing.ILicensingService
+
+# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
+-keepclasseswithmembernames,includedescriptorclasses class * {
+ native ;
+}
+
+# Keep setters in Views so that animations can still work.
+-keepclassmembers public class * extends android.view.View {
+ void set*(***);
+ *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final ** CREATOR;
+}
+
+# Preserve annotated Javascript interface methods.
+-keepclassmembers class * {
+ @android.webkit.JavascriptInterface ;
+}
+
+# The support libraries contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontnote android.support.**
+-dontnote androidx.**
+-dontwarn android.support.**
+-dontwarn androidx.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep (...);
+}
+
+# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
+-dontnote org.apache.http.**
+-dontnote android.net.http.**
+
+# These classes are duplicated between android.jar and core-lambda-stubs.jar.
+-dontnote java.lang.invoke.**
diff --git a/app/build/intermediates/default_proguard_files/global/proguard-android.txt-8.9.1 b/app/build/intermediates/default_proguard_files/global/proguard-android.txt-8.9.1
new file mode 100644
index 0000000..6f7e4ef
--- /dev/null
+++ b/app/build/intermediates/default_proguard_files/global/proguard-android.txt-8.9.1
@@ -0,0 +1,95 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
+# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
+# will be ignored by new version of the Android plugin for Gradle.
+
+# Optimization is turned off by default. Dex does not like code run
+# through the ProGuard optimize steps (and performs some
+# of these optimizations on its own).
+# Note that if you want to enable optimization, you cannot just
+# include optimization flags in your own project configuration file;
+# instead you will need to point to the
+# "proguard-android-optimize.txt" file instead of this one from your
+# project.properties file.
+-dontoptimize
+
+# Preserve some attributes that may be required for reflection.
+-keepattributes AnnotationDefault,
+ EnclosingMethod,
+ InnerClasses,
+ RuntimeVisibleAnnotations,
+ RuntimeVisibleParameterAnnotations,
+ RuntimeVisibleTypeAnnotations,
+ Signature
+
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+-keep public class com.google.android.vending.licensing.ILicensingService
+-dontnote com.android.vending.licensing.ILicensingService
+-dontnote com.google.vending.licensing.ILicensingService
+-dontnote com.google.android.vending.licensing.ILicensingService
+
+# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
+-keepclasseswithmembernames,includedescriptorclasses class * {
+ native ;
+}
+
+# Keep setters in Views so that animations can still work.
+-keepclassmembers public class * extends android.view.View {
+ void set*(***);
+ *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final ** CREATOR;
+}
+
+# Preserve annotated Javascript interface methods.
+-keepclassmembers class * {
+ @android.webkit.JavascriptInterface ;
+}
+
+# The support libraries contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontnote android.support.**
+-dontnote androidx.**
+-dontwarn android.support.**
+-dontwarn androidx.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep (...);
+}
+
+# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
+-dontnote org.apache.http.**
+-dontnote android.net.http.**
+
+# These classes are duplicated between android.jar and core-lambda-stubs.jar.
+-dontnote java.lang.invoke.**
diff --git a/app/build/intermediates/default_proguard_files/global/proguard-defaults.txt-8.9.1 b/app/build/intermediates/default_proguard_files/global/proguard-defaults.txt-8.9.1
new file mode 100644
index 0000000..7bbb228
--- /dev/null
+++ b/app/build/intermediates/default_proguard_files/global/proguard-defaults.txt-8.9.1
@@ -0,0 +1,89 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
+# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
+# will be ignored by new version of the Android plugin for Gradle.
+
+# Optimizations can be turned on and off in the 'postProcessing' DSL block.
+# The configuration below is applied if optimizations are enabled.
+-allowaccessmodification
+
+# Preserve some attributes that may be required for reflection.
+-keepattributes AnnotationDefault,
+ EnclosingMethod,
+ InnerClasses,
+ RuntimeVisibleAnnotations,
+ RuntimeVisibleParameterAnnotations,
+ RuntimeVisibleTypeAnnotations,
+ Signature
+
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+-keep public class com.google.android.vending.licensing.ILicensingService
+-dontnote com.android.vending.licensing.ILicensingService
+-dontnote com.google.vending.licensing.ILicensingService
+-dontnote com.google.android.vending.licensing.ILicensingService
+
+# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
+-keepclasseswithmembernames,includedescriptorclasses class * {
+ native ;
+}
+
+# Keep setters in Views so that animations can still work.
+-keepclassmembers public class * extends android.view.View {
+ void set*(***);
+ *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick.
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final ** CREATOR;
+}
+
+# Preserve annotated Javascript interface methods.
+-keepclassmembers class * {
+ @android.webkit.JavascriptInterface ;
+}
+
+# The support libraries contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontnote android.support.**
+-dontnote androidx.**
+-dontwarn android.support.**
+-dontwarn androidx.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep ;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep (...);
+}
+
+# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
+-dontnote org.apache.http.**
+-dontnote android.net.http.**
+
+# These classes are duplicated between android.jar and core-lambda-stubs.jar.
+-dontnote java.lang.invoke.**
diff --git a/app/build/intermediates/dex/release/minifyReleaseWithR8/classes.dex b/app/build/intermediates/dex/release/minifyReleaseWithR8/classes.dex
new file mode 100644
index 0000000..df44859
Binary files /dev/null and b/app/build/intermediates/dex/release/minifyReleaseWithR8/classes.dex differ
diff --git a/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/0/.dm b/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/0/.dm
new file mode 100644
index 0000000..1a2f5b7
Binary files /dev/null and b/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/0/.dm differ
diff --git a/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/1/.dm b/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/1/.dm
new file mode 100644
index 0000000..98e88c4
Binary files /dev/null and b/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/1/.dm differ
diff --git a/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/dex-metadata-map.properties b/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/dex-metadata-map.properties
new file mode 100644
index 0000000..e45d905
--- /dev/null
+++ b/app/build/intermediates/dex_metadata_directory/release/compileReleaseArtProfile/dex-metadata-map.properties
@@ -0,0 +1,5 @@
+31=0/.dm
+2147483647=0/.dm
+28=1/.dm
+29=1/.dm
+30=1/.dm
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/mergeReleaseAssets/merger.xml b/app/build/intermediates/incremental/mergeReleaseAssets/merger.xml
new file mode 100644
index 0000000..638e236
--- /dev/null
+++ b/app/build/intermediates/incremental/mergeReleaseAssets/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml b/app/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
new file mode 100644
index 0000000..c543478
--- /dev/null
+++ b/app/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/mergeReleaseShaders/merger.xml b/app/build/intermediates/incremental/mergeReleaseShaders/merger.xml
new file mode 100644
index 0000000..8b7111c
--- /dev/null
+++ b/app/build/intermediates/incremental/mergeReleaseShaders/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/packageRelease/tmp/release/dex-renamer-state.txt b/app/build/intermediates/incremental/packageRelease/tmp/release/dex-renamer-state.txt
new file mode 100644
index 0000000..6b40b59
--- /dev/null
+++ b/app/build/intermediates/incremental/packageRelease/tmp/release/dex-renamer-state.txt
@@ -0,0 +1,4 @@
+#Tue Oct 21 01:44:18 KST 2025
+base.0=/home/ckh08045/Tr_Code/app/build/intermediates/dex/release/minifyReleaseWithR8/classes.dex
+renamed.0=classes.dex
+path.0=classes.dex
diff --git a/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/androidResources b/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/androidResources
new file mode 100644
index 0000000..053dca6
Binary files /dev/null and b/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/androidResources differ
diff --git a/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/javaResources0 b/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/javaResources0
new file mode 100644
index 0000000..53ae8af
Binary files /dev/null and b/app/build/intermediates/incremental/packageRelease/tmp/release/zip-cache/javaResources0 differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/merge-state b/app/build/intermediates/incremental/release-mergeJavaRes/merge-state
new file mode 100644
index 0000000..d5ad8c5
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/merge-state differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/1DnBKvi+ik0aL_SsiwsJzEC5ukA= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/1DnBKvi+ik0aL_SsiwsJzEC5ukA=
new file mode 100644
index 0000000..59db712
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/1DnBKvi+ik0aL_SsiwsJzEC5ukA= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/1KlN3T579AeW9n+X6HdAoOzJH3E= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/1KlN3T579AeW9n+X6HdAoOzJH3E=
new file mode 100644
index 0000000..5d4816d
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/1KlN3T579AeW9n+X6HdAoOzJH3E= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/2MGgWUr+Oq+etcIw+5mwbQ5Oy6c= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/2MGgWUr+Oq+etcIw+5mwbQ5Oy6c=
new file mode 100644
index 0000000..c293336
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/2MGgWUr+Oq+etcIw+5mwbQ5Oy6c= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/3pCYDaO3Qs+kJFxML2+WCO4V7ic= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/3pCYDaO3Qs+kJFxML2+WCO4V7ic=
new file mode 100644
index 0000000..166f134
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/3pCYDaO3Qs+kJFxML2+WCO4V7ic= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/58uk5zpPPptVA7i30hJCz7Iix4o= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/58uk5zpPPptVA7i30hJCz7Iix4o=
new file mode 100644
index 0000000..30185e4
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/58uk5zpPPptVA7i30hJCz7Iix4o= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/7t2iYElfWkoJ0CwJSSg+8TMKrnw= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/7t2iYElfWkoJ0CwJSSg+8TMKrnw=
new file mode 100644
index 0000000..a671f24
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/7t2iYElfWkoJ0CwJSSg+8TMKrnw= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/8O2ICtSI2PFWY72thZbcvzzwLFM= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/8O2ICtSI2PFWY72thZbcvzzwLFM=
new file mode 100644
index 0000000..b197720
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/8O2ICtSI2PFWY72thZbcvzzwLFM= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/8ksNQW9o5XQU1gOKa4autPfjcEI= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/8ksNQW9o5XQU1gOKa4autPfjcEI=
new file mode 100644
index 0000000..2c4d543
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/8ksNQW9o5XQU1gOKa4autPfjcEI= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/C49v_l9tTa53ck5+x9G1qNXJJYw= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/C49v_l9tTa53ck5+x9G1qNXJJYw=
new file mode 100644
index 0000000..aadd49f
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/C49v_l9tTa53ck5+x9G1qNXJJYw= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/CMHAuXcHiT4qkg4ma28VxYaDID0= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/CMHAuXcHiT4qkg4ma28VxYaDID0=
new file mode 100644
index 0000000..86c0d45
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/CMHAuXcHiT4qkg4ma28VxYaDID0= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/DziWY3sRbHtFotQDUliyZW4Cbnc= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/DziWY3sRbHtFotQDUliyZW4Cbnc=
new file mode 100644
index 0000000..b2efafc
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/DziWY3sRbHtFotQDUliyZW4Cbnc= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/ESCahqjteM+oXUJ+Q2FiLo+v3so= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/ESCahqjteM+oXUJ+Q2FiLo+v3so=
new file mode 100644
index 0000000..07b7738
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/ESCahqjteM+oXUJ+Q2FiLo+v3so= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/GqnK4cOzC_65w22IQ4i5f3djiKI= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/GqnK4cOzC_65w22IQ4i5f3djiKI=
new file mode 100644
index 0000000..f3e485b
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/GqnK4cOzC_65w22IQ4i5f3djiKI= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/HqAedJnXQRgVKaZAjopmavEQu7k= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/HqAedJnXQRgVKaZAjopmavEQu7k=
new file mode 100644
index 0000000..ac6c1db
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/HqAedJnXQRgVKaZAjopmavEQu7k= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Hupfy9m62bC9oJnsBNxjQz4j5ko= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Hupfy9m62bC9oJnsBNxjQz4j5ko=
new file mode 100644
index 0000000..6ccda32
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Hupfy9m62bC9oJnsBNxjQz4j5ko= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/KyaCPz3s+_waUqvvaqI7FOdNWV4= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/KyaCPz3s+_waUqvvaqI7FOdNWV4=
new file mode 100644
index 0000000..31b2786
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/KyaCPz3s+_waUqvvaqI7FOdNWV4= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/MBhcpn+NfNestRaEHbtHbgMA7JU= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/MBhcpn+NfNestRaEHbtHbgMA7JU=
new file mode 100644
index 0000000..740268b
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/MBhcpn+NfNestRaEHbtHbgMA7JU= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/O+E940+4IAB+ld9s_GVv7P2sGSk= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/O+E940+4IAB+ld9s_GVv7P2sGSk=
new file mode 100644
index 0000000..bff7b3b
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/O+E940+4IAB+ld9s_GVv7P2sGSk= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Rmlo29ys267AVJCtYXAZuuzDX4A= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Rmlo29ys267AVJCtYXAZuuzDX4A=
new file mode 100644
index 0000000..c68ea7a
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Rmlo29ys267AVJCtYXAZuuzDX4A= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/TLPkaodB3qWkhWflpk8QIrlCn_k= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/TLPkaodB3qWkhWflpk8QIrlCn_k=
new file mode 100644
index 0000000..348614d
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/TLPkaodB3qWkhWflpk8QIrlCn_k= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/U27phP_xEP3TKfU6Dkqzf3hYvH8= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/U27phP_xEP3TKfU6Dkqzf3hYvH8=
new file mode 100644
index 0000000..073879c
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/U27phP_xEP3TKfU6Dkqzf3hYvH8= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/XOhOFhn_BJUmT6B_mCTkC5hLe2o= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/XOhOFhn_BJUmT6B_mCTkC5hLe2o=
new file mode 100644
index 0000000..d0c7a21
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/XOhOFhn_BJUmT6B_mCTkC5hLe2o= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Y971aOifbVxnqvVP+qqHUaI_k4c= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Y971aOifbVxnqvVP+qqHUaI_k4c=
new file mode 100644
index 0000000..5e9d2aa
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Y971aOifbVxnqvVP+qqHUaI_k4c= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/YqAeyV439jbiSdo9c0nmNdi2Rj8= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/YqAeyV439jbiSdo9c0nmNdi2Rj8=
new file mode 100644
index 0000000..8fd6cd4
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/YqAeyV439jbiSdo9c0nmNdi2Rj8= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Z7FtDbkUHBcYocqRpT80rEv3QMg= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Z7FtDbkUHBcYocqRpT80rEv3QMg=
new file mode 100644
index 0000000..6d7d2f1
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/Z7FtDbkUHBcYocqRpT80rEv3QMg= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/ZWejIH5si733mPqea3Xn9yUmjjw= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/ZWejIH5si733mPqea3Xn9yUmjjw=
new file mode 100644
index 0000000..29999b7
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/ZWejIH5si733mPqea3Xn9yUmjjw= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/_+Y2zcmUBMjE7cTSQE1BjHUeGuc= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/_+Y2zcmUBMjE7cTSQE1BjHUeGuc=
new file mode 100644
index 0000000..45832c0
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/_+Y2zcmUBMjE7cTSQE1BjHUeGuc= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/_5U2fYuWW28ZzNWuLjJZnSDYFB0= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/_5U2fYuWW28ZzNWuLjJZnSDYFB0=
new file mode 100644
index 0000000..427b655
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/_5U2fYuWW28ZzNWuLjJZnSDYFB0= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/aMJn3sNBnL+8DpdCNdnoBXoCcHc= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/aMJn3sNBnL+8DpdCNdnoBXoCcHc=
new file mode 100644
index 0000000..466b875
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/aMJn3sNBnL+8DpdCNdnoBXoCcHc= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bGzLLiKigXSGe2CWtX5aL_0dtpM= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bGzLLiKigXSGe2CWtX5aL_0dtpM=
new file mode 100644
index 0000000..833b095
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bGzLLiKigXSGe2CWtX5aL_0dtpM= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bPsscE9tZbEjn21F_vlR0iWziU8= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bPsscE9tZbEjn21F_vlR0iWziU8=
new file mode 100644
index 0000000..5119f5e
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bPsscE9tZbEjn21F_vlR0iWziU8= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bnRSjEPO1KjbkPjh3iZt1gTrIZ0= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bnRSjEPO1KjbkPjh3iZt1gTrIZ0=
new file mode 100644
index 0000000..52e1c88
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bnRSjEPO1KjbkPjh3iZt1gTrIZ0= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/cgMAIBep+ojp1S022axcwUuiP3w= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/cgMAIBep+ojp1S022axcwUuiP3w=
new file mode 100644
index 0000000..9426e40
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/cgMAIBep+ojp1S022axcwUuiP3w= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/enYyUGYVDuakL_QiyIhgezfVn9g= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/enYyUGYVDuakL_QiyIhgezfVn9g=
new file mode 100644
index 0000000..d9d9bd8
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/enYyUGYVDuakL_QiyIhgezfVn9g= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/fRsPYpvCX5W7WnDn57bVWCZQNeI= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/fRsPYpvCX5W7WnDn57bVWCZQNeI=
new file mode 100644
index 0000000..8bf936d
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/fRsPYpvCX5W7WnDn57bVWCZQNeI= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/g0ZsR5vz5TXCQMEGQtH+KpwDrd8= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/g0ZsR5vz5TXCQMEGQtH+KpwDrd8=
new file mode 100644
index 0000000..9e21c96
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/g0ZsR5vz5TXCQMEGQtH+KpwDrd8= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/gXeJcxPwXMbow+EAJAcoXQomQmI= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/gXeJcxPwXMbow+EAJAcoXQomQmI=
new file mode 100644
index 0000000..fd6b42c
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/gXeJcxPwXMbow+EAJAcoXQomQmI= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/jRaXhJ3upa5g_phv5ctX6R5ilns= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/jRaXhJ3upa5g_phv5ctX6R5ilns=
new file mode 100644
index 0000000..8568b5b
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/jRaXhJ3upa5g_phv5ctX6R5ilns= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/k1XViD8817AdvIQ64j+OSiavJqo= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/k1XViD8817AdvIQ64j+OSiavJqo=
new file mode 100644
index 0000000..1fb0044
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/k1XViD8817AdvIQ64j+OSiavJqo= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/kmHWNpETqO8TzZlXNkvjmaMDh68= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/kmHWNpETqO8TzZlXNkvjmaMDh68=
new file mode 100644
index 0000000..2a6441a
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/kmHWNpETqO8TzZlXNkvjmaMDh68= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/kwmcB_S5jp5uxeVGzmAOdtlC8uE= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/kwmcB_S5jp5uxeVGzmAOdtlC8uE=
new file mode 100644
index 0000000..d94bfb9
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/kwmcB_S5jp5uxeVGzmAOdtlC8uE= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/mmQkr7si8OT2gtMHbzfDmIkgmTQ= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/mmQkr7si8OT2gtMHbzfDmIkgmTQ=
new file mode 100644
index 0000000..90d5279
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/mmQkr7si8OT2gtMHbzfDmIkgmTQ= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/nwWsevl4z7k_lLyfGVk_ypRMxxw= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/nwWsevl4z7k_lLyfGVk_ypRMxxw=
new file mode 100644
index 0000000..5707aa8
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/nwWsevl4z7k_lLyfGVk_ypRMxxw= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/pjYnpUbkdQXjTwpBvgERcTv42yE= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/pjYnpUbkdQXjTwpBvgERcTv42yE=
new file mode 100644
index 0000000..ae9d872
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/pjYnpUbkdQXjTwpBvgERcTv42yE= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/rebs0gBHyZjpm4pTaTbUQA1LFXI= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/rebs0gBHyZjpm4pTaTbUQA1LFXI=
new file mode 100644
index 0000000..ba19014
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/rebs0gBHyZjpm4pTaTbUQA1LFXI= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/tAjirh_JDO9a9aZoGRWPml1lDns= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/tAjirh_JDO9a9aZoGRWPml1lDns=
new file mode 100644
index 0000000..04a3387
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/tAjirh_JDO9a9aZoGRWPml1lDns= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uNFRRSBLidysmzUQ83kGLFWagDM= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uNFRRSBLidysmzUQ83kGLFWagDM=
new file mode 100644
index 0000000..b73828b
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uNFRRSBLidysmzUQ83kGLFWagDM= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uURHP0lb+hxC9abPari4WbhZ5Ok= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uURHP0lb+hxC9abPari4WbhZ5Ok=
new file mode 100644
index 0000000..e429e70
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uURHP0lb+hxC9abPari4WbhZ5Ok= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uxt5cozd2Dzj2eDCXG03xwS6FbI= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uxt5cozd2Dzj2eDCXG03xwS6FbI=
new file mode 100644
index 0000000..1ffce77
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uxt5cozd2Dzj2eDCXG03xwS6FbI= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/v0Lx5GbgyEPaFgRQwLrfHitA02Y= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/v0Lx5GbgyEPaFgRQwLrfHitA02Y=
new file mode 100644
index 0000000..2834ba1
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/v0Lx5GbgyEPaFgRQwLrfHitA02Y= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xEMctsvhZyXpyLS3_Ta0ojoEtSQ= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xEMctsvhZyXpyLS3_Ta0ojoEtSQ=
new file mode 100644
index 0000000..21eb307
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xEMctsvhZyXpyLS3_Ta0ojoEtSQ= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xg01_qbXRjjsDPD8JFZigq_icBI= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xg01_qbXRjjsDPD8JFZigq_icBI=
new file mode 100644
index 0000000..dccab6f
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xg01_qbXRjjsDPD8JFZigq_icBI= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xibudMeSwRtpTKj31AGEQeS+Snw= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xibudMeSwRtpTKj31AGEQeS+Snw=
new file mode 100644
index 0000000..de755d1
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/xibudMeSwRtpTKj31AGEQeS+Snw= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/yXF2YShM_7HqbuUDz8I_vkluycw= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/yXF2YShM_7HqbuUDz8I_vkluycw=
new file mode 100644
index 0000000..63edd05
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/yXF2YShM_7HqbuUDz8I_vkluycw= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/zdPkdhgTURgTzehcfq4N3eYIfPM= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/zdPkdhgTURgTzehcfq4N3eYIfPM=
new file mode 100644
index 0000000..21e1755
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/zdPkdhgTURgTzehcfq4N3eYIfPM= differ
diff --git a/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/zzsKsywxXoLRC26qMaPDo45UXHI= b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/zzsKsywxXoLRC26qMaPDo45UXHI=
new file mode 100644
index 0000000..4f1af9b
Binary files /dev/null and b/app/build/intermediates/incremental/release-mergeJavaRes/zip-cache/zzsKsywxXoLRC26qMaPDo45UXHI= differ
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties b/app/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties
new file mode 100644
index 0000000..b73c662
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties
@@ -0,0 +1,20 @@
+#Tue Oct 21 01:43:34 KST 2025
+me.humetrain.tr.twa.app-main-28\:/drawable-mdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-mdpi_ic_notification_icon.png.flat
+me.humetrain.tr.twa.app-main-28\:/mipmap-xxxhdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/mipmap-xxxhdpi_ic_launcher.png.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-xxhdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-xxhdpi_ic_notification_icon.png.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-xhdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-xhdpi_splash.png.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-hdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-hdpi_splash.png.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-xxxhdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-xxxhdpi_ic_notification_icon.png.flat
+me.humetrain.tr.twa.app-main-28\:/xml/filepaths.xml=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/xml_filepaths.xml.flat
+me.humetrain.tr.twa.app-main-28\:/raw/web_app_manifest.json=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/raw_web_app_manifest.json.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-xxxhdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-xxxhdpi_splash.png.flat
+me.humetrain.tr.twa.app-main-28\:/xml/shortcuts.xml=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/xml_shortcuts.xml.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-xxhdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-xxhdpi_splash.png.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-hdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-hdpi_ic_notification_icon.png.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-mdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-mdpi_splash.png.flat
+me.humetrain.tr.twa.app-main-28\:/mipmap-hdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/mipmap-hdpi_ic_launcher.png.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-anydpi/shortcut_legacy_background.xml=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-anydpi_shortcut_legacy_background.xml.flat
+me.humetrain.tr.twa.app-main-28\:/mipmap-mdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/mipmap-mdpi_ic_launcher.png.flat
+me.humetrain.tr.twa.app-main-28\:/mipmap-xxhdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/mipmap-xxhdpi_ic_launcher.png.flat
+me.humetrain.tr.twa.app-main-28\:/drawable-xhdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/drawable-xhdpi_ic_notification_icon.png.flat
+me.humetrain.tr.twa.app-main-28\:/mipmap-xhdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/merged_res/release/mergeReleaseResources/mipmap-xhdpi_ic_launcher.png.flat
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-af/values-af.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-af/values-af.xml
new file mode 100644
index 0000000..4374911
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-af/values-af.xml
@@ -0,0 +1,61 @@
+
+
+ "Gaan na tuisskerm"
+ "Gaan op"
+ "Nog opsies"
+ "Klaar"
+ "Sien alles"
+ "Kies \'n program"
+ "AF"
+ "AAN"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Funksie+"
+ "Meta+"
+ "Shift+"
+ "spasiebalk"
+ "Simbool+"
+ "Kieslys+"
+ "Soek …"
+ "Vee navraag uit"
+ "Soektognavraag"
+ "Soek"
+ "Dien navraag in"
+ "Stemsoektog"
+ "Deel met"
+ "Deel met %s"
+ "Vou in"
+ "Antwoord"
+ "Video"
+ "Wys af"
+ "Lui af"
+ "Inkomende oproep"
+ "Oproep aan die gang"
+ "Keur tans \'n inkomende oproep"
+ Aktiveer
+ %1$s sal nie werk nie tensy jy Google Play Dienste aktiveer.
+ Aktiveer Google Play Dienste
+ Installeer
+ %1$s sal nie sonder Google Play Dienste werk nie, wat nie op jou toestel is nie.
+ Kry Google Play Dienste
+ Beskikbaarheid van Google Play Dienste
+ Google Play Services-fout
+ %1$s ondervind probleme met Google Play Dienste. Probeer asseblief weer.
+ %1$s sal nie werk sonder Google Play Dienste nie, wat nie deur jou toestel gesteun word nie.
+ Dateer op
+ %1$s sal nie werk nie tensy jy Google Play Dienste opdateer.
+ Dateer Google Play Dienste op
+ %1$s sal nie sonder Google Play Dienste werk nie, wat tans opdateer.
+ Nuwe weergawe van Google Play Dienste is nodig. Dit sal binnekort self opdateer.
+ Maak oop op foon
+ Meld aan
+ Meld aan met Google
+ "Skakel is na knipbord gekopieer"
+ "Kopieer skakel"
+ "Maak in blaaier oop"
+ "Deel skakel"
+ "Soek"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-am/values-am.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-am/values-am.xml
new file mode 100644
index 0000000..acda007
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-am/values-am.xml
@@ -0,0 +1,61 @@
+
+
+ "መነሻ ዳስስ"
+ "ወደ ላይ ያስሱ"
+ "ተጨማሪ አማራጮች"
+ "ተከናውኗል"
+ "ሁሉንም ይመልከቱ"
+ "አንድ መተግበሪያ ይምረጡ"
+ "አጥፋ"
+ "አብራ"
+ "Alt+"
+ "Ctrl+"
+ "ሰርዝ"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "ክፍተት"
+ "Sym+"
+ "Menu+"
+ "ይፈልጉ…"
+ "መጠይቅ አጽዳ"
+ "የፍለጋ መጠይቅ"
+ "ፍለጋ"
+ "መጠይቅ አስገባ"
+ "የድምጽ ፍለጋ"
+ "አጋራ በ"
+ "ለ%s አጋራ"
+ "ሰብስብ"
+ "መልስ"
+ "ቪዲዮ"
+ "አትቀበል"
+ "ስልኩን ዝጋ"
+ "ገቢ ጥሪ"
+ "እየተካሄደ ያለ ጥሪ"
+ "ገቢ ጥሪ ማጣራት"
+ አንቃ
+ Google Play አገልግሎቶችን ካላነቁ በስተቀር %1$s አይሰራም።
+ Google Play አገልግሎቶችን ያንቁ
+ ጫን
+ %1$s ያለ Google Play አገልግሎቶች አይሰራም፣ እነሱ ደግሞ በመሣሪያዎ ላይ የሉም።
+ Google Play አገልግሎቶችን ያግኙ
+ Google Play አገልግሎቶች ተገኝነት
+ የGoogle Play አገልግሎቶች ስህተት
+ %1$s በGoogle Play አገልግሎቶች ላይ ችግሮች እያጋጠሙት ነው። እባክዎ እንደገና ይሞክሩ።
+ %1$s ያለGoogle Play አገልግሎቶች አይሄድም፣ እነዚህም በመሣሪያዎ አይደገፉም።
+ ያዘምኑ
+ Google Play አገልግሎቶችን ካላዘመኑ በስተቀር ድረስ %1$s አይሰራም።
+ Google Play አገልግሎቶችን ያዘምኑ
+ %1$s ያለ Google Play አገልግሎቶች አይሰራም፣ እነሱ ደግሞ በአሁኑ ጊዜ በመዘመን ላይ ናቸው።
+ አዲስ የGoogle Play አገልግሎቶች ስሪት ያስፈልጋል። በቅርቡ እራሱን ያዘምናል።
+ ስልክ ላይ ክፈት
+ ግባ
+ በGoogle ይግቡ
+ "አገናኝ ወደ ቅንጥብ ሰሌዳ ተቀድቷል"
+ "አገናኝ ቅዳ"
+ "በአሳሽ ውስጥ ክፈት"
+ "አገናኝ አጋራ"
+ "ፍለጋ"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ar/values-ar.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ar/values-ar.xml
new file mode 100644
index 0000000..146ef39
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ar/values-ar.xml
@@ -0,0 +1,61 @@
+
+
+ "التوجه إلى المنزل"
+ "التنقل إلى أعلى"
+ "خيارات أكثر"
+ "تم"
+ "عرض الكل"
+ "اختيار تطبيق"
+ "إيقاف"
+ "مفعّلة"
+ "Alt+"
+ "Ctrl+"
+ "حذف"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "فضاء"
+ "Sym+"
+ "القائمة+"
+ "بحث…"
+ "محو طلب البحث"
+ "طلب بحث"
+ "البحث"
+ "إرسال طلب البحث"
+ "بحث صوتي"
+ "مشاركة مع"
+ "مشاركة مع %s"
+ "تصغير"
+ "ردّ"
+ "فيديو"
+ "رفض"
+ "قطع الاتصال"
+ "مكالمة واردة"
+ "مكالمة جارية"
+ "يتم فحص المكالمة الواردة"
+ تفعيل
+ لن يعمل %1$s ما لم يتم تفعيل خدمات Google Play.
+ تفعيل خدمات Google Play
+ تثبيت
+ لن يتم تشغيل %1$s بدون خدمات Google Play، والتي لا تتوفر على جهازك.
+ الحصول على خدمات Google Play
+ مدى توفّر خدمات Google Play
+ خطأ في خدمات Google Play
+ لدى %1$s مشكلة في خدمات Google Play. يُرجى إعادة المحاولة.
+ لن يتم تشغيل %1$s بدون خدمات Google Play التي لا يوفرها جهازك.
+ تحديث
+ لن يتم تشغيل %1$s ما لم يتم تحديث خدمات Google Play.
+ تحديث خدمات Google Play
+ لن يتم تشغيل %1$s بدون خدمات Google Play، والتي يتم تحديثها حاليًا.
+ يجب توفر إصدار جديد من خدمات Google Play. سيتم تحديثها تلقائيًا قريبًا.
+ فتح على الهاتف
+ تسجل الدخول
+ تسجيل الدخول عبر Google
+ "تم نسخ الرابط إلى الحافظة."
+ "نسخ الرابط"
+ "فتح في المتصفح"
+ "مشاركة الرابط"
+ "البحث"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-as/values-as.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-as/values-as.xml
new file mode 100644
index 0000000..dd7eeac
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-as/values-as.xml
@@ -0,0 +1,61 @@
+
+
+ "গৃহ পৃষ্ঠালৈ যাওক"
+ "ওপৰলৈ যাওক"
+ "অধিক বিকল্প"
+ "সম্পন্ন হ’ল"
+ "আটাইবোৰ চাওক"
+ "কোনো এপ্ বাছনি কৰক"
+ "অফ"
+ "অন"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "সন্ধান কৰক…"
+ "সন্ধান কৰা প্ৰশ্ন মচক"
+ "সন্ধান কৰা প্ৰশ্ন"
+ "সন্ধান কৰক"
+ "প্ৰশ্ন দাখিল কৰক"
+ "কণ্ঠধ্বনিৰ দ্বাৰা সন্ধান"
+ "ইয়াৰ জৰিয়তে শ্বেয়াৰ কৰক"
+ "%sৰ জৰিয়তে শ্বেয়াৰ কৰক"
+ "সংকোচন কৰক"
+ "উত্তৰ দিয়ক"
+ "ভিডিঅ’"
+ "প্ৰত্যাখ্যান কৰক"
+ "কল কাটি দিয়ক"
+ "অন্তৰ্গামী কল"
+ "চলি থকা কল"
+ "এটা অন্তৰ্গামী কলৰ পৰীক্ষা কৰি থকা হৈছে"
+ সক্ষম কৰক
+ আপুনি Google Play সেৱাবোৰ সক্ষম নকৰালৈকে %1$sএ কাম নকৰিব।
+ Google প্লে সেৱাসক্ষম কৰক
+ ইনষ্টল কৰক
+ %1$s Google প্লে সেৱাৰ অবিহনে নচলে, যিটো আপোনাৰ ডিভাইচত নাই।
+ Google প্লে সেৱালাভ কৰক
+ Google প্লে সেৱাসমূহৰ উপলব্ধতা
+ Google Playৰ সেৱা সম্পৰ্কীয় আসোঁৱাহ
+ Google প্লে সেৱাত %1$s ত সমস্যা হৈ আছে। আকৌ চেষ্টা কৰক।
+ %1$s Google প্লে সেৱাৰ অবিহনে নচলে, যিবোৰ আপোনাৰ ডিভাইচত চলিব নোৱাৰে।
+ আপডে’ট কৰক
+ আপুনি Google Play সেৱাবোৰ আপডে’ট নকৰালৈকে %1$s নচলিব।
+ Google Play সেৱা আপডে’ট কৰক
+ বৰ্তমান আপডে’ট হৈ থকা Google Play সেৱাসমূহৰ অবিহনে %1$s নচলিব৷
+ Google Play সেৱাসমূহৰ নতুন সংস্কৰণৰ প্ৰয়োজন৷ এইটো শীঘ্ৰেই নিজে-নিজে আপডে’ট হ’ব৷
+ ফ\'নত খোলক
+ ছাইন ইন কৰক
+ Googleৰ জৰিয়তে ছাইন ইন কৰক
+ "লিংক ক্লিপব’ৰ্ডত প্ৰতিলিপি কৰা হ’ল"
+ "লিংক প্ৰতিলিপি কৰক"
+ "ব্ৰাউজাৰত খোলক"
+ "লিংক শ্বেয়াৰ কৰক"
+ "সন্ধান"
+ "৯৯৯+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-az/values-az.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-az/values-az.xml
new file mode 100644
index 0000000..84d87bd
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-az/values-az.xml
@@ -0,0 +1,61 @@
+
+
+ "Əsas səhifəyə keçin"
+ "Yuxarı keçin"
+ "Digər seçimlər"
+ "Hazırdır"
+ "Hamısına baxın"
+ "Tətbiq seçin"
+ "DEAKTİV"
+ "AKTİV"
+ "Alt+"
+ "Ctrl+"
+ "silin"
+ "daxil olun"
+ "Funksiya+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menyu+"
+ "Axtarış..."
+ "Sorğunu silin"
+ "Axtarış sorğusu"
+ "Axtarın"
+ "Sorğunu göndərin"
+ "Səsli axtarış"
+ "Paylaşın"
+ "%s ilə paylaşın"
+ "Yığcamlaşdırın"
+ "Cavab verin"
+ "Video"
+ "İmtina edin"
+ "Dəstəyi asın"
+ "Gələn zəng"
+ "Davam edən zəng"
+ "Gələn zəng göstərilir"
+ Aktiv edin
+ %1$s Google Play xidmətlərini aktiv edənə kimi işləməyəcək.
+ Google Play xidmətlərini aktiv edin
+ Quraşdırın
+ %1$s cihazınızda mövcud olmayan Google Play xidmətləri olmadan çalışmayacaq.
+ Google Play xidmətlərini əldə edin
+ Google Play xidmətlərinin əlçatanlığı
+ Google Play xidmətləri xətası
+ %1$s tətbiqi ilə Google Play xidmətləri arasında problem var. Daha sonra yenidən cəhd edin.
+ Cihazınız tərəfindən dəstəklənməyən Google Play xidmətləri olmadan %1$s tətbiqi işləməyəcək.
+ Güncəlləyin
+ %1$s Google Play xidmətləri yeniləmə halda çalışmaz.
+ Google Play xidmətlərini güncəlləşdirin
+ %1$s hal-hazırda güncəllənən Google Play xidmətləri olmadan çalışmayacaq.
+ Google Play xidmətlərinin yeni versiyası lazımdır. Qısa müddətə özünü yeniləyəcək.
+ Telefonda açın
+ Daxil olun
+ Google ilə daxil olun
+ "Link buferə kopyalandı"
+ "Linki kopyalayın"
+ "Brauzerdə açın"
+ "Linki paylaşın"
+ "Axtarın"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-b+sr+Latn/values-b+sr+Latn.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-b+sr+Latn/values-b+sr+Latn.xml
new file mode 100644
index 0000000..9fb6124
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-b+sr+Latn/values-b+sr+Latn.xml
@@ -0,0 +1,61 @@
+
+
+ "Idite na početnu"
+ "Idite nagore"
+ "Još opcija"
+ "Gotovo"
+ "Prikaži sve"
+ "Izaberite aplikaciju"
+ "ISKLJUČENO"
+ "UKLJUČENO"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "taster za razmak"
+ "Sym+"
+ "Menu+"
+ "Pretražite…"
+ "Obrišite upit"
+ "Pretražite upit"
+ "Pretražite"
+ "Pošaljite upit"
+ "Glasovna pretraga"
+ "Delite pomoću"
+ "Delite pomoću aplikacije %s"
+ "Skupi"
+ "Odgovori"
+ "Video"
+ "Odbij"
+ "Prekini vezu"
+ "Dolazni poziv"
+ "Poziv je u toku"
+ "Proverava se dolazni poziv"
+ Omogući
+ %1$s neće funkcionisati ako ne omogućite Google Play usluge.
+ Omogućite Google Play usluge
+ Instaliraj
+ %1$s ne može da se pokrene bez Google Play usluga, koje nisu instalirane na uređaju.
+ Preuzmite Google Play usluge
+ Dostupnost Google Play usluga
+ Greška Google Play usluga
+ %1$s ima problema sa Google Play uslugama. Probajte ponovo.
+ %1$s ne može da se pokrene bez Google Play usluga, koje uređaj ne podržava.
+ Ažuriraj
+ %1$s ne može da se pokrene ako ne ažurirate Google Play usluge.
+ Ažurirajte Google Play usluge
+ %1$s ne može da se pokrene bez Google Play usluga, koje se trenutno ažuriraju.
+ Potrebna je nova verzija Google Play usluga. Uskoro će se ažurirati.
+ Otvori na telefonu
+ Prijavi me
+ Prijavi me na Google
+ "Link je kopiran u privremenu memoriju"
+ "Kopiraj link"
+ "Otvori u pregledaču"
+ "Deli link"
+ "Pretražite"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-be/values-be.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-be/values-be.xml
new file mode 100644
index 0000000..522cd65
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-be/values-be.xml
@@ -0,0 +1,61 @@
+
+
+ "Перайсці на галоўную старонку"
+ "Перайсці ўверх"
+ "Дадатковыя параметры"
+ "Гатова"
+ "Паказаць усе"
+ "Выберыце праграму"
+ "ВЫКЛ."
+ "УКЛ."
+ "Alt +"
+ "Ctrl +"
+ "Delete"
+ "Enter"
+ "Fn +"
+ "Meta +"
+ "Shift +"
+ "Прабел"
+ "Sym +"
+ "Меню +"
+ "Пошук…"
+ "Выдаліць запыт"
+ "Пошукавы запыт"
+ "Пошук"
+ "Адправіць запыт"
+ "Галасавы пошук"
+ "Абагуліць праз"
+ "Абагуліць праз праграму \"%s\""
+ "Згарнуць"
+ "Адказаць"
+ "Відэа"
+ "Адхіліць"
+ "Завяршыць"
+ "Уваходны выклік"
+ "Бягучы выклік"
+ "Фільтраванне ўваходнага выкліку"
+ Уключыць
+ %1$s не будзе працаваць, пакуль вы не ўключыце службы Google Play.
+ Уключыць службы Google Play
+ Усталяваць
+ %1$s не будзе працаваць без службаў Google Play, якія адсутнічаюць на вашай прыладзе.
+ Атрымаць службы Google Play
+ Даступнасць сэрвісаў Google Play
+ Памылка службаў Google Play
+ У праграмы %1$s узніклі праблемы са службамі Google Play. Паўтарыце спробу.
+ %1$s не будзе працаваць без службаў Google Play, якія не падтрымліваюцца вашай прыладай.
+ Абнавіць
+ %1$s не будзе працаваць, пакуль вы не абновіце службы Google Play.
+ Абнаўленне службаў Google Play
+ %1$s не будзе працаваць без службаў Google Play, якія ў цяперашні час абнаўляюцца.
+ Патрабуецца новая версія служб Google Play. Яна абновіцца аўтаматычна ў бліжэйшы час.
+ Адкрыць на тэлефоне
+ Увайсцi
+ Увайсці праз Google
+ "Спасылка скапіравана ў буфер абмену"
+ "Скапіраваць спасылку"
+ "Адкрыць у браўзеры"
+ "Абагуліць спасылку"
+ "Пошук"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bg/values-bg.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bg/values-bg.xml
new file mode 100644
index 0000000..c00e310
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bg/values-bg.xml
@@ -0,0 +1,61 @@
+
+
+ "Навигиране към началния екран"
+ "Навигиране нагоре"
+ "Още опции"
+ "Готово"
+ "Преглед на всички"
+ "Изберете приложение"
+ "ИЗКЛ."
+ "ВКЛ."
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "клавиша за интервал"
+ "Sym+"
+ "Menu+"
+ "Търсете…"
+ "Изчистване на заявката"
+ "Заявка за търсене"
+ "Търсене"
+ "Изпращане на заявката"
+ "Гласово търсене"
+ "Споделяне със:"
+ "Споделяне със: %s"
+ "Свиване"
+ "Отговор"
+ "Видеообаждане"
+ "Отхвърляне"
+ "Затваряне"
+ "Входящо обаждане"
+ "Текущо обаждане"
+ "Преглежда се входящо обаждане"
+ Активиране
+ %1$s няма да работи, освен ако не активирате услугите за Google Play.
+ Активиране на услугите за Google Play
+ Инсталиране
+ %1$s няма да се изпълнява, тъй като услугите за Google Play не са инсталирани на устройството ви.
+ Изтегляне на услугите за Google Play
+ Наличност на услугите за Google Play
+ Грешка в услугите за Google Play
+ %1$s има проблеми с услугите за Google Play. Моля, опитайте отново.
+ %1$s няма да се изпълнява, тъй като услугите за Google Play не се поддържат от устройството ви.
+ Актуализиране
+ %1$s няма да се изпълнява, освен ако не актуализирате услугите за Google Play.
+ Актуализиране на услугите за Google Play
+ %1$s няма да се изпълнява без услугите за Google Play. Понастоящем те се актуализират.
+ Необходима е нова версия на услугите за Google Play. Скоро тя ще се актуализира автоматично.
+ Отваряне на телефона
+ Вход
+ Вход с Google
+ "Връзката е копирана в буферната памет"
+ "Копиране на връзката"
+ "Отваряне в браузър"
+ "Споделяне на връзката"
+ "Търсене"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bn/values-bn.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bn/values-bn.xml
new file mode 100644
index 0000000..746e283
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bn/values-bn.xml
@@ -0,0 +1,61 @@
+
+
+ "হোমে নেভিগেট করুন"
+ "উপরে নেভিগেট করুন"
+ "আরও বিকল্প"
+ "হয়ে গেছে"
+ "সবগুলি দেখুন"
+ "একটি অ্যাপ বেছে নিন"
+ "বন্ধ আছে"
+ "চালু করুন"
+ "Alt+"
+ "Ctrl+"
+ "মুছুন"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "সার্চ করুন…"
+ "কোয়েরি মুছে ফেলুন"
+ "সার্চ কোয়েরি"
+ "সার্চ করুন"
+ "কোয়েরি জমা দিন"
+ "ভয়েস সার্চ করুন"
+ "শেয়ার করুন"
+ "%s-এর সাথে শেয়ার করুন"
+ "সঙ্কুচিত করুন"
+ "উত্তর দিন"
+ "ভিডিও"
+ "বাতিল করুন"
+ "কল কেটে দিন"
+ "ইনকামিং কল"
+ "চালু থাকা কল"
+ "ইনকামিং কল স্ক্রিনিং করা হচ্ছে"
+ সক্ষম করুন
+ আপনি Google Play পরিষেবা সক্ষম না করা পর্যন্ত %1$s কাজ করবে না।
+ Google Play পরিষেবা সক্ষম করুন
+ ইনস্টল করুন
+ Google Play পরিষেবা ছাড়া %1$s চলবে না, যা আপনার ডিভাইসে অনুপস্থিত।
+ Google Play পরিষেবা পান
+ Google Play পরিষেবার উপলভ্যতা
+ Google Play পরিষেবার ত্রুটি
+ Google Play পরিষেবাগুলির সাথে %1$s এর সমস্যা হচ্ছে৷ অনুগ্রহ করে আবার চেষ্টা করুন৷
+ Google Play পরিষেবা ছাড়া %1$s চলবে না, যেটি আপনার ডিভাইসে সমর্থিত নয়৷
+ আপডেট করুন
+ আপনি Google Play পরিষেবা আপডেট না করা পর্যন্ত %1$s চলবে না।
+ Google Play পরিষেবা আপডেট করুন
+ Google Play পরিষেবা ছাড়া %1$s চলবে না যা বর্তমানে আপডেট হচ্ছে।
+ Google Play পরিষেবার নতুন ভার্সন প্রয়োজন৷ খুব শীঘ্রই এটা নিজেই আপডেট হবে৷
+ ফোনে খুলুন
+ সাইন-ইন করুন
+ Google এর মাধ্যমে সাইন-ইন করুন
+ "লিঙ্ক ক্লিপবোর্ডে কপি করা হয়েছে"
+ "লিঙ্ক কপি করুন"
+ "ব্রাউজারে খুলুন"
+ "লিঙ্ক শেয়ার করুন"
+ "সার্চ করুন"
+ "৯৯৯+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bs/values-bs.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bs/values-bs.xml
new file mode 100644
index 0000000..e802d06
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-bs/values-bs.xml
@@ -0,0 +1,61 @@
+
+
+ "Vratite se na početnu stranicu"
+ "Idi gore"
+ "Više opcija"
+ "Gotovo"
+ "Prikaži sve"
+ "Odaberite aplikaciju"
+ "ISKLJUČENO"
+ "UKLJUČENO"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "razmak"
+ "Sym+"
+ "Menu+"
+ "Pretražite..."
+ "Obriši upit"
+ "Pretraži upit"
+ "Pretraživanje"
+ "Pošalji upit"
+ "Glasovno pretraživanje"
+ "Dijeli sa"
+ "Dijeli putem aplikacije %s"
+ "Suzi"
+ "Odgovori"
+ "Video"
+ "Odbaci"
+ "Prekini vezu"
+ "Dolazni poziv"
+ "Poziv u toku"
+ "Filtriranje dolaznog poziva"
+ Omogući
+ Aplikacija %1$s neće raditi ako ne omogućite Google Play usluge.
+ Omogućite Google Play usluge
+ Instaliraj
+ Aplikacija %1$s neće raditi bez Google Play usluga, kojih na vašem uređaju nema.
+ Nabavite Google Play usluge
+ Dostupnost Google Play usluga
+ Greška Google Play usluge
+ Aplikacija %1$s ima problema s Google Play uslugama. Pokušajte ponovo.
+ Aplikacija %1$s neće raditi bez Google Play usluga, koje vaš uređaj ne podržava.
+ Ažuriraj
+ Aplikacija %1$s neće raditi ako ne ažurirate Google Play usluge.
+ Ažuriranje Google Play usluga
+ Aplikacija %1$s neće raditi bez Google Play usluga, koje se trenutno ažuriraju.
+ Potrebna je nova verzija Google Play usluga. Ubrzo će se samo ažurirati.
+ Otvori na telefonu
+ Prijava
+ Prijavi se pomoću Googlea
+ "Link je kopiran u međumemoriju"
+ "Kopiraj link"
+ "Otvori u pregledniku"
+ "Dijeli link"
+ "Pretražite"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ca/values-ca.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ca/values-ca.xml
new file mode 100644
index 0000000..775ea27
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ca/values-ca.xml
@@ -0,0 +1,61 @@
+
+
+ "Navega fins a la pàgina d\'inici"
+ "Navega cap amunt"
+ "Més opcions"
+ "Fet"
+ "Mostra-ho tot"
+ "Selecciona una aplicació"
+ "DESACTIVA"
+ "ACTIVA"
+ "Alt+"
+ "Ctrl+"
+ "Supr"
+ "Retorn"
+ "Funció+"
+ "Meta+"
+ "Maj+"
+ "Espai"
+ "Sym+"
+ "Menú+"
+ "Cerca…"
+ "Esborra la consulta"
+ "Consulta de cerca"
+ "Cerca"
+ "Envia la consulta"
+ "Cerca per veu"
+ "Comparteix amb"
+ "Comparteix amb %s"
+ "Replega"
+ "Respon"
+ "Vídeo"
+ "Rebutja"
+ "Penja"
+ "Trucada entrant"
+ "Trucada en curs"
+ "S\'està filtrant una trucada entrant"
+ Activa
+ %1$s no funcionarà si no actives Serveis de Google Play.
+ Activa Serveis de Google Play
+ Instal·la
+ %1$s no s\'executarà si Serveis de Google Play no està instal·lat al dispositiu.
+ Obtén Serveis de Google Play
+ Disponibilitat de serveis de Google Play
+ Error de Serveis de Google Play
+ %1$s té problemes amb Serveis de Google Play. Torna-ho a provar.
+ %1$s no es pot executar sense Serveis de Google Play, que no és compatible amb el teu dispositiu.
+ Actualitza
+ %1$s no s\'executarà si no actualitzes Serveis de Google Play.
+ Actualitza Serveis de Google Play
+ %1$s no s\'executarà sense Serveis de Google Play, que s\'està actualitzant en aquest moment.
+ Cal una nova versió de Serveis de Google Play. S\'actualitzarà automàticament aviat.
+ Obre al telèfon
+ Inicia sessió
+ Inicia la sessió amb Google
+ "S\'ha copiat l\'enllaç al porta-retalls"
+ "Copia l\'enllaç"
+ "Obre al navegador"
+ "Comparteix l\'enllaç"
+ "Cerca"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-cs/values-cs.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-cs/values-cs.xml
new file mode 100644
index 0000000..acdee33
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-cs/values-cs.xml
@@ -0,0 +1,61 @@
+
+
+ "Přejít na plochu"
+ "Přejít nahoru"
+ "Další možnosti"
+ "Hotovo"
+ "Zobrazit vše"
+ "Vybrat aplikaci"
+ "VYP"
+ "ZAP"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Fn+"
+ "Meta+"
+ "Shift+"
+ "mezerník"
+ "Sym+"
+ "Menu+"
+ "Vyhledat…"
+ "Smazat dotaz"
+ "Dotaz pro vyhledávání"
+ "Hledat"
+ "Odeslat dotaz"
+ "Hlasové vyhledávání"
+ "Sdílet s"
+ "Sdílet s aplikací %s"
+ "Sbalit"
+ "Přijmout"
+ "Video"
+ "Odmítnout"
+ "Zavěsit"
+ "Příchozí hovor"
+ "Probíhající hovor"
+ "Prověřování příchozího hovoru"
+ Povolit
+ Ke spuštění aplikace %1$s je třeba aktivovat služby Google Play.
+ Aktivace služeb Google Play
+ Instalovat
+ Ke spuštění aplikace %1$s jsou potřeba služby Google Play, které v zařízení nemáte.
+ Instalace služeb Google Play
+ Dostupnost služeb Google Play
+ Chyba služeb Google Play
+ Aplikace %1$s má potíže se službami Google Play. Zkuste to prosím znovu.
+ Ke spuštění aplikace %1$s jsou potřeba služby Google Play, které v tomto zařízení nejsou podporovány.
+ Aktualizovat
+ Ke spuštění aplikace %1$s je třeba aktualizovat služby Google Play.
+ Aktualizace služeb Google Play
+ Ke spuštění aplikace %1$s jsou potřeba služby Google Play, které jsou právě aktualizovány.
+ Je vyžadována nová verze služeb Google Play. Nová verze se brzy sama nainstaluje.
+ Otevřít v telefonu
+ Přihlásit se
+ Přihlásit se k účtu Google
+ "Odkaz zkopírován do schránky"
+ "Kopírovat odkaz"
+ "Otevřít v prohlížeči"
+ "Sdílet odkaz"
+ "Hledat"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-da/values-da.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-da/values-da.xml
new file mode 100644
index 0000000..991f68d
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-da/values-da.xml
@@ -0,0 +1,61 @@
+
+
+ "Find hjem"
+ "Gå op"
+ "Flere valgmuligheder"
+ "Udfør"
+ "Se alle"
+ "Vælg en app"
+ "FRA"
+ "TIL"
+ "Alt+"
+ "Ctrl+"
+ "slet"
+ "enter"
+ "Fn+"
+ "Meta+"
+ "Shift+"
+ "mellemrum"
+ "Sym+"
+ "Menu+"
+ "Søg…"
+ "Ryd forespørgsel"
+ "Søgeforespørgsel"
+ "Søg"
+ "Indsend forespørgsel"
+ "Talesøgning"
+ "Del med"
+ "Del med %s"
+ "Skjul"
+ "Besvar"
+ "Video"
+ "Afvis"
+ "Læg på"
+ "Indgående opkald"
+ "Igangværende opkald"
+ "Et indgående opkald screenes"
+ Aktivér
+ Du skal aktivere Google Play-tjenester, for at %1$s kan fungere.
+ Aktivér Google Play-tjenester
+ Installer
+ Du skal installere Google Play-tjenester, før %1$s kan køre på din enhed.
+ Hent Google Play-tjenester
+ Google Play-tjenesters tilgængelighed
+ Fejl i Google Play-tjenester
+ %1$s har problemer med Google Play-tjenester. Prøv igen.
+ %1$s fungerer ikke uden Google Play-tjenester, som ikke understøttes på din enhed.
+ Opdater
+ %1$s kan ikke køre, medmindre du opdaterer Google Play-tjenester.
+ Opdater Google Play-tjenester
+ %1$s kan ikke køre uden Google Play-tjenester, som i øjeblikket opdateres.
+ Du skal bruge en ny version af Google Play-tjenester. Opdateringen gennemføres automatisk om et øjeblik.
+ Åbn på telefonen
+ Log ind
+ Log ind med Google
+ "Linket er kopieret til udklipsholderen"
+ "Kopiér link"
+ "Åbn i browser"
+ "Del link"
+ "Søg"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-de/values-de.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-de/values-de.xml
new file mode 100644
index 0000000..463c44b
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-de/values-de.xml
@@ -0,0 +1,61 @@
+
+
+ "Zur Startseite"
+ "Nach oben"
+ "Weitere Optionen"
+ "Fertig"
+ "Alle anzeigen"
+ "App auswählen"
+ "AUS"
+ "AN"
+ "Alt +"
+ "Strg +"
+ "Löschen"
+ "Eingabetaste"
+ "Funktionstaste +"
+ "Meta-Taste +"
+ "Umschalttaste +"
+ "Leertaste"
+ "Sym-Taste +"
+ "Menütaste +"
+ "Suchen…"
+ "Suchanfrage löschen"
+ "Suchanfrage"
+ "Suche"
+ "Anfrage senden"
+ "Sprachsuche"
+ "Teilen mit"
+ "Mit %s teilen"
+ "Minimieren"
+ "Annehmen"
+ "Video"
+ "Ablehnen"
+ "Auflegen"
+ "Eingehender Anruf"
+ "Aktueller Anruf"
+ "Filter für eingehenden Anruf"
+ Aktivieren
+ %1$s funktioniert erst nach der Aktivierung der Google Play-Dienste.
+ Google Play-Dienste aktivieren
+ Installieren
+ Zur Nutzung von %1$s sind die Google Play-Dienste erforderlich, die auf deinem Gerät nicht installiert sind.
+ Google Play-Dienste installieren
+ Verfügbarkeit von Google Play-Diensten
+ Fehler bei Zugriff auf Google Play-Dienste
+ %1$s hat Probleme mit Google Play-Diensten. Bitte versuche es noch einmal.
+ Zur Nutzung von %1$s sind Google Play-Dienste erforderlich, die auf deinem Gerät nicht unterstützt werden.
+ Aktualisieren
+ %1$s wird nur ausgeführt, wenn du die Google Play-Dienste aktualisierst.
+ Google Play-Dienste aktualisieren
+ Zur Nutzung von %1$s sind Google Play-Dienste erforderlich, die gerade aktualisiert werden.
+ Eine neue Version der Google Play-Dienste wird benötigt. Diese wird in Kürze automatisch aktualisiert.
+ Auf Smartphone öffnen
+ Anmelden
+ Über Google anmelden
+ "Link in Zwischenablage kopiert"
+ "Link kopieren"
+ "Im Browser öffnen"
+ "Link teilen"
+ "Suche"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-el/values-el.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-el/values-el.xml
new file mode 100644
index 0000000..3282c7b
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-el/values-el.xml
@@ -0,0 +1,61 @@
+
+
+ "Πλοήγηση στην αρχική σελίδα"
+ "Πλοήγηση προς τα επάνω"
+ "Περισσότερες επιλογές"
+ "Τέλος"
+ "Εμφάνιση όλων"
+ "Επιλέξτε μια εφαρμογή"
+ "ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ"
+ "ΕΝΕΡΓΟΠΟΙΗΣΗ"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "διάστημα"
+ "Sym+"
+ "Menu+"
+ "Αναζήτηση…"
+ "Διαγραφή ερωτήματος"
+ "Ερώτημα αναζήτησης"
+ "Αναζήτηση"
+ "Υποβολή ερωτήματος"
+ "Φωνητική αναζήτηση"
+ "Κοινοποίηση σε"
+ "Κοινοποίηση στην εφαρμογή %s"
+ "Σύμπτυξη"
+ "Απάντηση"
+ "Βίντεο"
+ "Απόρριψη"
+ "Τερματισμός"
+ "Εισερχόμενη κλήση"
+ "Κλήση σε εξέλιξη"
+ "Διαλογή εισερχόμενης κλήσης"
+ Ενεργοποίηση
+ Η εφαρμογή %1$s δεν θα λειτουργήσει εάν δεν έχετε ενεργοποιήσει τις υπηρεσίες Google Play.
+ Ενεργοποίηση υπηρεσιών Google Play
+ Εγκατάσταση
+ Η εφαρμογή %1$s δεν μπορεί να εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες λείπουν από τη συσκευή σας.
+ Λήψη υπηρεσιών Google Play
+ Διαθεσιμότητα υπηρεσιών Google Play
+ Σφάλμα Υπηρεσιών Google Play
+ Η εφαρμογή %1$s αντιμετωπίζει κάποιο πρόβλημα με τις υπηρεσίες Google Play. Προσπαθήστε ξανά.
+ Η εφαρμογή %1$s δεν θα εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες δεν υποστηρίζονται από τη συσκευή σας.
+ Ενημέρωση
+ Η εφαρμογή %1$s θα εκτελεστεί αφού ενημερώσετε τις Υπηρεσίες Google Play.
+ Ενημέρωση υπηρεσιών Google Play
+ Η εφαρμογή %1$s δεν θα εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες ενημερώνονται αυτήν τη στιγμή.
+ Απαιτείται νέα έκδοση των υπηρεσιών Google Play. Θα ενημερωθεί σύντομα.
+ Άνοιγμα σε τηλέφωνο
+ Σύνδεση
+ Συνδεθείτε με το Google
+ "Ο σύνδεσμος αντιγράφηκε στο πρόχειρο"
+ "Αντιγραφή συνδέσμου"
+ "Άνοιγμα σε πρόγραμμα περιήγησης"
+ "Κοινοποίηση συνδέσμου"
+ "Αναζήτηση"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rAU/values-en-rAU.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rAU/values-en-rAU.xml
new file mode 100644
index 0000000..c12fa8f
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rAU/values-en-rAU.xml
@@ -0,0 +1,43 @@
+
+
+ "Navigate home"
+ "Navigate up"
+ "More options"
+ "Done"
+ "See all"
+ "Choose an app"
+ "OFF"
+ "ON"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "Search…"
+ "Clear query"
+ "Search query"
+ "Search"
+ "Submit query"
+ "Voice search"
+ "Share with"
+ "Share with %s"
+ "Collapse"
+ "Answer"
+ "Video"
+ "Decline"
+ "Hang up"
+ "Incoming call"
+ "On-going call"
+ "Screening an incoming call"
+ "Link copied to clipboard"
+ "Copy link"
+ "Open in browser"
+ "Share link"
+ "Search"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rCA/values-en-rCA.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rCA/values-en-rCA.xml
new file mode 100644
index 0000000..ce89881
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rCA/values-en-rCA.xml
@@ -0,0 +1,43 @@
+
+
+ "Navigate home"
+ "Navigate up"
+ "More options"
+ "Done"
+ "See all"
+ "Choose an app"
+ "OFF"
+ "ON"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "Search…"
+ "Clear query"
+ "Search query"
+ "Search"
+ "Submit query"
+ "Voice search"
+ "Share with"
+ "Share with %s"
+ "Collapse"
+ "Answer"
+ "Video"
+ "Decline"
+ "Hang Up"
+ "Incoming call"
+ "Ongoing call"
+ "Screening an incoming call"
+ "Link copied to clipboard"
+ "Copy link"
+ "Open in browser"
+ "Share link"
+ "Search"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rGB/values-en-rGB.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rGB/values-en-rGB.xml
new file mode 100644
index 0000000..a0bd111
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rGB/values-en-rGB.xml
@@ -0,0 +1,61 @@
+
+
+ "Navigate home"
+ "Navigate up"
+ "More options"
+ "Done"
+ "See all"
+ "Choose an app"
+ "OFF"
+ "ON"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "Search…"
+ "Clear query"
+ "Search query"
+ "Search"
+ "Submit query"
+ "Voice search"
+ "Share with"
+ "Share with %s"
+ "Collapse"
+ "Answer"
+ "Video"
+ "Decline"
+ "Hang up"
+ "Incoming call"
+ "On-going call"
+ "Screening an incoming call"
+ Enable
+ %1$s won\'t work unless you enable Google Play services.
+ Enable Google Play services
+ Install
+ %1$s won\'t run without Google Play services, which are missing from your device.
+ Get Google Play services
+ Google Play services availability
+ Google Play services error
+ %1$s is having trouble with Google Play services. Please try again.
+ %1$s won\'t run without Google Play services, which are not supported by your device.
+ Update
+ %1$s won\'t run unless you update Google Play services.
+ Update Google Play services
+ %1$s won\'t run without Google Play services, which are currently updating.
+ New version of Google Play services needed. It will update itself shortly.
+ Open on phone
+ Sign In
+ Sign in with Google
+ "Link copied to clipboard"
+ "Copy link"
+ "Open in browser"
+ "Share link"
+ "Search"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rIN/values-en-rIN.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rIN/values-en-rIN.xml
new file mode 100644
index 0000000..c12fa8f
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rIN/values-en-rIN.xml
@@ -0,0 +1,43 @@
+
+
+ "Navigate home"
+ "Navigate up"
+ "More options"
+ "Done"
+ "See all"
+ "Choose an app"
+ "OFF"
+ "ON"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "Search…"
+ "Clear query"
+ "Search query"
+ "Search"
+ "Submit query"
+ "Voice search"
+ "Share with"
+ "Share with %s"
+ "Collapse"
+ "Answer"
+ "Video"
+ "Decline"
+ "Hang up"
+ "Incoming call"
+ "On-going call"
+ "Screening an incoming call"
+ "Link copied to clipboard"
+ "Copy link"
+ "Open in browser"
+ "Share link"
+ "Search"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rXC/values-en-rXC.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rXC/values-en-rXC.xml
new file mode 100644
index 0000000..af5d9ca
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-en-rXC/values-en-rXC.xml
@@ -0,0 +1,43 @@
+
+
+ "Navigate home"
+ "Navigate up"
+ "More options"
+ "Done"
+ "See all"
+ "Choose an app"
+ "OFF"
+ "ON"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "Search…"
+ "Clear query"
+ "Search query"
+ "Search"
+ "Submit query"
+ "Voice search"
+ "Share with"
+ "Share with %s"
+ "Collapse"
+ "Answer"
+ "Video"
+ "Decline"
+ "Hang Up"
+ "Incoming call"
+ "Ongoing call"
+ "Screening an incoming call"
+ "Link copied to clipboard"
+ "Copy link"
+ "Open in browser"
+ "Share link"
+ "Search"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-es-rUS/values-es-rUS.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-es-rUS/values-es-rUS.xml
new file mode 100644
index 0000000..3f35de8
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-es-rUS/values-es-rUS.xml
@@ -0,0 +1,61 @@
+
+
+ "Navegar a la página principal"
+ "Navegar hacia arriba"
+ "Más opciones"
+ "Listo"
+ "Ver todas"
+ "Elegir una app"
+ "DESACTIVAR"
+ "ACTIVAR"
+ "Alt+"
+ "Ctrl+"
+ "borrar"
+ "intro"
+ "Función+"
+ "Meta+"
+ "Mayúscula+"
+ "espacio"
+ "Sym+"
+ "Menú+"
+ "Buscar…"
+ "Borrar consulta"
+ "Búsqueda"
+ "Buscar"
+ "Enviar consulta"
+ "Búsqueda por voz"
+ "Compartir con"
+ "Compartir con %s"
+ "Contraer"
+ "Responder"
+ "Video"
+ "Rechazar"
+ "Colgar"
+ "Llamada entrante"
+ "Llamada en curso"
+ "Filtrando una llamada entrante"
+ Habilitar
+ %1$s no funcionará a menos que habilites los servicios de Google Play.
+ Habilitar servicios de Google Play
+ Instalar
+ %1$s no se ejecutará si los Servicios de Google Play no están instalados en tu dispositivo.
+ Obtener servicios de Google Play
+ Disp. de los Servicios de Google Play
+ Error de Google Play Services
+ %1$s tiene problemas con los servicios de Google Play. Vuelve a intentarlo.
+ %1$s no se ejecutará sin los servicios de Google Play, que no son compatibles con tu dispositivo.
+ Actualizar
+ %1$s no se ejecutará a menos que actualices los servicios de Google Play.
+ Actualizar servicios de Google Play
+ %1$s no se ejecutará sin los servicios de Google Play. La plataforma se está actualizando en este momento.
+ Se necesita una nueva versión de los servicios de Google Play. Se actualizarán automáticamente en breve.
+ Abrir en el teléfono
+ Acceder
+ Acceder con Google
+ "Se copió el vínculo al portapapeles"
+ "Copiar vínculo"
+ "Abrir en el navegador"
+ "Compartir vínculo"
+ "Buscar"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-es/values-es.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-es/values-es.xml
new file mode 100644
index 0000000..ec5331a
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-es/values-es.xml
@@ -0,0 +1,61 @@
+
+
+ "Ir a inicio"
+ "Desplazarse hacia arriba"
+ "Más opciones"
+ "Hecho"
+ "Ver todo"
+ "Seleccionar una aplicación"
+ "DESACTIVADO"
+ "ACTIVADO"
+ "Alt +"
+ "Ctrl +"
+ "Suprimir"
+ "Intro"
+ "Función +"
+ "Meta +"
+ "Mayús +"
+ "Espacio"
+ "Sym +"
+ "Menú +"
+ "Buscar…"
+ "Borrar consulta"
+ "Consulta de búsqueda"
+ "Buscar"
+ "Enviar consulta"
+ "Búsqueda por voz"
+ "Compartir con"
+ "Compartir con %s"
+ "Ocultar"
+ "Responder"
+ "Vídeo"
+ "Rechazar"
+ "Colgar"
+ "Llamada entrante"
+ "Llamada en curso"
+ "Filtrando una llamada entrante"
+ Habilitar
+ %1$s no funcionará hasta que no habilites Servicios de Google Play.
+ Habilita Servicios de Google Play
+ Instalar
+ %1$s no se ejecutará si los Servicios de Google Play no están instalados en tu dispositivo.
+ Descargar Servicios de Google Play
+ Disponibilidad Servicios de Google Play
+ Error de Servicios de Google Play
+ La aplicación %1$s tiene problemas con los Servicios de Google Play. Vuelve a intentarlo.
+ No es posible ejecutar la aplicación %1$s sin los Servicios de Google Play, que no son compatibles con tu dispositivo.
+ Actualizar
+ %1$s no funcionará hasta que no actualices Servicios de Google Play.
+ Actualiza Servicios de Google Play
+ %1$s no se ejecutará hasta que finalice la actualización en curso de Servicios de Google Play.
+ Se necesita una nueva versión de Servicios de Google Play. Se actualizará en breve.
+ Abrir en teléfono
+ Iniciar sesión
+ Iniciar sesión con Google
+ "Enlace copiado en el portapapeles"
+ "Copiar enlace"
+ "Abrir en el navegador"
+ "Compartir enlace"
+ "Buscar"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-et/values-et.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-et/values-et.xml
new file mode 100644
index 0000000..16872aa
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-et/values-et.xml
@@ -0,0 +1,61 @@
+
+
+ "Liigu avalehele"
+ "Liigu üles"
+ "Rohkem valikuid"
+ "Valmis"
+ "Kuva kõik"
+ "Valige rakendus"
+ "VÄLJAS"
+ "SEES"
+ "Alt +"
+ "Ctrl +"
+ "kustuta"
+ "sisestusklahv"
+ "Funktsiooniklahv +"
+ "Meta +"
+ "Tõstuklahv +"
+ "tühik"
+ "Sym +"
+ "Menüü +"
+ "Otsige …"
+ "Päringu tühistamine"
+ "Otsingupäring"
+ "Otsing"
+ "Päringu esitamine"
+ "Häälotsing"
+ "Jaga:"
+ "Jagamine rakendusega %s"
+ "Ahendamine"
+ "Vasta"
+ "Video"
+ "Keeldu"
+ "Lõpeta kõne"
+ "Sissetulev kõne"
+ "Käimasolev kõne"
+ "Sissetuleva kõne filtreerimine"
+ Luba
+ Rakendus %1$s töötab ainult siis, kui lubate Google Play teenused.
+ Google Play teenuste lubamine
+ Installi
+ Rakendus %1$s töötab ainult koos Google Play teenustega, mida teie seadmes pole.
+ Google Play teenuste hankimine
+ Google Play teenuste saadavalolek
+ Viga Google Play teenustes
+ Rakendusel %1$s on probleeme Google Play teenustega. Proovige uuesti.
+ Rakendus %1$s töötab ainult koos Google Play teenustega, mida teie seadmes ei toetata.
+ Värskenda
+ Rakenduse %1$s töötamiseks peate värskendama Google Play teenuseid.
+ Google Play teenuste värskendamine
+ Rakendus %1$s töötab ainult koos Google Play teenustega, mida praegu värskendatakse.
+ Vajalik on Google Play teenuste uus versioon. See värskendab end peagi.
+ Ava telefonis
+ Logi sisse
+ Logi sisse Google\'i kontoga
+ "Link kopeeriti lõikelauale"
+ "Kopeeri link"
+ "Ava brauseris"
+ "Jaga linki"
+ "Otsing"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-eu/values-eu.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-eu/values-eu.xml
new file mode 100644
index 0000000..ef5eee2
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-eu/values-eu.xml
@@ -0,0 +1,61 @@
+
+
+ "Joan orri nagusira"
+ "Joan gora"
+ "Aukera gehiago"
+ "Eginda"
+ "Ikusi guztiak"
+ "Aukeratu aplikazio bat"
+ "DESAKTIBATU"
+ "AKTIBATU"
+ "Alt +"
+ "Ktrl +"
+ "ezabatu"
+ "sartu"
+ "Funtzioa +"
+ "Meta +"
+ "Maius +"
+ "zuriunea"
+ "Sym +"
+ "Menua +"
+ "Bilatu…"
+ "Garbitu kontsulta"
+ "Bilaketa-kontsulta"
+ "Bilatu"
+ "Bidali kontsulta"
+ "Ahozko bilaketa"
+ "Partekatu honekin"
+ "Partekatu %s aplikazioarekin"
+ "Tolestu"
+ "Erantzun"
+ "Bideoa"
+ "Baztertu"
+ "Amaitu deia"
+ "Sarrerako deia"
+ "Deia abian da"
+ "Sarrerako dei bat bistaratzen"
+ Gaitu
+ %1$s aplikazioak ez du funtzionatuko Google Play Services gaitzen ez baduzu.
+ Gaitu Google Play Services
+ Instalatu
+ %1$s ez da exekutatuko Google Play Services gabe, baina ez dago halakorik gailuan.
+ Lortu Google Play Services
+ Google Play Services-en erabilgarritasuna
+ Google Play Services-en errorea
+ %1$s aplikazioak arazoak ditu Google Play Services-ekin. Saiatu berriro.
+ %1$s aplikazioa ezin da erabili Google Play Services gabe, baina zure gailua ez da harekin bateragarria.
+ Eguneratu
+ %1$s ez da exekutatuko Google Play Services eguneratzen ez baduzu.
+ Eguneratu Google Play Services
+ %1$s ez da exekutatuko Google Play Services gabe; zerbitzu hori eguneratzen ari da.
+ Google Play Services-en bertsio berria behar da. Berehala eguneratuko da automatikoki.
+ Ireki telefonoan
+ Hasi saioa
+ Hasi saioa Google-ko kontuarekin
+ "Arbelean kopiatu da esteka"
+ "Kopiatu esteka"
+ "Ireki arakatzailean"
+ "Partekatu esteka"
+ "Bilatu"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fa/values-fa.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fa/values-fa.xml
new file mode 100644
index 0000000..0896919
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fa/values-fa.xml
@@ -0,0 +1,61 @@
+
+
+ "پیمایش به صفحه اصلی"
+ "رفتن به بالا"
+ "گزینههای بیشتر"
+ "تمام"
+ "دیدن همه"
+ "انتخاب برنامه"
+ "خاموش"
+ "روشن"
+ "Alt+"
+ "Ctrl+"
+ "حذف"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "فاصله"
+ "Sym+"
+ "منو+"
+ "جستجو…"
+ "پاک کردن پُرسمان"
+ "درخواست جستجو"
+ "جستجو"
+ "ارسال پُرسمان"
+ "جستجوی گفتاری"
+ "همرسانی با"
+ "همرسانی با %s"
+ "کوچک کردن"
+ "پاسخ دادن"
+ "ویدیو"
+ "رد کردن"
+ "قطع تماس"
+ "تماس ورودی"
+ "تماس درحال انجام"
+ "درحال غربال کردن تماس ورودی"
+ فعال کردن
+ تا وقتی «خدمات Google Play» را فعال نکنید، %1$s کار نمیکند.
+ فعال کردن «خدمات Google Play»
+ نصب
+ %1$s بدون خدمات Google Play که در دستگاه شما وجود ندارد اجرا نمیشود.
+ دریافت «خدمات Google Play»
+ دردسترس بودن خدمات Google Play
+ خطا در خدمات Google Play
+ %1$s برای استفاده از خدمات Google Play با مشکل روبرو است. لطفاً دوباره امتحان کنید.
+ %1$s بدون خدمات Google Play که در دستگاه شما پشتیبانی نمیشود، اجرا نخواهد شد.
+ بهروزرسانی
+ تاز مانی که «خدمات Google Play» را بهروزرسانی نکنید، %1$s اجرا نمیشود.
+ بهروزرسانی «خدمات Google Play»
+ %1$s بدون «خدمات Google Play» که درحال حاضر درحال بهروزرسانی هستند، کار نمیکند.
+ نسخه جدید «خدمات Google Play» نیاز است. بهزودی بهطور خودکار بهروزرسانی میشود.
+ باز کردن در تلفن
+ ورود به سیستم
+ ورود به سیستم با Google
+ "پیوند در بریدهدان کپی شد"
+ "کپی پیوند"
+ "بازکردن در مرورگر"
+ "همرسانی پیوند"
+ "جستجو"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fi/values-fi.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fi/values-fi.xml
new file mode 100644
index 0000000..8d1bf6a
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fi/values-fi.xml
@@ -0,0 +1,61 @@
+
+
+ "Siirry etusivulle"
+ "Siirry ylös"
+ "Lisäasetukset"
+ "Valmis"
+ "Näytä kaikki"
+ "Valitse sovellus"
+ "POIS PÄÄLTÄ"
+ "PÄÄLLÄ"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Fn+"
+ "Meta+"
+ "Vaihto+"
+ "välilyönti"
+ "Sym+"
+ "Valikko+"
+ "Haku…"
+ "Tyhjennä kysely"
+ "Hakukysely"
+ "Haku"
+ "Lähetä kysely"
+ "Puhehaku"
+ "Jaa…"
+ "Jaa: %s"
+ "Tiivistä"
+ "Vastaa"
+ "Video"
+ "Hylkää"
+ "Lopeta puhelu"
+ "Saapuva puhelu"
+ "Käynnissä oleva puhelu"
+ "Seulotaan saapuvaa puhelua"
+ Ota käyttöön
+ %1$s ei toimi, ellet ota Google Play Palveluita käyttöön.
+ Ota Google Play Palvelut käyttöön
+ Asenna
+ %1$s ei toimi ilman Google Play Palveluita, jotka puuttuvat laitteeltasi.
+ Asenna Google Play Palvelut
+ Google Play Palveluiden saatavuus
+ Virhe Google Play -palveluissa
+ Sovelluksella %1$s on ongelmia Google Play Palveluiden kanssa. Yritä uudelleen.
+ %1$s ei toimi ilman Google Play Palveluita, joita laitteesi ei tue.
+ Päivitä
+ %1$s ei toimi, ellet päivitä Google Play Palveluita.
+ Päivitä Google Play Palvelut
+ %1$s ei toimi ilman Google Play Palveluita, joita päivitetään tällä hetkellä.
+ Uusi Google Play Palveluiden versio tarvitaan. Se päivittyy pian.
+ Avaa puhelimessa
+ Kirjaudu sisään
+ Kirjaudu Google-tilille
+ "Linkki kopioitu leikepöydälle"
+ "Kopioi linkki"
+ "Avaa selaimessa"
+ "Jaa linkki"
+ "Haku"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fr-rCA/values-fr-rCA.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fr-rCA/values-fr-rCA.xml
new file mode 100644
index 0000000..4f9d762
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fr-rCA/values-fr-rCA.xml
@@ -0,0 +1,61 @@
+
+
+ "Revenir à l\'accueil"
+ "Revenir en arrière"
+ "Autres options"
+ "Terminé"
+ "Tout afficher"
+ "Sélectionner une application"
+ "DÉSACTIVER"
+ "ACTIVER"
+ "Alt+"
+ "Ctrl+"
+ "supprimer"
+ "entrée"
+ "Fonction+"
+ "Méta+"
+ "Maj+"
+ "espace"
+ "Sym+"
+ "Menu+"
+ "Rechercher…"
+ "Effacer la requête"
+ "Requête de recherche"
+ "Rechercher"
+ "Envoyer la requête"
+ "Recherche vocale"
+ "Partager avec"
+ "Partager avec %s"
+ "Réduire"
+ "Répondre"
+ "Vidéo"
+ "Refuser"
+ "Raccrocher"
+ "Appel entrant"
+ "Appel en cours"
+ "Filtrer un appel entrant"
+ Activer
+ %1$s ne fonctionnera pas tant que vous n\'aurez pas activé les services Google Play.
+ Activer les services Google Play
+ Installer
+ %1$s ne fonctionnera pas sans les services Google Play, qui ne sont pas installés sur votre appareil.
+ Installer les services Google Play
+ Disponibilité des services Google Play
+ Erreur liée aux services Google Play
+ L\'application %1$s éprouve un problème avec les services Google Play. Veuillez réessayer.
+ L\'application %1$s ne fonctionnera pas sans les services Google Play, qui ne sont pas pris en charge par votre appareil.
+ Mettre à jour
+ %1$s ne fonctionnera pas tant que vous n\'aurez pas mis à jour les services Google Play.
+ Mettre à jour les services Google Play
+ %1$s ne fonctionnera pas sans les services Google Play, qui sont actuellement mis à jour.
+ La nouvelle version des services Google Play est nécessaire. Elle sera bientôt installée automatiquement.
+ Ouvrir sur le téléphone
+ Connexion
+ Se connecter avec Google
+ "Lien copié dans le presse-papiers"
+ "Copier le lien"
+ "Ouvrir dans le navigateur"
+ "Partager le lien"
+ "Rechercher"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fr/values-fr.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fr/values-fr.xml
new file mode 100644
index 0000000..2fdb8bf
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-fr/values-fr.xml
@@ -0,0 +1,61 @@
+
+
+ "Revenir à l\'accueil"
+ "Revenir en haut de la page"
+ "Autres options"
+ "OK"
+ "Tout afficher"
+ "Sélectionner une application"
+ "NON"
+ "OUI"
+ "Alt+"
+ "Ctrl+"
+ "supprimer"
+ "entrée"
+ "Fonction+"
+ "Méta+"
+ "Maj+"
+ "espace"
+ "Sym+"
+ "Menu+"
+ "Rechercher…"
+ "Effacer la requête"
+ "Requête de recherche"
+ "Rechercher"
+ "Envoyer la requête"
+ "Recherche vocale"
+ "Partager avec"
+ "Partager avec %s"
+ "Réduire"
+ "Répondre"
+ "Vidéo"
+ "Refuser"
+ "Raccrocher"
+ "Appel entrant"
+ "Appel en cours"
+ "Filtrage d\'un appel entrant"
+ Activer
+ %1$s ne fonctionnera pas tant que vous n\'aurez pas activé les services Google Play.
+ Activer les services Google Play
+ Installer
+ %1$s ne fonctionnera pas sans les services Google Play, qui ne sont pas installés sur votre appareil.
+ Installer les services Google Play
+ Disponibilité des services Google Play
+ Erreur liée aux services Google Play
+ L\'application %1$s rencontre des problèmes avec les services Google Play. Veuillez réessayer.
+ %1$s ne fonctionnera pas sans les services Google Play, qui ne sont pas compatibles avec votre appareil.
+ Mettre à jour
+ %1$s ne fonctionnera pas tant que vous n\'aurez pas mis à jour les services Google Play.
+ Mettre à jour les services Google Play
+ %1$s ne fonctionnera pas sans les services Google Play, qui sont en cours de mise à jour.
+ La nouvelle version des services Google Play est nécessaire. Elle sera bientôt installée automatiquement.
+ Ouvrir sur le téléphone
+ Se connecter
+ Se connecter avec Google
+ "Lien copié dans le presse-papiers"
+ "Copier le lien"
+ "Ouvrir dans un navigateur"
+ "Partager le lien"
+ "Rechercher"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-gl/values-gl.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-gl/values-gl.xml
new file mode 100644
index 0000000..b736530
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-gl/values-gl.xml
@@ -0,0 +1,61 @@
+
+
+ "Vai ao inicio"
+ "Vai cara arriba"
+ "Máis opcións"
+ "Feito"
+ "Ver todo"
+ "Selecciona unha aplicación"
+ "DESACTIVADO"
+ "ACTIVADO"
+ "Alt +"
+ "Ctrl +"
+ "eliminar"
+ "intro"
+ "Función +"
+ "Meta +"
+ "Maiús +"
+ "espazo"
+ "Sym +"
+ "Menú +"
+ "Busca…"
+ "Borra a consulta"
+ "Busca a consulta"
+ "Realiza buscas"
+ "Envía a consulta"
+ "Busca por voz"
+ "Comparte contido con"
+ "Comparte contido coa aplicación %s"
+ "Contrae"
+ "Contestar"
+ "Vídeo"
+ "Rexeitar"
+ "Colgar"
+ "Chamada entrante"
+ "Chamada en curso"
+ "Filtrando chamada entrante"
+ Activar
+ %1$s non funcionará a menos que actives os servizos de Google Play.
+ Activar servizos de Google Play
+ Instalar
+ %1$s non se executará se o teu dispositivo non ten instalados os servizos de Google Play.
+ Descargar servizos de Google Play
+ Dispoñibilidade dos servizos de Play
+ Erro nos servizos de Google Play
+ %1$s ten problemas cos servizos de Google Play. Téntao de novo.
+ %1$s non se executará sen os servizos de Google Play, que non son compatibles co teu dispositivo.
+ Actualizar
+ %1$s non se executará a menos que actualices os servizos de Google Play.
+ Actualizar os servizos de Google Play
+ %1$s non se executará sen os servizos de Google Play, que se están actualizando neste momento.
+ Necesítase a nova versión dos servizos de Google Play. Actualizarase en breve.
+ Abrir no teléfono
+ Iniciar sesión
+ Iniciar sesión con Google
+ "Copiouse a ligazón no portapapeis"
+ "Copiar ligazón"
+ "Abrir no navegador"
+ "Compartir ligazón"
+ "Buscar"
+ ">999"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-gu/values-gu.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-gu/values-gu.xml
new file mode 100644
index 0000000..8167556
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-gu/values-gu.xml
@@ -0,0 +1,61 @@
+
+
+ "ઘરનો રસ્તો બતાવો"
+ "ઉપર નૅવિગેટ કરો"
+ "વધુ વિકલ્પો"
+ "થઈ ગયું"
+ "બધી જુઓ"
+ "ઍપ્લિકેશન પસંદ કરો"
+ "બંધ"
+ "ચાલુ"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "Enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "શોધો…"
+ "ક્વેરી સાફ કરો"
+ "શોધ ક્વેરી"
+ "શોધો"
+ "ક્વેરી સબમિટ કરો"
+ "વૉઇસ શોધ"
+ "આની સાથે શેર કરો"
+ "%sની સાથે શેર કરો"
+ "સંકુચિત કરો"
+ "જવાબ"
+ "વીડિયો"
+ "નકારો"
+ "સમાપ્ત કરો"
+ "ઇનકમિંગ કૉલ"
+ "ચાલુ કૉલ"
+ "ઇનકમિંગ કૉલનું સ્ક્રીનિંગ થાય છે"
+ સક્ષમ કરો
+ તમે Google Play સેવાઓ સક્ષમ કરશો નહીં ત્યાં સુધી %1$s કાર્ય કરશે નહીં.
+ Google Play સેવાઓ સક્ષમ કરો
+ ઇન્સ્ટૉલ કરો
+ %1$s, Google Play સેવાઓ વગર ચાલશે નહીં, જે તમારા ઉપકરણમાંથી ખૂટે છે.
+ Google Play સેવાઓ મેળવો
+ Google Play સેવાઓની ઉપલબ્ધતા
+ Google Play સેવાઓની ભૂલ
+ %1$s ને Google Play સેવાઓમાં મુશ્કેલી આવી રહી છે. કૃપા કરીને ફરી પ્રયાસ કરો.
+ %1$s, Google Play સેવાઓ વગર ચાલશે નહીં, જે તમારા ઉપકરણ દ્વારા સમર્થિત નથી.
+ અપડેટ કરો
+ તમે Google Play સેવાઓ અપડેટ કરશો નહીં ત્યાં સુધી %1$s શરૂ થશે નહીં.
+ Google Play સેવાઓ અપડેટ કરો
+ %1$s, Google Play સેવાઓ વગર શરૂ થશે નહીં, જે વર્તમાનમાં અપડેટ થઈ રહી છે.
+ Google Play સેવાઓના નવા સંસ્કરણની જરૂર છે. તે ટૂંક સમયમાં પોતાને અપડેટ કરશે.
+ ફોનમાં ખોલો
+ સાઇન ઇન કરો
+ Google માં સાઇન ઇન કરો
+ "ક્લિપબોર્ડ પર લિંક કૉપિ કરી"
+ "લિંક કૉપિ કરો"
+ "બ્રાઉઝરમાં ખોલો"
+ "લિંક શેર કરો"
+ "શોધો"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-h720dp-v13/values-h720dp-v13.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-h720dp-v13/values-h720dp-v13.xml
new file mode 100644
index 0000000..e38bb90
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-h720dp-v13/values-h720dp-v13.xml
@@ -0,0 +1,4 @@
+
+
+ 54dip
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hdpi-v4/values-hdpi-v4.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hdpi-v4/values-hdpi-v4.xml
new file mode 100644
index 0000000..d5a138e
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hdpi-v4/values-hdpi-v4.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hi/values-hi.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hi/values-hi.xml
new file mode 100644
index 0000000..0205b56
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hi/values-hi.xml
@@ -0,0 +1,61 @@
+
+
+ "होम पेज पर जाएं"
+ "वापस जाएं"
+ "ज़्यादा विकल्प"
+ "हो गया"
+ "सभी देखें"
+ "कोई ऐप्लिकेशन चुनें"
+ "बंद"
+ "चालू"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "खोजें…"
+ "क्वेरी हटाएं"
+ "सर्च क्वेरी"
+ "खोजें"
+ "क्वेरी सबमिट करें"
+ "बोलकर खोजें"
+ "इससे शेयर करें:"
+ "%s से शेयर करें"
+ "छोटा करें"
+ "जवाब दें"
+ "वीडियो"
+ "अस्वीकार करें"
+ "कॉल काटें"
+ "आने वाला (इनकमिंग) कॉल"
+ "पहले से जारी कॉल"
+ "इनकमिंग कॉल को स्क्रीन किया जा रहा है"
+ चालू करें
+ जब तक आप Google Play सेवाएं चालू नहीं करते, %1$s काम नहीं करेगा.
+ Google Play सेवाएं चालू करें
+ इंस्टॉल करें
+ %1$s उन Google Play सेवाओं के बिना नहीं चलेगा जो आपके डिवाइस में उपलब्ध नहीं हैं.
+ Google Play सेवाएं इंस्टॉल करें
+ Google Play सेवाएं उपलब्ध हैं
+ Google Play सेवाओं से जुड़ी गड़बड़ी
+ %1$s को Google Play सेवाओं के साथ समस्या आ रही है. कृपया फिर से कोशिश करें.
+ %1$s उन Google Play सेवाओं के बिना नहीं चलेगा, जो आपके डिवाइस पर काम नहीं करती हैं.
+ अपडेट करें
+ %1$s तब तक नहीं चलेगा जब तक आप Google Play सेवाओं को अपडेट नहीं करते.
+ Google Play सेवाओं को अपडेट करें
+ %1$s उन Google Play सेवाओं के बिना नहीं चलेगा जो अभी अपडेट हो रही हैं.
+ Google Play सेवाओं के नए वर्शन की ज़रूरत है. यह जल्द ही अपने आप अपडेट हो जाएगा.
+ फ़ोन पर खोलें
+ साइन इन करें
+ Google के ज़रिए साइन इन करें
+ "लिंक क्लिपबोर्ड पर कॉपी किया गया"
+ "लिंक कॉपी करें"
+ "ब्राउज़र में खोलें"
+ "लिंक शेयर करें"
+ "खोजें"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hr/values-hr.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hr/values-hr.xml
new file mode 100644
index 0000000..3826a60
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hr/values-hr.xml
@@ -0,0 +1,61 @@
+
+
+ "Idi na početnu"
+ "Natrag"
+ "Više opcija"
+ "Gotovo"
+ "Prikaži sve"
+ "Odabir aplikacije"
+ "ISKLJUČENO"
+ "UKLJUČENO"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "svemir"
+ "Sym+"
+ "Menu+"
+ "Pretražite…"
+ "Izbriši upit"
+ "Upit za pretraživanje"
+ "Pretraži"
+ "Pošalji upit"
+ "Glasovno pretraživanje"
+ "Dijeli s"
+ "Dijeli putem aplikacije %s"
+ "Sažmi"
+ "Odgovori"
+ "Videozapis"
+ "Odbij"
+ "Prekini"
+ "Dolazni poziv"
+ "Poziv u tijeku"
+ "Filtriranje dolaznog poziva"
+ Omogući
+ %1$s neće funkcionirati ako ne omogućite usluge Google Playa.
+ Omogućivanje usluga Google Playa
+ Instaliraj
+ %1$s neće funkcionirati bez usluga Google Playa koje nisu instalirane na vašem uređaju.
+ Preuzimanje usluga Google Playa
+ Dostupnost usluga za Google Play
+ Pogreška Usluga za Google Play
+ %1$s ima poteškoća s uslugama Google Playa. Pokušajte ponovo.
+ %1$s neće funkcionirati bez usluga Google Playa koje vaš uređaj ne podržava.
+ Ažuriraj
+ %1$s neće funkcionirati ako ne ažurirate Google Play usluge.
+ Ažuriranje usluga Google Playa
+ %1$s neće se pokrenuti bez usluga Google Playa koje se trenutačno ažuriraju.
+ Potrebna je nova verzija usluga Google Playa. Uskoro će se ažurirati.
+ Otvori na telefonu
+ Prijava
+ Prijava putem Googlea
+ "Veza je kopirana u međuspremnik"
+ "Kopiraj vezu"
+ "Otvori u pregledniku"
+ "Podijeli vezu"
+ "Pretraži"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hu/values-hu.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hu/values-hu.xml
new file mode 100644
index 0000000..268862c
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hu/values-hu.xml
@@ -0,0 +1,61 @@
+
+
+ "Ugrás a főoldalra"
+ "Fel"
+ "További lehetőségek"
+ "Kész"
+ "Az összes megtekintése"
+ "Válasszon alkalmazást"
+ "KI"
+ "BE"
+ "Alt+"
+ "Ctrl+"
+ "Delete"
+ "Enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "Szóköz"
+ "Sym+"
+ "Menu+"
+ "Keresés…"
+ "Lekérdezés törlése"
+ "Keresési lekérdezés"
+ "Keresés"
+ "Lekérdezés küldése"
+ "Hangalapú keresés"
+ "Megosztás a következővel:"
+ "Megosztás a következő alkalmazással: %s"
+ "Összecsukás"
+ "Fogadás"
+ "Videó"
+ "Elutasítás"
+ "Befejezés"
+ "Bejövő hívás"
+ "Hívás folyamatban"
+ "Bejövő hívás szűrése"
+ Engedélyezés
+ A(z) %1$s alkalmazás csak akkor működik, ha engedélyezi a Google Play-szolgáltatásokat.
+ Google Play-szolgáltatások engedélyezése
+ Telepítés
+ A(z) %1$s alkalmazás nem fut a Google Play-szolgáltatások nélkül, amelyek hiányoznak az eszközről.
+ A Google Play-szolgáltatások beszerzése
+ Google Play-szolgáltatások elérhetősége
+ Google Play-szolgáltatások – hiba
+ A(z) %1$s alkalmazás problémába ütközött a Google Play-szolgáltatások használata során. Próbálkozzon újra.
+ A(z) %1$s alkalmazás nem fut a Google Play-szolgáltatások nélkül, amelyeket eszköze nem támogat.
+ Frissítés
+ A(z) %1$s alkalmazás csak akkor fog működni, ha frissíti a Google Play-szolgáltatásokat.
+ A Google Play-szolgáltatások frissítése
+ A(z) %1$s alkalmazás nem fut a Google Play-szolgáltatások nélkül, amelyek frissítése folyamatban van.
+ A Google Play-szolgáltatások új verziójára van szükség. A szolgáltatás hamarosan frissíti önmagát.
+ Megnyitás a telefonon
+ Bejelentkezés
+ Bejelentkezés Google-fiókkal
+ "Link vágólapra másolva"
+ "Link másolása"
+ "Megnyitás böngészőben"
+ "Link megosztása"
+ "Keresés"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hy/values-hy.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hy/values-hy.xml
new file mode 100644
index 0000000..ea1242b
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-hy/values-hy.xml
@@ -0,0 +1,61 @@
+
+
+ "Անցնել գլխավոր էջ"
+ "Անցնել վերև"
+ "Այլ ընտրանքներ"
+ "Պատրաստ է"
+ "Տեսնել բոլորը"
+ "Ընտրել հավելված"
+ "ԱՆՋԱՏԵԼ"
+ "ՄԻԱՑՆԵԼ"
+ "Alt+"
+ "Ctrl+"
+ "Delete"
+ "Enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "բացատ"
+ "Sym+"
+ "Menu+"
+ "Որոնում…"
+ "Ջնջել հարցումը"
+ "Որոնման հարցում"
+ "Որոնել"
+ "Ուղարկել հարցումը"
+ "Ձայնային որոնում"
+ "Կիսվել…"
+ "Կիսվել %s հավելվածի միջոցով"
+ "Ծալել"
+ "Պատասխանել"
+ "Տեսազանգ"
+ "Մերժել"
+ "Ավարտել"
+ "Մուտքային զանգ"
+ "Ընթացիկ զանգ"
+ "Մուտքային զանգի զտում"
+ Միացնել
+ %1$s հավելվածը չի աշխատի մինչև չմիացնեք Google Play ծառայությունները:
+ Միացնել Google Play ծառայությունները
+ Տեղադրել
+ %1$s հավելվածը չի աշխատի առանց Google Play ծառայությունների, որոնք չկան ձեր սարքում:
+ Տեղադրել Google Play ծառայությունները
+ Google Play ծառայությունների հասանելիություն
+ Google Play ծառայությունների սխալ կա
+ %1$s հավելվածը Google Play ծառայությունների հետ կապված խնդիր ունի: Փորձեք նորից:
+ %1$s հավելվածը չի աշխատի առանց Google Play ծառայությունների, որոնք ձեր սարքում չեն աջակցվում:
+ Թարմացնել
+ %1$s հավելվածը չի աշխատի մինչև չթարմացնեք Google Play ծառայությունները:
+ Թարմացնել Google Play ծառայությունները
+ %1$s հավելվածը չի աշխատի առանց Google Play ծառայությունների, որոնք այս պահին թարմացվում են:
+ Անհրաժեշտ է Google Play ծառայությունների նոր տարբերակը: Այն շուտով կթարմացվի ավտոմատ կերպով:
+ Բացել հեռախոսով
+ Մուտք գործել
+ Մուտք գործել Google-ով
+ "Հղումը պատճենվեց սեղմատախտակին"
+ "Պատճենել հղումը"
+ "Բացել դիտարկիչում"
+ "Կիսվել հղումով"
+ "Որոնել"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-in/values-in.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-in/values-in.xml
new file mode 100644
index 0000000..d0bed90
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-in/values-in.xml
@@ -0,0 +1,61 @@
+
+
+ "Tunjukkan jalan ke rumah"
+ "Kembali ke atas"
+ "Opsi lainnya"
+ "Selesai"
+ "Lihat semua"
+ "Pilih aplikasi"
+ "NONAKTIF"
+ "AKTIF"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "spasi"
+ "Sym+"
+ "Menu+"
+ "Telusuri..."
+ "Hapus kueri"
+ "Telusuri kueri"
+ "Telusuri"
+ "Kirim kueri"
+ "Penelusuran suara"
+ "Bagikan dengan"
+ "Bagikan dengan %s"
+ "Ciutkan"
+ "Jawab"
+ "Video"
+ "Tolak"
+ "Tutup"
+ "Panggilan masuk"
+ "Panggilan sedang berlangsung"
+ "Menyaring panggilan masuk"
+ Aktifkan
+ %1$s tidak akan berfungsi jika layanan Google Play tidak diaktifkan.
+ Aktifkan layanan Google Play
+ Instal
+ %1$s tidak akan berjalan tanpa layanan Google Play, yang tidak ada di perangkat Anda.
+ Dapatkan layanan Google Play
+ Ketersediaan layanan Google Play
+ Kesalahan layanan Google Play
+ %1$s mengalami masalah dengan layanan Google Play. Coba lagi.
+ %1$s tidak akan berjalan tanpa layanan Google Play, yang tidak didukung oleh perangkat Anda.
+ Update
+ %1$s tidak akan berjalan jika layanan Google Play tidak diperbarui.
+ Perbarui layanan Google Play
+ %1$s tidak akan berjalan tanpa layanan Google Play, yang saat ini sedang diperbarui.
+ Perlu versi baru layanan Google Play. Akan segera memperbarui sendiri.
+ Buka di ponsel
+ Login
+ Login dengan Google
+ "Link disalin ke papan klip"
+ "Salin link"
+ "Buka di browser"
+ "Bagikan link"
+ "Telusuri"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-is/values-is.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-is/values-is.xml
new file mode 100644
index 0000000..03b931a
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-is/values-is.xml
@@ -0,0 +1,61 @@
+
+
+ "Fara heim"
+ "Fara upp"
+ "Fleiri valkostir"
+ "Lokið"
+ "Sjá allt"
+ "Veldu forrit"
+ "SLÖKKT"
+ "KVEIKT"
+ "Alt+"
+ "Ctrl+"
+ "eyða"
+ "enter"
+ "Aðgerðarlykill+"
+ "Meta+"
+ "Shift+"
+ "bilslá"
+ "Sym+"
+ "Valmynd+"
+ "Leita…"
+ "Hreinsa fyrirspurn"
+ "Leitarfyrirspurn"
+ "Leit"
+ "Senda fyrirspurn"
+ "Raddleit"
+ "Deila með"
+ "Deila með %s"
+ "Minnka"
+ "Svara"
+ "Myndsímtal"
+ "Hafna"
+ "Leggja á"
+ "Símtal berst"
+ "Símtal í gangi"
+ "Síar símtal sem berst"
+ Kveikja
+ %1$s virkar ekki nema þú gerir þjónustu Google Play virka.
+ Virkja þjónustu Google Play
+ Setja upp
+ %1$s getur ekki keyrt án þjónustu Google Play, sem vantar í tækið þitt.
+ Sækja þjónustu Google Play
+ Staða þjónustu Google Play
+ Villa í þjónustu Google Play
+ %1$s á í vandræðum með þjónustu Google Play. Reyndu aftur.
+ %1$s getur ekki keyrt án þjónustu Google Play, sem er ekki studd af tækinu þínu.
+ Uppfæra
+ %1$s getur ekki keyrt nema þú uppfærir þjónustu Google Play.
+ Uppfæra þjónustu Google Play
+ %1$s getur ekki keyrt án þjónustu Google Play, sem verið er að uppfæra.
+ Nýja útgáfu af þjónustu Google Play vantar. Hún uppfærir sig sjálf innan skamms.
+ Opna í símanum
+ Skrá inn
+ Skrá inn með Google
+ "Tengill afritaður á klippiborð"
+ "Afrita tengil"
+ "Opna í vafra"
+ "Deila tengli"
+ "Leit"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-it/values-it.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-it/values-it.xml
new file mode 100644
index 0000000..22360e0
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-it/values-it.xml
@@ -0,0 +1,61 @@
+
+
+ "Portami a casa"
+ "Torna indietro"
+ "Altre opzioni"
+ "Fine"
+ "Mostra tutto"
+ "Scelta di un\'app"
+ "OFF"
+ "ON"
+ "ALT +"
+ "CTRL +"
+ "CANC"
+ "INVIO"
+ "FUNZIONE +"
+ "META +"
+ "MAIUSC +"
+ "SPAZIO"
+ "SYM +"
+ "MENU +"
+ "Cerca…"
+ "Cancella query"
+ "Query di ricerca"
+ "Cerca"
+ "Invia query"
+ "Ricerca vocale"
+ "Condividi con"
+ "Condividi tramite %s"
+ "Comprimi"
+ "Rispondi"
+ "Video"
+ "Rifiuta"
+ "Riaggancia"
+ "Chiamata in arrivo"
+ "Chiamata in corso"
+ "Applicazione filtro a chiamata in arrivo"
+ Attiva
+ %1$s non funzionerà se non attivi Google Play Services.
+ Attiva Google Play Services
+ Installa
+ L\'app %1$s non funzionerà senza Google Play Services, non presente sul tuo dispositivo.
+ Installa Google Play Services
+ Disponibilità di Google Play Services
+ Errore Google Play Services
+ %1$s sta riscontrando problemi con Google Play Services. Riprova.
+ %1$s non funzionerà senza Google Play Services, non supportati dal tuo dispositivo.
+ Aggiorna
+ %1$s non funzionerà se non aggiorni Google Play Services.
+ Aggiorna Google Play Services
+ %1$s non funzionerà senza Google Play Services, attualmente in fase di aggiornamento.
+ È richiesta una nuova versione di Google Play Services. L\'aggiornamento automatico verrà eseguito a breve.
+ Apri sul telefono
+ Accedi
+ Accedi con Google
+ "Link copiato negli appunti"
+ "Copia link"
+ "Apri nel browser"
+ "Condividi link"
+ "Cerca"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-iw/values-iw.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-iw/values-iw.xml
new file mode 100644
index 0000000..97301af
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-iw/values-iw.xml
@@ -0,0 +1,61 @@
+
+
+ "ניווט לדף הבית"
+ "ניווט למעלה"
+ "עוד אפשרויות"
+ "סיום"
+ "הצגת הכול"
+ "בחירת אפליקציה"
+ "כבוי"
+ "מופעל"
+ "Alt+"
+ "Ctrl+"
+ "מחיקה"
+ "Enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "רווח"
+ "Sym+"
+ "תפריט+"
+ "חיפוש…"
+ "מחיקת השאילתה"
+ "שאילתת חיפוש"
+ "חיפוש"
+ "שליחת שאילתה"
+ "חיפוש קולי"
+ "שיתוף עם"
+ "שיתוף עם %s"
+ "כיווץ"
+ "מענה"
+ "וידאו"
+ "דחייה"
+ "ניתוק"
+ "שיחה נכנסת"
+ "שיחה פעילה"
+ "סינון שיחה נכנסת"
+ הפעל
+ האפליקציה %1$s לא תפעל אם לא תפעיל את שירותי Google Play.
+ הפעל את שירותי Google Play
+ התקן
+ האפליקציה %1$s לא תפעל ללא שירותי Google Play, שאינם מותקנים במכשיר.
+ קבל את שירותי Google Play
+ זמינות של שירותי Google Play
+ שגיאה בשירותי Google Play
+ %1$s נתקלה בבעיה בשירותי Google Play. נסה שוב.
+ %1$s לא תפעל ללא שירותי Google Play, שאינם נתמכים במכשיר שלך.
+ עדכון
+ %1$s לא יפעל אם לא תעדכן את שירותי Google Play.
+ עדכון שירותי Google Play
+ האפליקציה %1$s לא תפעל ללא שירותי Google Play, שמתעדכנים כרגע.
+ דרושה גרסה חדשה של שירותי Google Play. הגרסה תתעדכן בעצמה תוך זמן קצר.
+ פתח בטלפון
+ כניסה
+ היכנס באמצעות Google
+ "הקישור הועתק ללוח"
+ "העתקת הקישור"
+ "פתיחה בדפדפן"
+ "לשיתוף הקישור"
+ "חיפוש"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ja/values-ja.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ja/values-ja.xml
new file mode 100644
index 0000000..faa1ce9
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ja/values-ja.xml
@@ -0,0 +1,61 @@
+
+
+ "ホームに戻る"
+ "前に戻る"
+ "その他のオプション"
+ "完了"
+ "すべて表示"
+ "アプリの選択"
+ "OFF"
+ "ON"
+ "Alt+"
+ "Ctrl+"
+ "Delete"
+ "Enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "Space"
+ "Sym+"
+ "Menu+"
+ "検索…"
+ "検索キーワードを削除"
+ "検索キーワード"
+ "検索"
+ "検索キーワードを送信"
+ "音声検索"
+ "共有"
+ "%sと共有"
+ "折りたたむ"
+ "応答"
+ "ビデオ"
+ "拒否"
+ "通話終了"
+ "着信"
+ "通話中"
+ "着信をスクリーニング中"
+ 有効にする
+ %1$sの実行には、Google Play開発者サービスの有効化が必要です。
+ Google Play開発者サービスの有効化
+ インストール
+ 「%1$s」の実行には Google Play 開発者サービスが必要ですが、お使いのデバイスにはインストールされていません。
+ Google Play開発者サービスの入手
+ Google Play 開発者サービスの利用
+ Google Play開発者サービスのエラー
+ 「%1$s」で Google Play 開発者サービスに問題が発生しています。もう一度お試しください。
+ 「%1$s」の実行には Google Play 開発者サービスが必要ですが、お使いのデバイスではサポートされていません。
+ 更新
+ %1$sの実行にはGoogle Play開発者サービスの更新が必要です。
+ Google Play開発者サービスの更新
+ %1$sの実行にはGoogle Play開発者サービスが必要ですが、このサービスは現在更新中です。
+ Google Play開発者サービスの新しいバージョンが必要です。まもなく自動更新されます。
+ スマートフォンで開く
+ ログイン
+ Googleにログイン
+ "リンクをクリップボードにコピーしました"
+ "リンクをコピー"
+ "ブラウザで開く"
+ "リンクの共有"
+ "検索"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ka/values-ka.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ka/values-ka.xml
new file mode 100644
index 0000000..21ec69b
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ka/values-ka.xml
@@ -0,0 +1,61 @@
+
+
+ "მთავარზე გადასვლა"
+ "ზემოთ გადასვლა"
+ "სხვა ვარიანტები"
+ "მზადაა"
+ "ყველას ნახვა"
+ "აირჩიეთ აპი"
+ "გამორთვა"
+ "ჩართვა"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "შორისი"
+ "Sym+"
+ "Menu+"
+ "ძიება…"
+ "მოთხოვნის გასუფთავება"
+ "მოთხოვნის ძიება"
+ "ძიება"
+ "მოთხოვნის გადაგზავნა"
+ "ხმოვანი ძიება"
+ "გაზიარება:"
+ "%s-ით გაზიარება"
+ "ჩაკეცვა"
+ "პასუხი"
+ "ვიდეო"
+ "უარყოფა"
+ "გათიშვა"
+ "შემომავალი ზარი"
+ "მიმდინარე ზარი"
+ "შემომავალი ზარების გაცხრილვა"
+ ჩართვა
+ %1$s ვერ იმუშავებს Google Play Services-ის ჩართვამდე.
+ Google Play Services-ის ჩართვა
+ ინსტალაცია
+ %1$s ვერ გაეშვება Google Play Services-ის გარეშე, რომელიც აკლია თქვენს მოწყობილობას.
+ Google Play Services-ის ჩამოტვირთვა
+ Google Play services-ის ხელმისაწვდომობა
+ Google Play Services-ის შეცდომა
+ %1$s-ს Google Play Services-თან პრობლემა შეექმნა. გთხოვთ, ცადოთ ხელახლა.
+ %1$s ვერ გაეშვება Google Play Services-ის გარეშე, რომლებიც მხარდაუჭერელია თქვენი მოწყობილობის მიერ.
+ განახლება
+ %1$s ვერ გაეშვება, თუ Google Play სერვისებს არ განაახლებთ.
+ განაახლეთ Google Play Services
+ %1$s ვერ გაეშვება Google Play Services-ის გარეშე, რომელთა განახლებაც ამჟამად მიმდინარეობს.
+ საჭიროა Google Play Services-ის ახალი ვერსია. ის მალე განახლდება.
+ ტელეფონში გახსნა
+ შესვლა
+ Google-ით შესვლა
+ "გაცვლის ბუფერში კოპირებული ბმული"
+ "ბმულის კოპირება"
+ "ბრაუზერში გახსნა"
+ "ბმულის გაზიარება"
+ "ძიება"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-kk/values-kk.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-kk/values-kk.xml
new file mode 100644
index 0000000..b1e2254
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-kk/values-kk.xml
@@ -0,0 +1,61 @@
+
+
+ "Негізгі бетке өту"
+ "Жоғары қарай өту"
+ "Басқа опциялар"
+ "Дайын"
+ "Барлығын көру"
+ "Қолданбаны таңдау"
+ "ӨШІРУ"
+ "ҚОСУ"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "бос орын"
+ "Sym+"
+ "Menu+"
+ "Іздеу…"
+ "Сұрауды өшіру"
+ "Іздеу сұрауы"
+ "Іздеу"
+ "Сұрауды жіберу"
+ "Дауыспен іздеу"
+ "Бөлісу"
+ "%s қолданбасымен бөлісу"
+ "Жию"
+ "Жауап"
+ "Бейне"
+ "Қабылдамау"
+ "Тұтқаны қою"
+ "Кіріс қоңырау"
+ "Қоңырау"
+ "Келген қоңырауды сүзу"
+ Қосу
+ Google Play қызметтерін қоспасаңыз, %1$s жұмыс істемейді.
+ Google Play қызметтерін қосу
+ Орнату
+ Google Play қызметтері құрылғыда болмағандықтан, %1$s іске қосылмайды.
+ Google Play қызметтерін алу
+ Google Play қызметтерінің қолжетімділігі
+ Google Play қызметтерінің қатесі
+ %1$s қолданбасында Google Play қызметіне байланысты белгісіз қате шықты. Әрекетті қайталаңыз.
+ %1$s қолданбасы құрылғыңызда қолдау көрсетілмейтін Google Play қызметінсіз жұмыс істемейді.
+ Жаңарту
+ Google Play қызметтерін жаңартпасаңыз, %1$s іске қосылмайды.
+ Google Play қызметтерін жаңарту
+ Қазіргі уақытта жаңартылып жатқан Google Play қызметтерінсіз %1$s іске қосылмайды.
+ Google Play қызметтерінің жаңа нұсқасы қажет. Ол қысқа уақыттан кейін өзі жаңарады.
+ Телефонда ашу
+ Кіру
+ Google арқылы кіру
+ "Сілтеме буферге көшірілді."
+ "Сілтемені көшіру"
+ "Браузерден ашу"
+ "Сілтемені бөлісу"
+ "Іздеу"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-km/values-km.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-km/values-km.xml
new file mode 100644
index 0000000..ef43684
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-km/values-km.xml
@@ -0,0 +1,61 @@
+
+
+ "ទៅទំព័រដើម"
+ "រំកិលឡើងលើ"
+ "ជម្រើសច្រើនទៀត"
+ "រួចរាល់"
+ "មើលទាំងអស់"
+ "ជ្រើសរើសកម្មវិធី"
+ "បិទ"
+ "បើក"
+ "Alt+"
+ "Ctrl+"
+ "លុប"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "ស្វែងរក…"
+ "សម្អាតសំណួរ"
+ "ស្វែងរកសំណួរ"
+ "ស្វែងរក"
+ "ដាក់បញ្ជូនសំណួរ"
+ "ស្វែងរកតាមសំឡេង"
+ "ចែករំលែកជាមួយ"
+ "ចែករំលែកជាមួយ %s"
+ "បង្រួម"
+ "ឆ្លើយ"
+ "វីដេអូ"
+ "បដិសេធ"
+ "ដាក់ចុះ"
+ "ការហៅចូល"
+ "ការហៅដែលកំពុងដំណើរការ"
+ "កំពុងពិនិត្យការហៅចូល"
+ បើក
+ %1$s នឹងមិនដំណើរការទេ លុះត្រាតែអ្នកបើកសេវាកម្ម Google Play។
+ បើកសេវាកម្ម Google Play
+ ដំឡើង
+ %1$s នឹងមិនដំណើរការទេ ប្រសិនបើមិនមានសេវាកម្មនានារបស់ Google Play ដែលបានបាត់ពីឧបករណ៍របស់អ្នក។
+ ទាញយកសេវាកម្ម Google Play
+ លទ្ធភាពប្រើប្រាស់សេវាកម្ម Google Play
+ កំហុសសេវាកម្ម Google កម្សាន្ត
+ %1$s កំពុងមានបញ្ហាជាមួយសេវាកម្មរបស់ Google Play ។ សូមព្យាយាមម្តងទៀតនៅពេលក្រោយ។
+ %1$s នឹងមិនដំណើរការដោយគ្មានសេវាកម្មរបស់ Google Play ដែលឧបករណ៍របស់អ្នកមិនគាំទ្រនោះទេ។
+ ធ្វើបច្ចុប្បន្នភាព
+ %1$s នឹងមិនដំណើរការទេ លុះត្រាតែអ្នកធ្វើបច្ចុប្បន្នភាពសេវាកម្ម Google Play។
+ អាប់ដេតសេវាកម្ម Google Play
+ %1$s នឹងមិនដំណើរការទេ បើមិនមានសេវាកម្ម Google Play ដោយសារតែវាកំពុងអាប់ដេត។
+ តម្រូវឲ្យមានកំណែថ្មីនៃសេវាកម្ម Google Play។ វានឹងអាប់ដេតដោយខ្លួនវានៅពេលបន្តិចទៀតនេះ។
+ បើកតាមទូរស័ព្ទ
+ ចូល
+ ចូលដោយប្រើ Google
+ "បានចម្លងតំណទៅឃ្លីបបត"
+ "ចម្លងតំណ"
+ "បើកនៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត"
+ "តំណចែករំលែក"
+ "ស្វែងរក"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-kn/values-kn.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-kn/values-kn.xml
new file mode 100644
index 0000000..e56b5ad
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-kn/values-kn.xml
@@ -0,0 +1,61 @@
+
+
+ "ಹೋಮ್ಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"
+ "ಮೇಲಕ್ಕೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"
+ "ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು"
+ "ಆಯಿತು"
+ "ಎಲ್ಲವನ್ನೂ ನೋಡಿ"
+ "ಆ್ಯಪ್ವೊಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ"
+ "ಆಫ್"
+ "ಆನ್"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "ಹುಡುಕಿ…"
+ "ಪ್ರಶ್ನೆಯನ್ನು ತೆರವುಗೊಳಿಸಿ"
+ "ಪ್ರಶ್ನೆಯನ್ನು ಹುಡುಕಿ"
+ "ಹುಡುಕಿ"
+ "ಪ್ರಶ್ನೆಯನ್ನು ಸಲ್ಲಿಸಿ"
+ "ಧ್ವನಿ ಹುಡುಕಾಟ"
+ "ಇವರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಿ"
+ "%s ನೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಿ"
+ "ಕುಗ್ಗಿಸಿ"
+ "ಉತ್ತರಿಸಿ"
+ "ವೀಡಿಯೊ"
+ "ನಿರಾಕರಿಸಿ"
+ "ಕರೆ ಕೊನೆಗೊಳಿಸಿ"
+ "ಒಳಬರುವ ಕರೆ"
+ "ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆ"
+ "ಒಳಬರುವ ಕರೆಯನ್ನು ಸ್ಕ್ರೀನ್ ಮಾಡಲಾಗುತ್ತಿದೆ"
+ ಸಕ್ರಿಯಗೊಳಿಸು
+ Google Play ಸೇವೆಗಳನ್ನು ನೀವು ಸಕ್ರಿಯಗೊಳಿಸದ ಹೊರತು %1$s ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ.
+ Google Play ಸೇವೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ
+ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ
+ ನಿಮ್ಮ ಸಾಧನದಿಂದ ಕಾಣೆಯಾಗಿರುವ %1$s, Google Play ಸೇವೆಗಳಿಲ್ಲದೆ ರನ್ ಆಗುವುದಿಲ್ಲ.
+ Google Play ಸೇವೆಗಳನ್ನು ಪಡೆಯಿರಿ
+ Google Play ಸೇವೆಗಳ ಲಭ್ಯತೆ
+ Google Play ಸೇವೆಗಳ ದೋಷ
+ Google Play ಸೇವೆಗಳಲ್ಲಿ %1$s ಸಮಸ್ಯೆಯನ್ನು ಹೊಂದಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.
+ ನಿಮ್ಮ ಸಾಧನದ ಮೂಲಕ ಬೆಂಬಲಿಸದಿರುವ Google Play ಸೇವೆಗಳಿಲ್ಲದೆ %1$s ರನ್ ಆಗುವುದಿಲ್ಲ.
+ ಅಪ್ಡೇಟ್ ಮಾಡಿ
+ ನೀವು Google Play ಸೇವೆಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡದ ಹೊರತು %1$s ರನ್ ಆಗುವುದಿಲ್ಲ.
+ Google ಪ್ಲೇ ಸೇವೆಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿ
+ Google Play ಸೇವೆಗಳಿಲ್ಲದೆ ಪ್ರಸ್ತುತ ಅಪ್ಡೇಟ್ ಆಗುತ್ತಿರುವ %1$s ರನ್ ಆಗುವುದಿಲ್ಲ.
+ Google Play ಸೇವೆಗಳ ಹೊಸ ಆವೃತ್ತಿ ಅಗತ್ಯವಿದೆ. ಸದ್ಯದಲ್ಲೇ ಅದು ತಾನಾಗಿಯೇ ಅಪ್ಡೇಟ್ ಆಗುತ್ತದೆ.
+ ಫೋನ್ನಲ್ಲಿ ತೆರೆಯಿರಿ
+ ಸೈನ್ ಇನ್
+ Google ಮೂಲಕ ಸೈನ್ ಇನ್ ಮಾಡಿ
+ "ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ಲಿಂಕ್ ಅನ್ನು ನಕಲಿಸಲಾಗಿದೆ"
+ "ಲಿಂಕ್ ನಕಲಿಸಿ"
+ "ಬ್ರೌಸರ್ನಲ್ಲಿ ತೆರೆಯಿರಿ"
+ "ಲಿಂಕ್ ಹಂಚಿರಿ"
+ "ಹುಡುಕಿ"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ko/values-ko.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ko/values-ko.xml
new file mode 100644
index 0000000..f1b9217
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ko/values-ko.xml
@@ -0,0 +1,61 @@
+
+
+ "홈으로 이동"
+ "위로 이동"
+ "추가 옵션"
+ "완료"
+ "전체 보기"
+ "앱 선택"
+ "사용 중지"
+ "사용"
+ "Alt+"
+ "Ctrl+"
+ "Delete"
+ "Enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "스페이스바"
+ "Sym+"
+ "Menu+"
+ "검색..."
+ "검색어 삭제"
+ "검색어"
+ "검색"
+ "검색어 보내기"
+ "음성 검색"
+ "공유 대상:"
+ "%s과(와) 공유"
+ "접기"
+ "통화"
+ "동영상"
+ "거절"
+ "전화 끊기"
+ "수신 전화"
+ "진행 중인 통화"
+ "수신 전화 검사 중"
+ 사용 설정
+ Google Play 서비스를 사용하도록 설정해야 %1$s이(가) 작동합니다.
+ Google Play 서비스 사용
+ 설치
+ 기기에 Google Play 서비스가 설치되어 있어야 %1$s이(가) 실행됩니다.
+ Google Play 서비스 설치
+ Google Play 서비스 사용 가능 여부
+ Google Play 서비스 오류
+ %1$s에서 Google Play 서비스를 사용하는 데 문제가 있습니다. 다시 시도하세요.
+ %1$s은(는) Google Play 서비스 없이는 실행되지 않으나, 기기에서 Google Play 서비스를 지원하지 않습니다.
+ 업데이트
+ Google Play 서비스를 업데이트해야 %1$s이(가) 실행됩니다.
+ Google Play 서비스 업데이트
+ 현재 업데이트 중인 Google Play 서비스가 있어야 %1$s이(가) 실행됩니다.
+ 새 버전의 Google Play 서비스가 필요합니다. 곧 자동으로 업데이트됩니다.
+ 스마트폰에서 열기
+ 로그인
+ Google 계정으로 로그인
+ "클립보드에 링크 복사됨"
+ "링크 복사"
+ "브라우저에서 열기"
+ "링크 공유"
+ "검색"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ky/values-ky.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ky/values-ky.xml
new file mode 100644
index 0000000..555cf33
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ky/values-ky.xml
@@ -0,0 +1,61 @@
+
+
+ "Башкы бетке чабыттоо"
+ "Мурунку экранга өтүү"
+ "Дагы параметрлер"
+ "Бүттү"
+ "Баарын көрүү"
+ "Колдонмо тандоо"
+ "ӨЧҮК"
+ "КҮЙҮК"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "боштук"
+ "Sym+"
+ "Menu+"
+ "Издөө…"
+ "Сурамды өчүрүү"
+ "Изделген сурам"
+ "Издөө"
+ "Сурам тапшыруу"
+ "Айтып издөө"
+ "Төмөнкү менен бөлүшүү"
+ "%s аркылуу бөлүшүү"
+ "Жыйыштыруу"
+ "Жооп берүү"
+ "Видео"
+ "Четке кагуу"
+ "Чалууну бүтүрүү"
+ "Кирүүчү чалуу"
+ "Учурдагы чалуу"
+ "Кирүүчү чалууну иргөө"
+ Иштетүү
+ Google Play кызматтарын иштетмейиңизче %1$s иштебейт.
+ Google Play кызматтарын иштетүү
+ Орнотуу
+ Google Play кызматтарысыз %1$s иштебейт. Алар түзмөгүңүздө жок болуп жатат.
+ Google Play кызматтарын алуу
+ Google Play кызматтарынын иштеши
+ Google Play кызматтарынын катасы
+ %1$s колдонмосунун Google Play кызматтары менен иштөөдө көйгөй чыкты. Кайталап көрүңүз.
+ %1$s колдонмосу сиздин түзмөгүңүздө колдоого алынбаган Google Play кызматтары болбосо иштебейт.
+ Жаңыртуу
+ Google Play кызматтары жаңыртылмайынча %1$s иштебейт.
+ Google Play кызматтарын жаңыртуу
+ Google Play кызматтарысыз %1$s иштебейт, алар учурда жаңыртылууда.
+ Google Play кызматтарынын жаңы версиясы талап кылынат. Бир аздан кийин ал өзү эле жаңырат.
+ Телефондо ачык
+ Кирүү
+ Google менен кирүү
+ "Шилтеме буферге көчүрүлдү"
+ "Шилтемени көчүрүү"
+ "Серепчиден ачуу"
+ "Шилтемени бөлүшүү"
+ "Издөө"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-land/values-land.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-land/values-land.xml
new file mode 100644
index 0000000..a12899f
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-land/values-land.xml
@@ -0,0 +1,6 @@
+
+
+ 48dp
+ 12dp
+ 14dp
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-large-v4/values-large-v4.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-large-v4/values-large-v4.xml
new file mode 100644
index 0000000..cc236eb
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-large-v4/values-large-v4.xml
@@ -0,0 +1,12 @@
+
+
+ 440dp
+ 60%
+ 90%
+ 60%
+ 90%
+ 55%
+ 80%
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ldltr-v21/values-ldltr-v21.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ldltr-v21/values-ldltr-v21.xml
new file mode 100644
index 0000000..1bdd835
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ldltr-v21/values-ldltr-v21.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lo/values-lo.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lo/values-lo.xml
new file mode 100644
index 0000000..5d8c1f1
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lo/values-lo.xml
@@ -0,0 +1,61 @@
+
+
+ "ກັບໄປໜ້າຫຼັກ"
+ "ເລື່ອນຂຶ້ນເທິງ"
+ "ຕົວເລືອກເພີ່ມເຕີມ"
+ "ແລ້ວໆ"
+ "ເບິ່ງທັງໝົດ"
+ "ເລືອກແອັບ"
+ "ປິດ"
+ "ເປີດ"
+ "Alt+"
+ "Ctrl+"
+ "ລຶບ"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "ຍະຫວ່າງ"
+ "Sym+"
+ "Menu+"
+ "ຊອກຫາ…"
+ "ລຶບຂໍ້ຄວາມຊອກຫາ"
+ "ຄຳສຳລັບຄົ້ນຫາ"
+ "ຊອກຫາ"
+ "ສົ່ງຂໍ້ມູນ"
+ "ຊອກຫາດ້ວຍສຽງ"
+ "ແບ່ງປັນກັບ"
+ "ແບ່ງປັນດ້ວຍ %s"
+ "ຫຍໍ້ລົງ"
+ "ຮັບສາຍ"
+ "ວິດີໂອ"
+ "ປະຕິເສດ"
+ "ວາງສາຍ"
+ "ສາຍໂທເຂົ້າ"
+ "ສາຍໂທອອກ"
+ "ກຳລັງກວດສອບສາຍໂທເຂົ້າ"
+ ເປີດນຳໃຊ້
+ %1$s ຈະບໍ່ສາມາດໃຊ້ງານໄດ້ຈົນກວ່າທ່ານຈະເປີດໃຊ້ງານການບໍລິການ Google Play.
+ ເປີດໃຊ້ການບໍລິການ Google Play
+ ຕິດຕັ້ງ
+ %1$s ຈະບໍ່ສາມາດເປີດໃຊ້ໄດ້ຫາກບໍ່ມີການບໍລິການ Google Play ເຊິ່ງແທັບເລັດຂອງທ່ານບໍ່ມີ.
+ ຕິດຕັ້ງບໍລິການ Google Play
+ ສະຖານະບໍລິການ Google Play
+ Google Play Services ເກີດຄວາມຜິດພາດ
+ %1$s ກຳລັງມີບັນຫາກັບບໍລິການ Google Play. ກະລຸນາລອງໃໝ່ອີກຄັ້ງ.
+ %1$s ຈະບໍ່ສາມາດໃຊ້ໄດ້ຫາກບໍ່ມີບໍລິການ Google Play ເຊິ່ງອຸປະກອນຂອງທ່ານບໍ່ຮອງຮັບ.
+ ອັບເດດ
+ %1$s ຈະບໍ່ສາມາດເຮັດວຽກໄດ້ຈົນກວ່າທ່ານຈະອັບເດດການບໍລິການ Google Play
+ ອັບເດດການບໍລິການ Google Play
+ %1$s ຈະບໍ່ສາມາດໃຊ້ງານໄດ້ໂດຍທີ່ບໍ່ມີການບໍລິການ Google Play, ເຊິ່ງກຳລັງອັບເດດຢູ່ໃນປະຈຸບັນ.
+ ຈຳເປັນຕ້ອງມີການບໍລິການ Google Play ເວີຊັນໃໝ່. ມັນຈະອັບເດດຕົວເອງໄວໆນີ້.
+ ເປີດໃນໂທລະສັບ
+ ລົງຊື່ເຂົ້າໃຊ້
+ ລົງຊື່ເຂົ້າໃຊ້ດ້ວຍ Google
+ "ສຳເນົາລິ້ງໃສ່ຄລິບບອດແລ້ວ"
+ "ສຳເນົາລິ້ງ"
+ "ເປີດໃນໂປຣແກຣມທ່ອງເວັບ"
+ "ແບ່ງປັນລິ້ງ"
+ "ຊອກຫາ"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lt/values-lt.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lt/values-lt.xml
new file mode 100644
index 0000000..769c531
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lt/values-lt.xml
@@ -0,0 +1,61 @@
+
+
+ "Eiti į pagrindinį puslapį"
+ "Naršyti aukštyn"
+ "Daugiau parinkčių"
+ "Atlikta"
+ "Žr. viską"
+ "Pasirinkite programą"
+ "IŠJUNGTI"
+ "ĮJUNGTI"
+ "„Alt“ +"
+ "„Ctrl“ +"
+ "„delete“"
+ "„enter“"
+ "„Function“ +"
+ "„Meta“ +"
+ "„Shift“ +"
+ "„space“"
+ "„Sym“ +"
+ "„Menu“ +"
+ "Ieškoti…"
+ "Išvalyti užklausą"
+ "Paieškos užklausa"
+ "Ieškoti"
+ "Pateikti užklausą"
+ "Paieška balsu"
+ "Bendrinti su"
+ "Bendrinti naudojant programą „%s“"
+ "Sutraukti"
+ "Atsakyti"
+ "Vaizdo įrašas"
+ "Atmesti"
+ "Baigti pok."
+ "Gaunamasis skambutis"
+ "Vykstantis skambutis"
+ "Gaunamojo skambučio tikrinimas"
+ Įgalinti
+ „%1$s“ neveiks, jei neįgalinsite „Google Play“ paslaugų.
+ Įgalinkite „Google Play“ paslaugas
+ Įdiegti
+ Programa „%1$s“ nebus paleidžiama be „Google Play“ paslaugų, kurių nėra įrenginyje.
+ Gaukite „Google Play“ paslaugas
+ „Google Play“ paslaugų pasiekiamumas
+ „Google Play“ paslaugų klaida
+ Naudojant programą „%1$s“ kilo problemų dėl „Google Play“ paslaugų. Bandykite dar kartą.
+ Programa „%1$s“ nebus paleidžiama be „Google Play“ paslaugų, kurių jūsų įrenginys nepalaiko.
+ Atnaujinti
+ „%1$s“ nebus paleidžiama, jei neatnaujinsite „Google Play“ paslaugų.
+ Atnaujinkite „Google Play“ paslaugas
+ „%1$s“ nebus paleidžiama be „Google Play“ paslaugų, kurios šiuo metu atnaujinamos.
+ Reikia naujos versijos „Google Play“ paslaugų. Jos netrukus bus atnaujintos.
+ Atidaryti telefone
+ Prisijungti
+ Prisijungti naudojant „Google“
+ "Nuoroda nukopijuota į iškarpinę"
+ "Kopijuoti nuorodą"
+ "Atidaryti naršyklėje"
+ "Bendrinti nuorodą"
+ "Ieškoti"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lv/values-lv.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lv/values-lv.xml
new file mode 100644
index 0000000..4d33afd
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-lv/values-lv.xml
@@ -0,0 +1,61 @@
+
+
+ "Pārvietoties uz sākuma ekrānu"
+ "Pārvietoties uz augšu"
+ "Citas opcijas"
+ "Gatavs"
+ "Skatīt visu"
+ "Izvēlieties lietotni"
+ "IZSLĒGT"
+ "IESLĒGT"
+ "Alternēšanas taustiņš +"
+ "Vadīšanas taustiņš +"
+ "dzēšanas taustiņš"
+ "ievadīšanas taustiņš"
+ "Funkcijas taustiņš +"
+ "Meta taustiņš +"
+ "Pārslēgšanas taustiņš +"
+ "atstarpes taustiņš"
+ "Simbolu taustiņš +"
+ "Poga Izvēlne +"
+ "Meklējiet…"
+ "Notīrīt vaicājumu"
+ "Meklēšanas vaicājums"
+ "Meklēt"
+ "Iesniegt vaicājumu"
+ "Meklēt ar balsi"
+ "Kopīgot ar:"
+ "Kopīgot ar lietojumprogrammu %s"
+ "Sakļaut"
+ "Atbildēt"
+ "Video"
+ "Noraidīt"
+ "Pārtraukt"
+ "Ienākošais zvans"
+ "Pašreizējais zvans"
+ "Ienākošā zvana filtrēšana"
+ Iespējot
+ Lai lietotne %1$s darbotos, ir jāiespējo Google Play pakalpojumi.
+ Google Play pakalpojumu iespējošana
+ Instalēt
+ Lai lietotne %1$s darbotos, ierīcē ir jāinstalē Google Play pakalpojumi.
+ Google Play pakalpojumu iegūšana
+ Google Play pakalpojumu pieejamība
+ Google Play pakalpojumu kļūda
+ Lietotnē %1$s ir radusies problēma ar Google Play pakalpojumu darbību. Lūdzu, mēģiniet vēlreiz.
+ Lai lietotne %1$s darbotos, ir nepieciešami Google Play pakalpojumi, taču jūsu ierīce tos neatbalsta.
+ Atjaunināt
+ Lai lietotne %1$s darbotos, jums ir jāatjaunina Google Play pakalpojumi.
+ Google Play pakalpojumu atjaunināšana
+ Lai lietotne %1$s darbotos, ir jāinstalē Google Play pakalpojumi. Pašlaik notiek to atjaunināšana.
+ Ir nepieciešama jauna Google Play pakalpojumu versija. Drīzumā tā tiks instalēta.
+ Atvērt tālrunī
+ Pierakstīties
+ Pierakstīties ar Google kontu
+ "Saite ir kopēta starpliktuvē."
+ "Kopēt saiti"
+ "Atvērt pārlūkprogrammā"
+ "Kopīgot saiti"
+ "Meklēt"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mk/values-mk.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mk/values-mk.xml
new file mode 100644
index 0000000..d67072d
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mk/values-mk.xml
@@ -0,0 +1,61 @@
+
+
+ "Движи се кон дома"
+ "Движи се нагоре"
+ "Повеќе опции"
+ "Готово"
+ "Прикажи ги сите"
+ "Избери апликација"
+ "ИСКЛУЧЕНО"
+ "ВКЛУЧЕНО"
+ "Alt+"
+ "Ctrl+"
+ "избриши"
+ "Enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "вселена"
+ "Sym+"
+ "Menu+"
+ "Пребарување…"
+ "Исчисти барање"
+ "Пребарај барање"
+ "Пребарај"
+ "Испрати барање"
+ "Гласовно пребарување"
+ "Сподели со"
+ "Сподели со %s"
+ "Собери"
+ "Одговори"
+ "Видео"
+ "Одбиј"
+ "Спушти"
+ "Дојдовен повик"
+ "Тековен повик"
+ "Проверка на дојдовен повик"
+ Овозможи
+ %1$s нема да се извршува ако не овозможите услуги на Google Play.
+ Овозможи ги услугите на Google Play
+ Инсталирај
+ %1$s нема да се извршува без услугите на Google Play што ги нема на уредот.
+ Преземи ги услугите на Google Play
+ Достапност на услугите на Google Play
+ Грешка на услугите на Google Play
+ %1$s има проблеми со услугите на Google Play. Обидете се повторно.
+ %1$s нема да се извршува без услугите на Google Play, што не се подржани од уредов.
+ Ажурирај
+ %1$s нема да се извршува ако не ги ажурирате услугите на Google Play.
+ Ажурирај ги услугите на Google Play
+ %1$s нема да се извршува без услугите на Google Play што се ажурираат во моментов.
+ Потребна е нова верзија на услугите на Google Play. Таа наскоро самата ќе се ажурира.
+ Отвори на телефонот
+ Најави се
+ Најави се со Google
+ "Линкот е копиран во привремена меморија"
+ "Копирај го линкот"
+ "Отвори во прелистувач"
+ "Сподели линк"
+ "Пребарување"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ml/values-ml.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ml/values-ml.xml
new file mode 100644
index 0000000..14d76ae
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ml/values-ml.xml
@@ -0,0 +1,61 @@
+
+
+ "ഹോമിലേക്ക് പോവുക"
+ "മുകളിലേക്ക് പോവുക"
+ "കൂടുതൽ ഓപ്ഷനുകൾ"
+ "പൂർത്തിയായി"
+ "എല്ലാം കാണുക"
+ "ആപ്പ് തിരഞ്ഞെടുക്കുക"
+ "ഓഫ്"
+ "ഓൺ"
+ "Alt+"
+ "Ctrl+"
+ "ഇല്ലാതാക്കുക"
+ "enter"
+ "ഫംഗ്ഷന്+"
+ "മെറ്റ+"
+ "Shift+"
+ "സ്പെയ്സ്"
+ "Sym+"
+ "മെനു+"
+ "തിരയുക…"
+ "ചോദ്യം മായ്ക്കുക"
+ "ചോദ്യം തിരയുക"
+ "തിരയുക"
+ "ചോദ്യം സമർപ്പിക്കുക"
+ "സംസാരത്തിലൂടെ തിരയുക"
+ "ഇനിപ്പറയുന്നതുമായി പങ്കിടുക"
+ "%s എന്നതുമായി പങ്കിടുക"
+ "ചുരുക്കുക"
+ "മറുപടി നൽകുക"
+ "വീഡിയോ"
+ "നിരസിക്കുക"
+ "കോൾ നിർത്തുക"
+ "ഇൻകമിംഗ് കോൾ"
+ "സജീവമായ കോൾ"
+ "ഇൻകമിംഗ് കോൾ സ്ക്രീൻ ചെയ്യുന്നു"
+ പ്രവർത്തനക്ഷമമാക്കുക
+ നിങ്ങൾ Google Play സേവനങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നില്ലെങ്കിൽ %1$s പ്രവർത്തിക്കില്ല.
+ Google Play സേവനങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുക
+ ഇന്സ്റ്റാള് ചെയ്യുക
+ Google Play സേവനങ്ങളില്ലാതെ %1$s പ്രവർത്തിക്കില്ല, ഈ സേവനങ്ങളാകട്ടെ നിങ്ങളുടെ ഉപകരണത്തിൽ ഇല്ല.
+ Google Play സേവനങ്ങൾ നേടുക
+ Google Play സേവന ലഭ്യത
+ Google Play സേവനങ്ങളിലെ പിശക്
+ Google Play സേവനങ്ങളുമായി ബന്ധപ്പെട്ട് %1$s ആപ്പിനെന്തോ പ്രശ്നമുണ്ട്. വീണ്ടും ശ്രമിക്കുക.
+ Google Play സേവനങ്ങളില്ലാതെ %1$s പ്രവർത്തിക്കില്ല, സേവനങ്ങളെയാകട്ടെ നിങ്ങളുടെ ഉപകരണം പിന്തുണയ്ക്കുന്നുമില്ല.
+ അപ്ഡേറ്റുചെയ്യുക
+ നിങ്ങൾ Google Play സേവനങ്ങൾ അപ്ഡേറ്റുചെയ്തില്ലെങ്കിൽ %1$s പ്രവർത്തിക്കില്ല.
+ Google Play സേവനങ്ങൾ അപ്ഡേറ്റുചെയ്യുക
+ നിലവിൽ അപ്ഡേറ്റുചെയ്യുന്ന Google Play സേവനങ്ങൾ ഇല്ലാതെ %1$s പ്രവർത്തിക്കില്ല.
+ Google Play സേവനങ്ങളുടെ പുതിയ പതിപ്പ് ആവശ്യമാണ്. താമസിയാതെ ഇത് സ്വയം അപ്ഡേറ്റുചെയ്യും.
+ ഫോണിൽ തുറക്കുക
+ സൈൻ ഇൻ ചെയ്യുക
+ Google ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യുക
+ "ക്ലിപ്പ്ബോർഡിലേക്ക് ലിങ്ക് പകർത്തി"
+ "ലിങ്ക് പകർത്തുക"
+ "ബ്രൗസറിൽ തുറക്കുക"
+ "ലിങ്ക് പങ്കിടുക"
+ "തിരയുക"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mn/values-mn.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mn/values-mn.xml
new file mode 100644
index 0000000..3138277
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mn/values-mn.xml
@@ -0,0 +1,61 @@
+
+
+ "Нүүр хуудас уруу шилжих"
+ "Дээш шилжих"
+ "Бусад сонголт"
+ "Болсон"
+ "Бүгдийг харах"
+ "Аппыг сонгох"
+ "ИДЭВХГҮЙ"
+ "ИДЭВХТЭЙ"
+ "Alt+"
+ "Ctrl+"
+ "устгах"
+ "оруулах"
+ "Функц+"
+ "Мета+"
+ "Шифт+"
+ "зай"
+ "Sym+"
+ "Цэс+"
+ "Хайх…"
+ "Асуулга арилгах"
+ "Хайх асуулга"
+ "Хайх"
+ "Асуулга илгээх"
+ "Дуут хайлт"
+ "Дараахтай хуваалцах"
+ "%s-тай хуваалцах"
+ "Буулгах"
+ "Хариулах"
+ "Видео"
+ "Татгалзах"
+ "Таслах"
+ "Ирсэн дуудлага"
+ "Дуудлага хийгдэж байна"
+ "Ирсэн дуудлагыг харуулж байна"
+ Идэвхжүүлэх
+ %1$s нь Google Play үйлчилгээг идэвхжүүлэх хүртэл ажиллахгүй.
+ Google Play үйлчилгээг идэвхжүүлэх
+ Суулгах
+ Таны төхөөрөмжид Google Play үйлчилгээ байхгүй тул %1$s ажиллахгүй.
+ Google Play үйлчилгээг авах
+ Google Play-н үйлчилгээнүүдийн боломжит байдал
+ Google Наадаан үйлчилгээний алдаа
+ %1$s-г Google Play-н үйлчилгээгээр ашиглахад асуудал гарлаа. Дахин оролдоно уу.
+ Таны төхөөрөмж Google Play үйлчилгээг дэмждэггүй учир %1$s ажиллахгүй.
+ Шинэчлэх
+ %1$s нь таныг Google Play үйлчилгээнүүдийг шинэчлэхээс нааш ажиллахгүй.
+ Google Play үйлчилгээг шинэчлэх
+ %1$s нь одоогоор шинэчилж буй Google Play үйлчилгээгүйгээр ажиллахгүй.
+ Google Play үйлчилгээний шинэ хувилбар хэрэгтэй. Энэ нь удахгүй өөрөө өөрийгөө шинэчлэх болно.
+ Утсаар нээх
+ Нэвтрэх
+ Google-р нэвтрэх:
+ "Холбоосыг түр санах ойд хуулсан"
+ "Холбоосыг хуулах"
+ "Хөтчид нээх"
+ "Холбоосыг хуваалцах"
+ "Хайх"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mr/values-mr.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mr/values-mr.xml
new file mode 100644
index 0000000..736c721
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-mr/values-mr.xml
@@ -0,0 +1,61 @@
+
+
+ "घराकडे नेव्हिगेट करा"
+ "वर नेव्हिगेट करा"
+ "आणखी पर्याय"
+ "पूर्ण झाले"
+ "सर्व पहा"
+ "अॅप निवडा"
+ "बंद"
+ "सुरू"
+ "Alt+"
+ "Ctrl+"
+ "हटवा"
+ "एंटर करा"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "मेनू+"
+ "शोधा…"
+ "क्वेरी साफ करा"
+ "शोध क्वेरी"
+ "शोधा"
+ "क्वेरी सबमिट करा"
+ "व्हॉइस शोध"
+ "यांच्यासोबत शेअर करा"
+ "%s सह शेअर करा"
+ "कोलॅप्स करा"
+ "उत्तर द्या"
+ "व्हिडिओ"
+ "नकार द्या"
+ "कॉल बंद करा"
+ "इनकमिंग कॉल"
+ "सुरू असलेला कॉल"
+ "इनकमिंग कॉल स्क्रीन करत आहे"
+ सुरू करा
+ तुम्ही Google Play सेवा सक्षम केल्याशिवाय %1$s हा अॅप कार्य करणार नाही.
+ Google Play सेवा सुरू करा
+ स्थापित करा
+ Google Play सेवा आपल्या डिव्हाइसवर उपलब्ध नाही, त्याशिवाय %1$s चालणार नाही.
+ Google Play सेवा मिळवा
+ Google Play सेवा उपलब्धता
+ Google Play सेवा एरर
+ %1$s ला Google Play सेवांमध्ये समस्या येत आहे. कृपया पुन्हा प्रयत्न करा.
+ तुमचे डिव्हाइस सपोर्ट करत नसलेल्या, Google Play सेवांशिवाय %1$s चालणार नाही.
+ अपडेट करा
+ तुम्ही Google Play सेवा अपडेट करेपर्यंत %1$s चालणार नाही.
+ Google Play सेवा अपडेट करा
+ सध्या अपडेट होत असलेल्या, Google Play सेवांशिवाय %1$s चालणार नाही.
+ Google Play सेवांच्या नवीन आवृत्तीची आवश्यकता आहे. हे स्वत:ला लवकरच अपडेट करेल.
+ फोनवर उघडा
+ साइन इन करा
+ Google सह साइन इन करा
+ "लिंक क्लिपबोर्डवर कॉपी केली"
+ "लिंक कॉपी करा"
+ "ब्राउझरमध्ये उघडा"
+ "लिंक शेअर करा"
+ "शोध"
+ "९९९+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ms/values-ms.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ms/values-ms.xml
new file mode 100644
index 0000000..566d5ff
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ms/values-ms.xml
@@ -0,0 +1,61 @@
+
+
+ "Navigasi laman utama"
+ "Navigasi ke atas"
+ "Lagi pilihan"
+ "Selesai"
+ "Lihat semua"
+ "Pilih apl"
+ "MATI"
+ "HIDUP"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Fungsi+"
+ "Meta+"
+ "Shift+"
+ "ruang"
+ "Sym+"
+ "Menu+"
+ "Cari…"
+ "Kosongkan pertanyaan"
+ "Pertanyaan carian"
+ "Cari"
+ "Serah pertanyaan"
+ "Carian suara"
+ "Kongsi dengan"
+ "Kongsi dengan %s"
+ "Runtuhkan"
+ "Jawab"
+ "Video"
+ "Tolak"
+ "Tamatkan Panggilan"
+ "Panggilan masuk"
+ "Panggilan sedang berlangsung"
+ "Menyaring panggilan masuk"
+ Dayakan
+ %1$s tidak akan berfungsi melainkan anda mendayakan perkhidmatan Google Play.
+ Dayakan perkhidmatan Google Play
+ Pasang
+ %1$s tidak akan berfungsi tanpa perkhidmatan Google Play dan perkhidmatan ini tiada pada peranti anda.
+ Dapatkan perkhidmatan Google Play
+ Ketersediaan perkhidmatan Google Play
+ Ralat perkhidmatan Google Play
+ %1$s menghadapi masalah berhubung perkhidmatan Google Play. Sila cuba lagi.
+ %1$s tidak akan berfungsi tanpa perkhidmatan Google Play dan perkhidmatan ini tidak disokong oleh peranti anda.
+ Kemas kini
+ %1$s tidak akan berfungsi kecuali anda mengemas kini perkhidmatan Google Play.
+ Kemaskinikan perkhidmatan Google Play
+ %1$s tidak akan berfungsi tanpa perkhidmatan Google Play dan perkhidmatan ini sedang dikemaskinikan.
+ Versi baharu perkhidmatan Google Play diperlukan. Kemas kini automatik akan dijalankan sebentar lagi.
+ Buka pada telefon
+ Log masuk
+ Log masuk dengan Google
+ "Pautan disalin ke papan keratan"
+ "Salin pautan"
+ "Buka dalam penyemak imbas"
+ "Kongsi pautan"
+ "Cari"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-my/values-my.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-my/values-my.xml
new file mode 100644
index 0000000..cee4ae8
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-my/values-my.xml
@@ -0,0 +1,61 @@
+
+
+ "မူလနေရာကို ပြန်သွားရန်"
+ "အပေါ်သို့ ရွှေ့ရန်"
+ "နောက်ထပ် ရွေးစရာများ"
+ "ပြီးပြီ"
+ "အားလုံး ကြည့်ရန်"
+ "အက်ပ်တစ်ခုကို ရွေးရန်"
+ "ပိတ်"
+ "ဖွင့်"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "ရှာဖွေရန်…"
+ "ရှာဖွေမှုကို ဖယ်ရှားရန်"
+ "ရှာဖွေရန် မေးခွန်း"
+ "ရှာရန်"
+ "ရှာဖွေစရာ အချက်အလက်ကို ပေးပို့ရန်"
+ "အသံဖြင့် ရှာရန်"
+ "နှင့် မျှဝေရန်"
+ "%s ဖြင့် မျှဝေရန်"
+ "လျှော့ပြရန်"
+ "ဖုန်းကိုင်ရန်"
+ "ဗီဒီယို"
+ "ငြင်းပယ်ရန်"
+ "ဖုန်းချရန်"
+ "အဝင်ခေါ်ဆိုမှု"
+ "လက်ရှိခေါ်ဆိုမှု"
+ "အဝင်ခေါ်ဆိုမှုကို စစ်ဆေးနေသည်"
+ ဖွင့်ရန်
+ Google Play ဝန်ဆောင်မှုများကို မဖွင့်သ၍ %1$s သည်အလုပ်လုပ်မည်မဟုတ်ပါ။
+ Google Play ဝန်ဆောင်မှုများ ဖွင့်ရန်
+ ထည့်သွင်းပါ
+ သင့်တက်ဘလက်တွင် Google Play ဝန်ဆောင်မှုများမရှိသောကြောင့် %1$s ကိုဖွင့်၍မရပါ။
+ Google Play ဝန်ဆောင်မှုများရယူရန်
+ Google Play ဝန်ဆောင်မှုများ ရရှိနိုင်သည်
+ Google Play ဝန်ဆောင်မှုများ အမှား
+ %1$s သည် Google Play ဝန်ဆောင်မှုများနှင့် ပြဿနာအနည်းငယ် ရှိနေပါသည်။ ထပ်လုပ်ကြည့်ပါ။
+ Google Play ဝန်ဆောင်မှုများကို သင့်စက်ပစ္စည်းတွင် ပံ့ပိုးမထားသည့်အတွက် ၎င်းမရှိဘဲ %1$s ကို ဖွင့်၍မရပါ။
+ အပ်ဒိတ်
+ Google Play ဝန်ဆောင်မှုများအား အပ်ဒိတ်မလုပ်ပါက %1$s အလုပ်လုပ်မည် မဟုတ်ပါ။
+ Google Play ဝန်ဆောင်မှုများကို အပ်ဒိတ်လုပ်ရန်
+ Google Play ဝန်ဆောင်မှုများကို လက်ရှိအပ်ဒိတ်လုပ်နေသောကြောင့် %1$s ကိုဖွင့်၍ရမည်မဟုတ်ပါ။
+ Google Play ဝန်ဆောင်မှုဗားရှင်းအသစ်များ လိုအပ်နေသည်။ အချိန်အနည်းငယ်အကြာတွင် ၎င်းကိုယ်တိုင်အပ်ဒိတ်လုပ်ပါ လိမ့်မည်။
+ ဖုန်းပေါ်မှာ ဖွင့်ပါ
+ လက်မှတ်ထိုး ဝင်ရန်
+ Google ဖြင့် လက်မှတ်ထိုးဝင်ရေ
+ "လင့်ခ်ကို ကလစ်ဘုတ်သို့ ကူးပြီးပါပြီ"
+ "လင့်ခ်ကို ကူးယူရန်"
+ "ဘရောင်ဇာတွင် ဖွင့်ရန်"
+ "လင့်ခ်ကို မျှဝေရန်"
+ "ရှာဖွေမှု"
+ "၉၉၉+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-nb/values-nb.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-nb/values-nb.xml
new file mode 100644
index 0000000..7ad5758
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-nb/values-nb.xml
@@ -0,0 +1,61 @@
+
+
+ "Naviger hjem"
+ "Gå opp"
+ "Flere alternativer"
+ "Ferdig"
+ "Se alle"
+ "Velg en app"
+ "AV"
+ "PÅ"
+ "Alt+"
+ "Ctrl+"
+ "slett"
+ "enter"
+ "Funksjon+"
+ "Meta+"
+ "Shift+"
+ "mellomrom"
+ "Sym+"
+ "Meny+"
+ "Søk"
+ "Slett søket"
+ "Søkeord"
+ "Søk"
+ "Utfør søket"
+ "Talesøk"
+ "Del med"
+ "Del med %s"
+ "Skjul"
+ "Svar"
+ "Video"
+ "Avvis"
+ "Legg på"
+ "Innkommende anrop"
+ "Pågående samtale"
+ "Filtrerer et innkommende anrop"
+ Aktivér
+ %1$s fungerer ikke med mindre du slår på Google Play-tjenester.
+ Slå på Google Play-tjenester
+ Installer
+ %1$s kan ikke kjøre uten Google Play-tjenester, som ikke er installert på enheten din.
+ Installer Google Play-tjenester
+ Google Play Tjenester-tilgjengelighet
+ Google Play Tjenester-feil
+ %1$s har problemer med Google Play-tjenester. Prøv på nytt.
+ %1$s kan ikke kjøre uten Google Play-tjenester, som ikke støttes av enheten din.
+ Oppdater
+ %1$s kjører ikke med mindre du oppdaterer Google Play Tjenester.
+ Oppdater Google Play-tjenester
+ %1$s kjører ikke uten Google Play-tjenester, som oppdateres akkurat nå.
+ Du må installere en ny versjon av Google Play-tjenester. Appen oppdateres automatisk om en kort stund.
+ Åpne på telefonen
+ Logg på
+ Logg på med Google
+ "Linken er kopiert til utklippstavlen"
+ "Kopiér linken"
+ "Åpne i nettleseren"
+ "Del link"
+ "Søk"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ne/values-ne.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ne/values-ne.xml
new file mode 100644
index 0000000..6987c9f
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ne/values-ne.xml
@@ -0,0 +1,61 @@
+
+
+ "होम पेजमा जानुहोस्"
+ "माथि नेभिगेट गर्नुहोस्"
+ "थप विकल्पहरू"
+ "सम्पन्न भयो"
+ "सबै हेर्नुहोस्"
+ "एउटा एप छान्नुहोस्"
+ "निष्क्रिय"
+ "सक्रिय"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "खोज्नुहोस्…"
+ "क्वेरी खाली गर्नुहोस्"
+ "खोज प्रश्न"
+ "खोज्नुहोस्"
+ "क्वेरी पेस गर्नुहोस्"
+ "आवाजमा आधारित खोजी"
+ "यसमार्फत सेयर गर्नुहोस्"
+ "%s मार्फत सेयर गर्नुहोस्"
+ "संक्षिप्त गर्नुहोस्"
+ "जवाफ दिनुहोस्"
+ "भिडियो"
+ "काट्नुहोस्"
+ "फोन राख्नुहोस्"
+ "आगमन कल"
+ "भइरहेको कल"
+ "आगमन कल जाँचिँदै छ"
+ अन गर्नुहोस्
+ %1$s ले तपाईँले Google Play सेवाहरू सक्षम नगरेसम्म काम गर्दैन।
+ Google Play सेवाहरू सक्षम पार्नुहोस्
+ स्थापना गर्नुहोस्
+ %1$s Google Play services बिना सञ्चालन हुने छैन र तपाईँको यन्त्रमा Google Play services उपलब्ध छैनन्।
+ Google Play सेवाहरू प्राप्त गर्नुहोस्
+ Google Play सेवाको उपलब्धता
+ Google Play सेवाहरूका त्रुटि
+ %1$s लाई Google Play services सँग सहकार्य गर्न समस्या भइरहेको छ। कृपया फेरि प्रयास गर्नुहोस्।
+ %1$s Google Play services बिना सञ्चालन हुने छैन र तपाईँको यन्त्रले Google Play services लाई समर्थन गर्दैन।
+ अपडेट गर्नुहोस्
+ %1$s तपाईंले Google प्ले सेवाहरू अद्यावधिक नगरेसम्म सञ्चालन हुँदैन।
+ Google Play सेवाहरू अपडेट गर्नुहोस्
+ Google Play सेवाहरू %1$s बिना सञ्चालन हुँदैन, जुन हाल अद्यावधिक भइरहेका छन्।
+ Google Play सेवाहरूको नयाँ संस्करण आवश्यक छ। यो आफै छिट्टै नै अद्यावधिक हुनेछ।
+ फोनमा खोल्नुहोस्
+ साइन इन गर्नुहोस्
+ Google मार्फत साइन इन गर्नुहोस्
+ "क्लिपबोर्डमा लिंक कपी गरियो"
+ "लिंक कपी गर्नुहोस्"
+ "ब्राउजरमा खोल्नुहोस्"
+ "लिंक सेयर गर्नुहोस्"
+ "खोज"
+ "९९९+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-night-v8/values-night-v8.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-night-v8/values-night-v8.xml
new file mode 100644
index 0000000..4185030
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-night-v8/values-night-v8.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-nl/values-nl.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-nl/values-nl.xml
new file mode 100644
index 0000000..fb7bc82
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-nl/values-nl.xml
@@ -0,0 +1,61 @@
+
+
+ "Navigeren naar startpositie"
+ "Omhoog navigeren"
+ "Meer opties"
+ "Klaar"
+ "Alles tonen"
+ "Een app selecteren"
+ "UIT"
+ "AAN"
+ "Alt +"
+ "Ctrl +"
+ "Delete"
+ "Enter"
+ "Functie +"
+ "Meta +"
+ "Shift +"
+ "spatie"
+ "Sym +"
+ "Menu +"
+ "Zoeken…"
+ "Zoekopdracht wissen"
+ "Zoekopdracht"
+ "Zoeken"
+ "Zoekopdracht verzenden"
+ "Gesproken zoekopdracht"
+ "Delen met"
+ "Delen met %s"
+ "Samenvouwen"
+ "Beantwoorden"
+ "Video"
+ "Weigeren"
+ "Ophangen"
+ "Inkomend gesprek"
+ "Actief gesprek"
+ "Een inkomend gesprek screenen"
+ Aanzetten
+ %1$s werkt niet, tenzij je Google Play-services aanzet.
+ Google Play-services aanzetten
+ Installeren
+ %1$s kan niet worden uitgevoerd zonder Google Play-services, die je nog niet op je apparaat hebt.
+ Google Play-services ophalen
+ Beschikbaarheid van Google Play-services
+ Fout met Google Play-services
+ %1$s ondervindt problemen met Google Play-services. Probeer het opnieuw.
+ %1$s kan niet worden uitgevoerd zonder Google Play-services, die niet worden ondersteund op je apparaat.
+ Updaten
+ %1$s kan niet worden uitgevoerd, tenzij je Google Play-services updatet.
+ Google Play-services updaten
+ %1$s kan niet worden uitgevoerd zonder Google Play-services, die momenteel worden geüpdatet.
+ Er is een nieuwe versie van Google Play-services vereist. De update wordt binnenkort automatisch uitgevoerd.
+ Openen op telefoon
+ Inloggen
+ Inloggen met Google
+ "Link naar klembord gekopieerd"
+ "Link kopiëren"
+ "Openen in browser"
+ "Link delen"
+ "Zoeken"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-or/values-or.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-or/values-or.xml
new file mode 100644
index 0000000..aeca596
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-or/values-or.xml
@@ -0,0 +1,61 @@
+
+
+ "ହୋମକୁ ନେଭିଗେଟ କରନ୍ତୁ"
+ "ଉପରକୁ ନେଭିଗେଟ୍ କରନ୍ତୁ"
+ "ଅଧିକ ବିକଳ୍ପ"
+ "ହୋଇଗଲା"
+ "ସବୁ ଦେଖନ୍ତୁ"
+ "ଗୋଟିଏ ଆପ୍ ବାଛନ୍ତୁ"
+ "ବନ୍ଦ"
+ "ଚାଲୁ ଅଛି"
+ "Alt+"
+ "Ctrl+"
+ "ଡିଲିଟ କରନ୍ତୁ"
+ "ଏଣ୍ଟର୍"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "ସ୍ପେସ୍"
+ "Sym+"
+ "ମେନୁ"
+ "ସର୍ଚ୍ଚ କରନ୍ତୁ…"
+ "କ୍ୱେରୀ ଖାଲି କରନ୍ତୁ"
+ "ସର୍ଚ୍ଚ କ୍ୱେରୀ"
+ "ସର୍ଚ୍ଚ କରନ୍ତୁ"
+ "କ୍ୱେରୀ ଦାଖଲ କରନ୍ତୁ"
+ "ଭଏସ ସର୍ଚ୍ଚ"
+ "ଏହାଙ୍କ ସହ ସେୟାର୍ କରନ୍ତୁ"
+ "%s ସହ ସେୟାର୍ କରନ୍ତୁ"
+ "ସଂକୁଚିତ କରନ୍ତୁ"
+ "ଉତ୍ତର ଦିଅନ୍ତୁ"
+ "ଭିଡିଓ"
+ "ଅଗ୍ରାହ୍ୟ କର"
+ "ସମାପ୍ତ କରନ୍ତୁ"
+ "ଇନକମିଂ କଲ୍"
+ "ଚାଲିଥିବା କଲ୍"
+ "ଏକ ଇନକମିଂ କଲକୁ ସ୍କ୍ରିନ୍ କରୁଛି"
+ ସକ୍ଷମ କରନ୍ତୁ
+ ଆପଣ Google Play ସେବା ସକ୍ଷମ ନ କରିବା ପର୍ଯ୍ୟନ୍ତ %1$s କାମ କରିବ ନାହିଁ।
+ Google Play ସେବାଗୁଡ଼ିକ ସକ୍ଷମ କରନ୍ତୁ
+ ଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ
+ %1$s ଏହି Google Play ସେବାଗୁଡ଼ିକ ବିନା ଚାଲେ ନାହିଁ, ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ନାହିଁ।
+ Google Play ସେବାଗୁଡ଼ିକ ପ୍ରାପ୍ତ କରନ୍ତୁ
+ Google Play ସେବାଗୁଡ଼ିକର ଉପଲବ୍ଧତା
+ Google Play ସେବା ସମ୍ପର୍କିତ ସମସ୍ୟା
+ %1$sର Google Play ସେବା ସହ ଏକ ସମସ୍ୟା ରହିଛି। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।
+ %1$s ଏହି Google Play ସେବାଗୁଡ଼ିକ ବିନା ଚାଲେ ନାହିଁ, ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ କାମ କରେ ନାହିଁ।
+ ଅପଡେଟ୍ କରନ୍ତୁ
+ ଆପଣ Google Play ସେବା ଅପଡେଟ୍ ନ କରିବା ପର୍ଯ୍ୟନ୍ତ %1$s ଚାଲିବ ନାହିଁ।
+ Google Play ସେବାଗୁଡ଼ିକ ଅପଡେଟ୍ କରନ୍ତୁ
+ Google Play ସେବାଗୁଡ଼ିକ ବିନା %1$s ଚାଲିବ ନାହିଁ, ଯେଉଁଗୁଡ଼ିକ ବର୍ତ୍ତମାନ ଅପଡେଟ୍ ହେଉଛି।
+ Google Play ସେବାଗୁଡ଼ିକର ନୂତନ ଭର୍ସନ୍ ଆବଶ୍ୟକ। ଏହା ନିଜକୁ କିଛି ସମୟ ମଧ୍ୟରେ ଅପଡେଟ୍ କରିବ।
+ ଫୋନ୍ରେ ଖୋଲନ୍ତୁ
+ ସାଇନ୍-ଇନ୍ କରନ୍ତୁ
+ Google ସହ ସାଇନ୍-ଇନ୍ କରନ୍ତୁ
+ "ଲିଙ୍କକୁ କ୍ଲିପ୍ବୋର୍ଡରେ କପି କରାଯାଇଛି"
+ "ଲିଙ୍କ୍ କପି କରନ୍ତୁ"
+ "ବ୍ରାଉଜର୍ରେ ଖୋଲନ୍ତୁ"
+ "ଲିଙ୍କ୍ ସେୟାର୍ କରନ୍ତୁ"
+ "ସର୍ଚ୍ଚ କରନ୍ତୁ"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pa/values-pa.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pa/values-pa.xml
new file mode 100644
index 0000000..45ef981
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pa/values-pa.xml
@@ -0,0 +1,61 @@
+
+
+ "ਹੋਮ \'ਤੇ ਜਾਓ"
+ "ਉੱਪਰ ਜਾਓ"
+ "ਹੋਰ ਵਿਕਲਪ"
+ "ਹੋ ਗਿਆ"
+ "ਸਭ ਦੇਖੋ"
+ "ਇੱਕ ਐਪ ਚੁਣੋ"
+ "ਬੰਦ"
+ "ਚਾਲੂ"
+ "Alt+"
+ "Ctrl+"
+ "ਮਿਟਾਓ"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "ਖੋਜ…"
+ "ਪੁੱਛਗਿੱਛ ਕਲੀਅਰ ਕਰੋ"
+ "ਖੋਜ ਪੁੱਛਗਿੱਛ"
+ "ਖੋਜ"
+ "ਪੁੱਛਗਿੱਛ ਸਪੁਰਦ ਕਰੋ"
+ "ਅਵਾਜ਼ੀ ਖੋਜ"
+ "ਇਸ ਨਾਲ ਸਾਂਝਾ ਕਰੋ"
+ "%s ਨਾਲ ਸਾਂਝਾ ਕਰੋ"
+ "ਸਮੇਟੋ"
+ "ਜਵਾਬ ਦਿਓ"
+ "ਵੀਡੀਓ"
+ "ਅਸਵੀਕਾਰ ਕਰੋ"
+ "ਸਮਾਪਤ ਕਰੋ"
+ "ਇਨਕਮਿੰਗ ਕਾਲ"
+ "ਜਾਰੀ ਕਾਲ"
+ "ਇਨਕਮਿੰਗ ਕਾਲ ਦੀ ਸਕ੍ਰੀਨਿੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
+ ਚਾਲੂ ਕਰੋ
+ %1$s ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ Google Play ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਨਹੀਂ ਕਰਦੇ ਹੋ।
+ Google Play ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ
+ ਸਥਾਪਤ ਕਰੋ
+ %1$s Google Play ਸੇਵਾਵਾਂ ਤੋਂ ਬਿਨਾਂ ਨਹੀਂ ਚੱਲੇਗੀ, ਜੋ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਤੋਂ ਗੁੰਮ ਹਨ।
+ Google Play ਸੇਵਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰੋ
+ Google Play ਸੇਵਾਵਾਂ ਦੀ ਉਪਲਬਧਤਾ
+ Google Play ਸੇਵਾਵਾਂ ਅਸ਼ੁੱਧੀ
+ %1$s ਨੂੰ Google Play ਸੇਵਾਵਾਂ ਨਾਲ ਸਮੱਸਿਆ ਆ ਰਹੀ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
+ %1$s Google Play ਸੇਵਾਵਾਂ ਤੋਂ ਬਿਨਾਂ ਨਹੀਂ ਚੱਲ ਸਕੇਗੀ, ਜੋ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ।
+ ਅੱਪਡੇਟ ਕਰੋ
+ %1$s ਨਹੀਂ ਚੱਲੇਗਾ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ Google Play ਸੇਵਾਵਾਂ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕਰਦੇ ਹੋ।
+ Google Play ਸੇਵਾਵਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ
+ %1$s Google Play ਸੇਵਾਵਾਂ ਤੋਂ ਬਿਨਾਂ ਨਹੀਂ ਚੱਲੇਗਾ, ਜੋ ਵਰਤਮਾਨ ਵਿੱਚ ਅੱਪਡੇਟ ਹੋ ਰਹੀਆਂ ਹਨ।
+ Google Play ਸੇਵਾਵਾਂ ਦੇ ਨਵਾਂ ਸੰਸਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਇਹ ਛੇਤੀ ਹੀ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਅੱਪਡੇਟ ਕਰੇਗਾ।
+ ਫ਼ੋਨ \'ਤੇ ਖੋਲ੍ਹੋ
+ ਸਾਈਨ-ਇਨ ਕਰੋ
+ Google ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰੋ
+ "ਲਿੰਕ ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਹੋ ਗਿਆ"
+ "ਲਿੰਕ ਕਾਪੀ ਕਰੋ"
+ "ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲ੍ਹੋ"
+ "ਲਿੰਕ ਸਾਂਝਾ ਕਰੋ"
+ "ਖੋਜ"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pl/values-pl.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pl/values-pl.xml
new file mode 100644
index 0000000..35eea4b
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pl/values-pl.xml
@@ -0,0 +1,61 @@
+
+
+ "Przejdź na stronę główną"
+ "Przejdź wyżej"
+ "Więcej opcji"
+ "Gotowe"
+ "Pokaż wszystko"
+ "Wybierz aplikację"
+ "WYŁ."
+ "WŁ."
+ "Alt+"
+ "Ctrl+"
+ "Delete"
+ "Enter"
+ "Funkcyjny+"
+ "Meta+"
+ "Shift+"
+ "spacja"
+ "Sym+"
+ "Menu+"
+ "Szukaj…"
+ "Wyczyść zapytanie"
+ "Zapytanie"
+ "Szukaj"
+ "Wyślij zapytanie"
+ "Wyszukiwanie głosowe"
+ "Udostępnij przez:"
+ "Udostępnij przez: %s"
+ "Zwiń"
+ "Odbierz"
+ "Wideo"
+ "Odrzuć"
+ "Rozłącz"
+ "Połączenie przychodzące"
+ "Trwa połączenie"
+ "Filtruję połączenie przychodzące"
+ Włącz
+ Aplikacja %1$s nie będzie działać, jeśli nie włączysz Usług Google Play.
+ Włącz Usługi Google Play
+ Zainstaluj
+ %1$s nie będzie działać, jeśli nie zainstalujesz na urządzeniu Usług Google Play.
+ Pobierz Usługi Google Play
+ Dostępność Usług Google Play
+ Błąd Usług Google Play
+ %1$s ma problem z dostępem do Usług Google Play. Spróbuj jeszcze raz.
+ %1$s nie będzie działać bez Usług Google Play, które nie są obecnie obsługiwane przez urządzenie.
+ Aktualizuj
+ Aplikacja %1$s nie będzie działać, jeśli nie zaktualizujesz Usług Google Play.
+ Zaktualizuj Usługi Google Play
+ Aplikacja %1$s nie będzie działać bez Usług Google Play, które są obecnie aktualizowane.
+ Wymagana jest nowa wersja Usług Google Play. Wkrótce nastąpi automatyczna aktualizacja.
+ Otwórz na telefonie
+ Zaloguj się
+ Zaloguj się przez Google
+ "Link skopiowany do schowka"
+ "Kopiuj link"
+ "Otwórz w przeglądarce"
+ "Udostępnij link"
+ "Szukaj"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-port/values-port.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-port/values-port.xml
new file mode 100644
index 0000000..7a925dc
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-port/values-port.xml
@@ -0,0 +1,4 @@
+
+
+ false
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt-rBR/values-pt-rBR.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt-rBR/values-pt-rBR.xml
new file mode 100644
index 0000000..de4211c
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt-rBR/values-pt-rBR.xml
@@ -0,0 +1,61 @@
+
+
+ "Navegar para a página inicial"
+ "Navegar para cima"
+ "Mais opções"
+ "Concluído"
+ "Ver tudo"
+ "Selecionar um app"
+ "DESATIVADO"
+ "ATIVADO"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "espaço"
+ "Sym+"
+ "Menu+"
+ "Pesquisar…"
+ "Limpar consulta"
+ "Consulta de pesquisa"
+ "Pesquisar"
+ "Enviar consulta"
+ "Pesquisa por voz"
+ "Compartilhar com"
+ "Compartilhar com %s"
+ "Recolher"
+ "Atender"
+ "Vídeo"
+ "Recusar"
+ "Desligar"
+ "Chamada recebida"
+ "Chamada em andamento"
+ "Filtrando uma ligação recebida"
+ Ativar
+ %1$s só funciona com o Google Play Services ativado.
+ Ativar o Google Play Services
+ Instalar
+ O app %1$s não funciona sem o Google Play Services, o qual não está instalado no seu dispositivo.
+ Instalar o Google Play Services
+ Disponibilidade do Google Play Services
+ Erro do Google Play Services
+ O app %1$s está com problemas com o Google Play Services. Tente novamente.
+ O app %1$s não funciona sem o Google Play Services, o qual não é compatível com seu dispositivo.
+ Atualizar
+ %1$s só funciona com uma versão atualizada do Google Play Services.
+ Atualizar o Google Play Services
+ %1$s não funciona sem o Google Play Services, o qual está sendo atualizado no momento.
+ É necessária uma nova versão do Google Play Services. Ele será atualizado em breve.
+ Abrir no smartphone
+ Fazer login
+ Fazer login com o Google
+ "Link copiado para a área de transferência"
+ "Copiar link"
+ "Abrir no navegador"
+ "Compartilhar link"
+ "Pesquisar"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt-rPT/values-pt-rPT.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt-rPT/values-pt-rPT.xml
new file mode 100644
index 0000000..e3faded
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt-rPT/values-pt-rPT.xml
@@ -0,0 +1,61 @@
+
+
+ "Navegar para casa"
+ "Navegar para cima"
+ "Mais opções"
+ "Concluído"
+ "Ver tudo"
+ "Escolher uma app"
+ "DESATIVADO"
+ "ATIVADO"
+ "Alt +"
+ "Ctrl +"
+ "eliminar"
+ "enter"
+ "Função +"
+ "Meta +"
+ "Shift +"
+ "espaço"
+ "Sym +"
+ "Menu +"
+ "Pesquisar…"
+ "Limpar consulta"
+ "Consulta de pesquisa"
+ "Pesquisar"
+ "Enviar consulta"
+ "Pesquisa por voz"
+ "Partilhar com"
+ "Partilhar com a app %s"
+ "Reduzir"
+ "Atender"
+ "Vídeo"
+ "Recusar"
+ "Desligar"
+ "Chamada recebida"
+ "Chamada em curso"
+ "A filtrar uma chamada recebida…"
+ Ativar
+ O %1$s não funciona enquanto não ativar os serviços do Google Play.
+ Ativar serviços do Google Play
+ Instalar
+ O %1$s não é executado sem os Serviços do Google Play, os quais estão em falta no seu dispositivo.
+ Obter serviços do Google Play
+ Disponibilidade Serviços do Google Play
+ Erro dos Serviços do Google Play
+ %1$s está a ter problemas com os Serviços do Google Play. Tente novamente.
+ Não é possível executar o %1$s sem os Serviços do Google Play, os quais não são compatíveis com o seu dispositivo.
+ Atualizar
+ O %1$s não é executado enquanto não atualizar os serviços do Google Play.
+ Atualizar serviços do Google Play
+ O %1$s não é executado sem os serviços do Google Play, os quais estão a ser atualizados.
+ É necessária uma nova versão dos serviços do Google Play. Esta será atualizada automaticamente em breve.
+ Abrir no telemóvel
+ Iniciar sessão
+ Iniciar sessão com o Google
+ "Link copiado para a área de transferência."
+ "Copiar link"
+ "Abrir no navegador"
+ "Partilhar link"
+ "Pesquisar"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt/values-pt.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt/values-pt.xml
new file mode 100644
index 0000000..dd5e0aa
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-pt/values-pt.xml
@@ -0,0 +1,43 @@
+
+
+ "Navegar para a página inicial"
+ "Navegar para cima"
+ "Mais opções"
+ "Concluído"
+ "Ver tudo"
+ "Selecionar um app"
+ "DESATIVADO"
+ "ATIVADO"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "espaço"
+ "Sym+"
+ "Menu+"
+ "Pesquisar…"
+ "Limpar consulta"
+ "Consulta de pesquisa"
+ "Pesquisar"
+ "Enviar consulta"
+ "Pesquisa por voz"
+ "Compartilhar com"
+ "Compartilhar com %s"
+ "Recolher"
+ "Atender"
+ "Vídeo"
+ "Recusar"
+ "Desligar"
+ "Chamada recebida"
+ "Chamada em andamento"
+ "Filtrando uma ligação recebida"
+ "Link copiado para a área de transferência"
+ "Copiar link"
+ "Abrir no navegador"
+ "Compartilhar link"
+ "Pesquisar"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ro/values-ro.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ro/values-ro.xml
new file mode 100644
index 0000000..8ac2675
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ro/values-ro.xml
@@ -0,0 +1,61 @@
+
+
+ "Navighează la ecranul de pornire"
+ "Navighează în sus"
+ "Mai multe opțiuni"
+ "Gata"
+ "Afișează tot"
+ "Alege o aplicație"
+ "DEZACTIVAT"
+ "ACTIVAT"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Meniu+"
+ "Caută…"
+ "Șterge interogarea"
+ "Termen de căutare"
+ "Caută"
+ "Trimite interogarea"
+ "Căutare vocală"
+ "Trimite la"
+ "Trimite folosind %s"
+ "Restrânge"
+ "Răspunde"
+ "Video"
+ "Respinge"
+ "Închide"
+ "Apel primit"
+ "Apel în desfășurare"
+ "Se filtrează un apel primit"
+ Activați
+ %1$s nu va funcționa decât dacă activați serviciile Google Play.
+ Activați serviciile Google Play
+ Instalați
+ %1$s nu va rula fără serviciile Google Play, care lipsesc de pe dispozitivul dvs.
+ Descărcați serviciile Google Play
+ Disponibilitatea serviciilor Google Play
+ Eroare a serviciilor Google Play
+ %1$s întâmpină probleme privind serviciile Google Play. Încercați din nou.
+ %1$s nu va rula fără serviciile Google Play, care nu sunt acceptate de dispozitivul dvs.
+ Actualizați
+ %1$s nu va rula decât dacă actualizați serviciile Google Play.
+ Actualizați serviciile Google Play
+ %1$s nu va rula fără serviciile Google Play, care momentan se actualizează.
+ Este necesară o nouă versiune a serviciilor Google Play. Se vor actualiza automat în curând.
+ Deschideți pe telefon
+ Conectați-vă
+ Conectați-vă cu Google
+ "Linkul a fost copiat în clipboard"
+ "Copiază linkul"
+ "Deschide în browser"
+ "Trimite linkul"
+ "Caută"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ru/values-ru.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ru/values-ru.xml
new file mode 100644
index 0000000..76845f4
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ru/values-ru.xml
@@ -0,0 +1,61 @@
+
+
+ "Перейти на главный экран"
+ "Перейти вверх"
+ "Ещё"
+ "Готово"
+ "Показать все"
+ "Выберите приложение"
+ "ВЫКЛ"
+ "ВКЛ"
+ "Alt +"
+ "Ctrl +"
+ "Delete"
+ "Ввод"
+ "Fn +"
+ "Meta +"
+ "Shift +"
+ "Пробел"
+ "Sym +"
+ "Меню +"
+ "Введите запрос"
+ "Удалить запрос"
+ "Поисковый запрос"
+ "Поиск"
+ "Отправить запрос"
+ "Голосовой поиск"
+ "Поделиться с помощью"
+ "Поделиться с помощью %s"
+ "Свернуть"
+ "Ответить"
+ "Видео"
+ "Отклонить"
+ "Завершить"
+ "Входящий вызов"
+ "Текущий вызов"
+ "Фильтрация входящего вызова"
+ Включить
+ Для работы приложения \"%1$s\" требуется включить сервисы Google Play.
+ Включите сервисы Google Play
+ Установить
+ Для работы приложения \"%1$s\" требуется установить сервисы Google Play.
+ Установите сервисы Google Play
+ Доступность сервисов Google Play
+ Ошибка сервисов Google Play
+ Приложению \"%1$s\" не удается подключиться к сервисам Google Play. Повторите попытку.
+ Для работы с приложением \"%1$s\" требуются сервисы Google Play. Они не поддерживаются на вашем устройстве.
+ Обновить
+ Чтобы запустить приложение \"%1$s\", обновите сервисы Google Play.
+ Обновите сервисы Google Play
+ Сервисы Google Play, необходимые для работы приложения \"%1$s\", в настоящий момент обновляются.
+ Версия сервисов Google Play устарела. Они автоматически обновятся в ближайшее время.
+ Открыть на телефоне
+ Войти
+ Войти через аккаунт Google
+ "Ссылка скопирована в буфер обмена."
+ "Копировать ссылку"
+ "Открыть в браузере"
+ "Отправить ссылку"
+ "Поиск"
+ ">999"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-si/values-si.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-si/values-si.xml
new file mode 100644
index 0000000..24a88f1
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-si/values-si.xml
@@ -0,0 +1,61 @@
+
+
+ "මුල් පිටුවට සංචාලනය කරන්න"
+ "ඉහළට සංචාලනය කරන්න"
+ "තවත් විකල්ප"
+ "කළා"
+ "සියල්ල බලන්න"
+ "යෙදුමක් තෝරන්න"
+ "ක්රියාවිරහිතයි"
+ "ක්රියාත්මකයි"
+ "Alt+"
+ "Ctrl+"
+ "මකන්න"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "සොයන්න..."
+ "විමසුම හිස් කරන්න"
+ "සෙවුම් විමසුම"
+ "සෙවීම"
+ "විමසුම යොමු කරන්න"
+ "හඬ සෙවීම"
+ "සමග බෙදා ගන්න"
+ "%s සමඟ බෙදා ගන්න"
+ "හකුළන්න"
+ "පිළිතුරු දෙ."
+ "වීඩියෝ"
+ "ප්රතික්ෂේප ක"
+ "විසන්ධි කරන්න"
+ "එන ඇමතුම"
+ "කරගෙන යන ඇමතුම"
+ "එන ඇමතුමක් පරීක්ෂා කරන්න"
+ සබල කරන්න
+ ඔබ Google Play සේවා සබල කරන්නේ නම් මිස %1$s වැඩ නොකරනු ඇත.
+ Google Play සේවා සබල කරන්න
+ ස්ථාපනය කරන්න
+ ඔබගේ ටැබ්ලට් පරිගණකයේ නැති Google Play සේවා නොමැතිව %1$s ධාවනය නොවනු ඇත.
+ Google Play සේවා ලබා ගන්න
+ Google Play සේවාවල ලබා ගත හැකි බව
+ Google Play සේවා දෝෂය
+ %1$s හට Google Play සේවා සමගින් ගැටලු ඇත. කරුණාකර නැවත උත්සාහ කරන්න.
+ ඔබගේ උපාංගය මගින් සහාය නොදක්වන, Google Play සේවා නොමැතිව %1$s ධාවනය නොවනු ඇත.
+ යාවත්කාලීන කරන්න
+ Google Play සේවා යාවත්කාලීන කරන්නේ නොමැතිව %1$s ධාවනය නොවේ.
+ Google Play සේවා යාවත්කාලීන කරන්න
+ දැනට යාවත්කාලීන කරමින් ඇති, Google Play සේවා නොමැතිව %1$s ධාවනය නොවනු ඇත.
+ Google Play සේවාවල නව අනුවාදයක් අවශ්යයි. එය මද වේලාවකින් එය විසින්ම යාවත්කාලීන වනු ඇත.
+ දුරකථනය තුළ විවෘත කරන්න
+ පුරන්න
+ Google සමගින් පුරන්න
+ "සබැඳිය පසුරු පුවරුවට පිටපත් කෙරිණි"
+ "සබැඳිය පිටපත් කරන්න"
+ "බ්රව්සරයේ විවෘත කරන්න"
+ "සබැඳිය බෙදා ගන්න"
+ "සෙවීම"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sk/values-sk.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sk/values-sk.xml
new file mode 100644
index 0000000..9905bd2
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sk/values-sk.xml
@@ -0,0 +1,61 @@
+
+
+ "Prejsť na plochu"
+ "Prejsť nahor"
+ "Ďalšie možnosti"
+ "Hotovo"
+ "Zobraziť všetky"
+ "Vybrať aplikáciu"
+ "VYP."
+ "ZAP."
+ "Alt+"
+ "Ctrl+"
+ "odstrániť"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "medzerník"
+ "Sym+"
+ "Menu+"
+ "Vyhľadať…"
+ "Vymazať dopyt"
+ "Vyhľadávací dopyt"
+ "Hľadať"
+ "Odoslať dopyt"
+ "Hlasové vyhľadávanie"
+ "Zdieľať s"
+ "Zdieľať s aplikáciou %s"
+ "Zbaliť"
+ "Prijať"
+ "Video"
+ "Odmietnuť"
+ "Zložiť"
+ "Prichádzajúci hovor"
+ "Prebiehajúci hovor"
+ "Preveruje sa prichádzajúci hovor"
+ Povoliť
+ Aplikácia %1$s bude fungovať až po povolení služieb Google Play.
+ Povoliť služby Google Play
+ Inštalovať
+ Na spustenie aplikácie %1$s sa vyžadujú služby Google Play, ktoré na zariadení nemáte.
+ Inštalovať služby Google Play
+ Dostupnosť služieb Google Play
+ Chyba služieb Google Play
+ Aplikácia %1$s má problémy so službami Google Play. Skúste to znova.
+ Aplikáciu %1$s nebude možné spustiť bez služieb Google Play, ktoré vaše zariadenie nepodporuje.
+ Aktualizovať
+ Aplikáciu %1$s bude možné spustiť až po aktualizácii služieb Google Play.
+ Aktualizácia služieb Google Play
+ Na spustenie aplikácie %1$s sa vyžadujú služby Google Play, ktoré sa momentálne aktualizujú.
+ Vyžaduje sa nová verzia služieb Google Play. Aktualizujú sa automaticky v najbližšom čase.
+ Otvoriť v telefóne
+ Prihlásiť sa
+ Prihlásiť sa do účtu Google
+ "Odkaz bol skopírovaný do schránky"
+ "Kopírovať odkaz"
+ "Otvoriť v prehliadači"
+ "Zdieľať odkaz"
+ "Hľadať"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sl/values-sl.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sl/values-sl.xml
new file mode 100644
index 0000000..ab48818
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sl/values-sl.xml
@@ -0,0 +1,61 @@
+
+
+ "Krmarjenje na začetek"
+ "Pomik navzgor"
+ "Več možnosti"
+ "Končano"
+ "Pokaži vse"
+ "Izbira aplikacije"
+ "IZKLOP"
+ "VKLOP"
+ "Alt +"
+ "Ctrl +"
+ "delete"
+ "enter"
+ "Fn +"
+ "Meta +"
+ "Shift +"
+ "preslednica"
+ "Sym +"
+ "Meni +"
+ "Iskanje …"
+ "Izbris poizvedbe"
+ "Iskalna poizvedba"
+ "Iskanje"
+ "Pošiljanje poizvedbe"
+ "Glasovno iskanje"
+ "Deljenje z:"
+ "Deljenje z drugimi prek aplikacije %s"
+ "Strnitev"
+ "Sprejmi"
+ "Video"
+ "Zavrni"
+ "Prekini klic"
+ "Dohodni klic"
+ "Aktivni klic"
+ "Preverjanje dohodnega klica"
+ Omogoči
+ Aplikacija %1$s ne bo delovala, če ne omogočite storitev Google Play.
+ Omogočanje storitev Google Play
+ Namesti
+ Aplikacija %1$s ne deluje brez storitev Google Play, vendar teh ni v napravi.
+ Namestitev storitev Google Play
+ Dostopnost storitev Google Play
+ Napaka storitev Google Play
+ Aplikacija %1$s ima težave s storitvami Google Play. Poskusite znova.
+ Aplikacija %1$s ne deluje brez storitev Google Play, ki jih vaša naprava ne podpira.
+ Posodobi
+ Aplikacija %1$s ne bo delovala, če ne posodobite storitev Google Play.
+ Posodobitev storitev Google Play
+ Aplikacija %1$s ne deluje brez storitev Google Play, ki se trenutno posodabljajo.
+ Potrebujete novo različico storitev Google Play. V kratkem se bodo posodobile.
+ Odpiranje v telefonu
+ Prijava
+ Prijava z računom Google
+ "Povezava je kopirana v odložišče"
+ "Kopiraj povezavo"
+ "Odpri v brskalniku"
+ "Deli povezavo"
+ "Iskanje"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sq/values-sq.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sq/values-sq.xml
new file mode 100644
index 0000000..680a05b
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sq/values-sq.xml
@@ -0,0 +1,61 @@
+
+
+ "Orientohu për në shtëpi"
+ "Ngjitu lart"
+ "Opsione të tjera"
+ "U krye"
+ "Shfaq çdo gjë"
+ "Zgjidh një aplikacion"
+ "JOAKTIV"
+ "AKTIV"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Funksioni+"
+ "Meta+"
+ "Shift+"
+ "hapësirë"
+ "Sym+"
+ "Menyja+"
+ "Kërko…"
+ "Pastro pyetjen"
+ "Kërko pyetjen"
+ "Kërko"
+ "Dërgo pyetjen"
+ "Kërkim me zë"
+ "Ndaje me"
+ "Ndaje me %s"
+ "Palos"
+ "Përgjigju"
+ "Video"
+ "Refuzo"
+ "Mbyll"
+ "Telefonatë hyrëse"
+ "Telefonatë në vazhdim"
+ "Po filtron një telefonatë hyrëse"
+ Aktivizo
+ %1$s nuk do të funksionojë nëse nuk aktivizon shërbimet e \"Luaj me Google\".
+ Aktivizo shërbimet e \"Luaj me Google\"
+ Instalo
+ %1$s nuk do të funksionojë pa shërbimet e Google Play, të cilat mungojnë në pajisjen tënde.
+ Merr shërbimet e \"Luaj me Google\"
+ Disponueshmëria e shërbimeve të Google Play
+ Gabim në shërbimet e \"Luaj me Google\"
+ %1$s ka probleme me shërbimet e Google Play. Provo sërish.
+ %1$s nuk do të funksionojë pa shërbimet e Google Play, të cilat nuk mbështeten nga pajisja jote.
+ Përditëso
+ %1$s nuk do të funksionojë nëse nuk përditëson shërbimet e \"Luaj me Google\".
+ Përditëso shërbimet e \"Luaj me Google\"
+ %1$s nuk do të funksionojë pa shërbimet e Google Play, të cilat po përditësohen aktualisht.
+ Nevojitet një version i ri i shërbimeve të \"Luaj me Google\". Ai do të përditësohet automatikisht së shpejti.
+ Hape në telefon
+ Identifikohu
+ Identifikohu me Google
+ "Lidhja u kopjua në kujtesën e fragmenteve"
+ "Kopjo lidhjen"
+ "Hape në shfletues"
+ "Ndaj lidhjen"
+ "Kërko"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sr/values-sr.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sr/values-sr.xml
new file mode 100644
index 0000000..5625d53
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sr/values-sr.xml
@@ -0,0 +1,61 @@
+
+
+ "Идите на почетну"
+ "Идите нагоре"
+ "Још опција"
+ "Готово"
+ "Прикажи све"
+ "Изаберите апликацију"
+ "ИСКЉУЧЕНО"
+ "УКЉУЧЕНО"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "тастер за размак"
+ "Sym+"
+ "Menu+"
+ "Претражите…"
+ "Обришите упит"
+ "Претражите упит"
+ "Претражите"
+ "Пошаљите упит"
+ "Гласовна претрага"
+ "Делите помоћу"
+ "Делите помоћу апликације %s"
+ "Скупи"
+ "Одговори"
+ "Видео"
+ "Одбиј"
+ "Прекини везу"
+ "Долазни позив"
+ "Позив је у току"
+ "Проверава се долазни позив"
+ Омогући
+ %1$s неће функционисати ако не омогућите Google Play услуге.
+ Омогућите Google Play услуге
+ Инсталирај
+ %1$s не може да се покрене без Google Play услуга, које нису инсталиране на уређају.
+ Преузмите Google Play услуге
+ Доступност Google Play услуга
+ Грешка Google Play услуга
+ %1$s има проблема са Google Play услугама. Пробајте поново.
+ %1$s не може да се покрене без Google Play услуга, које уређај не подржава.
+ Ажурирај
+ %1$s не може да се покрене ако не ажурирате Google Play услуге.
+ Ажурирајте Google Play услуге
+ %1$s не може да се покрене без Google Play услуга, које се тренутно ажурирају.
+ Потребна је нова верзија Google Play услуга. Ускоро ће се ажурирати.
+ Отвори на телефону
+ Пријави ме
+ Пријави ме на Google
+ "Линк је копиран у привремену меморију"
+ "Копирај линк"
+ "Отвори у прегледачу"
+ "Дели линк"
+ "Претражите"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sv/values-sv.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sv/values-sv.xml
new file mode 100644
index 0000000..c8090c4
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sv/values-sv.xml
@@ -0,0 +1,61 @@
+
+
+ "Navigera hem"
+ "Navigera uppåt"
+ "Fler alternativ"
+ "Klar"
+ "Se alla"
+ "Välj en app"
+ "AV"
+ "PÅ"
+ "Alt + "
+ "Ctrl + "
+ "delete"
+ "retur"
+ "Funktion + "
+ "Meta + "
+ "Skift + "
+ "blanksteg"
+ "Symbol + "
+ "Meny + "
+ "Sök …"
+ "Ta bort frågan"
+ "Sökfråga"
+ "Sök"
+ "Skicka fråga"
+ "Röstsökning"
+ "Dela med"
+ "Dela med %s"
+ "Komprimera"
+ "Svara"
+ "Video"
+ "Avvisa"
+ "Lägg på"
+ "Inkommande samtal"
+ "Pågående samtal"
+ "Ett inkommande samtal filtreras"
+ Aktivera
+ %1$s fungerar inte om du inte aktiverar Google Play-tjänster.
+ Aktivera Google Play-tjänster
+ Installera
+ %1$s kan inte köras utan Google Play-tjänsterna, som saknas på enheten.
+ Hämta Google Play-tjänster
+ Tillgänglighet för Google Plays tjänster
+ Fel på Google Play-tjänster
+ Det har uppstått ett fel mellan %1$s och Google Play-tjänsterna. Försök igen.
+ %1$s fungerar inte utan Google Play-tjänsterna, som inte stöds på enheten.
+ Uppdatera
+ %1$s kan inte köras om du inte uppdaterar Google Play-tjänsterna.
+ Uppdatera Google Play-tjänster
+ %1$s kan inte köras utan Google Play-tjänster, och dessa uppdateras för närvarande.
+ En ny version av Google Play-tjänster krävs. Den uppdateras automatiskt inom kort.
+ Öppna på mobilen
+ Logga in
+ Logga in med Google
+ "Länk kopierad till Urklipp"
+ "Kopiera länk"
+ "Öppna i webbläsaren"
+ "Dela länk"
+ "Sök"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sw/values-sw.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sw/values-sw.xml
new file mode 100644
index 0000000..5197f3c
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sw/values-sw.xml
@@ -0,0 +1,61 @@
+
+
+ "Nenda mwanzo"
+ "Sogeza juu"
+ "Chaguo zaidi"
+ "Nimemaliza"
+ "Angalia zote"
+ "Chagua programu"
+ "IMEZIMWA"
+ "IMEWASHWA"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "Tafuta…"
+ "Futa hoja"
+ "Hoja ya utafutaji"
+ "Tafuta"
+ "Wasilisha hoja"
+ "Kutafuta kwa kutamka"
+ "Shiriki na"
+ "Shiriki ukitumia %s"
+ "Kunja"
+ "Jibu"
+ "Video"
+ "Kataa"
+ "Kata simu"
+ "Simu uliyopigiwa"
+ "Simu inayoendelea"
+ "Inachuja simu unayopigiwa"
+ Washa
+ %1$s haitafanya kazi isipokuwa uwashe huduma za Google Play.
+ Washa huduma za Google Play
+ Sakinisha
+ %1$s haitafanya kazi bila huduma za Google Play. Huduma hizi hazipatikani kwenye kifaa chako.
+ Pata huduma za Google Play
+ Upatikanaji wa huduma za Google Play
+ Hitilafu kwenye huduma za Google Play
+ %1$s inakumbwa na hitilafu ya huduma za Google Play. Tafadhali jaribu tena.
+ %1$s haitafanya kazi bila huduma za Google Play. Huduma hizi hazitumiki kwenye kifaa chako.
+ Sasisha
+ %1$s haitafanya kazi hadi usasishe huduma za Google Play.
+ Sasisha huduma za Google Play
+ %1$s haitafanya kazi bila huduma za Google Play. Huduma hizi zinasasishwa sasa.
+ Toleo jipya la huduma za Google Play linahitajika. Litajisasisha baada ya muda mfupi.
+ Fungua kwenye simu
+ Ingia katika akaunti
+ Ingia katika akaunti ukitumia Google
+ "Imenakili kiungo kwenye ubao wa kunakili"
+ "Nakili kiungo"
+ "Fungua katika kivinjari"
+ "Shiriki kiungo"
+ "Tafuta"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sw600dp-v13/values-sw600dp-v13.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sw600dp-v13/values-sw600dp-v13.xml
new file mode 100644
index 0000000..be7c95f
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-sw600dp-v13/values-sw600dp-v13.xml
@@ -0,0 +1,11 @@
+
+
+ 24dp
+ 80dp
+ 64dp
+ 8dp
+ 8dp
+ 580dp
+ 16dp
+ 20dp
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ta/values-ta.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ta/values-ta.xml
new file mode 100644
index 0000000..7707153
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ta/values-ta.xml
@@ -0,0 +1,61 @@
+
+
+ "முகப்பிற்குச் செல்லும்"
+ "மேலே செல்லும்"
+ "மேலும் விருப்பங்கள்"
+ "முடிந்தது"
+ "அனைத்தையும் காட்டு"
+ "ஆப்ஸைத் தேர்வுசெய்க"
+ "ஆஃப்"
+ "ஆன்"
+ "Alt மற்றும்"
+ "Ctrl மற்றும்"
+ "delete"
+ "enter"
+ "Function மற்றும்"
+ "Meta மற்றும்"
+ "Shift மற்றும்"
+ "space"
+ "Sym மற்றும்"
+ "Menu மற்றும்"
+ "தேடுக…"
+ "வினவலை அழிக்கும்"
+ "தேடல் வினவல்"
+ "தேடும்"
+ "வினவலைச் சமர்ப்பிக்கும்"
+ "குரல் தேடல்"
+ "இதில் பகிர்"
+ "%s மூலம் பகிர்"
+ "சுருக்கும்"
+ "பதிலளி"
+ "வீடியோ"
+ "நிராகரி"
+ "துண்டி"
+ "உள்வரும் அழைப்பு"
+ "செயலில் இருக்கும் அழைப்பு"
+ "உள்வரும் அழைப்பை மதிப்பாய்வு செய்கிறது"
+ இயக்கு
+ Google Play சேவைகளை இயக்கினால் மட்டுமே, %1$s செயல்படும்.
+ Google Play சேவைகளை இயக்கவும்
+ நிறுவு
+ Google Play சேவைகள் இருந்தால் மட்டுமே, %1$s இயங்கும். அவை உங்கள் சாதனத்தில் இல்லை.
+ Google Play சேவைகளைப் பெறவும்
+ கிடைக்கும் Google Play சேவைகள்
+ Google Play சேவைகள் பிழை
+ Google Play சேவைகளில் சிக்கல் ஏற்பட்டதால், %1$s ஆப்ஸை அணுக முடியவில்லை. மீண்டும் முயலவும்.
+ Google Play சேவைகள் இருந்தால் மட்டுமே %1$s ஆப்ஸ் இயங்கும். ஆனால், உங்கள் சாதனத்தில் அவை ஆதரிக்கப்படவில்லை.
+ புதுப்பி
+ Google Play சேவைகளை இயக்கினால் மட்டுமே, %1$s செயல்படும்.
+ Google Play சேவைகளைப் புதுப்பிக்கவும்
+ தற்போது புதுப்பிக்கப்படும், Google Play சேவைகள் இருந்தால் மட்டுமே, %1$s செயல்படும்.
+ Google Play சேவைகளின் புதிய பதிப்பு தேவை. அது விரைவில் தானாகவே புதுப்பிக்கப்படும்.
+ மொபைலில் திற
+ உள்நுழைக
+ Google மூலம் உள்நுழைக
+ "கிளிப்-போர்டுக்கு இணைப்பு நகலெடுக்கப்பட்டது"
+ "இணைப்பை நகலெடு"
+ "உலாவியில் திற"
+ "இணைப்பைப் பகிர்"
+ "தேடல்"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-te/values-te.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-te/values-te.xml
new file mode 100644
index 0000000..5463e67
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-te/values-te.xml
@@ -0,0 +1,61 @@
+
+
+ "హోమ్కు నావిగేట్ చేస్తుంది"
+ "పైకి నావిగేట్ చేస్తుంది"
+ "మరిన్ని ఆప్షన్లు"
+ "పూర్తయింది"
+ "అన్నీ చూడండి"
+ "యాప్ను ఎంచుకోండి"
+ "ఆఫ్"
+ "ఆన్"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "స్పేస్"
+ "Sym+"
+ "Menu+"
+ "సెర్చ్ చేయండి…"
+ "ప్రశ్నను తీసివేస్తుంది"
+ "సెర్చ్ క్వెరీ"
+ "సెర్చ్"
+ "ప్రశ్నని సమర్పిస్తుంది"
+ "వాయిస్ సెర్చ్"
+ "వీరితో షేర్ చేస్తుంది"
+ "%sతో షేర్ చేస్తుంది"
+ "కుదిస్తుంది"
+ "పికప్ చేయండి"
+ "వీడియో కాల్"
+ "కట్ చేయండి"
+ "ముగించండి"
+ "ఇన్కమింగ్ కాల్"
+ "కాల్ కొనసాగుతోంది"
+ "ఇన్కమింగ్ కాల్ను స్క్రీన్ చేయండి"
+ ప్రారంభించు
+ మీరు Google Play సేవలను ప్రారంభిస్తే మినహా %1$s పని చేయదు.
+ Google Play సేవలను ప్రారంభించండి
+ ఇన్స్టాల్ చేయి
+ %1$s Google Play సేవలు లేకుండా అమలు కాదు, ఆ సేవలు మీ పరికరంలో లేవు.
+ Google Play సేవలను పొందండి
+ Google Play సేవల లభ్యత
+ Google Play సేవల ఎర్రర్
+ %1$s Google Play సేవలతో సమస్య కలిగి ఉంది. దయచేసి మళ్లీ ప్రయత్నించండి.
+ %1$s Google Play సేవలు లేకుండా అమలు కాదు, ఈ సేవలకు మీ పరికరంలో మద్దతు లేదు.
+ అప్డేట్ చేయి
+ మీరు Google Play సేవలను నవీకరిస్తే మినహా %1$s అమలు కాదు.
+ Google Play సేవలను అప్డేట్ చేయండి
+ %1$s Google Play సేవలు లేకుండా అమలు కాదు, ఆ సేవలు ప్రస్తుతం నవీకరించబడుతున్నాయి.
+ కొత్త Google Play సేవల వెర్షన్ అవసరం. అది కొద్ది సేపట్లో దానంతట అదే అప్డేట్ చేయబడుతుంది.
+ ఫోన్లో తెరువు
+ సైన్ ఇన్ చేయండి
+ Googleతో సైన్ ఇన్ చేయండి
+ "క్లిప్బోర్డ్కు లింక్ కాపీ చేయబడింది"
+ "లింక్ను కాపీ చేయండి"
+ "బ్రౌజర్లో తెరువు"
+ "లింక్ను షేర్ చేయండి"
+ "సెర్చ్"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-th/values-th.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-th/values-th.xml
new file mode 100644
index 0000000..7ed9f35
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-th/values-th.xml
@@ -0,0 +1,61 @@
+
+
+ "นำทางไปหน้าแรก"
+ "กลับ"
+ "ตัวเลือกอื่น"
+ "เสร็จ"
+ "ดูทั้งหมด"
+ "เลือกแอป"
+ "ปิด"
+ "เปิด"
+ "Alt+"
+ "Ctrl+"
+ "ลบ"
+ "Enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "Space"
+ "Sym+"
+ "เมนู+"
+ "ค้นหา…"
+ "ล้างคำค้นหา"
+ "คำค้นหา"
+ "ค้นหา"
+ "ส่งคำค้นหา"
+ "ค้นหาด้วยเสียง"
+ "แชร์กับ"
+ "แชร์ทาง %s"
+ "ยุบ"
+ "รับสาย"
+ "วิดีโอ"
+ "ปฏิเสธ"
+ "วางสาย"
+ "สายเรียกเข้า"
+ "สายที่สนทนาอยู่"
+ "กำลังสกรีนสายเรียกเข้า"
+ เปิดใช้
+ %1$s จะไม่ทำงานจนกว่าคุณจะเปิดใช้บริการ Google Play
+ เปิดใช้บริการ Google Play
+ ติดตั้ง
+ %1$s จะไม่ทำงานหากไม่มีบริการ Google Play ซี่งไม่มีในอุปกรณ์ของคุณ
+ ติดตั้งบริการ Google Play
+ ความพร้อมใช้งานของบริการ Google Play
+ ข้อผิดพลาดของบริการ Google Play
+ %1$s มีปัญหาเกี่ยวกับบริการของ Google Play โปรดลองอีกครั้ง
+ %1$s จะไม่ทำงานหากไม่มีบริการ Google Play ซึ่งอุปกรณ์ของคุณไม่สนับสนุน
+ อัปเดต
+ %1$s จะไม่ทำงานจนกว่าคุณจะอัปเดตบริการ Google Play
+ อัปเดตบริการ Google Play
+ %1$s จะไม่ทำงานหากไม่มีบริการ Google Play ซึ่งกำลังอัปเดตอยู่ในขณะนี้
+ จำเป็นต้องใช้บริการ Google Play เวอร์ชันใหม่ ซึ่งจะอัปเดตอัตโนมัติในอีกไม่ช้า
+ เปิดบนโทรศัพท์
+ ลงชื่อเข้าใช้
+ ลงชื่อเข้าใช้ด้วย Google
+ "คัดลอกลิงก์ไปยังคลิปบอร์ดแล้ว"
+ "คัดลอกลิงก์"
+ "เปิดในเบราว์เซอร์"
+ "แชร์ลิงก์"
+ "ค้นหา"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-tl/values-tl.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-tl/values-tl.xml
new file mode 100644
index 0000000..841e143
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-tl/values-tl.xml
@@ -0,0 +1,61 @@
+
+
+ "Mag-navigate sa home"
+ "Mag-navigate pataas"
+ "Higit pang opsyon"
+ "Tapos na"
+ "Tingnan lahat"
+ "Pumili ng app"
+ "I-OFF"
+ "I-ON"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "Maghanap…"
+ "I-clear ang query"
+ "Query sa paghahanap"
+ "Maghanap"
+ "Isumite ang query"
+ "Paghahanap gamit ang boses"
+ "Ibahagi sa/kay"
+ "Ibahagi gamit ang %s"
+ "I-collapse"
+ "Sagutin"
+ "Video"
+ "Tanggihan"
+ "Ibaba"
+ "Papasok na tawag"
+ "Kasalukuyang tawag"
+ "Nagsi-screen ng papasok na tawag"
+ I-enable
+ Hindi gagana ang %1$s maliban kung ie-enable mo ang mga serbisyo ng Google Play.
+ I-enable ang mga serbisyo ng Google Play
+ I-install
+ Hindi gagana ang %1$s nang wala ang mga serbisyo ng Google Play na wala sa iyong device.
+ Kunin ang mga serbisyo ng Google Play
+ Availability ng serbisyo ng Google Play
+ Error sa Mga Serbisyo ng Google Play
+ Nagkakaproblema ang %1$s sa mga serbisyo ng Google Play. Pakisubukan ulit.
+ Hindi gagana ang %1$s nang wala ang mga serbisyo ng Google Play, na hindi nasusuportahan ng iyong device.
+ I-update
+ Hindi gagana ang %1$s maliban kung i-a-update mo ang mga serbisyo ng Google Play.
+ I-update ang mga serbisyo ng Google Play
+ Hindi gagana ang %1$s nang wala ang mga serbisyo ng Google Play na kasalukuyang ina-update.
+ Kailangan ang bagong bersyon ng mga serbisyo ng Google Play. Mag-a-update itong mag-isa sa ilang sandali.
+ Buksan sa telepono
+ Mag-sign in
+ Mag-sign in sa Google
+ "Nakopya sa clipboard ang link"
+ "Kopyahin ang link"
+ "Buksan sa browser"
+ "Ibahagi ang link"
+ "Maghanap"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-tr/values-tr.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-tr/values-tr.xml
new file mode 100644
index 0000000..f31123f
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-tr/values-tr.xml
@@ -0,0 +1,61 @@
+
+
+ "Eve gidiş yolunu göster"
+ "Yukarı git"
+ "Diğer seçenekler"
+ "Bitti"
+ "Tümünü göster"
+ "Bir uygulama seçin"
+ "KAPAT"
+ "AÇ"
+ "Alt+"
+ "Ctrl+"
+ "sil"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Üst Karakter+"
+ "boşluk"
+ "Sym+"
+ "Menü+"
+ "Ara…"
+ "Sorguyu temizle"
+ "Arama sorgusu"
+ "Ara"
+ "Sorguyu gönder"
+ "Sesli arama"
+ "Şununla paylaş:"
+ "%s ile paylaş"
+ "Daralt"
+ "Yanıtla"
+ "Video"
+ "Reddet"
+ "Kapat"
+ "Gelen arama"
+ "Devam eden arama"
+ "Gelen arama süzülüyor"
+ Etkinleştir
+ Google Play hizmetlerini etkinleştirmezseniz %1$s çalışmaz.
+ Google Play hizmetlerini etkinleştirin
+ Yükle
+ %1$s, şu anda cihazınızda bulunmayan Google Play hizmetleri olmadan çalışmaz.
+ Google Play hizmetlerini edinin
+ Google Play hizmetlerinin kullanılabilirliği
+ Google Play Hizmetleri hatası
+ %1$s, Google Play hizmetleriyle ilgili sorun yaşıyor. Lütfen tekrar deneyin.
+ %1$s, Google Play hizmetleri olmadan çalışmaz ve bu hizmetler cihazınız tarafından desteklenmiyor.
+ Güncelle
+ Google Play hizmetlerini güncellemezseniz %1$s çalışmayacak.
+ Google Play hizmetlerini güncelleyin
+ %1$s, şu anda güncellenmekte olan Google Play hizmetleri olmadan çalışmaz.
+ Google Play hizmetlerinin yeni sürümü gerekiyor. Kendisini kısa süre içinde güncelleyecektir.
+ Telefonda aç
+ Oturum aç
+ Google\'da oturum aç
+ "Bağlantı panoya kopyalandı"
+ "Bağlantıyı kopyala"
+ "Tarayıcıda aç"
+ "Bağlantıyı paylaş"
+ "Ara"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-uk/values-uk.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-uk/values-uk.xml
new file mode 100644
index 0000000..a1b9b48
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-uk/values-uk.xml
@@ -0,0 +1,61 @@
+
+
+ "Перейти на головну"
+ "Перейти вгору"
+ "Більше опцій"
+ "Готово"
+ "Показати всі"
+ "Вибрати програму"
+ "ВИМКНЕНО"
+ "УВІМКНЕНО"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "пробіл"
+ "Sym+"
+ "Menu+"
+ "Введіть пошуковий запит…"
+ "Очистити запит"
+ "Пошуковий запит"
+ "Пошук"
+ "Наіслати запит"
+ "Голосовий пошук"
+ "Поділитися:"
+ "Поділитися через додаток %s"
+ "Згорнути"
+ "Відповісти"
+ "Відео"
+ "Відхилити"
+ "Завершити"
+ "Вхідний виклик"
+ "Активний виклик"
+ "Вхідний виклик (Фільтр)"
+ Увімкнути
+ Додаток %1$s не працюватиме, якщо не ввімкнути сервіси Google Play.
+ Увімкнути сервіси Google Play
+ Установити
+ Додаток %1$s не працюватиме без сервісів Google Play, яких немає на вашому пристрої.
+ Установити сервіси Google Play
+ Доступність сервісів Google Play
+ Помилка сервісів Google Play
+ У додатку %1$s виникла проблема із сервісами Google Play. Повторіть спробу.
+ Додаток %1$s не працюватиме без сервісів Google Play, які не підтримуються на вашому пристрої.
+ Оновити
+ Додаток %1$s не працюватиме, якщо не оновити сервіси Google Play.
+ Оновіть сервіси Google Play
+ Додаток %1$s не працюватиме без сервісів Google Play, які зараз оновлюються.
+ Потрібна нова версія сервісів Google Play. Вони невдовзі оновляться.
+ Відкрити на телефоні
+ Увійти
+ Увійти в облік. запис Google
+ "Посилання скопійовано в буфер обміну"
+ "Копіювати посилання"
+ "Відкрити у вебпереглядачі"
+ "Надіслати посилання"
+ "Пошук"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ur/values-ur.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ur/values-ur.xml
new file mode 100644
index 0000000..fc8dd1b
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-ur/values-ur.xml
@@ -0,0 +1,61 @@
+
+
+ "گھر کی طرف نیویگیٹ کریں"
+ "اوپر نیویگیٹ کریں"
+ "مزید اختیارات"
+ "ہو گیا"
+ "سبھی دیکھیں"
+ "ایک ایپ منتخب کریں"
+ "آف"
+ "آن"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "تلاش کریں…"
+ "استفسار صاف کریں"
+ "تلاش کا استفسار"
+ "تلاش کریں"
+ "استفسار جمع کرائیں"
+ "صوتی تلاش"
+ "اس کے ساتھ اشتراک کریں"
+ "%s کے ساتھ اشتراک کریں"
+ "سکیڑیں"
+ "جواب دیں"
+ "ویڈیو"
+ "مسترد کریں"
+ "منقطع کر دیں"
+ "اِن کمنگ کال"
+ "جاری کال"
+ "اِن کمنگ کال کی اسکریننگ"
+ فعال کریں
+ جب تک آپ Google Play سروسز فعال نہیں کر لیتے، %1$s کام نہیں کرے گی۔
+ Google Play سروسز فعال کریں
+ انسٹال کریں
+ %1$s Google Play سروسز کے بغیر نہیں چلے گی، جو آپ کے آلہ سے غائب ہیں۔
+ Google Play سروسز حاصل کریں
+ Google Play سروسز کی دستیابی
+ Google Play سروسز کی خرابی
+ %1$s کو Google Play سروسز کے ساتھ مسئلہ پیش آ رہا ہے۔ براہ کرم دوبارہ کوشش کریں۔
+ %1$s Google Play سروسز کے بغیر نہیں چلے گی، جن کی آپ کا آلہ معاونت نہیں کرتا۔
+ اپ ڈیٹ کریں
+ جب تک آپ Google Play سروسز اپ ڈیٹ نہیں کر لیتے ہیں %1$s تب تک نہیں چلے گی۔
+ Google Play سروسز اپ ڈیٹ کریں
+ %1$s Google Play سروسز کے بغیر نہیں چلے گی، جو فی الحال اپ ڈیٹ ہو رہی ہیں۔
+ Google Play سروسز کے نئے ورژن کی ضرورت ہے۔ یہ تھوڑی دیر میں خود ہی اپنے آپ کو اپ ڈیٹ کر لے گا۔
+ فون پر کھولیں
+ سائن ان کریں
+ Google کے ساتھ سائن ان کریں
+ "لنک کلپ بورڈ پر کاپی ہو گیا"
+ "لنک کاپی کریں"
+ "براؤزر میں کھولیں"
+ "لنک کا اشتراک کریں"
+ "تلاش کریں"
+ "+999"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-uz/values-uz.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-uz/values-uz.xml
new file mode 100644
index 0000000..840cda3
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-uz/values-uz.xml
@@ -0,0 +1,61 @@
+
+
+ "Boshiga o‘tish"
+ "Yopish"
+ "Yana"
+ "OK"
+ "Hammasi"
+ "Ilovani tanlang"
+ "YOQILMAGAN"
+ "YONIQ"
+ "Alt+"
+ "Ctrl+"
+ "Delete"
+ "Enter"
+ "Fn+"
+ "Meta+"
+ "Shift+"
+ "Probel"
+ "Sym+"
+ "Menyu+"
+ "Qidirish…"
+ "So‘rovni o‘chirish"
+ "Qidiruv so‘rovi"
+ "Qidiruv"
+ "So‘rov yaratish"
+ "Ovozli qidiruv"
+ "Ulashish"
+ "%s orqali ulashish"
+ "Yig‘ish"
+ "Javob berish"
+ "Video"
+ "Rad etish"
+ "Tugatish"
+ "Kiruvchi chaqiruv"
+ "Joriy chaqiruv"
+ "Kiruvchi chaqiruvni filtrlash"
+ Yoqish
+ Google Play xizmatlari yoqilmaguncha, %1$s ishlamaydi.
+ Google Play xizmatlarini yoqish
+ O‘rnatish
+ %1$s ishlashi uchun qurilmangizda Google Play xizmatlarini o‘rnatish lozim.
+ Google Play xizmatlarini o‘rnatish
+ Google Play xizmatlarining mavjudligi
+ Google Play xizmatlari xatosi
+ %1$s ilovasini Google Play xizmatlariga ulab bo‘lmadi. Qaytadan urinib ko‘ring.
+ %1$s ilovasi Google Play xizmatlarisiz ishlamaydi, biroq qurilmangiz ularni qo‘llab-quvvatlamaydi.
+ Yangilash
+ Google Play xizmatlari yangilanmaguncha, %1$s ishga tushmaydi.
+ Google Play xizmatlarini yangilash
+ %1$s ilovasining ishlashi uchun zarur Google Play xizmatlari hozirda yangilanmoqda.
+ Google Play xizmatlarining yangi versiyasi zarur. U o‘zini qisqa vaqt ichida yangilaydi.
+ Telefonda ochish
+ Kirish
+ Google orqali kirish
+ "Havoladan vaqtinchalik xotiraga nusxa olindi"
+ "Havoladan nusxa olish"
+ "Brauzerda ochish"
+ "Havolani ulashish"
+ "Qidiruv"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v16/values-v16.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v16/values-v16.xml
new file mode 100644
index 0000000..3ba0ed0
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v16/values-v16.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v17/values-v17.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v17/values-v17.xml
new file mode 100644
index 0000000..f85a197
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v17/values-v17.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v18/values-v18.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v18/values-v18.xml
new file mode 100644
index 0000000..7dad77f
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v18/values-v18.xml
@@ -0,0 +1,4 @@
+
+
+ 0px
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v21/values-v21.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v21/values-v21.xml
new file mode 100644
index 0000000..9ee03e1
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v21/values-v21.xml
@@ -0,0 +1,277 @@
+
+
+ @color/androidx_core_secondary_text_default_material_light
+ 0dp
+ 0dp
+ 12dp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v22/values-v22.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v22/values-v22.xml
new file mode 100644
index 0000000..1ad118e
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v22/values-v22.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v23/values-v23.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v23/values-v23.xml
new file mode 100644
index 0000000..edb25cd
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v23/values-v23.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v24/values-v24.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v24/values-v24.xml
new file mode 100644
index 0000000..f9b3c08
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v24/values-v24.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v25/values-v25.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v25/values-v25.xml
new file mode 100644
index 0000000..483ae0c
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v25/values-v25.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v26/values-v26.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v26/values-v26.xml
new file mode 100644
index 0000000..4c30667
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v26/values-v26.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v28/values-v28.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v28/values-v28.xml
new file mode 100644
index 0000000..6deada7
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-v28/values-v28.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-vi/values-vi.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-vi/values-vi.xml
new file mode 100644
index 0000000..16f00a8
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-vi/values-vi.xml
@@ -0,0 +1,61 @@
+
+
+ "Chỉ đường về nhà"
+ "Di chuyển lên"
+ "Tùy chọn khác"
+ "Xong"
+ "Xem tất cả"
+ "Chọn một ứng dụng"
+ "TẮT"
+ "BẬT"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Menu+"
+ "Tìm kiếm…"
+ "Xóa truy vấn"
+ "Truy vấn tìm kiếm"
+ "Tìm kiếm"
+ "Gửi truy vấn"
+ "Tìm kiếm bằng giọng nói"
+ "Chia sẻ với"
+ "Chia sẻ với %s"
+ "Thu gọn"
+ "Trả lời"
+ "Video"
+ "Từ chối"
+ "Kết thúc"
+ "Cuộc gọi đến"
+ "Cuộc gọi đang thực hiện"
+ "Đang sàng lọc cuộc gọi đến"
+ Bật
+ %1$s sẽ không hoạt động nếu bạn không bật dịch vụ của Google Play.
+ Bật dịch vụ của Google Play
+ Cài đặt
+ %1$s sẽ không chạy nếu không có dịch vụ của Google Play. Thiết bị của bạn bị thiếu dịch vụ này.
+ Cài đặt dịch vụ của Google Play
+ Phạm vi cung cấp Dịch vụ Google Play
+ Lỗi dịch vụ của Google Play
+ %1$s đang gặp sự cố với Dịch vụ Google Play. Hãy thử lại.
+ %1$s sẽ không chạy nếu không có Dịch vụ Google Play. Thiết bị của bạn không hỗ trợ các dịch vụ này.
+ Cập nhật
+ %1$s sẽ không chạy trừ khi bạn cập nhật Dịch vụ Google Play.
+ Cập nhật dịch vụ của Google Play
+ %1$s sẽ không chạy nếu không có dịch vụ của Google Play. Dịch vụ này hiện đang cập nhật.
+ Cần phiên bản mới của dịch vụ Google Play. Dịch vụ sẽ sớm tự động cập nhật.
+ Mở trên điện thoại
+ Đăng nhập
+ Đăng nhập bằng Google
+ "Đã sao chép đường liên kết vào bảng nhớ tạm"
+ "Sao chép đường liên kết"
+ "Mở trong trình duyệt"
+ "Chia sẻ đường liên kết"
+ "Tìm kiếm"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-watch-v20/values-watch-v20.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-watch-v20/values-watch-v20.xml
new file mode 100644
index 0000000..2d85812
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-watch-v20/values-watch-v20.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-watch-v21/values-watch-v21.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-watch-v21/values-watch-v21.xml
new file mode 100644
index 0000000..deecc9e
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-watch-v21/values-watch-v21.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-xlarge-v4/values-xlarge-v4.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-xlarge-v4/values-xlarge-v4.xml
new file mode 100644
index 0000000..b499d2c
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-xlarge-v4/values-xlarge-v4.xml
@@ -0,0 +1,9 @@
+
+
+ 60%
+ 90%
+ 50%
+ 70%
+ 45%
+ 72%
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
new file mode 100644
index 0000000..8a09de2
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
@@ -0,0 +1,61 @@
+
+
+ "转到首页"
+ "转到上一层级"
+ "更多选项"
+ "完成"
+ "查看全部"
+ "选择应用"
+ "关闭"
+ "开启"
+ "Alt+"
+ "Ctrl+"
+ "Delete 键"
+ "Enter 键"
+ "Fn+"
+ "Meta+"
+ "Shift+"
+ "空格键"
+ "Sym+"
+ "Menu+"
+ "搜索…"
+ "清除查询"
+ "搜索查询"
+ "搜索"
+ "提交查询"
+ "语音搜索"
+ "分享对象"
+ "与%s分享"
+ "收起"
+ "接听"
+ "视频通话"
+ "拒接"
+ "挂断"
+ "来电"
+ "正在通话"
+ "正在过滤来电"
+ 启用
+ 您必须先启用 Google Play 服务,然后才能运行%1$s。
+ 启用 Google Play 服务
+ 安装
+ 您的设备没有安装 Google Play 服务,因此无法运行%1$s。
+ 获取 Google Play 服务
+ Google Play 服务的适用范围
+ Google Play服务出错
+ %1$s无法访问 Google Play 服务,请重试。
+ 您的设备不支持 Google Play 服务,因此无法运行%1$s。
+ 更新
+ 您必须先更新 Google Play 服务,然后才能运行%1$s。
+ 更新 Google Play 服务
+ Google Play 服务当前正在更新,因此您无法运行%1$s。
+ 必须使用新版 Google Play 服务。该服务很快就会自行更新。
+ 在手机上打开
+ 登录
+ 使用 Google 帐号登录
+ "链接已复制到剪贴板"
+ "复制链接"
+ "在浏览器中打开"
+ "分享链接"
+ "搜索"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rHK/values-zh-rHK.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rHK/values-zh-rHK.xml
new file mode 100644
index 0000000..79278b6
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rHK/values-zh-rHK.xml
@@ -0,0 +1,61 @@
+
+
+ "瀏覽主頁"
+ "向上瀏覽"
+ "更多選項"
+ "完成"
+ "查看全部"
+ "選擇應用程式"
+ "關閉"
+ "開啟"
+ "Alt +"
+ "Ctrl +"
+ "刪除"
+ "Enter 鍵"
+ "Fn +"
+ "Meta +"
+ "Shift +"
+ "空白鍵"
+ "Sym +"
+ "Menu +"
+ "搜尋…"
+ "清除查詢"
+ "搜尋查詢"
+ "搜尋"
+ "提交查詢"
+ "語音搜尋"
+ "分享對象"
+ "使用「%s」分享"
+ "收合"
+ "接聽"
+ "視像"
+ "拒接"
+ "掛斷"
+ "來電"
+ "通話中"
+ "正在過濾來電"
+ 啟用
+ 您必須啟用 Google Play 服務,方可執行「%1$s」。
+ 啟用 Google Play 服務
+ 安裝
+ 您的裝置尚未安裝 Google Play 服務,因此無法執行「%1$s」。
+ 安裝 Google Play 服務
+ Google Play 服務的適用範圍
+ Google Play 服務錯誤
+ 「%1$s」存取 Google Play 服務時發生問題。請稍後再試一次。
+ 您的裝置不支援 Google Play 服務,因此無法執行「%1$s」。
+ 更新
+ 您必須更新「Google Play 服務」,才能執行 %1$s。
+ 更新 Google Play 服務
+ 正在更新 Google Play 服務,更新完成後方可執行「%1$s」。
+ 需要使用新版本的 Google Play 服務。更新會即將自動開始。
+ 在手機開啟
+ 登入
+ 透過 Google 登入
+ "連結已複製到剪貼簿"
+ "複製連結"
+ "在瀏覽器中開啟"
+ "分享連結"
+ "搜尋"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
new file mode 100644
index 0000000..9e14684
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
@@ -0,0 +1,61 @@
+
+
+ "瀏覽首頁"
+ "向上瀏覽"
+ "更多選項"
+ "完成"
+ "查看全部"
+ "選擇應用程式"
+ "關閉"
+ "開啟"
+ "Alt +"
+ "Ctrl +"
+ "Delete 鍵"
+ "Enter 鍵"
+ "Fn +"
+ "Meta +"
+ "Shift +"
+ "空格鍵"
+ "Sym +"
+ "Menu +"
+ "搜尋…"
+ "清除查詢"
+ "搜尋查詢"
+ "搜尋"
+ "提交查詢"
+ "語音搜尋"
+ "分享對象"
+ "與「%s」分享"
+ "收合"
+ "接聽"
+ "視訊"
+ "拒接"
+ "掛斷"
+ "來電"
+ "通話中"
+ "正在過濾來電"
+ 啟用
+ 您必須啟用 Google Play 服務,才能執行「%1$s」。
+ 啟用 Google Play 服務
+ 安裝
+ 您的裝置並未安裝 Google Play 服務,因此無法執行「%1$s」。
+ 取得 Google Play 服務
+ Google Play 服務可用性
+ Google Play 服務發生錯誤
+ 「%1$s」無法存取 Google Play 服務,請再試一次。
+ 您的裝置不支援 Google Play 服務,因此無法執行「%1$s」。
+ 更新
+ 您必須更新 Google Play 服務,才能執行「%1$s」。
+ 更新 Google Play 服務
+ 執行「%1$s」所需的 Google Play 服務正在更新。
+ 必須使用新版 Google Play 服務。該服務稍後就會自動更新。
+ 在手機上開啟
+ 登入
+ 使用 Google 帳戶登入
+ "已將連結複製到剪貼簿"
+ "複製連結"
+ "在瀏覽器中開啟"
+ "分享連結"
+ "搜尋"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zu/values-zu.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zu/values-zu.xml
new file mode 100644
index 0000000..f659623
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values-zu/values-zu.xml
@@ -0,0 +1,61 @@
+
+
+ "Zulazulela ekhaya"
+ "Zulazulela phezulu"
+ "Ezinye izinketho"
+ "Kwenziwe"
+ "Buka konke"
+ "Khetha insiza"
+ "VALA"
+ "VULA"
+ "Alt+"
+ "Ctrl+"
+ "delete"
+ "enter"
+ "Function+"
+ "Meta+"
+ "Shift+"
+ "space"
+ "Sym+"
+ "Imenyu+"
+ "Sesha…"
+ "Sula inkinga"
+ "Sesha umbuzo"
+ "Sesha"
+ "Thumela umbuzo"
+ "Ukusesha ngezwi"
+ "Yabelana no"
+ "Yabelana ne-%s"
+ "Goqa"
+ "Phendula"
+ "Ividiyo"
+ "Yenqaba"
+ "Vala Ucingo"
+ "Ikholi engenayo"
+ "Ikholi eqhubekayo"
+ "Ukuveza ikholi engenayo"
+ Nika amandla
+ I-%1$s ngeke isebenze ngaphandle kokuthi unike amandla amasevisi we-Google Play.
+ Nika amandla amasevisi we-Google Play
+ Faka
+ I-%1$s ngeke ize iqalise ngaphandle kwamasevisi we-Google Play, angekho kusukela kudivayisi yakho.
+ Thola amasevisi we-Google Play
+ Ukungatholakali kwamasevisi e-Google Play
+ Iphutha lamasevisi we-Google Play
+ %1$s inenkinga ngamasevisi e-Google Play. Sicela uzame futhi.
+ %1$s ngeke isebenze ngaphandle kwamasevisi e-Google Play, angasekelwa idivayisi yakho.
+ Isibuyekezo
+ I-%1$s ngeke ize iqalise ngaphandle kokuthi ubuyekeze i-Google Play.
+ Buyekeza amasevisi we-Google Play
+ I-%1$s ngeke ize iqalise ngaphandle kwamasevisi we-Google Play, okwamanje abuyekezwayo.
+ Kudingeka inguqulo entsha yamasevisi we-Google Play. Izozibuyekeza ngokwayo maduze.
+ Vula kufoni
+ Ngena ngemvume
+ Ngena ngemvume nge-Google
+ "Isixhumanisi sikopishelwe ku-clipboard"
+ "Kopisha isixhumanisi"
+ "Vula kusiphequluli"
+ "Yabelana ngesixhumanisi"
+ "Sesha"
+ "999+"
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values/values.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values/values.xml
new file mode 100644
index 0000000..1026448
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values/values.xml
@@ -0,0 +1,3236 @@
+
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+ #ff000000
+ #ffffffff
+ #7fa87f
+ @android:color/black
+ @android:color/black
+ @color/material_deep_teal_200
+ @color/material_deep_teal_500
+ #1f000000
+ #8a000000
+ #0F172A
+ @color/material_grey_800
+ @android:color/white
+ @color/material_grey_850
+ @color/material_grey_50
+ #80ffffff
+ #80000000
+ @color/bright_foreground_material_light
+ @color/bright_foreground_material_dark
+ @android:color/white
+ @android:color/black
+ #F5F5F5
+ #1E000000
+ #DE000000
+ #646464
+ #ff5a595b
+ #ffd6d7d7
+ #1d873b
+ #d93025
+ #0F172A
+ #000000
+ @android:color/white
+ #1F000000
+ @android:color/black
+ @android:color/white
+ #90000000
+ #1F000000
+ #90000000
+ #DE000000
+ #80bebebe
+ #80323232
+ #ffbebebe
+ #ff323232
+ #ff7043
+ #ff5722
+ @android:color/white
+ @android:color/black
+ #6680cbc4
+ #66009688
+ #ff37474f
+ #ff263238
+ #ff21272b
+ #ff80cbc4
+ #ff008577
+ #fff5f5f5
+ #ffe0e0e0
+ #fffafafa
+ #ff757575
+ #ff424242
+ #ff303030
+ #ff212121
+ #000000
+ #000000
+ #000000
+ #000000
+ #ffffffff
+ #ff9e9e9e
+ @android:color/black
+ @color/material_grey_600
+ @color/material_grey_900
+ @color/material_grey_100
+ #ffffffff
+ #de000000
+ #4Dffffff
+ #39000000
+ #33ffffff
+ #1f000000
+ #b3ffffff
+ #8a000000
+ #36ffffff
+ #24000000
+ #F5F5F5
+ #ff616161
+ #ffbdbdbd
+ #ffbdbdbd
+ #fff1f1f1
+ #e6616161
+ #e6FFFFFF
+ 16dp
+ 72dp
+ 56dp
+ 0dp
+ 0dp
+ 4dp
+ 16dp
+ 10dp
+ 6dp
+ 48dp
+ 180dp
+ 5dp
+ -3dp
+ 48dp
+ 48dp
+ 36dp
+ 48dp
+ 48dp
+ @dimen/abc_control_inset_material
+ 6dp
+ 8dp
+ @dimen/abc_control_padding_material
+ 720dp
+ 320dp
+ 2dp
+ 4dp
+ 4dp
+ 2dp
+ 80%
+ 100%
+ 320dp
+ 320dp
+ 8dp
+ 8dp
+ 65%
+ 95%
+ 24dp
+ 18dp
+ 8dp
+ 0.30
+ 0.26
+ 32dip
+ 8dip
+ 8dip
+ 7dp
+ 4dp
+ 10dp
+ 16dp
+ 80dp
+ 64dp
+ 48dp
+ @dimen/abc_action_bar_content_inset_material
+ 296dp
+ 4dp
+ 48dip
+ 320dip
+ 2dp
+ 2dp
+ 20dp
+ 48dp
+ 36dp
+ 16dp
+ 3dp
+ 14sp
+ 14sp
+ 14sp
+ 12sp
+ 34sp
+ 45sp
+ 56sp
+ 112sp
+ 24sp
+ 22sp
+ 18sp
+ 14sp
+ 16sp
+ 14sp
+ 16sp
+ 16dp
+ 20sp
+ 20dp
+ 500dp
+ 20dp
+ 4dp
+ 6dp
+ 8dp
+ 4dp
+ 2dp
+ 320dp
+ 320dp
+ 0.30
+ 0.26
+ 0.26
+ 0.20
+ 0.12
+ 0.50
+ 0.38
+ 0.70
+ 0.54
+ 32dp
+ 13sp
+ 12dp
+ 8dp
+ 64dp
+ 64dp
+ 10dp
+ @dimen/notification_content_margin_start
+ 16dp
+ 4dp
+ 3dp
+ 24dp
+ 13sp
+ 10dp
+ 5dp
+ 2dp
+ 16dp
+ 8dp
+ 8dp
+ 96dp
+ 6.5dp
+ 0dp
+ 16dp
+ #3333B5E5
+ #0cffffff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 220
+ 150
+ 127
+ 150
+ 12451000
+ 300
+ 999
+ Navigate home
+ Navigate up
+ More options
+ Done
+ See all
+ Choose an app
+ OFF
+ ON
+ Alt+
+ Ctrl+
+ delete
+ enter
+ Function+
+ Meta+
+ Shift+
+ space
+ Sym+
+ Menu+
+ Search…
+ Clear query
+ Search query
+ Search
+ Submit query
+ Voice search
+ Share with
+ Share with %s
+ Collapse
+ androidx.startup
+ Humetrain_1
+ Android Browser Helper
+
+ [{
+ \"relation\": [\"delegate_permission/common.handle_all_urls\"],
+ \"target\": {
+ \"namespace\": \"web\",
+ \"site\": \"https://humetrain.me\"
+ }
+ }]
+
+
+ Answer
+ Video
+ Decline
+ Hang Up
+ Incoming call
+ Ongoing call
+ Screening an incoming call
+ Enable
+ %1$s won\'t work unless you enable Google Play services.
+ Enable Google Play services
+ Install
+ %1$s won\'t run without Google Play services, which are missing from your device.
+ Get Google Play services
+ Google Play services availability
+ Google Play services error
+ %1$s is having trouble with Google Play services. Please try again.
+ %1$s won\'t run without Google Play services, which are not supported by your device.
+ Update
+ %1$s won\'t run unless you update Google Play services.
+ Update Google Play services
+ %1$s won\'t run without Google Play services, which are currently updating.
+ New version of Google Play services needed. It will update itself shortly.
+ Open on phone
+ Sign in
+ Sign in with Google
+ Link copied to clipboard
+ customtabs
+ Copy link
+ Open in browser
+ Share link
+ https://humetrain.me/
+ bubblewrap-cli
+ humetrain.me
+ https://humetrain.me/
+ Humetrain_1
+ This app holds no browsing data.
+ This app\'s data is stored in %1$s.
+ Please install Chrome Stable 72 or later.
+ default
+ me.humetrain.tr.twa.fileprovider
+ Search
+ 999+
+ Please update to Chrome Stable 72 or later.
+ http://localhost:9999/static/manifest.webmanifest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/mergeReleaseResources/merger.xml b/app/build/intermediates/incremental/release/mergeReleaseResources/merger.xml
new file mode 100644
index 0000000..ed91430
--- /dev/null
+++ b/app/build/intermediates/incremental/release/mergeReleaseResources/merger.xml
@@ -0,0 +1,3945 @@
+
+androidx.startup"接听""视频通话""拒接""挂断""来电""正在通话""正在过滤来电""999+""Answer""Video""Decline""Hang up""Incoming call""On-going call""Screening an incoming call""999+""Répondre""Vidéo""Refuser""Raccrocher""Appel entrant""Appel en cours""Filtrage d\'un appel entrant""999+""Annehmen""Video""Ablehnen""Auflegen""Eingehender Anruf""Aktueller Anruf""Filter für eingehenden Anruf""999+""პასუხი""ვიდეო""უარყოფა""გათიშვა""შემომავალი ზარი""მიმდინარე ზარი""შემომავალი ზარების გაცხრილვა""999+""Адказаць""Відэа""Адхіліць""Завяршыць""Уваходны выклік""Бягучы выклік""Фільтраванне ўваходнага выкліку""999+""รับสาย""วิดีโอ""ปฏิเสธ""วางสาย""สายเรียกเข้า""สายที่สนทนาอยู่""กำลังสกรีนสายเรียกเข้า""999+""Yanıtla""Video""Reddet""Kapat""Gelen arama""Devam eden arama""Gelen arama süzülüyor""999+""Přijmout""Video""Odmítnout""Zavěsit""Příchozí hovor""Probíhající hovor""Prověřování příchozího hovoru""999+""Atender""Vídeo""Recusar""Desligar""Chamada recebida""Chamada em andamento""Filtrando uma ligação recebida""999+""Fogadás""Videó""Elutasítás""Befejezés""Bejövő hívás""Hívás folyamatban""Bejövő hívás szűrése""999+""応答""ビデオ""拒否""通話終了""着信""通話中""着信をスクリーニング中""999+""जवाब दें""वीडियो""अस्वीकार करें""कॉल काटें""आने वाला (इनकमिंग) कॉल""पहले से जारी कॉल""इनकमिंग कॉल को स्क्रीन किया जा रहा है""999+""Жооп берүү""Видео""Четке кагуу""Чалууну бүтүрүү""Кирүүчү чалуу""Учурдагы чалуу""Кирүүчү чалууну иргөө""999+""Απάντηση""Βίντεο""Απόρριψη""Τερματισμός""Εισερχόμενη κλήση""Κλήση σε εξέλιξη""Διαλογή εισερχόμενης κλήσης""999+""Atsakyti""Vaizdo įrašas""Atmesti""Baigti pok.""Gaunamasis skambutis""Vykstantis skambutis""Gaunamojo skambučio tikrinimas""999+""Erantzun""Bideoa""Baztertu""Amaitu deia""Sarrerako deia""Deia abian da""Sarrerako dei bat bistaratzen""999+""ຮັບສາຍ""ວິດີໂອ""ປະຕິເສດ""ວາງສາຍ""ສາຍໂທເຂົ້າ""ສາຍໂທອອກ""ກຳລັງກວດສອບສາຍໂທເຂົ້າ""999+""Хариулах""Видео""Татгалзах""Таслах""Ирсэн дуудлага""Дуудлага хийгдэж байна""Ирсэн дуудлагыг харуулж байна""999+""Պատասխանել""Տեսազանգ""Մերժել""Ավարտել""Մուտքային զանգ""Ընթացիկ զանգ""Մուտքային զանգի զտում""999+""جواب دیں""ویڈیو""مسترد کریں""منقطع کر دیں""اِن کمنگ کال""جاری کال""اِن کمنگ کال کی اسکریننگ""+999""Одговори""Видео""Одбиј""Спушти""Дојдовен повик""Тековен повик""Проверка на дојдовен повик""999+""ଉତ୍ତର ଦିଅନ୍ତୁ""ଭିଡିଓ""ଅଗ୍ରାହ୍ୟ କର""ସମାପ୍ତ କରନ୍ତୁ""ଇନକମିଂ କଲ୍""ଚାଲିଥିବା କଲ୍""ଏକ ଇନକମିଂ କଲକୁ ସ୍କ୍ରିନ୍ କରୁଛି""999+""Antwoord""Video""Wys af""Lui af""Inkomende oproep""Oproep aan die gang""Keur tans \'n inkomende oproep""999+""መልስ""ቪዲዮ""አትቀበል""ስልኩን ዝጋ""ገቢ ጥሪ""እየተካሄደ ያለ ጥሪ""ገቢ ጥሪ ማጣራት""999+""接聽""視訊""拒接""掛斷""來電""通話中""正在過濾來電""999+""Atender""Vídeo""Recusar""Desligar""Chamada recebida""Chamada em andamento""Filtrando uma ligação recebida""999+""മറുപടി നൽകുക""വീഡിയോ""നിരസിക്കുക""കോൾ നിർത്തുക""ഇൻകമിംഗ് കോൾ""സജീവമായ കോൾ""ഇൻകമിംഗ് കോൾ സ്ക്രീൻ ചെയ്യുന്നു""999+""Contestar""Vídeo""Rexeitar""Colgar""Chamada entrante""Chamada en curso""Filtrando chamada entrante"">999""Ответить""Видео""Отклонить""Завершить""Входящий вызов""Текущий вызов""Фильтрация входящего вызова"">999""Phendula""Ividiyo""Yenqaba""Vala Ucingo""Ikholi engenayo""Ikholi eqhubekayo""Ukuveza ikholi engenayo""999+""ಉತ್ತರಿಸಿ""ವೀಡಿಯೊ""ನಿರಾಕರಿಸಿ""ಕರೆ ಕೊನೆಗೊಳಿಸಿ""ಒಳಬರುವ ಕರೆ""ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆ""ಒಳಬರುವ ಕರೆಯನ್ನು ಸ್ಕ್ರೀನ್ ಮಾಡಲಾಗುತ್ತಿದೆ""999+""Svara""Video""Avvisa""Lägg på""Inkommande samtal""Pågående samtal""Ett inkommande samtal filtreras""999+""Përgjigju""Video""Refuzo""Mbyll""Telefonatë hyrëse""Telefonatë në vazhdim""Po filtron një telefonatë hyrëse""999+""Answer""Video""Decline""Hang up""Incoming call""On-going call""Screening an incoming call""999+""Answer""Video""Decline""Hang Up""Incoming call""Ongoing call""Screening an incoming call""999+""پاسخ دادن""ویدیو""رد کردن""قطع تماس""تماس ورودی""تماس درحال انجام""درحال غربال کردن تماس ورودی""999+""ဖုန်းကိုင်ရန်""ဗီဒီယို""ငြင်းပယ်ရန်""ဖုန်းချရန်""အဝင်ခေါ်ဆိုမှု""လက်ရှိခေါ်ဆိုမှု""အဝင်ခေါ်ဆိုမှုကို စစ်ဆေးနေသည်""၉၉၉+""Odgovori""Video""Odbij""Prekini vezu""Dolazni poziv""Poziv je u toku""Proverava se dolazni poziv""999+""Responder""Video""Rechazar""Colgar""Llamada entrante""Llamada en curso""Filtrando una llamada entrante""999+""Trả lời""Video""Từ chối""Kết thúc""Cuộc gọi đến""Cuộc gọi đang thực hiện""Đang sàng lọc cuộc gọi đến""999+""Odgovori""Videozapis""Odbij""Prekini""Dolazni poziv""Poziv u tijeku""Filtriranje dolaznog poziva""999+""উত্তৰ দিয়ক""ভিডিঅ’""প্ৰত্যাখ্যান কৰক""কল কাটি দিয়ক""অন্তৰ্গামী কল""চলি থকা কল""এটা অন্তৰ্গামী কলৰ পৰীক্ষা কৰি থকা হৈছে""৯৯৯+""מענה""וידאו""דחייה""ניתוק""שיחה נכנסת""שיחה פעילה""סינון שיחה נכנסת""999+""Prijať""Video""Odmietnuť""Zložiť""Prichádzajúci hovor""Prebiehajúci hovor""Preveruje sa prichádzajúci hovor""999+""Vasta""Video""Keeldu""Lõpeta kõne""Sissetulev kõne""Käimasolev kõne""Sissetuleva kõne filtreerimine""999+""Answer""Video""Decline""Hang up""Incoming call""On-going call""Screening an incoming call""999+""Odbierz""Wideo""Odrzuć""Rozłącz""Połączenie przychodzące""Trwa połączenie""Filtruję połączenie przychodzące""999+""Sagutin""Video""Tanggihan""Ibaba""Papasok na tawag""Kasalukuyang tawag""Nagsi-screen ng papasok na tawag""999+""Відповісти""Відео""Відхилити""Завершити""Вхідний виклик""Активний виклик""Вхідний виклик (Фільтр)""999+""Vastaa""Video""Hylkää""Lopeta puhelu""Saapuva puhelu""Käynnissä oleva puhelu""Seulotaan saapuvaa puhelua""999+""పికప్ చేయండి""వీడియో కాల్""కట్ చేయండి""ముగించండి""ఇన్కమింగ్ కాల్""కాల్ కొనసాగుతోంది""ఇన్కమింగ్ కాల్ను స్క్రీన్ చేయండి""999+"#1f000000#8a000000#1d873b#d93025#ffffffff#ff9e9e9e4dp6dp8dp4dp2dp320dp320dp32dp13sp12dp8dp64dp64dp10dp@dimen/notification_content_margin_start16dp4dp3dp24dp13sp10dp5dp#3333B5E5#0cffffff999AnswerVideoDeclineHang UpIncoming callOngoing callScreening an incoming call999+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "பதிலளி""வீடியோ""நிராகரி""துண்டி""உள்வரும் அழைப்பு""செயலில் இருக்கும் அழைப்பு""உள்வரும் அழைப்பை மதிப்பாய்வு செய்கிறது""999+""Отговор""Видеообаждане""Отхвърляне""Затваряне""Входящо обаждане""Текущо обаждане""Преглежда се входящо обаждане""999+""જવાબ""વીડિયો""નકારો""સમાપ્ત કરો""ઇનકમિંગ કૉલ""ચાલુ કૉલ""ઇનકમિંગ કૉલનું સ્ક્રીનિંગ થાય છે""999+""উত্তর দিন""ভিডিও""বাতিল করুন""কল কেটে দিন""ইনকামিং কল""চালু থাকা কল""ইনকামিং কল স্ক্রিনিং করা হচ্ছে""৯৯৯+""Жауап""Бейне""Қабылдамау""Тұтқаны қою""Кіріс қоңырау""Қоңырау""Келген қоңырауды сүзу""999+""Rispondi""Video""Rifiuta""Riaggancia""Chiamata in arrivo""Chiamata in corso""Applicazione filtro a chiamata in arrivo""999+"@color/androidx_core_secondary_text_default_material_light0dp0dp12dp"Svar""Video""Avvis""Legg på""Innkommende anrop""Pågående samtale""Filtrerer et innkommende anrop""999+""उत्तर द्या""व्हिडिओ""नकार द्या""कॉल बंद करा""इनकमिंग कॉल""सुरू असलेला कॉल""इनकमिंग कॉल स्क्रीन करत आहे""९९९+""Răspunde""Video""Respinge""Închide""Apel primit""Apel în desfășurare""Se filtrează un apel primit""999+""Responder""Vídeo""Rechazar""Colgar""Llamada entrante""Llamada en curso""Filtrando una llamada entrante""999+""Odgovori""Video""Odbaci""Prekini vezu""Dolazni poziv""Poziv u toku""Filtriranje dolaznog poziva""999+""통화""동영상""거절""전화 끊기""수신 전화""진행 중인 통화""수신 전화 검사 중""999+""පිළිතුරු දෙ.""වීඩියෝ""ප්රතික්ෂේප ක""විසන්ධි කරන්න""එන ඇමතුම""කරගෙන යන ඇමතුම""එන ඇමතුමක් පරීක්ෂා කරන්න""999+""ឆ្លើយ""វីដេអូ""បដិសេធ""ដាក់ចុះ""ការហៅចូល""ការហៅដែលកំពុងដំណើរការ""កំពុងពិនិត្យការហៅចូល""999+""Respon""Vídeo""Rebutja""Penja""Trucada entrant""Trucada en curs""S\'està filtrant una trucada entrant""999+""Beantwoorden""Video""Weigeren""Ophangen""Inkomend gesprek""Actief gesprek""Een inkomend gesprek screenen""999+""Svara""Myndsímtal""Hafna""Leggja á""Símtal berst""Símtal í gangi""Síar símtal sem berst""999+""Sprejmi""Video""Zavrni""Prekini klic""Dohodni klic""Aktivni klic""Preverjanje dohodnega klica""999+""Besvar""Video""Afvis""Læg på""Indgående opkald""Igangværende opkald""Et indgående opkald screenes""999+""Atbildēt""Video""Noraidīt""Pārtraukt""Ienākošais zvans""Pašreizējais zvans""Ienākošā zvana filtrēšana""999+""Одговори""Видео""Одбиј""Прекини везу""Долазни позив""Позив је у току""Проверава се долазни позив""999+""Jawab""Video""Tolak""Tamatkan Panggilan""Panggilan masuk""Panggilan sedang berlangsung""Menyaring panggilan masuk""999+""ردّ""فيديو""رفض""قطع الاتصال""مكالمة واردة""مكالمة جارية""يتم فحص المكالمة الواردة""999+""Jibu""Video""Kataa""Kata simu""Simu uliyopigiwa""Simu inayoendelea""Inachuja simu unayopigiwa""999+""Atender""Vídeo""Recusar""Desligar""Chamada recebida""Chamada em curso""A filtrar uma chamada recebida…""999+""Javob berish""Video""Rad etish""Tugatish""Kiruvchi chaqiruv""Joriy chaqiruv""Kiruvchi chaqiruvni filtrlash""999+""接聽""視像""拒接""掛斷""來電""通話中""正在過濾來電""999+""Cavab verin""Video""İmtina edin""Dəstəyi asın""Gələn zəng""Davam edən zəng""Gələn zəng göstərilir""999+""Répondre""Vidéo""Refuser""Raccrocher""Appel entrant""Appel en cours""Filtrer un appel entrant""999+""Answer""Video""Decline""Hang Up""Incoming call""Ongoing call""Screening an incoming call""999+""ਜਵਾਬ ਦਿਓ""ਵੀਡੀਓ""ਅਸਵੀਕਾਰ ਕਰੋ""ਸਮਾਪਤ ਕਰੋ""ਇਨਕਮਿੰਗ ਕਾਲ""ਜਾਰੀ ਕਾਲ""ਇਨਕਮਿੰਗ ਕਾਲ ਦੀ ਸਕ੍ਰੀਨਿੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ""999+""Jawab""Video""Tolak""Tutup""Panggilan masuk""Panggilan sedang berlangsung""Menyaring panggilan masuk""999+""जवाफ दिनुहोस्""भिडियो""काट्नुहोस्""फोन राख्नुहोस्""आगमन कल""भइरहेको कल""आगमन कल जाँचिँदै छ""९९९+"
+
+
+
+
+
+
+ %1$s无法访问 Google Play 服务,请重试。%1$s is having trouble with Google Play services. Please try again.L\'application %1$s rencontre des problèmes avec les services Google Play. Veuillez réessayer.%1$s hat Probleme mit Google Play-Diensten. Bitte versuche es noch einmal.%1$s-ს Google Play Services-თან პრობლემა შეექმნა. გთხოვთ, ცადოთ ხელახლა.У праграмы %1$s узніклі праблемы са службамі Google Play. Паўтарыце спробу.%1$s มีปัญหาเกี่ยวกับบริการของ Google Play โปรดลองอีกครั้ง%1$s, Google Play hizmetleriyle ilgili sorun yaşıyor. Lütfen tekrar deneyin.Aplikace %1$s má potíže se službami Google Play. Zkuste to prosím znovu.O app %1$s está com problemas com o Google Play Services. Tente novamente.A(z) %1$s alkalmazás problémába ütközött a Google Play-szolgáltatások használata során. Próbálkozzon újra.「%1$s」で Google Play 開発者サービスに問題が発生しています。もう一度お試しください。%1$s को Google Play सेवाओं के साथ समस्या आ रही है. कृपया फिर से कोशिश करें.%1$s колдонмосунун Google Play кызматтары менен иштөөдө көйгөй чыкты. Кайталап көрүңүз.Η εφαρμογή %1$s αντιμετωπίζει κάποιο πρόβλημα με τις υπηρεσίες Google Play. Προσπαθήστε ξανά.Naudojant programą „%1$s“ kilo problemų dėl „Google Play“ paslaugų. Bandykite dar kartą.%1$s aplikazioak arazoak ditu Google Play Services-ekin. Saiatu berriro.%1$s ກຳລັງມີບັນຫາກັບບໍລິການ Google Play. ກະລຸນາລອງໃໝ່ອີກຄັ້ງ.%1$s-г Google Play-н үйлчилгээгээр ашиглахад асуудал гарлаа. Дахин оролдоно уу.%1$s հավելվածը Google Play ծառայությունների հետ կապված խնդիր ունի: Փորձեք նորից:%1$s کو Google Play سروسز کے ساتھ مسئلہ پیش آ رہا ہے۔ براہ کرم دوبارہ کوشش کریں۔%1$s има проблеми со услугите на Google Play. Обидете се повторно.%1$sର Google Play ସେବା ସହ ଏକ ସମସ୍ୟା ରହିଛି। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।%1$s ondervind probleme met Google Play Dienste. Probeer asseblief weer.%1$s በGoogle Play አገልግሎቶች ላይ ችግሮች እያጋጠሙት ነው። እባክዎ እንደገና ይሞክሩ።「%1$s」無法存取 Google Play 服務,請再試一次。Google Play സേവനങ്ങളുമായി ബന്ധപ്പെട്ട് %1$s ആപ്പിനെന്തോ പ്രശ്നമുണ്ട്. വീണ്ടും ശ്രമിക്കുക.%1$s ten problemas cos servizos de Google Play. Téntao de novo.Приложению \"%1$s\" не удается подключиться к сервисам Google Play. Повторите попытку.%1$s inenkinga ngamasevisi e-Google Play. Sicela uzame futhi.Google Play ಸೇವೆಗಳಲ್ಲಿ %1$s ಸಮಸ್ಯೆಯನ್ನು ಹೊಂದಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.Det har uppstått ett fel mellan %1$s och Google Play-tjänsterna. Försök igen.%1$s ka probleme me shërbimet e Google Play. Provo sërish.%1$s برای استفاده از خدمات Google Play با مشکل روبرو است. لطفاً دوباره امتحان کنید.%1$s သည် Google Play ဝန်ဆောင်မှုများနှင့် ပြဿနာအနည်းငယ် ရှိနေပါသည်။ ထပ်လုပ်ကြည့်ပါ။%1$s ima problema sa Google Play uslugama. Probajte ponovo.%1$s tiene problemas con los servicios de Google Play. Vuelve a intentarlo.%1$s đang gặp sự cố với Dịch vụ Google Play. Hãy thử lại.%1$s ima poteškoća s uslugama Google Playa. Pokušajte ponovo.Google প্লে সেৱাত %1$s ত সমস্যা হৈ আছে। আকৌ চেষ্টা কৰক।%1$s נתקלה בבעיה בשירותי Google Play. נסה שוב.Aplikácia %1$s má problémy so službami Google Play. Skúste to znova.Rakendusel %1$s on probleeme Google Play teenustega. Proovige uuesti.%1$s ma problem z dostępem do Usług Google Play. Spróbuj jeszcze raz.Nagkakaproblema ang %1$s sa mga serbisyo ng Google Play. Pakisubukan ulit.У додатку %1$s виникла проблема із сервісами Google Play. Повторіть спробу.Sovelluksella %1$s on ongelmia Google Play Palveluiden kanssa. Yritä uudelleen.%1$s Google Play సేవలతో సమస్య కలిగి ఉంది. దయచేసి మళ్లీ ప్రయత్నించండి.12451000%1$s is having trouble with Google Play services. Please try again.Google Play சேவைகளில் சிக்கல் ஏற்பட்டதால், %1$s ஆப்ஸை அணுக முடியவில்லை. மீண்டும் முயலவும்.%1$s има проблеми с услугите за Google Play. Моля, опитайте отново.%1$s ને Google Play સેવાઓમાં મુશ્કેલી આવી રહી છે. કૃપા કરીને ફરી પ્રયાસ કરો.Google Play পরিষেবাগুলির সাথে %1$s এর সমস্যা হচ্ছে৷ অনুগ্রহ করে আবার চেষ্টা করুন৷%1$s қолданбасында Google Play қызметіне байланысты белгісіз қате шықты. Әрекетті қайталаңыз.%1$s sta riscontrando problemi con Google Play Services. Riprova.%1$s har problemer med Google Play-tjenester. Prøv på nytt.%1$s ला Google Play सेवांमध्ये समस्या येत आहे. कृपया पुन्हा प्रयत्न करा.%1$s întâmpină probleme privind serviciile Google Play. Încercați din nou.La aplicación %1$s tiene problemas con los Servicios de Google Play. Vuelve a intentarlo.Aplikacija %1$s ima problema s Google Play uslugama. Pokušajte ponovo.%1$s에서 Google Play 서비스를 사용하는 데 문제가 있습니다. 다시 시도하세요.%1$s හට Google Play සේවා සමගින් ගැටලු ඇත. කරුණාකර නැවත උත්සාහ කරන්න.%1$s កំពុងមានបញ្ហាជាមួយសេវាកម្មរបស់ Google Play ។ សូមព្យាយាមម្តងទៀតនៅពេលក្រោយ។%1$s té problemes amb Serveis de Google Play. Torna-ho a provar.%1$s ondervindt problemen met Google Play-services. Probeer het opnieuw.%1$s á í vandræðum með þjónustu Google Play. Reyndu aftur.Aplikacija %1$s ima težave s storitvami Google Play. Poskusite znova.%1$s har problemer med Google Play-tjenester. Prøv igen.Lietotnē %1$s ir radusies problēma ar Google Play pakalpojumu darbību. Lūdzu, mēģiniet vēlreiz.%1$s има проблема са Google Play услугама. Пробајте поново.%1$s menghadapi masalah berhubung perkhidmatan Google Play. Sila cuba lagi.لدى %1$s مشكلة في خدمات Google Play. يُرجى إعادة المحاولة.%1$s inakumbwa na hitilafu ya huduma za Google Play. Tafadhali jaribu tena.%1$s está a ter problemas com os Serviços do Google Play. Tente novamente.%1$s ilovasini Google Play xizmatlariga ulab bo‘lmadi. Qaytadan urinib ko‘ring.「%1$s」存取 Google Play 服務時發生問題。請稍後再試一次。%1$s tətbiqi ilə Google Play xidmətləri arasında problem var. Daha sonra yenidən cəhd edin.L\'application %1$s éprouve un problème avec les services Google Play. Veuillez réessayer.%1$s ਨੂੰ Google Play ਸੇਵਾਵਾਂ ਨਾਲ ਸਮੱਸਿਆ ਆ ਰਹੀ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।%1$s mengalami masalah dengan layanan Google Play. Coba lagi.%1$s लाई Google Play services सँग सहकार्य गर्न समस्या भइरहेको छ। कृपया फेरि प्रयास गर्नुहोस्।启用您必须先启用 Google Play 服务,然后才能运行%1$s。启用 Google Play 服务安装您的设备没有安装 Google Play 服务,因此无法运行%1$s。获取 Google Play 服务Google Play 服务的适用范围Google Play服务出错您的设备不支持 Google Play 服务,因此无法运行%1$s。更新您必须先更新 Google Play 服务,然后才能运行%1$s。更新 Google Play 服务Google Play 服务当前正在更新,因此您无法运行%1$s。必须使用新版 Google Play 服务。该服务很快就会自行更新。在手机上打开登录使用 Google 帐号登录Enable%1$s won\'t work unless you enable Google Play services.Enable Google Play servicesInstall%1$s won\'t run without Google Play services, which are missing from your device.Get Google Play servicesGoogle Play services availabilityGoogle Play services error%1$s won\'t run without Google Play services, which are not supported by your device.Update%1$s won\'t run unless you update Google Play services.Update Google Play services%1$s won\'t run without Google Play services, which are currently updating.New version of Google Play services needed. It will update itself shortly.Open on phoneSign InSign in with GoogleActiver%1$s ne fonctionnera pas tant que vous n\'aurez pas activé les services Google Play.Activer les services Google PlayInstaller%1$s ne fonctionnera pas sans les services Google Play, qui ne sont pas installés sur votre appareil.Installer les services Google PlayDisponibilité des services Google PlayErreur liée aux services Google Play%1$s ne fonctionnera pas sans les services Google Play, qui ne sont pas compatibles avec votre appareil.Mettre à jour%1$s ne fonctionnera pas tant que vous n\'aurez pas mis à jour les services Google Play.Mettre à jour les services Google Play%1$s ne fonctionnera pas sans les services Google Play, qui sont en cours de mise à jour.La nouvelle version des services Google Play est nécessaire. Elle sera bientôt installée automatiquement.Ouvrir sur le téléphoneSe connecterSe connecter avec GoogleAktivieren%1$s funktioniert erst nach der Aktivierung der Google Play-Dienste.Google Play-Dienste aktivierenInstallierenZur Nutzung von %1$s sind die Google Play-Dienste erforderlich, die auf deinem Gerät nicht installiert sind.Google Play-Dienste installierenVerfügbarkeit von Google Play-DienstenFehler bei Zugriff auf Google Play-DiensteZur Nutzung von %1$s sind Google Play-Dienste erforderlich, die auf deinem Gerät nicht unterstützt werden.Aktualisieren%1$s wird nur ausgeführt, wenn du die Google Play-Dienste aktualisierst.Google Play-Dienste aktualisierenZur Nutzung von %1$s sind Google Play-Dienste erforderlich, die gerade aktualisiert werden.Eine neue Version der Google Play-Dienste wird benötigt. Diese wird in Kürze automatisch aktualisiert.Auf Smartphone öffnenAnmeldenÜber Google anmeldenჩართვა%1$s ვერ იმუშავებს Google Play Services-ის ჩართვამდე.Google Play Services-ის ჩართვაინსტალაცია%1$s ვერ გაეშვება Google Play Services-ის გარეშე, რომელიც აკლია თქვენს მოწყობილობას.Google Play Services-ის ჩამოტვირთვაGoogle Play services-ის ხელმისაწვდომობაGoogle Play Services-ის შეცდომა%1$s ვერ გაეშვება Google Play Services-ის გარეშე, რომლებიც მხარდაუჭერელია თქვენი მოწყობილობის მიერ.განახლება%1$s ვერ გაეშვება, თუ Google Play სერვისებს არ განაახლებთ.განაახლეთ Google Play Services%1$s ვერ გაეშვება Google Play Services-ის გარეშე, რომელთა განახლებაც ამჟამად მიმდინარეობს.საჭიროა Google Play Services-ის ახალი ვერსია. ის მალე განახლდება.ტელეფონში გახსნაშესვლაGoogle-ით შესვლაУключыць%1$s не будзе працаваць, пакуль вы не ўключыце службы Google Play.Уключыць службы Google PlayУсталяваць%1$s не будзе працаваць без службаў Google Play, якія адсутнічаюць на вашай прыладзе.Атрымаць службы Google PlayДаступнасць сэрвісаў Google PlayПамылка службаў Google Play%1$s не будзе працаваць без службаў Google Play, якія не падтрымліваюцца вашай прыладай.Абнавіць%1$s не будзе працаваць, пакуль вы не абновіце службы Google Play.Абнаўленне службаў Google Play%1$s не будзе працаваць без службаў Google Play, якія ў цяперашні час абнаўляюцца.Патрабуецца новая версія служб Google Play. Яна абновіцца аўтаматычна ў бліжэйшы час.Адкрыць на тэлефонеУвайсцiУвайсці праз Googleเปิดใช้%1$s จะไม่ทำงานจนกว่าคุณจะเปิดใช้บริการ Google Playเปิดใช้บริการ Google Playติดตั้ง%1$s จะไม่ทำงานหากไม่มีบริการ Google Play ซี่งไม่มีในอุปกรณ์ของคุณติดตั้งบริการ Google Playความพร้อมใช้งานของบริการ Google Playข้อผิดพลาดของบริการ Google Play%1$s จะไม่ทำงานหากไม่มีบริการ Google Play ซึ่งอุปกรณ์ของคุณไม่สนับสนุนอัปเดต%1$s จะไม่ทำงานจนกว่าคุณจะอัปเดตบริการ Google Playอัปเดตบริการ Google Play%1$s จะไม่ทำงานหากไม่มีบริการ Google Play ซึ่งกำลังอัปเดตอยู่ในขณะนี้จำเป็นต้องใช้บริการ Google Play เวอร์ชันใหม่ ซึ่งจะอัปเดตอัตโนมัติในอีกไม่ช้าเปิดบนโทรศัพท์ลงชื่อเข้าใช้ลงชื่อเข้าใช้ด้วย GoogleEtkinleştirGoogle Play hizmetlerini etkinleştirmezseniz %1$s çalışmaz.Google Play hizmetlerini etkinleştirinYükle%1$s, şu anda cihazınızda bulunmayan Google Play hizmetleri olmadan çalışmaz.Google Play hizmetlerini edininGoogle Play hizmetlerinin kullanılabilirliğiGoogle Play Hizmetleri hatası%1$s, Google Play hizmetleri olmadan çalışmaz ve bu hizmetler cihazınız tarafından desteklenmiyor.GüncelleGoogle Play hizmetlerini güncellemezseniz %1$s çalışmayacak.Google Play hizmetlerini güncelleyin%1$s, şu anda güncellenmekte olan Google Play hizmetleri olmadan çalışmaz.Google Play hizmetlerinin yeni sürümü gerekiyor. Kendisini kısa süre içinde güncelleyecektir.Telefonda açOturum açGoogle\'da oturum açPovolitKe spuštění aplikace %1$s je třeba aktivovat služby Google Play.Aktivace služeb Google PlayInstalovatKe spuštění aplikace %1$s jsou potřeba služby Google Play, které v zařízení nemáte.Instalace služeb Google PlayDostupnost služeb Google PlayChyba služeb Google PlayKe spuštění aplikace %1$s jsou potřeba služby Google Play, které v tomto zařízení nejsou podporovány.AktualizovatKe spuštění aplikace %1$s je třeba aktualizovat služby Google Play.Aktualizace služeb Google PlayKe spuštění aplikace %1$s jsou potřeba služby Google Play, které jsou právě aktualizovány.Je vyžadována nová verze služeb Google Play. Nová verze se brzy sama nainstaluje.Otevřít v telefonuPřihlásit sePřihlásit se k účtu GoogleAtivar%1$s só funciona com o Google Play Services ativado.Ativar o Google Play ServicesInstalarO app %1$s não funciona sem o Google Play Services, o qual não está instalado no seu dispositivo.Instalar o Google Play ServicesDisponibilidade do Google Play ServicesErro do Google Play ServicesO app %1$s não funciona sem o Google Play Services, o qual não é compatível com seu dispositivo.Atualizar%1$s só funciona com uma versão atualizada do Google Play Services.Atualizar o Google Play Services%1$s não funciona sem o Google Play Services, o qual está sendo atualizado no momento.É necessária uma nova versão do Google Play Services. Ele será atualizado em breve.Abrir no smartphoneFazer loginFazer login com o GoogleEngedélyezésA(z) %1$s alkalmazás csak akkor működik, ha engedélyezi a Google Play-szolgáltatásokat.Google Play-szolgáltatások engedélyezéseTelepítésA(z) %1$s alkalmazás nem fut a Google Play-szolgáltatások nélkül, amelyek hiányoznak az eszközről.A Google Play-szolgáltatások beszerzéseGoogle Play-szolgáltatások elérhetőségeGoogle Play-szolgáltatások – hibaA(z) %1$s alkalmazás nem fut a Google Play-szolgáltatások nélkül, amelyeket eszköze nem támogat.FrissítésA(z) %1$s alkalmazás csak akkor fog működni, ha frissíti a Google Play-szolgáltatásokat.A Google Play-szolgáltatások frissítéseA(z) %1$s alkalmazás nem fut a Google Play-szolgáltatások nélkül, amelyek frissítése folyamatban van.A Google Play-szolgáltatások új verziójára van szükség. A szolgáltatás hamarosan frissíti önmagát.Megnyitás a telefononBejelentkezésBejelentkezés Google-fiókkal有効にする%1$sの実行には、Google Play開発者サービスの有効化が必要です。Google Play開発者サービスの有効化インストール「%1$s」の実行には Google Play 開発者サービスが必要ですが、お使いのデバイスにはインストールされていません。Google Play開発者サービスの入手Google Play 開発者サービスの利用Google Play開発者サービスのエラー「%1$s」の実行には Google Play 開発者サービスが必要ですが、お使いのデバイスではサポートされていません。更新%1$sの実行にはGoogle Play開発者サービスの更新が必要です。Google Play開発者サービスの更新%1$sの実行にはGoogle Play開発者サービスが必要ですが、このサービスは現在更新中です。Google Play開発者サービスの新しいバージョンが必要です。まもなく自動更新されます。スマートフォンで開くログインGoogleにログインचालू करेंजब तक आप Google Play सेवाएं चालू नहीं करते, %1$s काम नहीं करेगा.Google Play सेवाएं चालू करेंइंस्टॉल करें%1$s उन Google Play सेवाओं के बिना नहीं चलेगा जो आपके डिवाइस में उपलब्ध नहीं हैं.Google Play सेवाएं इंस्टॉल करेंGoogle Play सेवाएं उपलब्ध हैंGoogle Play सेवाओं से जुड़ी गड़बड़ी%1$s उन Google Play सेवाओं के बिना नहीं चलेगा, जो आपके डिवाइस पर काम नहीं करती हैं.अपडेट करें%1$s तब तक नहीं चलेगा जब तक आप Google Play सेवाओं को अपडेट नहीं करते.Google Play सेवाओं को अपडेट करें%1$s उन Google Play सेवाओं के बिना नहीं चलेगा जो अभी अपडेट हो रही हैं.Google Play सेवाओं के नए वर्शन की ज़रूरत है. यह जल्द ही अपने आप अपडेट हो जाएगा.फ़ोन पर खोलेंसाइन इन करेंGoogle के ज़रिए साइन इन करेंИштетүүGoogle Play кызматтарын иштетмейиңизче %1$s иштебейт.Google Play кызматтарын иштетүүОрнотууGoogle Play кызматтарысыз %1$s иштебейт. Алар түзмөгүңүздө жок болуп жатат.Google Play кызматтарын алууGoogle Play кызматтарынын иштешиGoogle Play кызматтарынын катасы%1$s колдонмосу сиздин түзмөгүңүздө колдоого алынбаган Google Play кызматтары болбосо иштебейт.ЖаңыртууGoogle Play кызматтары жаңыртылмайынча %1$s иштебейт.Google Play кызматтарын жаңыртууGoogle Play кызматтарысыз %1$s иштебейт, алар учурда жаңыртылууда.Google Play кызматтарынын жаңы версиясы талап кылынат. Бир аздан кийин ал өзү эле жаңырат.Телефондо ачыкКирүүGoogle менен кирүүΕνεργοποίησηΗ εφαρμογή %1$s δεν θα λειτουργήσει εάν δεν έχετε ενεργοποιήσει τις υπηρεσίες Google Play.Ενεργοποίηση υπηρεσιών Google PlayΕγκατάστασηΗ εφαρμογή %1$s δεν μπορεί να εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες λείπουν από τη συσκευή σας.Λήψη υπηρεσιών Google PlayΔιαθεσιμότητα υπηρεσιών Google PlayΣφάλμα Υπηρεσιών Google PlayΗ εφαρμογή %1$s δεν θα εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες δεν υποστηρίζονται από τη συσκευή σας.ΕνημέρωσηΗ εφαρμογή %1$s θα εκτελεστεί αφού ενημερώσετε τις Υπηρεσίες Google Play.Ενημέρωση υπηρεσιών Google PlayΗ εφαρμογή %1$s δεν θα εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες ενημερώνονται αυτήν τη στιγμή.Απαιτείται νέα έκδοση των υπηρεσιών Google Play. Θα ενημερωθεί σύντομα.Άνοιγμα σε τηλέφωνοΣύνδεσηΣυνδεθείτε με το GoogleĮgalinti„%1$s“ neveiks, jei neįgalinsite „Google Play“ paslaugų.Įgalinkite „Google Play“ paslaugasĮdiegtiPrograma „%1$s“ nebus paleidžiama be „Google Play“ paslaugų, kurių nėra įrenginyje.Gaukite „Google Play“ paslaugas„Google Play“ paslaugų pasiekiamumas„Google Play“ paslaugų klaidaPrograma „%1$s“ nebus paleidžiama be „Google Play“ paslaugų, kurių jūsų įrenginys nepalaiko.Atnaujinti„%1$s“ nebus paleidžiama, jei neatnaujinsite „Google Play“ paslaugų.Atnaujinkite „Google Play“ paslaugas„%1$s“ nebus paleidžiama be „Google Play“ paslaugų, kurios šiuo metu atnaujinamos.Reikia naujos versijos „Google Play“ paslaugų. Jos netrukus bus atnaujintos.Atidaryti telefonePrisijungtiPrisijungti naudojant „Google“Gaitu%1$s aplikazioak ez du funtzionatuko Google Play Services gaitzen ez baduzu.Gaitu Google Play ServicesInstalatu%1$s ez da exekutatuko Google Play Services gabe, baina ez dago halakorik gailuan.Lortu Google Play ServicesGoogle Play Services-en erabilgarritasunaGoogle Play Services-en errorea%1$s aplikazioa ezin da erabili Google Play Services gabe, baina zure gailua ez da harekin bateragarria.Eguneratu%1$s ez da exekutatuko Google Play Services eguneratzen ez baduzu.Eguneratu Google Play Services%1$s ez da exekutatuko Google Play Services gabe; zerbitzu hori eguneratzen ari da.Google Play Services-en bertsio berria behar da. Berehala eguneratuko da automatikoki.Ireki telefonoanHasi saioaHasi saioa Google-ko kontuarekinເປີດນຳໃຊ້%1$s ຈະບໍ່ສາມາດໃຊ້ງານໄດ້ຈົນກວ່າທ່ານຈະເປີດໃຊ້ງານການບໍລິການ Google Play.ເປີດໃຊ້ການບໍລິການ Google Playຕິດຕັ້ງ%1$s ຈະບໍ່ສາມາດເປີດໃຊ້ໄດ້ຫາກບໍ່ມີການບໍລິການ Google Play ເຊິ່ງແທັບເລັດຂອງທ່ານບໍ່ມີ.ຕິດຕັ້ງບໍລິການ Google Playສະຖານະບໍລິການ Google PlayGoogle Play Services ເກີດຄວາມຜິດພາດ%1$s ຈະບໍ່ສາມາດໃຊ້ໄດ້ຫາກບໍ່ມີບໍລິການ Google Play ເຊິ່ງອຸປະກອນຂອງທ່ານບໍ່ຮອງຮັບ.ອັບເດດ%1$s ຈະບໍ່ສາມາດເຮັດວຽກໄດ້ຈົນກວ່າທ່ານຈະອັບເດດການບໍລິການ Google Playອັບເດດການບໍລິການ Google Play%1$s ຈະບໍ່ສາມາດໃຊ້ງານໄດ້ໂດຍທີ່ບໍ່ມີການບໍລິການ Google Play, ເຊິ່ງກຳລັງອັບເດດຢູ່ໃນປະຈຸບັນ.ຈຳເປັນຕ້ອງມີການບໍລິການ Google Play ເວີຊັນໃໝ່. ມັນຈະອັບເດດຕົວເອງໄວໆນີ້.ເປີດໃນໂທລະສັບລົງຊື່ເຂົ້າໃຊ້ລົງຊື່ເຂົ້າໃຊ້ດ້ວຍ GoogleИдэвхжүүлэх%1$s нь Google Play үйлчилгээг идэвхжүүлэх хүртэл ажиллахгүй.Google Play үйлчилгээг идэвхжүүлэхСуулгахТаны төхөөрөмжид Google Play үйлчилгээ байхгүй тул %1$s ажиллахгүй.Google Play үйлчилгээг авахGoogle Play-н үйлчилгээнүүдийн боломжит байдалGoogle Наадаан үйлчилгээний алдааТаны төхөөрөмж Google Play үйлчилгээг дэмждэггүй учир %1$s ажиллахгүй.Шинэчлэх%1$s нь таныг Google Play үйлчилгээнүүдийг шинэчлэхээс нааш ажиллахгүй.Google Play үйлчилгээг шинэчлэх%1$s нь одоогоор шинэчилж буй Google Play үйлчилгээгүйгээр ажиллахгүй.Google Play үйлчилгээний шинэ хувилбар хэрэгтэй. Энэ нь удахгүй өөрөө өөрийгөө шинэчлэх болно.Утсаар нээхНэвтрэхGoogle-р нэвтрэх:Միացնել%1$s հավելվածը չի աշխատի մինչև չմիացնեք Google Play ծառայությունները:Միացնել Google Play ծառայություններըՏեղադրել%1$s հավելվածը չի աշխատի առանց Google Play ծառայությունների, որոնք չկան ձեր սարքում:Տեղադրել Google Play ծառայություններըGoogle Play ծառայությունների հասանելիությունGoogle Play ծառայությունների սխալ կա%1$s հավելվածը չի աշխատի առանց Google Play ծառայությունների, որոնք ձեր սարքում չեն աջակցվում:Թարմացնել%1$s հավելվածը չի աշխատի մինչև չթարմացնեք Google Play ծառայությունները:Թարմացնել Google Play ծառայությունները%1$s հավելվածը չի աշխատի առանց Google Play ծառայությունների, որոնք այս պահին թարմացվում են:Անհրաժեշտ է Google Play ծառայությունների նոր տարբերակը: Այն շուտով կթարմացվի ավտոմատ կերպով:Բացել հեռախոսովՄուտք գործելՄուտք գործել Google-ովفعال کریںجب تک آپ Google Play سروسز فعال نہیں کر لیتے، %1$s کام نہیں کرے گی۔Google Play سروسز فعال کریںانسٹال کریں%1$s Google Play سروسز کے بغیر نہیں چلے گی، جو آپ کے آلہ سے غائب ہیں۔Google Play سروسز حاصل کریںGoogle Play سروسز کی دستیابیGoogle Play سروسز کی خرابی%1$s Google Play سروسز کے بغیر نہیں چلے گی، جن کی آپ کا آلہ معاونت نہیں کرتا۔اپ ڈیٹ کریںجب تک آپ Google Play سروسز اپ ڈیٹ نہیں کر لیتے ہیں %1$s تب تک نہیں چلے گی۔Google Play سروسز اپ ڈیٹ کریں%1$s Google Play سروسز کے بغیر نہیں چلے گی، جو فی الحال اپ ڈیٹ ہو رہی ہیں۔Google Play سروسز کے نئے ورژن کی ضرورت ہے۔ یہ تھوڑی دیر میں خود ہی اپنے آپ کو اپ ڈیٹ کر لے گا۔فون پر کھولیںسائن ان کریںGoogle کے ساتھ سائن ان کریںОвозможи%1$s нема да се извршува ако не овозможите услуги на Google Play.Овозможи ги услугите на Google PlayИнсталирај%1$s нема да се извршува без услугите на Google Play што ги нема на уредот.Преземи ги услугите на Google PlayДостапност на услугите на Google PlayГрешка на услугите на Google Play%1$s нема да се извршува без услугите на Google Play, што не се подржани од уредов.Ажурирај%1$s нема да се извршува ако не ги ажурирате услугите на Google Play.Ажурирај ги услугите на Google Play%1$s нема да се извршува без услугите на Google Play што се ажурираат во моментов.Потребна е нова верзија на услугите на Google Play. Таа наскоро самата ќе се ажурира.Отвори на телефонотНајави сеНајави се со Googleସକ୍ଷମ କରନ୍ତୁଆପଣ Google Play ସେବା ସକ୍ଷମ ନ କରିବା ପର୍ଯ୍ୟନ୍ତ %1$s କାମ କରିବ ନାହିଁ।Google Play ସେବାଗୁଡ଼ିକ ସକ୍ଷମ କରନ୍ତୁଇନ୍ଷ୍ଟଲ୍ କରନ୍ତୁ%1$s ଏହି Google Play ସେବାଗୁଡ଼ିକ ବିନା ଚାଲେ ନାହିଁ, ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ନାହିଁ।Google Play ସେବାଗୁଡ଼ିକ ପ୍ରାପ୍ତ କରନ୍ତୁGoogle Play ସେବାଗୁଡ଼ିକର ଉପଲବ୍ଧତାGoogle Play ସେବା ସମ୍ପର୍କିତ ସମସ୍ୟା%1$s ଏହି Google Play ସେବାଗୁଡ଼ିକ ବିନା ଚାଲେ ନାହିଁ, ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ କାମ କରେ ନାହିଁ।ଅପଡେଟ୍ କରନ୍ତୁଆପଣ Google Play ସେବା ଅପଡେଟ୍ ନ କରିବା ପର୍ଯ୍ୟନ୍ତ %1$s ଚାଲିବ ନାହିଁ।Google Play ସେବାଗୁଡ଼ିକ ଅପଡେଟ୍ କରନ୍ତୁGoogle Play ସେବାଗୁଡ଼ିକ ବିନା %1$s ଚାଲିବ ନାହିଁ, ଯେଉଁଗୁଡ଼ିକ ବର୍ତ୍ତମାନ ଅପଡେଟ୍ ହେଉଛି।Google Play ସେବାଗୁଡ଼ିକର ନୂତନ ଭର୍ସନ୍ ଆବଶ୍ୟକ। ଏହା ନିଜକୁ କିଛି ସମୟ ମଧ୍ୟରେ ଅପଡେଟ୍ କରିବ।ଫୋନ୍ରେ ଖୋଲନ୍ତୁସାଇନ୍-ଇନ୍ କରନ୍ତୁGoogle ସହ ସାଇନ୍-ଇନ୍ କରନ୍ତୁAktiveer%1$s sal nie werk nie tensy jy Google Play Dienste aktiveer.Aktiveer Google Play DiensteInstalleer%1$s sal nie sonder Google Play Dienste werk nie, wat nie op jou toestel is nie.Kry Google Play DiensteBeskikbaarheid van Google Play DiensteGoogle Play Services-fout%1$s sal nie werk sonder Google Play Dienste nie, wat nie deur jou toestel gesteun word nie.Dateer op%1$s sal nie werk nie tensy jy Google Play Dienste opdateer.Dateer Google Play Dienste op%1$s sal nie sonder Google Play Dienste werk nie, wat tans opdateer.Nuwe weergawe van Google Play Dienste is nodig. Dit sal binnekort self opdateer.Maak oop op foonMeld aanMeld aan met GoogleአንቃGoogle Play አገልግሎቶችን ካላነቁ በስተቀር %1$s አይሰራም።Google Play አገልግሎቶችን ያንቁጫን%1$s ያለ Google Play አገልግሎቶች አይሰራም፣ እነሱ ደግሞ በመሣሪያዎ ላይ የሉም።Google Play አገልግሎቶችን ያግኙGoogle Play አገልግሎቶች ተገኝነትየGoogle Play አገልግሎቶች ስህተት%1$s ያለGoogle Play አገልግሎቶች አይሄድም፣ እነዚህም በመሣሪያዎ አይደገፉም።ያዘምኑGoogle Play አገልግሎቶችን ካላዘመኑ በስተቀር ድረስ %1$s አይሰራም።Google Play አገልግሎቶችን ያዘምኑ%1$s ያለ Google Play አገልግሎቶች አይሰራም፣ እነሱ ደግሞ በአሁኑ ጊዜ በመዘመን ላይ ናቸው።አዲስ የGoogle Play አገልግሎቶች ስሪት ያስፈልጋል። በቅርቡ እራሱን ያዘምናል።ስልክ ላይ ክፈትግባበGoogle ይግቡ啟用您必須啟用 Google Play 服務,才能執行「%1$s」。啟用 Google Play 服務安裝您的裝置並未安裝 Google Play 服務,因此無法執行「%1$s」。取得 Google Play 服務Google Play 服務可用性Google Play 服務發生錯誤您的裝置不支援 Google Play 服務,因此無法執行「%1$s」。更新您必須更新 Google Play 服務,才能執行「%1$s」。更新 Google Play 服務執行「%1$s」所需的 Google Play 服務正在更新。必須使用新版 Google Play 服務。該服務稍後就會自動更新。在手機上開啟登入使用 Google 帳戶登入പ്രവർത്തനക്ഷമമാക്കുകനിങ്ങൾ Google Play സേവനങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുന്നില്ലെങ്കിൽ %1$s പ്രവർത്തിക്കില്ല.Google Play സേവനങ്ങൾ പ്രവർത്തനക്ഷമമാക്കുകഇന്സ്റ്റാള് ചെയ്യുകGoogle Play സേവനങ്ങളില്ലാതെ %1$s പ്രവർത്തിക്കില്ല, ഈ സേവനങ്ങളാകട്ടെ നിങ്ങളുടെ ഉപകരണത്തിൽ ഇല്ല.Google Play സേവനങ്ങൾ നേടുകGoogle Play സേവന ലഭ്യതGoogle Play സേവനങ്ങളിലെ പിശക്Google Play സേവനങ്ങളില്ലാതെ %1$s പ്രവർത്തിക്കില്ല, സേവനങ്ങളെയാകട്ടെ നിങ്ങളുടെ ഉപകരണം പിന്തുണയ്ക്കുന്നുമില്ല.അപ്ഡേറ്റുചെയ്യുകനിങ്ങൾ Google Play സേവനങ്ങൾ അപ്ഡേറ്റുചെയ്തില്ലെങ്കിൽ %1$s പ്രവർത്തിക്കില്ല.Google Play സേവനങ്ങൾ അപ്ഡേറ്റുചെയ്യുകനിലവിൽ അപ്ഡേറ്റുചെയ്യുന്ന Google Play സേവനങ്ങൾ ഇല്ലാതെ %1$s പ്രവർത്തിക്കില്ല.Google Play സേവനങ്ങളുടെ പുതിയ പതിപ്പ് ആവശ്യമാണ്. താമസിയാതെ ഇത് സ്വയം അപ്ഡേറ്റുചെയ്യും.ഫോണിൽ തുറക്കുകസൈൻ ഇൻ ചെയ്യുകGoogle ഉപയോഗിച്ച് സൈൻ ഇൻ ചെയ്യുകActivar%1$s non funcionará a menos que actives os servizos de Google Play.Activar servizos de Google PlayInstalar%1$s non se executará se o teu dispositivo non ten instalados os servizos de Google Play.Descargar servizos de Google PlayDispoñibilidade dos servizos de PlayErro nos servizos de Google Play%1$s non se executará sen os servizos de Google Play, que non son compatibles co teu dispositivo.Actualizar%1$s non se executará a menos que actualices os servizos de Google Play.Actualizar os servizos de Google Play%1$s non se executará sen os servizos de Google Play, que se están actualizando neste momento.Necesítase a nova versión dos servizos de Google Play. Actualizarase en breve.Abrir no teléfonoIniciar sesiónIniciar sesión con GoogleВключитьДля работы приложения \"%1$s\" требуется включить сервисы Google Play.Включите сервисы Google PlayУстановитьДля работы приложения \"%1$s\" требуется установить сервисы Google Play.Установите сервисы Google PlayДоступность сервисов Google PlayОшибка сервисов Google PlayДля работы с приложением \"%1$s\" требуются сервисы Google Play. Они не поддерживаются на вашем устройстве.ОбновитьЧтобы запустить приложение \"%1$s\", обновите сервисы Google Play.Обновите сервисы Google PlayСервисы Google Play, необходимые для работы приложения \"%1$s\", в настоящий момент обновляются.Версия сервисов Google Play устарела. Они автоматически обновятся в ближайшее время.Открыть на телефонеВойтиВойти через аккаунт GoogleNika amandlaI-%1$s ngeke isebenze ngaphandle kokuthi unike amandla amasevisi we-Google Play.Nika amandla amasevisi we-Google PlayFakaI-%1$s ngeke ize iqalise ngaphandle kwamasevisi we-Google Play, angekho kusukela kudivayisi yakho.Thola amasevisi we-Google PlayUkungatholakali kwamasevisi e-Google PlayIphutha lamasevisi we-Google Play%1$s ngeke isebenze ngaphandle kwamasevisi e-Google Play, angasekelwa idivayisi yakho.IsibuyekezoI-%1$s ngeke ize iqalise ngaphandle kokuthi ubuyekeze i-Google Play.Buyekeza amasevisi we-Google PlayI-%1$s ngeke ize iqalise ngaphandle kwamasevisi we-Google Play, okwamanje abuyekezwayo.Kudingeka inguqulo entsha yamasevisi we-Google Play. Izozibuyekeza ngokwayo maduze.Vula kufoniNgena ngemvumeNgena ngemvume nge-Googleಸಕ್ರಿಯಗೊಳಿಸುGoogle Play ಸೇವೆಗಳನ್ನು ನೀವು ಸಕ್ರಿಯಗೊಳಿಸದ ಹೊರತು %1$s ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ.Google Play ಸೇವೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿಇನ್ಸ್ಟಾಲ್ ಮಾಡಿನಿಮ್ಮ ಸಾಧನದಿಂದ ಕಾಣೆಯಾಗಿರುವ %1$s, Google Play ಸೇವೆಗಳಿಲ್ಲದೆ ರನ್ ಆಗುವುದಿಲ್ಲ.Google Play ಸೇವೆಗಳನ್ನು ಪಡೆಯಿರಿGoogle Play ಸೇವೆಗಳ ಲಭ್ಯತೆGoogle Play ಸೇವೆಗಳ ದೋಷನಿಮ್ಮ ಸಾಧನದ ಮೂಲಕ ಬೆಂಬಲಿಸದಿರುವ Google Play ಸೇವೆಗಳಿಲ್ಲದೆ %1$s ರನ್ ಆಗುವುದಿಲ್ಲ.ಅಪ್ಡೇಟ್ ಮಾಡಿನೀವು Google Play ಸೇವೆಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡದ ಹೊರತು %1$s ರನ್ ಆಗುವುದಿಲ್ಲ.Google ಪ್ಲೇ ಸೇವೆಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿGoogle Play ಸೇವೆಗಳಿಲ್ಲದೆ ಪ್ರಸ್ತುತ ಅಪ್ಡೇಟ್ ಆಗುತ್ತಿರುವ %1$s ರನ್ ಆಗುವುದಿಲ್ಲ.Google Play ಸೇವೆಗಳ ಹೊಸ ಆವೃತ್ತಿ ಅಗತ್ಯವಿದೆ. ಸದ್ಯದಲ್ಲೇ ಅದು ತಾನಾಗಿಯೇ ಅಪ್ಡೇಟ್ ಆಗುತ್ತದೆ.ಫೋನ್ನಲ್ಲಿ ತೆರೆಯಿರಿಸೈನ್ ಇನ್Google ಮೂಲಕ ಸೈನ್ ಇನ್ ಮಾಡಿAktivera%1$s fungerar inte om du inte aktiverar Google Play-tjänster.Aktivera Google Play-tjänsterInstallera%1$s kan inte köras utan Google Play-tjänsterna, som saknas på enheten.Hämta Google Play-tjänsterTillgänglighet för Google Plays tjänsterFel på Google Play-tjänster%1$s fungerar inte utan Google Play-tjänsterna, som inte stöds på enheten.Uppdatera%1$s kan inte köras om du inte uppdaterar Google Play-tjänsterna.Uppdatera Google Play-tjänster%1$s kan inte köras utan Google Play-tjänster, och dessa uppdateras för närvarande.En ny version av Google Play-tjänster krävs. Den uppdateras automatiskt inom kort.Öppna på mobilenLogga inLogga in med GoogleAktivizo%1$s nuk do të funksionojë nëse nuk aktivizon shërbimet e \"Luaj me Google\".Aktivizo shërbimet e \"Luaj me Google\"Instalo%1$s nuk do të funksionojë pa shërbimet e Google Play, të cilat mungojnë në pajisjen tënde.Merr shërbimet e \"Luaj me Google\"Disponueshmëria e shërbimeve të Google PlayGabim në shërbimet e \"Luaj me Google\"%1$s nuk do të funksionojë pa shërbimet e Google Play, të cilat nuk mbështeten nga pajisja jote.Përditëso%1$s nuk do të funksionojë nëse nuk përditëson shërbimet e \"Luaj me Google\".Përditëso shërbimet e \"Luaj me Google\"%1$s nuk do të funksionojë pa shërbimet e Google Play, të cilat po përditësohen aktualisht.Nevojitet një version i ri i shërbimeve të \"Luaj me Google\". Ai do të përditësohet automatikisht së shpejti.Hape në telefonIdentifikohuIdentifikohu me Googleفعال کردنتا وقتی «خدمات Google Play» را فعال نکنید، %1$s کار نمیکند.فعال کردن «خدمات Google Play»نصب%1$s بدون خدمات Google Play که در دستگاه شما وجود ندارد اجرا نمیشود.دریافت «خدمات Google Play»دردسترس بودن خدمات Google Playخطا در خدمات Google Play%1$s بدون خدمات Google Play که در دستگاه شما پشتیبانی نمیشود، اجرا نخواهد شد.بهروزرسانیتاز مانی که «خدمات Google Play» را بهروزرسانی نکنید، %1$s اجرا نمیشود.بهروزرسانی «خدمات Google Play»%1$s بدون «خدمات Google Play» که درحال حاضر درحال بهروزرسانی هستند، کار نمیکند.نسخه جدید «خدمات Google Play» نیاز است. بهزودی بهطور خودکار بهروزرسانی میشود.باز کردن در تلفنورود به سیستمورود به سیستم با Googleဖွင့်ရန်Google Play ဝန်ဆောင်မှုများကို မဖွင့်သ၍ %1$s သည်အလုပ်လုပ်မည်မဟုတ်ပါ။Google Play ဝန်ဆောင်မှုများ ဖွင့်ရန်ထည့်သွင်းပါသင့်တက်ဘလက်တွင် Google Play ဝန်ဆောင်မှုများမရှိသောကြောင့် %1$s ကိုဖွင့်၍မရပါ။Google Play ဝန်ဆောင်မှုများရယူရန်Google Play ဝန်ဆောင်မှုများ ရရှိနိုင်သည်Google Play ဝန်ဆောင်မှုများ အမှားGoogle Play ဝန်ဆောင်မှုများကို သင့်စက်ပစ္စည်းတွင် ပံ့ပိုးမထားသည့်အတွက် ၎င်းမရှိဘဲ %1$s ကို ဖွင့်၍မရပါ။အပ်ဒိတ်Google Play ဝန်ဆောင်မှုများအား အပ်ဒိတ်မလုပ်ပါက %1$s အလုပ်လုပ်မည် မဟုတ်ပါ။Google Play ဝန်ဆောင်မှုများကို အပ်ဒိတ်လုပ်ရန်Google Play ဝန်ဆောင်မှုများကို လက်ရှိအပ်ဒိတ်လုပ်နေသောကြောင့် %1$s ကိုဖွင့်၍ရမည်မဟုတ်ပါ။Google Play ဝန်ဆောင်မှုဗားရှင်းအသစ်များ လိုအပ်နေသည်။ အချိန်အနည်းငယ်အကြာတွင် ၎င်းကိုယ်တိုင်အပ်ဒိတ်လုပ်ပါ လိမ့်မည်။ဖုန်းပေါ်မှာ ဖွင့်ပါလက်မှတ်ထိုး ဝင်ရန်Google ဖြင့် လက်မှတ်ထိုးဝင်ရေOmogući%1$s neće funkcionisati ako ne omogućite Google Play usluge.Omogućite Google Play uslugeInstaliraj%1$s ne može da se pokrene bez Google Play usluga, koje nisu instalirane na uređaju.Preuzmite Google Play uslugeDostupnost Google Play uslugaGreška Google Play usluga%1$s ne može da se pokrene bez Google Play usluga, koje uređaj ne podržava.Ažuriraj%1$s ne može da se pokrene ako ne ažurirate Google Play usluge.Ažurirajte Google Play usluge%1$s ne može da se pokrene bez Google Play usluga, koje se trenutno ažuriraju.Potrebna je nova verzija Google Play usluga. Uskoro će se ažurirati.Otvori na telefonuPrijavi mePrijavi me na GoogleHabilitar%1$s no funcionará a menos que habilites los servicios de Google Play.Habilitar servicios de Google PlayInstalar%1$s no se ejecutará si los Servicios de Google Play no están instalados en tu dispositivo.Obtener servicios de Google PlayDisp. de los Servicios de Google PlayError de Google Play Services%1$s no se ejecutará sin los servicios de Google Play, que no son compatibles con tu dispositivo.Actualizar%1$s no se ejecutará a menos que actualices los servicios de Google Play.Actualizar servicios de Google Play%1$s no se ejecutará sin los servicios de Google Play. La plataforma se está actualizando en este momento.Se necesita una nueva versión de los servicios de Google Play. Se actualizarán automáticamente en breve.Abrir en el teléfonoAccederAcceder con GoogleBật%1$s sẽ không hoạt động nếu bạn không bật dịch vụ của Google Play.Bật dịch vụ của Google PlayCài đặt%1$s sẽ không chạy nếu không có dịch vụ của Google Play. Thiết bị của bạn bị thiếu dịch vụ này.Cài đặt dịch vụ của Google PlayPhạm vi cung cấp Dịch vụ Google PlayLỗi dịch vụ của Google Play%1$s sẽ không chạy nếu không có Dịch vụ Google Play. Thiết bị của bạn không hỗ trợ các dịch vụ này.Cập nhật%1$s sẽ không chạy trừ khi bạn cập nhật Dịch vụ Google Play.Cập nhật dịch vụ của Google Play%1$s sẽ không chạy nếu không có dịch vụ của Google Play. Dịch vụ này hiện đang cập nhật.Cần phiên bản mới của dịch vụ Google Play. Dịch vụ sẽ sớm tự động cập nhật.Mở trên điện thoạiĐăng nhậpĐăng nhập bằng GoogleOmogući%1$s neće funkcionirati ako ne omogućite usluge Google Playa.Omogućivanje usluga Google PlayaInstaliraj%1$s neće funkcionirati bez usluga Google Playa koje nisu instalirane na vašem uređaju.Preuzimanje usluga Google PlayaDostupnost usluga za Google PlayPogreška Usluga za Google Play%1$s neće funkcionirati bez usluga Google Playa koje vaš uređaj ne podržava.Ažuriraj%1$s neće funkcionirati ako ne ažurirate Google Play usluge.Ažuriranje usluga Google Playa%1$s neće se pokrenuti bez usluga Google Playa koje se trenutačno ažuriraju.Potrebna je nova verzija usluga Google Playa. Uskoro će se ažurirati.Otvori na telefonuPrijavaPrijava putem Googleaসক্ষম কৰকআপুনি Google Play সেৱাবোৰ সক্ষম নকৰালৈকে %1$sএ কাম নকৰিব।Google প্লে সেৱাসক্ষম কৰকইনষ্টল কৰক%1$s Google প্লে সেৱাৰ অবিহনে নচলে, যিটো আপোনাৰ ডিভাইচত নাই।Google প্লে সেৱালাভ কৰকGoogle প্লে সেৱাসমূহৰ উপলব্ধতাGoogle Playৰ সেৱা সম্পৰ্কীয় আসোঁৱাহ%1$s Google প্লে সেৱাৰ অবিহনে নচলে, যিবোৰ আপোনাৰ ডিভাইচত চলিব নোৱাৰে।আপডে’ট কৰকআপুনি Google Play সেৱাবোৰ আপডে’ট নকৰালৈকে %1$s নচলিব।Google Play সেৱা আপডে’ট কৰকবৰ্তমান আপডে’ট হৈ থকা Google Play সেৱাসমূহৰ অবিহনে %1$s নচলিব৷Google Play সেৱাসমূহৰ নতুন সংস্কৰণৰ প্ৰয়োজন৷ এইটো শীঘ্ৰেই নিজে-নিজে আপডে’ট হ’ব৷ফ\'নত খোলকছাইন ইন কৰকGoogleৰ জৰিয়তে ছাইন ইন কৰকהפעלהאפליקציה %1$s לא תפעל אם לא תפעיל את שירותי Google Play.הפעל את שירותי Google Playהתקןהאפליקציה %1$s לא תפעל ללא שירותי Google Play, שאינם מותקנים במכשיר.קבל את שירותי Google Playזמינות של שירותי Google Playשגיאה בשירותי Google Play%1$s לא תפעל ללא שירותי Google Play, שאינם נתמכים במכשיר שלך.עדכון%1$s לא יפעל אם לא תעדכן את שירותי Google Play.עדכון שירותי Google Playהאפליקציה %1$s לא תפעל ללא שירותי Google Play, שמתעדכנים כרגע.דרושה גרסה חדשה של שירותי Google Play. הגרסה תתעדכן בעצמה תוך זמן קצר.פתח בטלפוןכניסההיכנס באמצעות GooglePovoliťAplikácia %1$s bude fungovať až po povolení služieb Google Play.Povoliť služby Google PlayInštalovaťNa spustenie aplikácie %1$s sa vyžadujú služby Google Play, ktoré na zariadení nemáte.Inštalovať služby Google PlayDostupnosť služieb Google PlayChyba služieb Google PlayAplikáciu %1$s nebude možné spustiť bez služieb Google Play, ktoré vaše zariadenie nepodporuje.AktualizovaťAplikáciu %1$s bude možné spustiť až po aktualizácii služieb Google Play.Aktualizácia služieb Google PlayNa spustenie aplikácie %1$s sa vyžadujú služby Google Play, ktoré sa momentálne aktualizujú.Vyžaduje sa nová verzia služieb Google Play. Aktualizujú sa automaticky v najbližšom čase.Otvoriť v telefónePrihlásiť saPrihlásiť sa do účtu GoogleLubaRakendus %1$s töötab ainult siis, kui lubate Google Play teenused.Google Play teenuste lubamineInstalliRakendus %1$s töötab ainult koos Google Play teenustega, mida teie seadmes pole.Google Play teenuste hankimineGoogle Play teenuste saadavalolekViga Google Play teenustesRakendus %1$s töötab ainult koos Google Play teenustega, mida teie seadmes ei toetata.VärskendaRakenduse %1$s töötamiseks peate värskendama Google Play teenuseid.Google Play teenuste värskendamineRakendus %1$s töötab ainult koos Google Play teenustega, mida praegu värskendatakse.Vajalik on Google Play teenuste uus versioon. See värskendab end peagi.Ava telefonisLogi sisseLogi sisse Google\'i kontogaWłączAplikacja %1$s nie będzie działać, jeśli nie włączysz Usług Google Play.Włącz Usługi Google PlayZainstaluj%1$s nie będzie działać, jeśli nie zainstalujesz na urządzeniu Usług Google Play.Pobierz Usługi Google PlayDostępność Usług Google PlayBłąd Usług Google Play%1$s nie będzie działać bez Usług Google Play, które nie są obecnie obsługiwane przez urządzenie.AktualizujAplikacja %1$s nie będzie działać, jeśli nie zaktualizujesz Usług Google Play.Zaktualizuj Usługi Google PlayAplikacja %1$s nie będzie działać bez Usług Google Play, które są obecnie aktualizowane.Wymagana jest nowa wersja Usług Google Play. Wkrótce nastąpi automatyczna aktualizacja.Otwórz na telefonieZaloguj sięZaloguj się przez GoogleI-enableHindi gagana ang %1$s maliban kung ie-enable mo ang mga serbisyo ng Google Play.I-enable ang mga serbisyo ng Google PlayI-installHindi gagana ang %1$s nang wala ang mga serbisyo ng Google Play na wala sa iyong device.Kunin ang mga serbisyo ng Google PlayAvailability ng serbisyo ng Google PlayError sa Mga Serbisyo ng Google PlayHindi gagana ang %1$s nang wala ang mga serbisyo ng Google Play, na hindi nasusuportahan ng iyong device.I-updateHindi gagana ang %1$s maliban kung i-a-update mo ang mga serbisyo ng Google Play.I-update ang mga serbisyo ng Google PlayHindi gagana ang %1$s nang wala ang mga serbisyo ng Google Play na kasalukuyang ina-update.Kailangan ang bagong bersyon ng mga serbisyo ng Google Play. Mag-a-update itong mag-isa sa ilang sandali.Buksan sa teleponoMag-sign inMag-sign in sa GoogleУвімкнутиДодаток %1$s не працюватиме, якщо не ввімкнути сервіси Google Play.Увімкнути сервіси Google PlayУстановитиДодаток %1$s не працюватиме без сервісів Google Play, яких немає на вашому пристрої.Установити сервіси Google PlayДоступність сервісів Google PlayПомилка сервісів Google PlayДодаток %1$s не працюватиме без сервісів Google Play, які не підтримуються на вашому пристрої.ОновитиДодаток %1$s не працюватиме, якщо не оновити сервіси Google Play.Оновіть сервіси Google PlayДодаток %1$s не працюватиме без сервісів Google Play, які зараз оновлюються.Потрібна нова версія сервісів Google Play. Вони невдовзі оновляться.Відкрити на телефоніУвійтиУвійти в облік. запис GoogleOta käyttöön%1$s ei toimi, ellet ota Google Play Palveluita käyttöön.Ota Google Play Palvelut käyttöönAsenna%1$s ei toimi ilman Google Play Palveluita, jotka puuttuvat laitteeltasi.Asenna Google Play PalvelutGoogle Play Palveluiden saatavuusVirhe Google Play -palveluissa%1$s ei toimi ilman Google Play Palveluita, joita laitteesi ei tue.Päivitä%1$s ei toimi, ellet päivitä Google Play Palveluita.Päivitä Google Play Palvelut%1$s ei toimi ilman Google Play Palveluita, joita päivitetään tällä hetkellä.Uusi Google Play Palveluiden versio tarvitaan. Se päivittyy pian.Avaa puhelimessaKirjaudu sisäänKirjaudu Google-tililleప్రారంభించుమీరు Google Play సేవలను ప్రారంభిస్తే మినహా %1$s పని చేయదు.Google Play సేవలను ప్రారంభించండిఇన్స్టాల్ చేయి%1$s Google Play సేవలు లేకుండా అమలు కాదు, ఆ సేవలు మీ పరికరంలో లేవు.Google Play సేవలను పొందండిGoogle Play సేవల లభ్యతGoogle Play సేవల ఎర్రర్%1$s Google Play సేవలు లేకుండా అమలు కాదు, ఈ సేవలకు మీ పరికరంలో మద్దతు లేదు.అప్డేట్ చేయిమీరు Google Play సేవలను నవీకరిస్తే మినహా %1$s అమలు కాదు.Google Play సేవలను అప్డేట్ చేయండి%1$s Google Play సేవలు లేకుండా అమలు కాదు, ఆ సేవలు ప్రస్తుతం నవీకరించబడుతున్నాయి.కొత్త Google Play సేవల వెర్షన్ అవసరం. అది కొద్ది సేపట్లో దానంతట అదే అప్డేట్ చేయబడుతుంది.ఫోన్లో తెరువుసైన్ ఇన్ చేయండిGoogleతో సైన్ ఇన్ చేయండి@android:color/white#1F000000@android:color/black@android:color/white#90000000#1F000000#90000000#DE000000Enable%1$s won\'t work unless you enable Google Play services.Enable Google Play servicesInstall%1$s won\'t run without Google Play services, which are missing from your device.Get Google Play servicesGoogle Play services availabilityGoogle Play services error%1$s won\'t run without Google Play services, which are not supported by your device.Update%1$s won\'t run unless you update Google Play services.Update Google Play services%1$s won\'t run without Google Play services, which are currently updating.New version of Google Play services needed. It will update itself shortly.Open on phoneSign inSign in with Google
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+இயக்குGoogle Play சேவைகளை இயக்கினால் மட்டுமே, %1$s செயல்படும்.Google Play சேவைகளை இயக்கவும்நிறுவுGoogle Play சேவைகள் இருந்தால் மட்டுமே, %1$s இயங்கும். அவை உங்கள் சாதனத்தில் இல்லை.Google Play சேவைகளைப் பெறவும்கிடைக்கும் Google Play சேவைகள்Google Play சேவைகள் பிழைGoogle Play சேவைகள் இருந்தால் மட்டுமே %1$s ஆப்ஸ் இயங்கும். ஆனால், உங்கள் சாதனத்தில் அவை ஆதரிக்கப்படவில்லை.புதுப்பிGoogle Play சேவைகளை இயக்கினால் மட்டுமே, %1$s செயல்படும்.Google Play சேவைகளைப் புதுப்பிக்கவும்தற்போது புதுப்பிக்கப்படும், Google Play சேவைகள் இருந்தால் மட்டுமே, %1$s செயல்படும்.Google Play சேவைகளின் புதிய பதிப்பு தேவை. அது விரைவில் தானாகவே புதுப்பிக்கப்படும்.மொபைலில் திறஉள்நுழைகGoogle மூலம் உள்நுழைகАктивиране%1$s няма да работи, освен ако не активирате услугите за Google Play.Активиране на услугите за Google PlayИнсталиране%1$s няма да се изпълнява, тъй като услугите за Google Play не са инсталирани на устройството ви.Изтегляне на услугите за Google PlayНаличност на услугите за Google PlayГрешка в услугите за Google Play%1$s няма да се изпълнява, тъй като услугите за Google Play не се поддържат от устройството ви.Актуализиране%1$s няма да се изпълнява, освен ако не актуализирате услугите за Google Play.Актуализиране на услугите за Google Play%1$s няма да се изпълнява без услугите за Google Play. Понастоящем те се актуализират.Необходима е нова версия на услугите за Google Play. Скоро тя ще се актуализира автоматично.Отваряне на телефонаВходВход с Googleસક્ષમ કરોતમે Google Play સેવાઓ સક્ષમ કરશો નહીં ત્યાં સુધી %1$s કાર્ય કરશે નહીં.Google Play સેવાઓ સક્ષમ કરોઇન્સ્ટૉલ કરો%1$s, Google Play સેવાઓ વગર ચાલશે નહીં, જે તમારા ઉપકરણમાંથી ખૂટે છે.Google Play સેવાઓ મેળવોGoogle Play સેવાઓની ઉપલબ્ધતાGoogle Play સેવાઓની ભૂલ%1$s, Google Play સેવાઓ વગર ચાલશે નહીં, જે તમારા ઉપકરણ દ્વારા સમર્થિત નથી.અપડેટ કરોતમે Google Play સેવાઓ અપડેટ કરશો નહીં ત્યાં સુધી %1$s શરૂ થશે નહીં.Google Play સેવાઓ અપડેટ કરો%1$s, Google Play સેવાઓ વગર શરૂ થશે નહીં, જે વર્તમાનમાં અપડેટ થઈ રહી છે.Google Play સેવાઓના નવા સંસ્કરણની જરૂર છે. તે ટૂંક સમયમાં પોતાને અપડેટ કરશે.ફોનમાં ખોલોસાઇન ઇન કરોGoogle માં સાઇન ઇન કરોসক্ষম করুনআপনি Google Play পরিষেবা সক্ষম না করা পর্যন্ত %1$s কাজ করবে না।Google Play পরিষেবা সক্ষম করুনইনস্টল করুনGoogle Play পরিষেবা ছাড়া %1$s চলবে না, যা আপনার ডিভাইসে অনুপস্থিত।Google Play পরিষেবা পানGoogle Play পরিষেবার উপলভ্যতাGoogle Play পরিষেবার ত্রুটিGoogle Play পরিষেবা ছাড়া %1$s চলবে না, যেটি আপনার ডিভাইসে সমর্থিত নয়৷আপডেট করুনআপনি Google Play পরিষেবা আপডেট না করা পর্যন্ত %1$s চলবে না।Google Play পরিষেবা আপডেট করুনGoogle Play পরিষেবা ছাড়া %1$s চলবে না যা বর্তমানে আপডেট হচ্ছে।Google Play পরিষেবার নতুন ভার্সন প্রয়োজন৷ খুব শীঘ্রই এটা নিজেই আপডেট হবে৷ফোনে খুলুনসাইন-ইন করুনGoogle এর মাধ্যমে সাইন-ইন করুনҚосуGoogle Play қызметтерін қоспасаңыз, %1$s жұмыс істемейді.Google Play қызметтерін қосуОрнатуGoogle Play қызметтері құрылғыда болмағандықтан, %1$s іске қосылмайды.Google Play қызметтерін алуGoogle Play қызметтерінің қолжетімділігіGoogle Play қызметтерінің қатесі%1$s қолданбасы құрылғыңызда қолдау көрсетілмейтін Google Play қызметінсіз жұмыс істемейді.ЖаңартуGoogle Play қызметтерін жаңартпасаңыз, %1$s іске қосылмайды.Google Play қызметтерін жаңартуҚазіргі уақытта жаңартылып жатқан Google Play қызметтерінсіз %1$s іске қосылмайды.Google Play қызметтерінің жаңа нұсқасы қажет. Ол қысқа уақыттан кейін өзі жаңарады.Телефонда ашуКіруGoogle арқылы кіруAttiva%1$s non funzionerà se non attivi Google Play Services.Attiva Google Play ServicesInstallaL\'app %1$s non funzionerà senza Google Play Services, non presente sul tuo dispositivo.Installa Google Play ServicesDisponibilità di Google Play ServicesErrore Google Play Services%1$s non funzionerà senza Google Play Services, non supportati dal tuo dispositivo.Aggiorna%1$s non funzionerà se non aggiorni Google Play Services.Aggiorna Google Play Services%1$s non funzionerà senza Google Play Services, attualmente in fase di aggiornamento.È richiesta una nuova versione di Google Play Services. L\'aggiornamento automatico verrà eseguito a breve.Apri sul telefonoAccediAccedi con GoogleAktivér%1$s fungerer ikke med mindre du slår på Google Play-tjenester.Slå på Google Play-tjenesterInstaller%1$s kan ikke kjøre uten Google Play-tjenester, som ikke er installert på enheten din.Installer Google Play-tjenesterGoogle Play Tjenester-tilgjengelighetGoogle Play Tjenester-feil%1$s kan ikke kjøre uten Google Play-tjenester, som ikke støttes av enheten din.Oppdater%1$s kjører ikke med mindre du oppdaterer Google Play Tjenester.Oppdater Google Play-tjenester%1$s kjører ikke uten Google Play-tjenester, som oppdateres akkurat nå.Du må installere en ny versjon av Google Play-tjenester. Appen oppdateres automatisk om en kort stund.Åpne på telefonenLogg påLogg på med Googleसुरू करातुम्ही Google Play सेवा सक्षम केल्याशिवाय %1$s हा अॅप कार्य करणार नाही.Google Play सेवा सुरू करास्थापित कराGoogle Play सेवा आपल्या डिव्हाइसवर उपलब्ध नाही, त्याशिवाय %1$s चालणार नाही.Google Play सेवा मिळवाGoogle Play सेवा उपलब्धताGoogle Play सेवा एररतुमचे डिव्हाइस सपोर्ट करत नसलेल्या, Google Play सेवांशिवाय %1$s चालणार नाही.अपडेट करातुम्ही Google Play सेवा अपडेट करेपर्यंत %1$s चालणार नाही.Google Play सेवा अपडेट करासध्या अपडेट होत असलेल्या, Google Play सेवांशिवाय %1$s चालणार नाही.Google Play सेवांच्या नवीन आवृत्तीची आवश्यकता आहे. हे स्वत:ला लवकरच अपडेट करेल.फोनवर उघडासाइन इन कराGoogle सह साइन इन कराActivați%1$s nu va funcționa decât dacă activați serviciile Google Play.Activați serviciile Google PlayInstalați%1$s nu va rula fără serviciile Google Play, care lipsesc de pe dispozitivul dvs.Descărcați serviciile Google PlayDisponibilitatea serviciilor Google PlayEroare a serviciilor Google Play%1$s nu va rula fără serviciile Google Play, care nu sunt acceptate de dispozitivul dvs.Actualizați%1$s nu va rula decât dacă actualizați serviciile Google Play.Actualizați serviciile Google Play%1$s nu va rula fără serviciile Google Play, care momentan se actualizează.Este necesară o nouă versiune a serviciilor Google Play. Se vor actualiza automat în curând.Deschideți pe telefonConectați-văConectați-vă cu GoogleHabilitar%1$s no funcionará hasta que no habilites Servicios de Google Play.Habilita Servicios de Google PlayInstalar%1$s no se ejecutará si los Servicios de Google Play no están instalados en tu dispositivo.Descargar Servicios de Google PlayDisponibilidad Servicios de Google PlayError de Servicios de Google PlayNo es posible ejecutar la aplicación %1$s sin los Servicios de Google Play, que no son compatibles con tu dispositivo.Actualizar%1$s no funcionará hasta que no actualices Servicios de Google Play.Actualiza Servicios de Google Play%1$s no se ejecutará hasta que finalice la actualización en curso de Servicios de Google Play.Se necesita una nueva versión de Servicios de Google Play. Se actualizará en breve.Abrir en teléfonoIniciar sesiónIniciar sesión con GoogleOmogućiAplikacija %1$s neće raditi ako ne omogućite Google Play usluge.Omogućite Google Play uslugeInstalirajAplikacija %1$s neće raditi bez Google Play usluga, kojih na vašem uređaju nema.Nabavite Google Play uslugeDostupnost Google Play uslugaGreška Google Play uslugeAplikacija %1$s neće raditi bez Google Play usluga, koje vaš uređaj ne podržava.AžurirajAplikacija %1$s neće raditi ako ne ažurirate Google Play usluge.Ažuriranje Google Play uslugaAplikacija %1$s neće raditi bez Google Play usluga, koje se trenutno ažuriraju.Potrebna je nova verzija Google Play usluga. Ubrzo će se samo ažurirati.Otvori na telefonuPrijavaPrijavi se pomoću Googlea사용 설정Google Play 서비스를 사용하도록 설정해야 %1$s이(가) 작동합니다.Google Play 서비스 사용설치기기에 Google Play 서비스가 설치되어 있어야 %1$s이(가) 실행됩니다.Google Play 서비스 설치Google Play 서비스 사용 가능 여부Google Play 서비스 오류%1$s은(는) Google Play 서비스 없이는 실행되지 않으나, 기기에서 Google Play 서비스를 지원하지 않습니다.업데이트Google Play 서비스를 업데이트해야 %1$s이(가) 실행됩니다.Google Play 서비스 업데이트현재 업데이트 중인 Google Play 서비스가 있어야 %1$s이(가) 실행됩니다.새 버전의 Google Play 서비스가 필요합니다. 곧 자동으로 업데이트됩니다.스마트폰에서 열기로그인Google 계정으로 로그인සබල කරන්නඔබ Google Play සේවා සබල කරන්නේ නම් මිස %1$s වැඩ නොකරනු ඇත.Google Play සේවා සබල කරන්නස්ථාපනය කරන්නඔබගේ ටැබ්ලට් පරිගණකයේ නැති Google Play සේවා නොමැතිව %1$s ධාවනය නොවනු ඇත.Google Play සේවා ලබා ගන්නGoogle Play සේවාවල ලබා ගත හැකි බවGoogle Play සේවා දෝෂයඔබගේ උපාංගය මගින් සහාය නොදක්වන, Google Play සේවා නොමැතිව %1$s ධාවනය නොවනු ඇත.යාවත්කාලීන කරන්නGoogle Play සේවා යාවත්කාලීන කරන්නේ නොමැතිව %1$s ධාවනය නොවේ.Google Play සේවා යාවත්කාලීන කරන්නදැනට යාවත්කාලීන කරමින් ඇති, Google Play සේවා නොමැතිව %1$s ධාවනය නොවනු ඇත.Google Play සේවාවල නව අනුවාදයක් අවශ්යයි. එය මද වේලාවකින් එය විසින්ම යාවත්කාලීන වනු ඇත.දුරකථනය තුළ විවෘත කරන්නපුරන්නGoogle සමගින් පුරන්නបើក%1$s នឹងមិនដំណើរការទេ លុះត្រាតែអ្នកបើកសេវាកម្ម Google Play។បើកសេវាកម្ម Google Playដំឡើង%1$s នឹងមិនដំណើរការទេ ប្រសិនបើមិនមានសេវាកម្មនានារបស់ Google Play ដែលបានបាត់ពីឧបករណ៍របស់អ្នក។ទាញយកសេវាកម្ម Google Playលទ្ធភាពប្រើប្រាស់សេវាកម្ម Google Playកំហុសសេវាកម្ម Google កម្សាន្ត%1$s នឹងមិនដំណើរការដោយគ្មានសេវាកម្មរបស់ Google Play ដែលឧបករណ៍របស់អ្នកមិនគាំទ្រនោះទេ។ធ្វើបច្ចុប្បន្នភាព%1$s នឹងមិនដំណើរការទេ លុះត្រាតែអ្នកធ្វើបច្ចុប្បន្នភាពសេវាកម្ម Google Play។អាប់ដេតសេវាកម្ម Google Play%1$s នឹងមិនដំណើរការទេ បើមិនមានសេវាកម្ម Google Play ដោយសារតែវាកំពុងអាប់ដេត។តម្រូវឲ្យមានកំណែថ្មីនៃសេវាកម្ម Google Play។ វានឹងអាប់ដេតដោយខ្លួនវានៅពេលបន្តិចទៀតនេះ។បើកតាមទូរស័ព្ទចូលចូលដោយប្រើ GoogleActiva%1$s no funcionarà si no actives Serveis de Google Play.Activa Serveis de Google PlayInstal·la%1$s no s\'executarà si Serveis de Google Play no està instal·lat al dispositiu.Obtén Serveis de Google PlayDisponibilitat de serveis de Google PlayError de Serveis de Google Play%1$s no es pot executar sense Serveis de Google Play, que no és compatible amb el teu dispositiu.Actualitza%1$s no s\'executarà si no actualitzes Serveis de Google Play.Actualitza Serveis de Google Play%1$s no s\'executarà sense Serveis de Google Play, que s\'està actualitzant en aquest moment.Cal una nova versió de Serveis de Google Play. S\'actualitzarà automàticament aviat.Obre al telèfonInicia sessióInicia la sessió amb GoogleAanzetten%1$s werkt niet, tenzij je Google Play-services aanzet.Google Play-services aanzettenInstalleren%1$s kan niet worden uitgevoerd zonder Google Play-services, die je nog niet op je apparaat hebt.Google Play-services ophalenBeschikbaarheid van Google Play-servicesFout met Google Play-services%1$s kan niet worden uitgevoerd zonder Google Play-services, die niet worden ondersteund op je apparaat.Updaten%1$s kan niet worden uitgevoerd, tenzij je Google Play-services updatet.Google Play-services updaten%1$s kan niet worden uitgevoerd zonder Google Play-services, die momenteel worden geüpdatet.Er is een nieuwe versie van Google Play-services vereist. De update wordt binnenkort automatisch uitgevoerd.Openen op telefoonInloggenInloggen met GoogleKveikja%1$s virkar ekki nema þú gerir þjónustu Google Play virka.Virkja þjónustu Google PlaySetja upp%1$s getur ekki keyrt án þjónustu Google Play, sem vantar í tækið þitt.Sækja þjónustu Google PlayStaða þjónustu Google PlayVilla í þjónustu Google Play%1$s getur ekki keyrt án þjónustu Google Play, sem er ekki studd af tækinu þínu.Uppfæra%1$s getur ekki keyrt nema þú uppfærir þjónustu Google Play.Uppfæra þjónustu Google Play%1$s getur ekki keyrt án þjónustu Google Play, sem verið er að uppfæra.Nýja útgáfu af þjónustu Google Play vantar. Hún uppfærir sig sjálf innan skamms.Opna í símanumSkrá innSkrá inn með GoogleOmogočiAplikacija %1$s ne bo delovala, če ne omogočite storitev Google Play.Omogočanje storitev Google PlayNamestiAplikacija %1$s ne deluje brez storitev Google Play, vendar teh ni v napravi.Namestitev storitev Google PlayDostopnost storitev Google PlayNapaka storitev Google PlayAplikacija %1$s ne deluje brez storitev Google Play, ki jih vaša naprava ne podpira.PosodobiAplikacija %1$s ne bo delovala, če ne posodobite storitev Google Play.Posodobitev storitev Google PlayAplikacija %1$s ne deluje brez storitev Google Play, ki se trenutno posodabljajo.Potrebujete novo različico storitev Google Play. V kratkem se bodo posodobile.Odpiranje v telefonuPrijavaPrijava z računom GoogleAktivérDu skal aktivere Google Play-tjenester, for at %1$s kan fungere.Aktivér Google Play-tjenesterInstallerDu skal installere Google Play-tjenester, før %1$s kan køre på din enhed.Hent Google Play-tjenesterGoogle Play-tjenesters tilgængelighedFejl i Google Play-tjenester%1$s fungerer ikke uden Google Play-tjenester, som ikke understøttes på din enhed.Opdater%1$s kan ikke køre, medmindre du opdaterer Google Play-tjenester.Opdater Google Play-tjenester%1$s kan ikke køre uden Google Play-tjenester, som i øjeblikket opdateres.Du skal bruge en ny version af Google Play-tjenester. Opdateringen gennemføres automatisk om et øjeblik.Åbn på telefonenLog indLog ind med GoogleIespējotLai lietotne %1$s darbotos, ir jāiespējo Google Play pakalpojumi.Google Play pakalpojumu iespējošanaInstalētLai lietotne %1$s darbotos, ierīcē ir jāinstalē Google Play pakalpojumi.Google Play pakalpojumu iegūšanaGoogle Play pakalpojumu pieejamībaGoogle Play pakalpojumu kļūdaLai lietotne %1$s darbotos, ir nepieciešami Google Play pakalpojumi, taču jūsu ierīce tos neatbalsta.AtjauninātLai lietotne %1$s darbotos, jums ir jāatjaunina Google Play pakalpojumi.Google Play pakalpojumu atjaunināšanaLai lietotne %1$s darbotos, ir jāinstalē Google Play pakalpojumi. Pašlaik notiek to atjaunināšana.Ir nepieciešama jauna Google Play pakalpojumu versija. Drīzumā tā tiks instalēta.Atvērt tālrunīPierakstītiesPierakstīties ar Google kontuОмогући%1$s неће функционисати ако не омогућите Google Play услуге.Омогућите Google Play услугеИнсталирај%1$s не може да се покрене без Google Play услуга, које нису инсталиране на уређају.Преузмите Google Play услугеДоступност Google Play услугаГрешка Google Play услуга%1$s не може да се покрене без Google Play услуга, које уређај не подржава.Ажурирај%1$s не може да се покрене ако не ажурирате Google Play услуге.Ажурирајте Google Play услуге%1$s не може да се покрене без Google Play услуга, које се тренутно ажурирају.Потребна је нова верзија Google Play услуга. Ускоро ће се ажурирати.Отвори на телефонуПријави меПријави ме на GoogleDayakan%1$s tidak akan berfungsi melainkan anda mendayakan perkhidmatan Google Play.Dayakan perkhidmatan Google PlayPasang%1$s tidak akan berfungsi tanpa perkhidmatan Google Play dan perkhidmatan ini tiada pada peranti anda.Dapatkan perkhidmatan Google PlayKetersediaan perkhidmatan Google PlayRalat perkhidmatan Google Play%1$s tidak akan berfungsi tanpa perkhidmatan Google Play dan perkhidmatan ini tidak disokong oleh peranti anda.Kemas kini%1$s tidak akan berfungsi kecuali anda mengemas kini perkhidmatan Google Play.Kemaskinikan perkhidmatan Google Play%1$s tidak akan berfungsi tanpa perkhidmatan Google Play dan perkhidmatan ini sedang dikemaskinikan.Versi baharu perkhidmatan Google Play diperlukan. Kemas kini automatik akan dijalankan sebentar lagi.Buka pada telefonLog masukLog masuk dengan Googleتفعيللن يعمل %1$s ما لم يتم تفعيل خدمات Google Play.تفعيل خدمات Google Playتثبيتلن يتم تشغيل %1$s بدون خدمات Google Play، والتي لا تتوفر على جهازك.الحصول على خدمات Google Playمدى توفّر خدمات Google Playخطأ في خدمات Google Playلن يتم تشغيل %1$s بدون خدمات Google Play التي لا يوفرها جهازك.تحديثلن يتم تشغيل %1$s ما لم يتم تحديث خدمات Google Play.تحديث خدمات Google Playلن يتم تشغيل %1$s بدون خدمات Google Play، والتي يتم تحديثها حاليًا.يجب توفر إصدار جديد من خدمات Google Play. سيتم تحديثها تلقائيًا قريبًا.فتح على الهاتفتسجل الدخولتسجيل الدخول عبر GoogleWasha%1$s haitafanya kazi isipokuwa uwashe huduma za Google Play.Washa huduma za Google PlaySakinisha%1$s haitafanya kazi bila huduma za Google Play. Huduma hizi hazipatikani kwenye kifaa chako.Pata huduma za Google PlayUpatikanaji wa huduma za Google PlayHitilafu kwenye huduma za Google Play%1$s haitafanya kazi bila huduma za Google Play. Huduma hizi hazitumiki kwenye kifaa chako.Sasisha%1$s haitafanya kazi hadi usasishe huduma za Google Play.Sasisha huduma za Google Play%1$s haitafanya kazi bila huduma za Google Play. Huduma hizi zinasasishwa sasa.Toleo jipya la huduma za Google Play linahitajika. Litajisasisha baada ya muda mfupi.Fungua kwenye simuIngia katika akauntiIngia katika akaunti ukitumia GoogleAtivarO %1$s não funciona enquanto não ativar os serviços do Google Play.Ativar serviços do Google PlayInstalarO %1$s não é executado sem os Serviços do Google Play, os quais estão em falta no seu dispositivo.Obter serviços do Google PlayDisponibilidade Serviços do Google PlayErro dos Serviços do Google PlayNão é possível executar o %1$s sem os Serviços do Google Play, os quais não são compatíveis com o seu dispositivo.AtualizarO %1$s não é executado enquanto não atualizar os serviços do Google Play.Atualizar serviços do Google PlayO %1$s não é executado sem os serviços do Google Play, os quais estão a ser atualizados.É necessária uma nova versão dos serviços do Google Play. Esta será atualizada automaticamente em breve.Abrir no telemóvelIniciar sessãoIniciar sessão com o GoogleYoqishGoogle Play xizmatlari yoqilmaguncha, %1$s ishlamaydi.Google Play xizmatlarini yoqishO‘rnatish%1$s ishlashi uchun qurilmangizda Google Play xizmatlarini o‘rnatish lozim.Google Play xizmatlarini o‘rnatishGoogle Play xizmatlarining mavjudligiGoogle Play xizmatlari xatosi%1$s ilovasi Google Play xizmatlarisiz ishlamaydi, biroq qurilmangiz ularni qo‘llab-quvvatlamaydi.YangilashGoogle Play xizmatlari yangilanmaguncha, %1$s ishga tushmaydi.Google Play xizmatlarini yangilash%1$s ilovasining ishlashi uchun zarur Google Play xizmatlari hozirda yangilanmoqda.Google Play xizmatlarining yangi versiyasi zarur. U o‘zini qisqa vaqt ichida yangilaydi.Telefonda ochishKirishGoogle orqali kirish啟用您必須啟用 Google Play 服務,方可執行「%1$s」。啟用 Google Play 服務安裝您的裝置尚未安裝 Google Play 服務,因此無法執行「%1$s」。安裝 Google Play 服務Google Play 服務的適用範圍Google Play 服務錯誤您的裝置不支援 Google Play 服務,因此無法執行「%1$s」。更新您必須更新「Google Play 服務」,才能執行 %1$s。更新 Google Play 服務正在更新 Google Play 服務,更新完成後方可執行「%1$s」。需要使用新版本的 Google Play 服務。更新會即將自動開始。在手機開啟登入透過 Google 登入Aktiv edin%1$s Google Play xidmətlərini aktiv edənə kimi işləməyəcək.Google Play xidmətlərini aktiv edinQuraşdırın%1$s cihazınızda mövcud olmayan Google Play xidmətləri olmadan çalışmayacaq.Google Play xidmətlərini əldə edinGoogle Play xidmətlərinin əlçatanlığıGoogle Play xidmətləri xətasıCihazınız tərəfindən dəstəklənməyən Google Play xidmətləri olmadan %1$s tətbiqi işləməyəcək.Güncəlləyin%1$s Google Play xidmətləri yeniləmə halda çalışmaz.Google Play xidmətlərini güncəlləşdirin%1$s hal-hazırda güncəllənən Google Play xidmətləri olmadan çalışmayacaq.Google Play xidmətlərinin yeni versiyası lazımdır. Qısa müddətə özünü yeniləyəcək.Telefonda açınDaxil olunGoogle ilə daxil olunActiver%1$s ne fonctionnera pas tant que vous n\'aurez pas activé les services Google Play.Activer les services Google PlayInstaller%1$s ne fonctionnera pas sans les services Google Play, qui ne sont pas installés sur votre appareil.Installer les services Google PlayDisponibilité des services Google PlayErreur liée aux services Google PlayL\'application %1$s ne fonctionnera pas sans les services Google Play, qui ne sont pas pris en charge par votre appareil.Mettre à jour%1$s ne fonctionnera pas tant que vous n\'aurez pas mis à jour les services Google Play.Mettre à jour les services Google Play%1$s ne fonctionnera pas sans les services Google Play, qui sont actuellement mis à jour.La nouvelle version des services Google Play est nécessaire. Elle sera bientôt installée automatiquement.Ouvrir sur le téléphoneConnexionSe connecter avec Googleਚਾਲੂ ਕਰੋ%1$s ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ Google Play ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਨਹੀਂ ਕਰਦੇ ਹੋ।Google Play ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋਸਥਾਪਤ ਕਰੋ%1$s Google Play ਸੇਵਾਵਾਂ ਤੋਂ ਬਿਨਾਂ ਨਹੀਂ ਚੱਲੇਗੀ, ਜੋ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਤੋਂ ਗੁੰਮ ਹਨ।Google Play ਸੇਵਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰੋGoogle Play ਸੇਵਾਵਾਂ ਦੀ ਉਪਲਬਧਤਾGoogle Play ਸੇਵਾਵਾਂ ਅਸ਼ੁੱਧੀ%1$s Google Play ਸੇਵਾਵਾਂ ਤੋਂ ਬਿਨਾਂ ਨਹੀਂ ਚੱਲ ਸਕੇਗੀ, ਜੋ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ।ਅੱਪਡੇਟ ਕਰੋ%1$s ਨਹੀਂ ਚੱਲੇਗਾ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ Google Play ਸੇਵਾਵਾਂ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕਰਦੇ ਹੋ।Google Play ਸੇਵਾਵਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ%1$s Google Play ਸੇਵਾਵਾਂ ਤੋਂ ਬਿਨਾਂ ਨਹੀਂ ਚੱਲੇਗਾ, ਜੋ ਵਰਤਮਾਨ ਵਿੱਚ ਅੱਪਡੇਟ ਹੋ ਰਹੀਆਂ ਹਨ।Google Play ਸੇਵਾਵਾਂ ਦੇ ਨਵਾਂ ਸੰਸਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਇਹ ਛੇਤੀ ਹੀ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਅੱਪਡੇਟ ਕਰੇਗਾ।ਫ਼ੋਨ \'ਤੇ ਖੋਲ੍ਹੋਸਾਈਨ-ਇਨ ਕਰੋGoogle ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰੋAktifkan%1$s tidak akan berfungsi jika layanan Google Play tidak diaktifkan.Aktifkan layanan Google PlayInstal%1$s tidak akan berjalan tanpa layanan Google Play, yang tidak ada di perangkat Anda.Dapatkan layanan Google PlayKetersediaan layanan Google PlayKesalahan layanan Google Play%1$s tidak akan berjalan tanpa layanan Google Play, yang tidak didukung oleh perangkat Anda.Update%1$s tidak akan berjalan jika layanan Google Play tidak diperbarui.Perbarui layanan Google Play%1$s tidak akan berjalan tanpa layanan Google Play, yang saat ini sedang diperbarui.Perlu versi baru layanan Google Play. Akan segera memperbarui sendiri.Buka di ponselLoginLogin dengan Googleअन गर्नुहोस्%1$s ले तपाईँले Google Play सेवाहरू सक्षम नगरेसम्म काम गर्दैन।Google Play सेवाहरू सक्षम पार्नुहोस्स्थापना गर्नुहोस्%1$s Google Play services बिना सञ्चालन हुने छैन र तपाईँको यन्त्रमा Google Play services उपलब्ध छैनन्।Google Play सेवाहरू प्राप्त गर्नुहोस्Google Play सेवाको उपलब्धताGoogle Play सेवाहरूका त्रुटि%1$s Google Play services बिना सञ्चालन हुने छैन र तपाईँको यन्त्रले Google Play services लाई समर्थन गर्दैन।अपडेट गर्नुहोस्%1$s तपाईंले Google प्ले सेवाहरू अद्यावधिक नगरेसम्म सञ्चालन हुँदैन।Google Play सेवाहरू अपडेट गर्नुहोस्Google Play सेवाहरू %1$s बिना सञ्चालन हुँदैन, जुन हाल अद्यावधिक भइरहेका छन्।Google Play सेवाहरूको नयाँ संस्करण आवश्यक छ। यो आफै छिट्टै नै अद्यावधिक हुनेछ।फोनमा खोल्नुहोस्साइन इन गर्नुहोस्Google मार्फत साइन इन गर्नुहोस्"转到首页""转到上一层级""更多选项""完成""查看全部""选择应用""关闭""开启""Alt+""Ctrl+""Delete 键""Enter 键""Fn+""Meta+""Shift+""空格键""Sym+""Menu+""搜索…""清除查询""搜索查询""搜索""提交查询""语音搜索""分享对象""与%s分享""收起""搜索""Navigate home""Navigate up""More options""Done""See all""Choose an app""OFF""ON""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""Search…""Clear query""Search query""Search""Submit query""Voice search""Share with""Share with %s""Collapse""Search""Revenir à l\'accueil""Revenir en haut de la page""Autres options""OK""Tout afficher""Sélectionner une application""NON""OUI""Alt+""Ctrl+""supprimer""entrée""Fonction+""Méta+""Maj+""espace""Sym+""Menu+""Rechercher…""Effacer la requête""Requête de recherche""Rechercher""Envoyer la requête""Recherche vocale""Partager avec""Partager avec %s""Réduire""Rechercher""Zur Startseite""Nach oben""Weitere Optionen""Fertig""Alle anzeigen""App auswählen""AUS""AN""Alt +""Strg +""Löschen""Eingabetaste""Funktionstaste +""Meta-Taste +""Umschalttaste +""Leertaste""Sym-Taste +""Menütaste +""Suchen…""Suchanfrage löschen""Suchanfrage""Suche""Anfrage senden""Sprachsuche""Teilen mit""Mit %s teilen""Minimieren""Suche""მთავარზე გადასვლა""ზემოთ გადასვლა""სხვა ვარიანტები""მზადაა""ყველას ნახვა""აირჩიეთ აპი""გამორთვა""ჩართვა""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""შორისი""Sym+""Menu+""ძიება…""მოთხოვნის გასუფთავება""მოთხოვნის ძიება""ძიება""მოთხოვნის გადაგზავნა""ხმოვანი ძიება""გაზიარება:""%s-ით გაზიარება""ჩაკეცვა""ძიება"440dp60%90%60%90%55%80%"Перайсці на галоўную старонку""Перайсці ўверх""Дадатковыя параметры""Гатова""Паказаць усе""Выберыце праграму""ВЫКЛ.""УКЛ.""Alt +""Ctrl +""Delete""Enter""Fn +""Meta +""Shift +""Прабел""Sym +""Меню +""Пошук…""Выдаліць запыт""Пошукавы запыт""Пошук""Адправіць запыт""Галасавы пошук""Абагуліць праз""Абагуліць праз праграму \"%s\"""Згарнуць""Пошук""นำทางไปหน้าแรก""กลับ""ตัวเลือกอื่น""เสร็จ""ดูทั้งหมด""เลือกแอป""ปิด""เปิด""Alt+""Ctrl+""ลบ""Enter""Function+""Meta+""Shift+""Space""Sym+""เมนู+""ค้นหา…""ล้างคำค้นหา""คำค้นหา""ค้นหา""ส่งคำค้นหา""ค้นหาด้วยเสียง""แชร์กับ""แชร์ทาง %s""ยุบ""ค้นหา""Eve gidiş yolunu göster""Yukarı git""Diğer seçenekler""Bitti""Tümünü göster""Bir uygulama seçin""KAPAT""AÇ""Alt+""Ctrl+""sil""enter""Function+""Meta+""Üst Karakter+""boşluk""Sym+""Menü+""Ara…""Sorguyu temizle""Arama sorgusu""Ara""Sorguyu gönder""Sesli arama""Şununla paylaş:""%s ile paylaş""Daralt""Ara""Přejít na plochu""Přejít nahoru""Další možnosti""Hotovo""Zobrazit vše""Vybrat aplikaci""VYP""ZAP""Alt+""Ctrl+""delete""enter""Fn+""Meta+""Shift+""mezerník""Sym+""Menu+""Vyhledat…""Smazat dotaz""Dotaz pro vyhledávání""Hledat""Odeslat dotaz""Hlasové vyhledávání""Sdílet s""Sdílet s aplikací %s""Sbalit""Hledat""Navegar para a página inicial""Navegar para cima""Mais opções""Concluído""Ver tudo""Selecionar um app""DESATIVADO""ATIVADO""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""espaço""Sym+""Menu+""Pesquisar…""Limpar consulta""Consulta de pesquisa""Pesquisar""Enviar consulta""Pesquisa por voz""Compartilhar com""Compartilhar com %s""Recolher""Pesquisar""Ugrás a főoldalra""Fel""További lehetőségek""Kész""Az összes megtekintése""Válasszon alkalmazást""KI""BE""Alt+""Ctrl+""Delete""Enter""Function+""Meta+""Shift+""Szóköz""Sym+""Menu+""Keresés…""Lekérdezés törlése""Keresési lekérdezés""Keresés""Lekérdezés küldése""Hangalapú keresés""Megosztás a következővel:""Megosztás a következő alkalmazással: %s""Összecsukás""Keresés""ホームに戻る""前に戻る""その他のオプション""完了""すべて表示""アプリの選択""OFF""ON""Alt+""Ctrl+""Delete""Enter""Function+""Meta+""Shift+""Space""Sym+""Menu+""検索…""検索キーワードを削除""検索キーワード""検索""検索キーワードを送信""音声検索""共有""%sと共有""折りたたむ""検索""होम पेज पर जाएं""वापस जाएं""ज़्यादा विकल्प""हो गया""सभी देखें""कोई ऐप्लिकेशन चुनें""बंद""चालू""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""खोजें…""क्वेरी हटाएं""सर्च क्वेरी""खोजें""क्वेरी सबमिट करें""बोलकर खोजें""इससे शेयर करें:""%s से शेयर करें""छोटा करें""खोजें""Башкы бетке чабыттоо""Мурунку экранга өтүү""Дагы параметрлер""Бүттү""Баарын көрүү""Колдонмо тандоо""ӨЧҮК""КҮЙҮК""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""боштук""Sym+""Menu+""Издөө…""Сурамды өчүрүү""Изделген сурам""Издөө""Сурам тапшыруу""Айтып издөө""Төмөнкү менен бөлүшүү""%s аркылуу бөлүшүү""Жыйыштыруу""Издөө""Πλοήγηση στην αρχική σελίδα""Πλοήγηση προς τα επάνω""Περισσότερες επιλογές""Τέλος""Εμφάνιση όλων""Επιλέξτε μια εφαρμογή""ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ""ΕΝΕΡΓΟΠΟΙΗΣΗ""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""διάστημα""Sym+""Menu+""Αναζήτηση…""Διαγραφή ερωτήματος""Ερώτημα αναζήτησης""Αναζήτηση""Υποβολή ερωτήματος""Φωνητική αναζήτηση""Κοινοποίηση σε""Κοινοποίηση στην εφαρμογή %s""Σύμπτυξη""Αναζήτηση""Eiti į pagrindinį puslapį""Naršyti aukštyn""Daugiau parinkčių""Atlikta""Žr. viską""Pasirinkite programą""IŠJUNGTI""ĮJUNGTI""„Alt“ +""„Ctrl“ +""„delete“""„enter“""„Function“ +""„Meta“ +""„Shift“ +""„space“""„Sym“ +""„Menu“ +""Ieškoti…""Išvalyti užklausą""Paieškos užklausa""Ieškoti""Pateikti užklausą""Paieška balsu""Bendrinti su""Bendrinti naudojant programą „%s“""Sutraukti""Ieškoti""Joan orri nagusira""Joan gora""Aukera gehiago""Eginda""Ikusi guztiak""Aukeratu aplikazio bat""DESAKTIBATU""AKTIBATU""Alt +""Ktrl +""ezabatu""sartu""Funtzioa +""Meta +""Maius +""zuriunea""Sym +""Menua +""Bilatu…""Garbitu kontsulta""Bilaketa-kontsulta""Bilatu""Bidali kontsulta""Ahozko bilaketa""Partekatu honekin""Partekatu %s aplikazioarekin""Tolestu""Bilatu""ກັບໄປໜ້າຫຼັກ""ເລື່ອນຂຶ້ນເທິງ""ຕົວເລືອກເພີ່ມເຕີມ""ແລ້ວໆ""ເບິ່ງທັງໝົດ""ເລືອກແອັບ""ປິດ""ເປີດ""Alt+""Ctrl+""ລຶບ""enter""Function+""Meta+""Shift+""ຍະຫວ່າງ""Sym+""Menu+""ຊອກຫາ…""ລຶບຂໍ້ຄວາມຊອກຫາ""ຄຳສຳລັບຄົ້ນຫາ""ຊອກຫາ""ສົ່ງຂໍ້ມູນ""ຊອກຫາດ້ວຍສຽງ""ແບ່ງປັນກັບ""ແບ່ງປັນດ້ວຍ %s""ຫຍໍ້ລົງ""ຊອກຫາ""Нүүр хуудас уруу шилжих""Дээш шилжих""Бусад сонголт""Болсон""Бүгдийг харах""Аппыг сонгох""ИДЭВХГҮЙ""ИДЭВХТЭЙ""Alt+""Ctrl+""устгах""оруулах""Функц+""Мета+""Шифт+""зай""Sym+""Цэс+""Хайх…""Асуулга арилгах""Хайх асуулга""Хайх""Асуулга илгээх""Дуут хайлт""Дараахтай хуваалцах""%s-тай хуваалцах""Буулгах""Хайх""Անցնել գլխավոր էջ""Անցնել վերև""Այլ ընտրանքներ""Պատրաստ է""Տեսնել բոլորը""Ընտրել հավելված""ԱՆՋԱՏԵԼ""ՄԻԱՑՆԵԼ""Alt+""Ctrl+""Delete""Enter""Function+""Meta+""Shift+""բացատ""Sym+""Menu+""Որոնում…""Ջնջել հարցումը""Որոնման հարցում""Որոնել""Ուղարկել հարցումը""Ձայնային որոնում""Կիսվել…""Կիսվել %s հավելվածի միջոցով""Ծալել""Որոնել""گھر کی طرف نیویگیٹ کریں""اوپر نیویگیٹ کریں""مزید اختیارات""ہو گیا""سبھی دیکھیں""ایک ایپ منتخب کریں""آف""آن""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""تلاش کریں…""استفسار صاف کریں""تلاش کا استفسار""تلاش کریں""استفسار جمع کرائیں""صوتی تلاش""اس کے ساتھ اشتراک کریں""%s کے ساتھ اشتراک کریں""سکیڑیں""تلاش کریں""Движи се кон дома""Движи се нагоре""Повеќе опции""Готово""Прикажи ги сите""Избери апликација""ИСКЛУЧЕНО""ВКЛУЧЕНО""Alt+""Ctrl+""избриши""Enter""Function+""Meta+""Shift+""вселена""Sym+""Menu+""Пребарување…""Исчисти барање""Пребарај барање""Пребарај""Испрати барање""Гласовно пребарување""Сподели со""Сподели со %s""Собери""Пребарување""ହୋମକୁ ନେଭିଗେଟ କରନ୍ତୁ""ଉପରକୁ ନେଭିଗେଟ୍ କରନ୍ତୁ""ଅଧିକ ବିକଳ୍ପ""ହୋଇଗଲା""ସବୁ ଦେଖନ୍ତୁ""ଗୋଟିଏ ଆପ୍ ବାଛନ୍ତୁ""ବନ୍ଦ""ଚାଲୁ ଅଛି""Alt+""Ctrl+""ଡିଲିଟ କରନ୍ତୁ""ଏଣ୍ଟର୍""Function+""Meta+""Shift+""ସ୍ପେସ୍""Sym+""ମେନୁ""ସର୍ଚ୍ଚ କରନ୍ତୁ…""କ୍ୱେରୀ ଖାଲି କରନ୍ତୁ""ସର୍ଚ୍ଚ କ୍ୱେରୀ""ସର୍ଚ୍ଚ କରନ୍ତୁ""କ୍ୱେରୀ ଦାଖଲ କରନ୍ତୁ""ଭଏସ ସର୍ଚ୍ଚ""ଏହାଙ୍କ ସହ ସେୟାର୍ କରନ୍ତୁ""%s ସହ ସେୟାର୍ କରନ୍ତୁ""ସଂକୁଚିତ କରନ୍ତୁ""ସର୍ଚ୍ଚ କରନ୍ତୁ""Gaan na tuisskerm""Gaan op""Nog opsies""Klaar""Sien alles""Kies \'n program""AF""AAN""Alt+""Ctrl+""delete""enter""Funksie+""Meta+""Shift+""spasiebalk""Simbool+""Kieslys+""Soek …""Vee navraag uit""Soektognavraag""Soek""Dien navraag in""Stemsoektog""Deel met""Deel met %s""Vou in""Soek"48dp12dp14dp"መነሻ ዳስስ""ወደ ላይ ያስሱ""ተጨማሪ አማራጮች""ተከናውኗል""ሁሉንም ይመልከቱ""አንድ መተግበሪያ ይምረጡ""አጥፋ""አብራ""Alt+""Ctrl+""ሰርዝ""enter""Function+""Meta+""Shift+""ክፍተት""Sym+""Menu+""ይፈልጉ…""መጠይቅ አጽዳ""የፍለጋ መጠይቅ""ፍለጋ""መጠይቅ አስገባ""የድምጽ ፍለጋ""አጋራ በ""ለ%s አጋራ""ሰብስብ""ፍለጋ""瀏覽首頁""向上瀏覽""更多選項""完成""查看全部""選擇應用程式""關閉""開啟""Alt +""Ctrl +""Delete 鍵""Enter 鍵""Fn +""Meta +""Shift +""空格鍵""Sym +""Menu +""搜尋…""清除查詢""搜尋查詢""搜尋""提交查詢""語音搜尋""分享對象""與「%s」分享""收合""搜尋""Navegar para a página inicial""Navegar para cima""Mais opções""Concluído""Ver tudo""Selecionar um app""DESATIVADO""ATIVADO""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""espaço""Sym+""Menu+""Pesquisar…""Limpar consulta""Consulta de pesquisa""Pesquisar""Enviar consulta""Pesquisa por voz""Compartilhar com""Compartilhar com %s""Recolher""Pesquisar""ഹോമിലേക്ക് പോവുക""മുകളിലേക്ക് പോവുക""കൂടുതൽ ഓപ്ഷനുകൾ""പൂർത്തിയായി""എല്ലാം കാണുക""ആപ്പ് തിരഞ്ഞെടുക്കുക""ഓഫ്""ഓൺ""Alt+""Ctrl+""ഇല്ലാതാക്കുക""enter""ഫംഗ്ഷന്+""മെറ്റ+""Shift+""സ്പെയ്സ്""Sym+""മെനു+""തിരയുക…""ചോദ്യം മായ്ക്കുക""ചോദ്യം തിരയുക""തിരയുക""ചോദ്യം സമർപ്പിക്കുക""സംസാരത്തിലൂടെ തിരയുക""ഇനിപ്പറയുന്നതുമായി പങ്കിടുക""%s എന്നതുമായി പങ്കിടുക""ചുരുക്കുക""തിരയുക""Vai ao inicio""Vai cara arriba""Máis opcións""Feito""Ver todo""Selecciona unha aplicación""DESACTIVADO""ACTIVADO""Alt +""Ctrl +""eliminar""intro""Función +""Meta +""Maiús +""espazo""Sym +""Menú +""Busca…""Borra a consulta""Busca a consulta""Realiza buscas""Envía a consulta""Busca por voz""Comparte contido con""Comparte contido coa aplicación %s""Contrae""Buscar""Перейти на главный экран""Перейти вверх""Ещё""Готово""Показать все""Выберите приложение""ВЫКЛ""ВКЛ""Alt +""Ctrl +""Delete""Ввод""Fn +""Meta +""Shift +""Пробел""Sym +""Меню +""Введите запрос""Удалить запрос""Поисковый запрос""Поиск""Отправить запрос""Голосовой поиск""Поделиться с помощью""Поделиться с помощью %s""Свернуть""Поиск""Zulazulela ekhaya""Zulazulela phezulu""Ezinye izinketho""Kwenziwe""Buka konke""Khetha insiza""VALA""VULA""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Imenyu+""Sesha…""Sula inkinga""Sesha umbuzo""Sesha""Thumela umbuzo""Ukusesha ngezwi""Yabelana no""Yabelana ne-%s""Goqa""Sesha""ಹೋಮ್ಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ""ಮೇಲಕ್ಕೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ""ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು""ಆಯಿತು""ಎಲ್ಲವನ್ನೂ ನೋಡಿ""ಆ್ಯಪ್ವೊಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ""ಆಫ್""ಆನ್""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""ಹುಡುಕಿ…""ಪ್ರಶ್ನೆಯನ್ನು ತೆರವುಗೊಳಿಸಿ""ಪ್ರಶ್ನೆಯನ್ನು ಹುಡುಕಿ""ಹುಡುಕಿ""ಪ್ರಶ್ನೆಯನ್ನು ಸಲ್ಲಿಸಿ""ಧ್ವನಿ ಹುಡುಕಾಟ""ಇವರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಿ""%s ನೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಿ""ಕುಗ್ಗಿಸಿ""ಹುಡುಕಿ""Navigera hem""Navigera uppåt""Fler alternativ""Klar""Se alla""Välj en app""AV""PÅ""Alt + ""Ctrl + ""delete""retur""Funktion + ""Meta + ""Skift + ""blanksteg""Symbol + ""Meny + ""Sök …""Ta bort frågan""Sökfråga""Sök""Skicka fråga""Röstsökning""Dela med""Dela med %s""Komprimera""Sök""Orientohu për në shtëpi""Ngjitu lart""Opsione të tjera""U krye""Shfaq çdo gjë""Zgjidh një aplikacion""JOAKTIV""AKTIV""Alt+""Ctrl+""delete""enter""Funksioni+""Meta+""Shift+""hapësirë""Sym+""Menyja+""Kërko…""Pastro pyetjen""Kërko pyetjen""Kërko""Dërgo pyetjen""Kërkim me zë""Ndaje me""Ndaje me %s""Palos""Kërko""Navigate home""Navigate up""More options""Done""See all""Choose an app""OFF""ON""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""Search…""Clear query""Search query""Search""Submit query""Voice search""Share with""Share with %s""Collapse""Search""Navigate home""Navigate up""More options""Done""See all""Choose an app""OFF""ON""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""Search…""Clear query""Search query""Search""Submit query""Voice search""Share with""Share with %s""Collapse""Search""پیمایش به صفحه اصلی""رفتن به بالا""گزینههای بیشتر""تمام""دیدن همه""انتخاب برنامه""خاموش""روشن""Alt+""Ctrl+""حذف""enter""Function+""Meta+""Shift+""فاصله""Sym+""منو+""جستجو…""پاک کردن پُرسمان""درخواست جستجو""جستجو""ارسال پُرسمان""جستجوی گفتاری""همرسانی با""همرسانی با %s""کوچک کردن""جستجو""မူလနေရာကို ပြန်သွားရန်""အပေါ်သို့ ရွှေ့ရန်""နောက်ထပ် ရွေးစရာများ""ပြီးပြီ""အားလုံး ကြည့်ရန်""အက်ပ်တစ်ခုကို ရွေးရန်""ပိတ်""ဖွင့်""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""ရှာဖွေရန်…""ရှာဖွေမှုကို ဖယ်ရှားရန်""ရှာဖွေရန် မေးခွန်း""ရှာရန်""ရှာဖွေစရာ အချက်အလက်ကို ပေးပို့ရန်""အသံဖြင့် ရှာရန်""နှင့် မျှဝေရန်""%s ဖြင့် မျှဝေရန်""လျှော့ပြရန်""ရှာဖွေမှု""Idite na početnu""Idite nagore""Još opcija""Gotovo""Prikaži sve""Izaberite aplikaciju""ISKLJUČENO""UKLJUČENO""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""taster za razmak""Sym+""Menu+""Pretražite…""Obrišite upit""Pretražite upit""Pretražite""Pošaljite upit""Glasovna pretraga""Delite pomoću""Delite pomoću aplikacije %s""Skupi""Pretražite""Navegar a la página principal""Navegar hacia arriba""Más opciones""Listo""Ver todas""Elegir una app""DESACTIVAR""ACTIVAR""Alt+""Ctrl+""borrar""intro""Función+""Meta+""Mayúscula+""espacio""Sym+""Menú+""Buscar…""Borrar consulta""Búsqueda""Buscar""Enviar consulta""Búsqueda por voz""Compartir con""Compartir con %s""Contraer""Buscar""Chỉ đường về nhà""Di chuyển lên""Tùy chọn khác""Xong""Xem tất cả""Chọn một ứng dụng""TẮT""BẬT""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""Tìm kiếm…""Xóa truy vấn""Truy vấn tìm kiếm""Tìm kiếm""Gửi truy vấn""Tìm kiếm bằng giọng nói""Chia sẻ với""Chia sẻ với %s""Thu gọn""Tìm kiếm"60%90%50%70%45%72%"Idi na početnu""Natrag""Više opcija""Gotovo""Prikaži sve""Odabir aplikacije""ISKLJUČENO""UKLJUČENO""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""svemir""Sym+""Menu+""Pretražite…""Izbriši upit""Upit za pretraživanje""Pretraži""Pošalji upit""Glasovno pretraživanje""Dijeli s""Dijeli putem aplikacije %s""Sažmi""Pretraži""গৃহ পৃষ্ঠালৈ যাওক""ওপৰলৈ যাওক""অধিক বিকল্প""সম্পন্ন হ’ল""আটাইবোৰ চাওক""কোনো এপ্ বাছনি কৰক""অফ""অন""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""সন্ধান কৰক…""সন্ধান কৰা প্ৰশ্ন মচক""সন্ধান কৰা প্ৰশ্ন""সন্ধান কৰক""প্ৰশ্ন দাখিল কৰক""কণ্ঠধ্বনিৰ দ্বাৰা সন্ধান""ইয়াৰ জৰিয়তে শ্বেয়াৰ কৰক""%sৰ জৰিয়তে শ্বেয়াৰ কৰক""সংকোচন কৰক""সন্ধান""ניווט לדף הבית""ניווט למעלה""עוד אפשרויות""סיום""הצגת הכול""בחירת אפליקציה""כבוי""מופעל""Alt+""Ctrl+""מחיקה""Enter""Function+""Meta+""Shift+""רווח""Sym+""תפריט+""חיפוש…""מחיקת השאילתה""שאילתת חיפוש""חיפוש""שליחת שאילתה""חיפוש קולי""שיתוף עם""שיתוף עם %s""כיווץ""חיפוש""Prejsť na plochu""Prejsť nahor""Ďalšie možnosti""Hotovo""Zobraziť všetky""Vybrať aplikáciu""VYP.""ZAP.""Alt+""Ctrl+""odstrániť""enter""Function+""Meta+""Shift+""medzerník""Sym+""Menu+""Vyhľadať…""Vymazať dopyt""Vyhľadávací dopyt""Hľadať""Odoslať dopyt""Hlasové vyhľadávanie""Zdieľať s""Zdieľať s aplikáciou %s""Zbaliť""Hľadať""Liigu avalehele""Liigu üles""Rohkem valikuid""Valmis""Kuva kõik""Valige rakendus""VÄLJAS""SEES""Alt +""Ctrl +""kustuta""sisestusklahv""Funktsiooniklahv +""Meta +""Tõstuklahv +""tühik""Sym +""Menüü +""Otsige …""Päringu tühistamine""Otsingupäring""Otsing""Päringu esitamine""Häälotsing""Jaga:""Jagamine rakendusega %s""Ahendamine""Otsing""Navigate home""Navigate up""More options""Done""See all""Choose an app""OFF""ON""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""Search…""Clear query""Search query""Search""Submit query""Voice search""Share with""Share with %s""Collapse""Search""Przejdź na stronę główną""Przejdź wyżej""Więcej opcji""Gotowe""Pokaż wszystko""Wybierz aplikację""WYŁ.""WŁ.""Alt+""Ctrl+""Delete""Enter""Funkcyjny+""Meta+""Shift+""spacja""Sym+""Menu+""Szukaj…""Wyczyść zapytanie""Zapytanie""Szukaj""Wyślij zapytanie""Wyszukiwanie głosowe""Udostępnij przez:""Udostępnij przez: %s""Zwiń""Szukaj""Mag-navigate sa home""Mag-navigate pataas""Higit pang opsyon""Tapos na""Tingnan lahat""Pumili ng app""I-OFF""I-ON""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""Maghanap…""I-clear ang query""Query sa paghahanap""Maghanap""Isumite ang query""Paghahanap gamit ang boses""Ibahagi sa/kay""Ibahagi gamit ang %s""I-collapse""Maghanap""Перейти на головну""Перейти вгору""Більше опцій""Готово""Показати всі""Вибрати програму""ВИМКНЕНО""УВІМКНЕНО""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""пробіл""Sym+""Menu+""Введіть пошуковий запит…""Очистити запит""Пошуковий запит""Пошук""Наіслати запит""Голосовий пошук""Поділитися:""Поділитися через додаток %s""Згорнути""Пошук""Siirry etusivulle""Siirry ylös""Lisäasetukset""Valmis""Näytä kaikki""Valitse sovellus""POIS PÄÄLTÄ""PÄÄLLÄ""Alt+""Ctrl+""delete""enter""Fn+""Meta+""Vaihto+""välilyönti""Sym+""Valikko+""Haku…""Tyhjennä kysely""Hakukysely""Haku""Lähetä kysely""Puhehaku""Jaa…""Jaa: %s""Tiivistä""Haku""హోమ్కు నావిగేట్ చేస్తుంది""పైకి నావిగేట్ చేస్తుంది""మరిన్ని ఆప్షన్లు""పూర్తయింది""అన్నీ చూడండి""యాప్ను ఎంచుకోండి""ఆఫ్""ఆన్""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""స్పేస్""Sym+""Menu+""సెర్చ్ చేయండి…""ప్రశ్నను తీసివేస్తుంది""సెర్చ్ క్వెరీ""సెర్చ్""ప్రశ్నని సమర్పిస్తుంది""వాయిస్ సెర్చ్""వీరితో షేర్ చేస్తుంది""%sతో షేర్ చేస్తుంది""కుదిస్తుంది""సెర్చ్"truetrue#ff000000#ffffffff#7fa87f@android:color/black@android:color/black@color/material_deep_teal_200@color/material_deep_teal_500@color/material_grey_800@android:color/white@color/material_grey_850@color/material_grey_50#80ffffff#80000000@color/bright_foreground_material_light@color/bright_foreground_material_dark@android:color/white@android:color/black#ff5a595b#ffd6d7d7#80bebebe#80323232#ffbebebe#ff323232#ff7043#ff5722@android:color/white@android:color/black#6680cbc4#66009688#ff37474f#ff263238#ff21272b#ff80cbc4#ff008577#fff5f5f5#ffe0e0e0#fffafafa#ff757575#ff424242#ff303030#ff212121@android:color/black@color/material_grey_600@color/material_grey_900@color/material_grey_100#ffffffff#de000000#4Dffffff#39000000#33ffffff#1f000000#b3ffffff#8a000000#36ffffff#24000000#ff616161#ffbdbdbd#ffbdbdbd#fff1f1f1#e6616161#e6FFFFFF16dp72dp56dp0dp0dp4dp16dp10dp6dp48dp180dp5dp-3dp48dp48dp36dp48dp48dp@dimen/abc_control_inset_material6dp8dp@dimen/abc_control_padding_material720dp320dp2dp4dp4dp2dp80%100%320dp320dp8dp8dp65%95%24dp18dp8dp0.300.2632dip8dip8dip7dp4dp10dp16dp80dp64dp48dp@dimen/abc_action_bar_content_inset_material296dp4dp48dip320dip2dp2dp20dp48dp36dp16dp3dp14sp14sp14sp12sp34sp45sp56sp112sp24sp22sp18sp14sp16sp14sp16sp16dp20sp20dp0.300.260.260.200.120.500.380.700.542dp16dp8dp8dp96dp6.5dp0dp16dp220150127150Navigate homeNavigate upMore optionsDoneSee allChoose an appOFFONAlt+Ctrl+deleteenterFunction+Meta+Shift+spaceSym+Menu+Search…Clear querySearch querySearchSubmit queryVoice searchShare withShare with %sCollapseSearch
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "முகப்பிற்குச் செல்லும்""மேலே செல்லும்""மேலும் விருப்பங்கள்""முடிந்தது""அனைத்தையும் காட்டு""ஆப்ஸைத் தேர்வுசெய்க""ஆஃப்""ஆன்""Alt மற்றும்""Ctrl மற்றும்""delete""enter""Function மற்றும்""Meta மற்றும்""Shift மற்றும்""space""Sym மற்றும்""Menu மற்றும்""தேடுக…""வினவலை அழிக்கும்""தேடல் வினவல்""தேடும்""வினவலைச் சமர்ப்பிக்கும்""குரல் தேடல்""இதில் பகிர்""%s மூலம் பகிர்""சுருக்கும்""தேடல்""Навигиране към началния екран""Навигиране нагоре""Още опции""Готово""Преглед на всички""Изберете приложение""ИЗКЛ.""ВКЛ.""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""клавиша за интервал""Sym+""Menu+""Търсете…""Изчистване на заявката""Заявка за търсене""Търсене""Изпращане на заявката""Гласово търсене""Споделяне със:""Споделяне със: %s""Свиване""Търсене""ઘરનો રસ્તો બતાવો""ઉપર નૅવિગેટ કરો""વધુ વિકલ્પો""થઈ ગયું""બધી જુઓ""ઍપ્લિકેશન પસંદ કરો""બંધ""ચાલુ""Alt+""Ctrl+""delete""Enter""Function+""Meta+""Shift+""space""Sym+""Menu+""શોધો…""ક્વેરી સાફ કરો""શોધ ક્વેરી""શોધો""ક્વેરી સબમિટ કરો""વૉઇસ શોધ""આની સાથે શેર કરો""%sની સાથે શેર કરો""સંકુચિત કરો""શોધો""হোমে নেভিগেট করুন""উপরে নেভিগেট করুন""আরও বিকল্প""হয়ে গেছে""সবগুলি দেখুন""একটি অ্যাপ বেছে নিন""বন্ধ আছে""চালু করুন""Alt+""Ctrl+""মুছুন""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""সার্চ করুন…""কোয়েরি মুছে ফেলুন""সার্চ কোয়েরি""সার্চ করুন""কোয়েরি জমা দিন""ভয়েস সার্চ করুন""শেয়ার করুন""%s-এর সাথে শেয়ার করুন""সঙ্কুচিত করুন""সার্চ করুন""Негізгі бетке өту""Жоғары қарай өту""Басқа опциялар""Дайын""Барлығын көру""Қолданбаны таңдау""ӨШІРУ""ҚОСУ""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""бос орын""Sym+""Menu+""Іздеу…""Сұрауды өшіру""Іздеу сұрауы""Іздеу""Сұрауды жіберу""Дауыспен іздеу""Бөлісу""%s қолданбасымен бөлісу""Жию""Іздеу""Portami a casa""Torna indietro""Altre opzioni""Fine""Mostra tutto""Scelta di un\'app""OFF""ON""ALT +""CTRL +""CANC""INVIO""FUNZIONE +""META +""MAIUSC +""SPAZIO""SYM +""MENU +""Cerca…""Cancella query""Query di ricerca""Cerca""Invia query""Ricerca vocale""Condividi con""Condividi tramite %s""Comprimi""Cerca""Naviger hjem""Gå opp""Flere alternativer""Ferdig""Se alle""Velg en app""AV""PÅ""Alt+""Ctrl+""slett""enter""Funksjon+""Meta+""Shift+""mellomrom""Sym+""Meny+""Søk""Slett søket""Søkeord""Søk""Utfør søket""Talesøk""Del med""Del med %s""Skjul""Søk""घराकडे नेव्हिगेट करा""वर नेव्हिगेट करा""आणखी पर्याय""पूर्ण झाले""सर्व पहा""अॅप निवडा""बंद""सुरू""Alt+""Ctrl+""हटवा""एंटर करा""Function+""Meta+""Shift+""space""Sym+""मेनू+""शोधा…""क्वेरी साफ करा""शोध क्वेरी""शोधा""क्वेरी सबमिट करा""व्हॉइस शोध""यांच्यासोबत शेअर करा""%s सह शेअर करा""कोलॅप्स करा""शोध""Navighează la ecranul de pornire""Navighează în sus""Mai multe opțiuni""Gata""Afișează tot""Alege o aplicație""DEZACTIVAT""ACTIVAT""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Meniu+""Caută…""Șterge interogarea""Termen de căutare""Caută""Trimite interogarea""Căutare vocală""Trimite la""Trimite folosind %s""Restrânge""Caută"24dp80dp64dp8dp8dp580dp16dp20dp"Ir a inicio""Desplazarse hacia arriba""Más opciones""Hecho""Ver todo""Seleccionar una aplicación""DESACTIVADO""ACTIVADO""Alt +""Ctrl +""Suprimir""Intro""Función +""Meta +""Mayús +""Espacio""Sym +""Menú +""Buscar…""Borrar consulta""Consulta de búsqueda""Buscar""Enviar consulta""Búsqueda por voz""Compartir con""Compartir con %s""Ocultar""Buscar""Vratite se na početnu stranicu""Idi gore""Više opcija""Gotovo""Prikaži sve""Odaberite aplikaciju""ISKLJUČENO""UKLJUČENO""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""razmak""Sym+""Menu+""Pretražite...""Obriši upit""Pretraži upit""Pretraživanje""Pošalji upit""Glasovno pretraživanje""Dijeli sa""Dijeli putem aplikacije %s""Suzi""Pretražite""홈으로 이동""위로 이동""추가 옵션""완료""전체 보기""앱 선택""사용 중지""사용""Alt+""Ctrl+""Delete""Enter""Function+""Meta+""Shift+""스페이스바""Sym+""Menu+""검색...""검색어 삭제""검색어""검색""검색어 보내기""음성 검색""공유 대상:""%s과(와) 공유""접기""검색""මුල් පිටුවට සංචාලනය කරන්න""ඉහළට සංචාලනය කරන්න""තවත් විකල්ප""කළා""සියල්ල බලන්න""යෙදුමක් තෝරන්න""ක්රියාවිරහිතයි""ක්රියාත්මකයි""Alt+""Ctrl+""මකන්න""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""සොයන්න...""විමසුම හිස් කරන්න""සෙවුම් විමසුම""සෙවීම""විමසුම යොමු කරන්න""හඬ සෙවීම""සමග බෙදා ගන්න""%s සමඟ බෙදා ගන්න""හකුළන්න""සෙවීම""ទៅទំព័រដើម""រំកិលឡើងលើ""ជម្រើសច្រើនទៀត""រួចរាល់""មើលទាំងអស់""ជ្រើសរើសកម្មវិធី""បិទ""បើក""Alt+""Ctrl+""លុប""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""ស្វែងរក…""សម្អាតសំណួរ""ស្វែងរកសំណួរ""ស្វែងរក""ដាក់បញ្ជូនសំណួរ""ស្វែងរកតាមសំឡេង""ចែករំលែកជាមួយ""ចែករំលែកជាមួយ %s""បង្រួម""ស្វែងរក""Navega fins a la pàgina d\'inici""Navega cap amunt""Més opcions""Fet""Mostra-ho tot""Selecciona una aplicació""DESACTIVA""ACTIVA""Alt+""Ctrl+""Supr""Retorn""Funció+""Meta+""Maj+""Espai""Sym+""Menú+""Cerca…""Esborra la consulta""Consulta de cerca""Cerca""Envia la consulta""Cerca per veu""Comparteix amb""Comparteix amb %s""Replega""Cerca""Navigeren naar startpositie""Omhoog navigeren""Meer opties""Klaar""Alles tonen""Een app selecteren""UIT""AAN""Alt +""Ctrl +""Delete""Enter""Functie +""Meta +""Shift +""spatie""Sym +""Menu +""Zoeken…""Zoekopdracht wissen""Zoekopdracht""Zoeken""Zoekopdracht verzenden""Gesproken zoekopdracht""Delen met""Delen met %s""Samenvouwen""Zoeken""Fara heim""Fara upp""Fleiri valkostir""Lokið""Sjá allt""Veldu forrit""SLÖKKT""KVEIKT""Alt+""Ctrl+""eyða""enter""Aðgerðarlykill+""Meta+""Shift+""bilslá""Sym+""Valmynd+""Leita…""Hreinsa fyrirspurn""Leitarfyrirspurn""Leit""Senda fyrirspurn""Raddleit""Deila með""Deila með %s""Minnka""Leit""Krmarjenje na začetek""Pomik navzgor""Več možnosti""Končano""Pokaži vse""Izbira aplikacije""IZKLOP""VKLOP""Alt +""Ctrl +""delete""enter""Fn +""Meta +""Shift +""preslednica""Sym +""Meni +""Iskanje …""Izbris poizvedbe""Iskalna poizvedba""Iskanje""Pošiljanje poizvedbe""Glasovno iskanje""Deljenje z:""Deljenje z drugimi prek aplikacije %s""Strnitev""Iskanje""Find hjem""Gå op""Flere valgmuligheder""Udfør""Se alle""Vælg en app""FRA""TIL""Alt+""Ctrl+""slet""enter""Fn+""Meta+""Shift+""mellemrum""Sym+""Menu+""Søg…""Ryd forespørgsel""Søgeforespørgsel""Søg""Indsend forespørgsel""Talesøgning""Del med""Del med %s""Skjul""Søg""Pārvietoties uz sākuma ekrānu""Pārvietoties uz augšu""Citas opcijas""Gatavs""Skatīt visu""Izvēlieties lietotni""IZSLĒGT""IESLĒGT""Alternēšanas taustiņš +""Vadīšanas taustiņš +""dzēšanas taustiņš""ievadīšanas taustiņš""Funkcijas taustiņš +""Meta taustiņš +""Pārslēgšanas taustiņš +""atstarpes taustiņš""Simbolu taustiņš +""Poga Izvēlne +""Meklējiet…""Notīrīt vaicājumu""Meklēšanas vaicājums""Meklēt""Iesniegt vaicājumu""Meklēt ar balsi""Kopīgot ar:""Kopīgot ar lietojumprogrammu %s""Sakļaut""Meklēt"false54dip"Идите на почетну""Идите нагоре""Још опција""Готово""Прикажи све""Изаберите апликацију""ИСКЉУЧЕНО""УКЉУЧЕНО""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""тастер за размак""Sym+""Menu+""Претражите…""Обришите упит""Претражите упит""Претражите""Пошаљите упит""Гласовна претрага""Делите помоћу""Делите помоћу апликације %s""Скупи""Претражите""Navigasi laman utama""Navigasi ke atas""Lagi pilihan""Selesai""Lihat semua""Pilih apl""MATI""HIDUP""Alt+""Ctrl+""delete""enter""Fungsi+""Meta+""Shift+""ruang""Sym+""Menu+""Cari…""Kosongkan pertanyaan""Pertanyaan carian""Cari""Serah pertanyaan""Carian suara""Kongsi dengan""Kongsi dengan %s""Runtuhkan""Cari""التوجه إلى المنزل""التنقل إلى أعلى""خيارات أكثر""تم""عرض الكل""اختيار تطبيق""إيقاف""مفعّلة""Alt+""Ctrl+""حذف""enter""Function+""Meta+""Shift+""فضاء""Sym+""القائمة+""بحث…""محو طلب البحث""طلب بحث""البحث""إرسال طلب البحث""بحث صوتي""مشاركة مع""مشاركة مع %s""تصغير""البحث""Nenda mwanzo""Sogeza juu""Chaguo zaidi""Nimemaliza""Angalia zote""Chagua programu""IMEZIMWA""IMEWASHWA""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""Tafuta…""Futa hoja""Hoja ya utafutaji""Tafuta""Wasilisha hoja""Kutafuta kwa kutamka""Shiriki na""Shiriki ukitumia %s""Kunja""Tafuta""Navegar para casa""Navegar para cima""Mais opções""Concluído""Ver tudo""Escolher uma app""DESATIVADO""ATIVADO""Alt +""Ctrl +""eliminar""enter""Função +""Meta +""Shift +""espaço""Sym +""Menu +""Pesquisar…""Limpar consulta""Consulta de pesquisa""Pesquisar""Enviar consulta""Pesquisa por voz""Partilhar com""Partilhar com a app %s""Reduzir""Pesquisar""Boshiga o‘tish""Yopish""Yana""OK""Hammasi""Ilovani tanlang""YOQILMAGAN""YONIQ""Alt+""Ctrl+""Delete""Enter""Fn+""Meta+""Shift+""Probel""Sym+""Menyu+""Qidirish…""So‘rovni o‘chirish""Qidiruv so‘rovi""Qidiruv""So‘rov yaratish""Ovozli qidiruv""Ulashish""%s orqali ulashish""Yig‘ish""Qidiruv""瀏覽主頁""向上瀏覽""更多選項""完成""查看全部""選擇應用程式""關閉""開啟""Alt +""Ctrl +""刪除""Enter 鍵""Fn +""Meta +""Shift +""空白鍵""Sym +""Menu +""搜尋…""清除查詢""搜尋查詢""搜尋""提交查詢""語音搜尋""分享對象""使用「%s」分享""收合""搜尋""Əsas səhifəyə keçin""Yuxarı keçin""Digər seçimlər""Hazırdır""Hamısına baxın""Tətbiq seçin""DEAKTİV""AKTİV""Alt+""Ctrl+""silin""daxil olun""Funksiya+""Meta+""Shift+""space""Sym+""Menyu+""Axtarış...""Sorğunu silin""Axtarış sorğusu""Axtarın""Sorğunu göndərin""Səsli axtarış""Paylaşın""%s ilə paylaşın""Yığcamlaşdırın""Axtarın""Revenir à l\'accueil""Revenir en arrière""Autres options""Terminé""Tout afficher""Sélectionner une application""DÉSACTIVER""ACTIVER""Alt+""Ctrl+""supprimer""entrée""Fonction+""Méta+""Maj+""espace""Sym+""Menu+""Rechercher…""Effacer la requête""Requête de recherche""Rechercher""Envoyer la requête""Recherche vocale""Partager avec""Partager avec %s""Réduire""Rechercher"0px"Navigate home""Navigate up""More options""Done""See all""Choose an app""OFF""ON""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""Search…""Clear query""Search query""Search""Submit query""Voice search""Share with""Share with %s""Collapse""Search""ਹੋਮ \'ਤੇ ਜਾਓ""ਉੱਪਰ ਜਾਓ""ਹੋਰ ਵਿਕਲਪ""ਹੋ ਗਿਆ""ਸਭ ਦੇਖੋ""ਇੱਕ ਐਪ ਚੁਣੋ""ਬੰਦ""ਚਾਲੂ""Alt+""Ctrl+""ਮਿਟਾਓ""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""ਖੋਜ…""ਪੁੱਛਗਿੱਛ ਕਲੀਅਰ ਕਰੋ""ਖੋਜ ਪੁੱਛਗਿੱਛ""ਖੋਜ""ਪੁੱਛਗਿੱਛ ਸਪੁਰਦ ਕਰੋ""ਅਵਾਜ਼ੀ ਖੋਜ""ਇਸ ਨਾਲ ਸਾਂਝਾ ਕਰੋ""%s ਨਾਲ ਸਾਂਝਾ ਕਰੋ""ਸਮੇਟੋ""ਖੋਜ""Tunjukkan jalan ke rumah""Kembali ke atas""Opsi lainnya""Selesai""Lihat semua""Pilih aplikasi""NONAKTIF""AKTIF""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""spasi""Sym+""Menu+""Telusuri...""Hapus kueri""Telusuri kueri""Telusuri""Kirim kueri""Penelusuran suara""Bagikan dengan""Bagikan dengan %s""Ciutkan""Telusuri""होम पेजमा जानुहोस्""माथि नेभिगेट गर्नुहोस्""थप विकल्पहरू""सम्पन्न भयो""सबै हेर्नुहोस्""एउटा एप छान्नुहोस्""निष्क्रिय""सक्रिय""Alt+""Ctrl+""delete""enter""Function+""Meta+""Shift+""space""Sym+""Menu+""खोज्नुहोस्…""क्वेरी खाली गर्नुहोस्""खोज प्रश्न""खोज्नुहोस्""क्वेरी पेस गर्नुहोस्""आवाजमा आधारित खोजी""यसमार्फत सेयर गर्नुहोस्""%s मार्फत सेयर गर्नुहोस्""संक्षिप्त गर्नुहोस्""खोज"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "链接已复制到剪贴板""复制链接""在浏览器中打开""分享链接""Link copied to clipboard""Copy link""Open in browser""Share link""Lien copié dans le presse-papiers""Copier le lien""Ouvrir dans un navigateur""Partager le lien""Link in Zwischenablage kopiert""Link kopieren""Im Browser öffnen""Link teilen""გაცვლის ბუფერში კოპირებული ბმული""ბმულის კოპირება""ბრაუზერში გახსნა""ბმულის გაზიარება""Спасылка скапіравана ў буфер абмену""Скапіраваць спасылку""Адкрыць у браўзеры""Абагуліць спасылку""คัดลอกลิงก์ไปยังคลิปบอร์ดแล้ว""คัดลอกลิงก์""เปิดในเบราว์เซอร์""แชร์ลิงก์""Bağlantı panoya kopyalandı""Bağlantıyı kopyala""Tarayıcıda aç""Bağlantıyı paylaş""Odkaz zkopírován do schránky""Kopírovat odkaz""Otevřít v prohlížeči""Sdílet odkaz""Link copiado para a área de transferência""Copiar link""Abrir no navegador""Compartilhar link""Link vágólapra másolva""Link másolása""Megnyitás böngészőben""Link megosztása""リンクをクリップボードにコピーしました""リンクをコピー""ブラウザで開く""リンクの共有""लिंक क्लिपबोर्ड पर कॉपी किया गया""लिंक कॉपी करें""ब्राउज़र में खोलें""लिंक शेयर करें""Шилтеме буферге көчүрүлдү""Шилтемени көчүрүү""Серепчиден ачуу""Шилтемени бөлүшүү""Ο σύνδεσμος αντιγράφηκε στο πρόχειρο""Αντιγραφή συνδέσμου""Άνοιγμα σε πρόγραμμα περιήγησης""Κοινοποίηση συνδέσμου""Nuoroda nukopijuota į iškarpinę""Kopijuoti nuorodą""Atidaryti naršyklėje""Bendrinti nuorodą""Arbelean kopiatu da esteka""Kopiatu esteka""Ireki arakatzailean""Partekatu esteka""ສຳເນົາລິ້ງໃສ່ຄລິບບອດແລ້ວ""ສຳເນົາລິ້ງ""ເປີດໃນໂປຣແກຣມທ່ອງເວັບ""ແບ່ງປັນລິ້ງ""Холбоосыг түр санах ойд хуулсан""Холбоосыг хуулах""Хөтчид нээх""Холбоосыг хуваалцах""Հղումը պատճենվեց սեղմատախտակին""Պատճենել հղումը""Բացել դիտարկիչում""Կիսվել հղումով""لنک کلپ بورڈ پر کاپی ہو گیا""لنک کاپی کریں""براؤزر میں کھولیں""لنک کا اشتراک کریں""Линкот е копиран во привремена меморија""Копирај го линкот""Отвори во прелистувач""Сподели линк""ଲିଙ୍କକୁ କ୍ଲିପ୍ବୋର୍ଡରେ କପି କରାଯାଇଛି""ଲିଙ୍କ୍ କପି କରନ୍ତୁ""ବ୍ରାଉଜର୍ରେ ଖୋଲନ୍ତୁ""ଲିଙ୍କ୍ ସେୟାର୍ କରନ୍ତୁ""Skakel is na knipbord gekopieer""Kopieer skakel""Maak in blaaier oop""Deel skakel""አገናኝ ወደ ቅንጥብ ሰሌዳ ተቀድቷል""አገናኝ ቅዳ""በአሳሽ ውስጥ ክፈት""አገናኝ አጋራ""已將連結複製到剪貼簿""複製連結""在瀏覽器中開啟""分享連結""Link copiado para a área de transferência""Copiar link""Abrir no navegador""Compartilhar link""ക്ലിപ്പ്ബോർഡിലേക്ക് ലിങ്ക് പകർത്തി""ലിങ്ക് പകർത്തുക""ബ്രൗസറിൽ തുറക്കുക""ലിങ്ക് പങ്കിടുക""Copiouse a ligazón no portapapeis""Copiar ligazón""Abrir no navegador""Compartir ligazón""Ссылка скопирована в буфер обмена.""Копировать ссылку""Открыть в браузере""Отправить ссылку""Isixhumanisi sikopishelwe ku-clipboard""Kopisha isixhumanisi""Vula kusiphequluli""Yabelana ngesixhumanisi""ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ಲಿಂಕ್ ಅನ್ನು ನಕಲಿಸಲಾಗಿದೆ""ಲಿಂಕ್ ನಕಲಿಸಿ""ಬ್ರೌಸರ್ನಲ್ಲಿ ತೆರೆಯಿರಿ""ಲಿಂಕ್ ಹಂಚಿರಿ""Länk kopierad till Urklipp""Kopiera länk""Öppna i webbläsaren""Dela länk""Lidhja u kopjua në kujtesën e fragmenteve""Kopjo lidhjen""Hape në shfletues""Ndaj lidhjen""Link copied to clipboard""Copy link""Open in browser""Share link""Link copied to clipboard""Copy link""Open in browser""Share link""پیوند در بریدهدان کپی شد""کپی پیوند""بازکردن در مرورگر""همرسانی پیوند""လင့်ခ်ကို ကလစ်ဘုတ်သို့ ကူးပြီးပါပြီ""လင့်ခ်ကို ကူးယူရန်""ဘရောင်ဇာတွင် ဖွင့်ရန်""လင့်ခ်ကို မျှဝေရန်""Link je kopiran u privremenu memoriju""Kopiraj link""Otvori u pregledaču""Deli link""Se copió el vínculo al portapapeles""Copiar vínculo""Abrir en el navegador""Compartir vínculo""Đã sao chép đường liên kết vào bảng nhớ tạm""Sao chép đường liên kết""Mở trong trình duyệt""Chia sẻ đường liên kết""Veza je kopirana u međuspremnik""Kopiraj vezu""Otvori u pregledniku""Podijeli vezu""লিংক ক্লিপব’ৰ্ডত প্ৰতিলিপি কৰা হ’ল""লিংক প্ৰতিলিপি কৰক""ব্ৰাউজাৰত খোলক""লিংক শ্বেয়াৰ কৰক""הקישור הועתק ללוח""העתקת הקישור""פתיחה בדפדפן""לשיתוף הקישור""Odkaz bol skopírovaný do schránky""Kopírovať odkaz""Otvoriť v prehliadači""Zdieľať odkaz""Link kopeeriti lõikelauale""Kopeeri link""Ava brauseris""Jaga linki""Link copied to clipboard""Copy link""Open in browser""Share link""Link skopiowany do schowka""Kopiuj link""Otwórz w przeglądarce""Udostępnij link""Nakopya sa clipboard ang link""Kopyahin ang link""Buksan sa browser""Ibahagi ang link""Посилання скопійовано в буфер обміну""Копіювати посилання""Відкрити у вебпереглядачі""Надіслати посилання""Linkki kopioitu leikepöydälle""Kopioi linkki""Avaa selaimessa""Jaa linkki""క్లిప్బోర్డ్కు లింక్ కాపీ చేయబడింది""లింక్ను కాపీ చేయండి""బ్రౌజర్లో తెరువు""లింక్ను షేర్ చేయండి"#F5F5F5#1E000000#DE000000#646464500dp20dpLink copied to clipboardCopy linkOpen in browserShare link"கிளிப்-போர்டுக்கு இணைப்பு நகலெடுக்கப்பட்டது""இணைப்பை நகலெடு""உலாவியில் திற""இணைப்பைப் பகிர்""Връзката е копирана в буферната памет""Копиране на връзката""Отваряне в браузър""Споделяне на връзката""ક્લિપબોર્ડ પર લિંક કૉપિ કરી""લિંક કૉપિ કરો""બ્રાઉઝરમાં ખોલો""લિંક શેર કરો""লিঙ্ক ক্লিপবোর্ডে কপি করা হয়েছে""লিঙ্ক কপি করুন""ব্রাউজারে খুলুন""লিঙ্ক শেয়ার করুন""Сілтеме буферге көшірілді.""Сілтемені көшіру""Браузерден ашу""Сілтемені бөлісу""Link copiato negli appunti""Copia link""Apri nel browser""Condividi link""Linken er kopiert til utklippstavlen""Kopiér linken""Åpne i nettleseren""Del link""लिंक क्लिपबोर्डवर कॉपी केली""लिंक कॉपी करा""ब्राउझरमध्ये उघडा""लिंक शेअर करा""Linkul a fost copiat în clipboard""Copiază linkul""Deschide în browser""Trimite linkul""Enlace copiado en el portapapeles""Copiar enlace""Abrir en el navegador""Compartir enlace""Link je kopiran u međumemoriju""Kopiraj link""Otvori u pregledniku""Dijeli link""클립보드에 링크 복사됨""링크 복사""브라우저에서 열기""링크 공유""සබැඳිය පසුරු පුවරුවට පිටපත් කෙරිණි""සබැඳිය පිටපත් කරන්න""බ්රව්සරයේ විවෘත කරන්න""සබැඳිය බෙදා ගන්න""បានចម្លងតំណទៅឃ្លីបបត""ចម្លងតំណ""បើកនៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត""តំណចែករំលែក""S\'ha copiat l\'enllaç al porta-retalls""Copia l\'enllaç""Obre al navegador""Comparteix l\'enllaç""Link naar klembord gekopieerd""Link kopiëren""Openen in browser""Link delen""Tengill afritaður á klippiborð""Afrita tengil""Opna í vafra""Deila tengli""Povezava je kopirana v odložišče""Kopiraj povezavo""Odpri v brskalniku""Deli povezavo""Linket er kopieret til udklipsholderen""Kopiér link""Åbn i browser""Del link""Saite ir kopēta starpliktuvē.""Kopēt saiti""Atvērt pārlūkprogrammā""Kopīgot saiti""Линк је копиран у привремену меморију""Копирај линк""Отвори у прегледачу""Дели линк""Pautan disalin ke papan keratan""Salin pautan""Buka dalam penyemak imbas""Kongsi pautan""تم نسخ الرابط إلى الحافظة.""نسخ الرابط""فتح في المتصفح""مشاركة الرابط""Imenakili kiungo kwenye ubao wa kunakili""Nakili kiungo""Fungua katika kivinjari""Shiriki kiungo""Link copiado para a área de transferência.""Copiar link""Abrir no navegador""Partilhar link""Havoladan vaqtinchalik xotiraga nusxa olindi""Havoladan nusxa olish""Brauzerda ochish""Havolani ulashish""連結已複製到剪貼簿""複製連結""在瀏覽器中開啟""分享連結""Link buferə kopyalandı""Linki kopyalayın""Brauzerdə açın""Linki paylaşın""Lien copié dans le presse-papiers""Copier le lien""Ouvrir dans le navigateur""Partager le lien""Link copied to clipboard""Copy link""Open in browser""Share link""ਲਿੰਕ ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਹੋ ਗਿਆ""ਲਿੰਕ ਕਾਪੀ ਕਰੋ""ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲ੍ਹੋ""ਲਿੰਕ ਸਾਂਝਾ ਕਰੋ""Link disalin ke papan klip""Salin link""Buka di browser""Bagikan link""क्लिपबोर्डमा लिंक कपी गरियो""लिंक कपी गर्नुहोस्""ब्राउजरमा खोल्नुहोस्""लिंक सेयर गर्नुहोस्"Android Browser HelperThis app holds no browsing data.This app\'s data is stored in %1$s.Please install Chrome Stable 72 or later.Please update to Chrome Stable 72 or later.#F5F5F5
+ [{
+ \"relation\": [\"delegate_permission/common.handle_all_urls\"],
+ \"target\": {
+ \"namespace\": \"web\",
+ \"site\": \"https://humetrain.me\"
+ }
+ }]
+
+ truetrue#0F172A#0F172A#000000#000000#000000#000000#000000300Humetrain_1customtabshttps://humetrain.me/bubblewrap-clihumetrain.mehttps://humetrain.me/Humetrain_1defaultme.humetrain.tr.twa.fileproviderhttp://localhost:9999/static/manifest.webmanifest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties b/app/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties
new file mode 100644
index 0000000..c918e42
--- /dev/null
+++ b/app/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties
@@ -0,0 +1,20 @@
+#Tue Oct 21 01:43:34 KST 2025
+me.humetrain.tr.twa.app-main-4\:/raw/web_app_manifest.json=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/raw/web_app_manifest.json
+me.humetrain.tr.twa.app-main-4\:/mipmap-hdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/mipmap-hdpi-v4/ic_launcher.png
+me.humetrain.tr.twa.app-main-4\:/xml/shortcuts.xml=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/xml/shortcuts.xml
+me.humetrain.tr.twa.app-main-4\:/drawable-xxxhdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-xxxhdpi-v4/splash.png
+me.humetrain.tr.twa.app-main-4\:/drawable-mdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-mdpi-v4/splash.png
+me.humetrain.tr.twa.app-main-4\:/drawable-xxhdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-xxhdpi-v4/splash.png
+me.humetrain.tr.twa.app-main-4\:/drawable-xxxhdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-xxxhdpi-v4/ic_notification_icon.png
+me.humetrain.tr.twa.app-main-4\:/mipmap-xhdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/mipmap-xhdpi-v4/ic_launcher.png
+me.humetrain.tr.twa.app-main-4\:/drawable-hdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-hdpi-v4/splash.png
+me.humetrain.tr.twa.app-main-4\:/mipmap-mdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/mipmap-mdpi-v4/ic_launcher.png
+me.humetrain.tr.twa.app-main-4\:/drawable-mdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-mdpi-v4/ic_notification_icon.png
+me.humetrain.tr.twa.app-main-4\:/drawable-hdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-hdpi-v4/ic_notification_icon.png
+me.humetrain.tr.twa.app-main-4\:/drawable-anydpi/shortcut_legacy_background.xml=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-anydpi-v4/shortcut_legacy_background.xml
+me.humetrain.tr.twa.app-main-4\:/drawable-xhdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-xhdpi-v4/ic_notification_icon.png
+me.humetrain.tr.twa.app-main-4\:/mipmap-xxxhdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/mipmap-xxxhdpi-v4/ic_launcher.png
+me.humetrain.tr.twa.app-main-4\:/drawable-xhdpi/splash.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-xhdpi-v4/splash.png
+me.humetrain.tr.twa.app-main-4\:/mipmap-xxhdpi/ic_launcher.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/mipmap-xxhdpi-v4/ic_launcher.png
+me.humetrain.tr.twa.app-main-4\:/xml/filepaths.xml=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/xml/filepaths.xml
+me.humetrain.tr.twa.app-main-4\:/drawable-xxhdpi/ic_notification_icon.png=/home/ckh08045/Tr_Code/app/build/intermediates/packaged_res/release/packageReleaseResources/drawable-xxhdpi-v4/ic_notification_icon.png
diff --git a/app/build/intermediates/incremental/release/packageReleaseResources/merged.dir/values/values.xml b/app/build/intermediates/incremental/release/packageReleaseResources/merged.dir/values/values.xml
new file mode 100644
index 0000000..63c149a
--- /dev/null
+++ b/app/build/intermediates/incremental/release/packageReleaseResources/merged.dir/values/values.xml
@@ -0,0 +1,34 @@
+
+
+ true
+ true
+ #0F172A
+ #0F172A
+ #000000
+ #000000
+ #000000
+ #000000
+ #000000
+ #F5F5F5
+ 300
+ Humetrain_1
+
+ [{
+ \"relation\": [\"delegate_permission/common.handle_all_urls\"],
+ \"target\": {
+ \"namespace\": \"web\",
+ \"site\": \"https://humetrain.me\"
+ }
+ }]
+
+
+ customtabs
+ https://humetrain.me/
+ bubblewrap-cli
+ humetrain.me
+ https://humetrain.me/
+ Humetrain_1
+ default
+ me.humetrain.tr.twa.fileprovider
+ http://localhost:9999/static/manifest.webmanifest
+
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/release/packageReleaseResources/merger.xml b/app/build/intermediates/incremental/release/packageReleaseResources/merger.xml
new file mode 100644
index 0000000..7d95f30
--- /dev/null
+++ b/app/build/intermediates/incremental/release/packageReleaseResources/merger.xml
@@ -0,0 +1,11 @@
+
+#F5F5F5
+ [{
+ \"relation\": [\"delegate_permission/common.handle_all_urls\"],
+ \"target\": {
+ \"namespace\": \"web\",
+ \"site\": \"https://humetrain.me\"
+ }
+ }]
+
+ truetrue#0F172A#0F172A#000000#000000#000000#000000#000000300Humetrain_1customtabshttps://humetrain.me/bubblewrap-clihumetrain.mehttps://humetrain.me/Humetrain_1defaultme.humetrain.tr.twa.fileproviderhttp://localhost:9999/static/manifest.webmanifest
\ No newline at end of file
diff --git a/app/build/intermediates/intermediary_bundle/release/packageReleaseBundle/intermediary-bundle.aab b/app/build/intermediates/intermediary_bundle/release/packageReleaseBundle/intermediary-bundle.aab
new file mode 100644
index 0000000..8a8d3c9
Binary files /dev/null and b/app/build/intermediates/intermediary_bundle/release/packageReleaseBundle/intermediary-bundle.aab differ
diff --git a/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/Application.class b/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/Application.class
new file mode 100644
index 0000000..e0a0420
Binary files /dev/null and b/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/Application.class differ
diff --git a/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/DelegationService.class b/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/DelegationService.class
new file mode 100644
index 0000000..f9b98b7
Binary files /dev/null and b/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/DelegationService.class differ
diff --git a/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/LauncherActivity.class b/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/LauncherActivity.class
new file mode 100644
index 0000000..8d33678
Binary files /dev/null and b/app/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/me/humetrain/tr/twa/LauncherActivity.class differ
diff --git a/app/build/intermediates/linked_resources_binary_format/release/processReleaseResources/linked-resources-binary-format-release.ap_ b/app/build/intermediates/linked_resources_binary_format/release/processReleaseResources/linked-resources-binary-format-release.ap_
new file mode 100644
index 0000000..a0dac2d
Binary files /dev/null and b/app/build/intermediates/linked_resources_binary_format/release/processReleaseResources/linked-resources-binary-format-release.ap_ differ
diff --git a/app/build/intermediates/linked_resources_binary_format/release/processReleaseResources/output-metadata.json b/app/build/intermediates/linked_resources_binary_format/release/processReleaseResources/output-metadata.json
new file mode 100644
index 0000000..a5147c1
--- /dev/null
+++ b/app/build/intermediates/linked_resources_binary_format/release/processReleaseResources/output-metadata.json
@@ -0,0 +1,20 @@
+{
+ "version": 3,
+ "artifactType": {
+ "type": "LINKED_RESOURCES_BINARY_FORMAT",
+ "kind": "Directory"
+ },
+ "applicationId": "me.humetrain.tr.twa",
+ "variantName": "release",
+ "elements": [
+ {
+ "type": "SINGLE",
+ "filters": [],
+ "attributes": [],
+ "versionCode": 5,
+ "versionName": "5",
+ "outputFile": "linked-resources-binary-format-release.ap_"
+ }
+ ],
+ "elementType": "File"
+}
\ No newline at end of file
diff --git a/app/build/intermediates/linked_resources_for_bundle_proto_format/release/bundleReleaseResources/linked-resources-for-bundle-proto-format.ap_ b/app/build/intermediates/linked_resources_for_bundle_proto_format/release/bundleReleaseResources/linked-resources-for-bundle-proto-format.ap_
new file mode 100644
index 0000000..d63394c
Binary files /dev/null and b/app/build/intermediates/linked_resources_for_bundle_proto_format/release/bundleReleaseResources/linked-resources-for-bundle-proto-format.ap_ differ
diff --git a/app/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt b/app/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt
new file mode 100644
index 0000000..9203cca
--- /dev/null
+++ b/app/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt
@@ -0,0 +1,31 @@
+R_DEF: Internal format may change without notice
+local
+bool enableNotification
+bool enableSiteSettingsShortcut
+color backgroundColor
+color colorPrimary
+color colorPrimaryDark
+color navigationColor
+color navigationColorDark
+color navigationDividerColor
+color navigationDividerColorDark
+color shortcut_background
+drawable ic_notification_icon
+drawable shortcut_legacy_background
+drawable splash
+integer splashScreenFadeOutDuration
+mipmap ic_launcher
+raw web_app_manifest
+string appName
+string assetStatements
+string fallbackType
+string fullScopeUrl
+string generatorApp
+string hostName
+string launchUrl
+string launcherName
+string orientation
+string providerAuthority
+string webManifestUrl
+xml filepaths
+xml shortcuts
diff --git a/app/build/intermediates/manifest_merge_blame_file/release/processReleaseMainManifest/manifest-merger-blame-release-report.txt b/app/build/intermediates/manifest_merge_blame_file/release/processReleaseMainManifest/manifest-merger-blame-release-report.txt
new file mode 100644
index 0000000..4afbed0
--- /dev/null
+++ b/app/build/intermediates/manifest_merge_blame_file/release/processReleaseMainManifest/manifest-merger-blame-release-report.txt
@@ -0,0 +1,409 @@
+1
+2
+17
+24
+28
+29
+32
+33
+33-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:26:9-80
+33-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:26:26-78
+34
+34-->[com.google.androidbrowserhelper:locationdelegation:1.1.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/6215e13210b05cc5715af15b5940fb9f/transformed/locationdelegation-1.1.2/AndroidManifest.xml:7:5-79
+34-->[com.google.androidbrowserhelper:locationdelegation:1.1.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/6215e13210b05cc5715af15b5940fb9f/transformed/locationdelegation-1.1.2/AndroidManifest.xml:7:22-76
+35
+35-->[com.google.androidbrowserhelper:locationdelegation:1.1.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/6215e13210b05cc5715af15b5940fb9f/transformed/locationdelegation-1.1.2/AndroidManifest.xml:8:5-81
+35-->[com.google.androidbrowserhelper:locationdelegation:1.1.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/6215e13210b05cc5715af15b5940fb9f/transformed/locationdelegation-1.1.2/AndroidManifest.xml:8:22-78
+36
+37
+37-->[com.google.androidbrowserhelper:androidbrowserhelper:2.6.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/5053e02be90783e54992393be394bb70/transformed/androidbrowserhelper-2.6.2/AndroidManifest.xml:22:5-30:15
+38
+38-->[com.google.androidbrowserhelper:androidbrowserhelper:2.6.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/5053e02be90783e54992393be394bb70/transformed/androidbrowserhelper-2.6.2/AndroidManifest.xml:23:9-29:18
+39
+39-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:148:17-68
+39-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:148:25-66
+40
+41
+41-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:150:17-77
+41-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:150:27-75
+42
+43
+43-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:151:17-154:19
+43-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:151:23-45
+44
+45
+46
+47 [androidx.core:core:1.13.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/a5429f7b20c607b890f08b5283ad4ec0/transformed/core-1.13.0/AndroidManifest.xml:22:5-24:47
+48 android:name="me.humetrain.tr.twa.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
+48-->[androidx.core:core:1.13.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/a5429f7b20c607b890f08b5283ad4ec0/transformed/core-1.13.0/AndroidManifest.xml:23:9-81
+49 android:protectionLevel="signature" />
+49-->[androidx.core:core:1.13.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/a5429f7b20c607b890f08b5283ad4ec0/transformed/core-1.13.0/AndroidManifest.xml:24:9-44
+50
+51
+51-->[androidx.core:core:1.13.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/a5429f7b20c607b890f08b5283ad4ec0/transformed/core-1.13.0/AndroidManifest.xml:26:5-97
+51-->[androidx.core:core:1.13.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/a5429f7b20c607b890f08b5283ad4ec0/transformed/core-1.13.0/AndroidManifest.xml:26:22-94
+52
+53 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:35:5-202:19
+54 android:name="me.humetrain.tr.twa.Application"
+54-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:36:9-35
+55 android:allowBackup="true"
+55-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:37:9-35
+56 android:appComponentFactory="androidx.core.app.CoreComponentFactory"
+56-->[androidx.core:core:1.13.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/a5429f7b20c607b890f08b5283ad4ec0/transformed/core-1.13.0/AndroidManifest.xml:28:18-86
+57 android:extractNativeLibs="true"
+58 android:icon="@mipmap/ic_launcher"
+58-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:38:9-43
+59 android:label="@string/appName"
+59-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:39:9-40
+60 android:manageSpaceActivity="com.google.androidbrowserhelper.trusted.ManageDataLauncherActivity"
+60-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:41:9-105
+61 android:supportsRtl="true"
+61-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:43:9-35
+62 android:theme="@android:style/Theme.Translucent.NoTitleBar" >
+62-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:44:9-68
+63 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:46:9-48:58
+64 android:name="asset_statements"
+64-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:47:13-44
+65 android:resource="@string/assetStatements" />
+65-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:48:13-55
+66 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:51:13-53:58
+67 android:name="web_manifest_url"
+67-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:52:17-48
+68 android:value="@string/webManifestUrl" />
+68-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:53:17-55
+69 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:56:9-58:52
+70 android:name="twa_generator"
+70-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:57:13-41
+71 android:value="@string/generatorApp" />
+71-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:58:13-49
+72
+73 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:65:13-76:24
+74 android:name="com.google.androidbrowserhelper.trusted.ManageDataLauncherActivity"
+74-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:65:23-104
+75 android:enabled="true"
+75-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:67:17-39
+76 android:excludeFromRecents="true"
+76-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:68:17-50
+77 android:exported="false" >
+77-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:66:17-41
+78 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:69:17-71:57
+79 android:name="android.support.customtabs.trusted.MANAGE_SPACE_URL"
+79-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:70:21-87
+80 android:value="@string/launchUrl" />
+80-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:71:21-54
+81
+82
+82-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:72:17-75:33
+83
+83-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:73:21-92
+83-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:73:29-89
+84
+85
+85-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:74:21-80
+85-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:74:31-77
+86
+87
+88 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:79:9-160:20
+89 android:name="me.humetrain.tr.twa.LauncherActivity"
+89-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:79:19-50
+90 android:alwaysRetainTaskState="true"
+90-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:80:13-49
+91 android:exported="true"
+91-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:82:13-36
+92 android:label="@string/launcherName" >
+92-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:81:13-49
+93 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:83:13-84:53
+94 android:name="android.support.customtabs.trusted.DEFAULT_URL"
+94-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:83:24-85
+95 android:value="@string/launchUrl" />
+95-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:84:17-50
+96 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:86:13-88:58
+97 android:name="android.support.customtabs.trusted.STATUS_BAR_COLOR"
+97-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:87:17-83
+98 android:resource="@color/colorPrimary" />
+98-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:88:17-55
+99 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:92:13-94:62
+100 android:name="android.support.customtabs.trusted.STATUS_BAR_COLOR_DARK"
+100-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:93:17-88
+101 android:resource="@color/colorPrimaryDark" />
+101-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:94:17-59
+102 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:96:13-98:61
+103 android:name="android.support.customtabs.trusted.NAVIGATION_BAR_COLOR"
+103-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:97:17-87
+104 android:resource="@color/navigationColor" />
+104-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:98:17-58
+105 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:100:13-102:65
+106 android:name="android.support.customtabs.trusted.NAVIGATION_BAR_COLOR_DARK"
+106-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:101:17-92
+107 android:resource="@color/navigationColorDark" />
+107-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:102:17-62
+108 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:104:13-106:68
+109 android:name="androix.browser.trusted.NAVIGATION_BAR_DIVIDER_COLOR"
+109-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:105:17-84
+110 android:resource="@color/navigationDividerColor" />
+110-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:106:17-65
+111 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:108:13-110:72
+112 android:name="androix.browser.trusted.NAVIGATION_BAR_DIVIDER_COLOR_DARK"
+112-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:109:17-89
+113 android:resource="@color/navigationDividerColorDark" />
+113-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:110:17-69
+114 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:112:13-113:54
+115 android:name="android.support.customtabs.trusted.SPLASH_IMAGE_DRAWABLE"
+115-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:112:24-95
+116 android:resource="@drawable/splash" />
+116-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:113:17-52
+117 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:115:13-116:60
+118 android:name="android.support.customtabs.trusted.SPLASH_SCREEN_BACKGROUND_COLOR"
+118-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:115:24-104
+119 android:resource="@color/backgroundColor" />
+119-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:116:17-58
+120 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:118:13-119:71
+121 android:name="android.support.customtabs.trusted.SPLASH_SCREEN_FADE_OUT_DURATION"
+121-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:118:24-105
+122 android:value="@integer/splashScreenFadeOutDuration" />
+122-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:119:17-69
+123 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:121:13-122:60
+124 android:name="android.support.customtabs.trusted.FILE_PROVIDER_AUTHORITY"
+124-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:121:24-97
+125 android:value="@string/providerAuthority" />
+125-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:122:17-58
+126 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:124:13-97
+127 android:name="android.app.shortcuts"
+127-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:124:24-60
+128 android:resource="@xml/shortcuts" />
+128-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:124:61-94
+129 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:126:13-127:56
+130 android:name="android.support.customtabs.trusted.FALLBACK_STRATEGY"
+130-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:126:24-91
+131 android:value="@string/fallbackType" />
+131-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:127:17-53
+132 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:133:13-134:54
+133 android:name="android.support.customtabs.trusted.SCREEN_ORIENTATION"
+133-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:133:24-92
+134 android:value="@string/orientation" />
+134-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:134:17-52
+135
+136
+136-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:142:13-145:29
+137
+137-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:143:17-69
+137-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:143:25-66
+138
+139
+139-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:144:17-77
+139-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:144:27-74
+140
+141
+141-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:147:13-155:29
+141-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:147:28-53
+142
+142-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:148:17-68
+142-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:148:25-66
+143
+144
+144-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:74:21-80
+144-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:74:31-77
+145
+145-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:150:17-77
+145-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:150:27-75
+146
+147 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:151:17-154:19
+148 android:host="@string/hostName"
+148-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:152:21-52
+149 android:scheme="https" />
+149-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:151:23-45
+150
+151
+152
+152-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:162:9-90
+152-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:162:19-87
+153 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:164:9-165:62
+154 android:name="com.google.androidbrowserhelper.trusted.WebViewFallbackActivity"
+154-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:164:19-97
+155 android:configChanges="orientation|screenSize" />
+155-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:165:13-59
+156
+157 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:167:9-175:20
+158 android:name="androidx.core.content.FileProvider"
+158-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:168:13-62
+159 android:authorities="@string/providerAuthority"
+159-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:169:13-60
+160 android:exported="false"
+160-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:171:13-37
+161 android:grantUriPermissions="true" >
+161-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:170:13-47
+162 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:172:13-174:53
+163 android:name="android.support.FILE_PROVIDER_PATHS"
+163-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:173:17-67
+164 android:resource="@xml/filepaths" />
+164-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:174:17-50
+165
+166
+167 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:177:9-192:19
+168 android:name="me.humetrain.tr.twa.DelegationService"
+168-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:178:13-46
+169 android:enabled="@bool/enableNotification"
+169-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:179:13-55
+170 android:exported="@bool/enableNotification" >
+170-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:180:13-56
+171 /home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:183:17-185:73
+172 android:name="android.support.customtabs.trusted.SMALL_ICON"
+172-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:184:21-81
+173 android:resource="@drawable/ic_notification_icon" />
+173-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:185:21-70
+174
+175
+175-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:188:13-191:29
+176
+176-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:189:17-105
+176-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:189:25-103
+177
+178
+178-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:74:21-80
+178-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:74:31-77
+179
+180
+181
+182
+182-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:195:13-118
+182-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:195:23-115
+183
+183-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:199:13-200:89
+183-->/home/ckh08045/Tr_Code/app/src/main/AndroidManifest.xml:199:23-123
+184 [com.google.android.gms:play-services-base:18.1.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/02e37f92c71ffadabef41ae6f5feca22/transformed/play-services-base-18.1.0/AndroidManifest.xml:20:9-22:45
+185 android:name="com.google.android.gms.common.api.GoogleApiActivity"
+185-->[com.google.android.gms:play-services-base:18.1.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/02e37f92c71ffadabef41ae6f5feca22/transformed/play-services-base-18.1.0/AndroidManifest.xml:20:19-85
+186 android:exported="false"
+186-->[com.google.android.gms:play-services-base:18.1.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/02e37f92c71ffadabef41ae6f5feca22/transformed/play-services-base-18.1.0/AndroidManifest.xml:22:19-43
+187 android:theme="@android:style/Theme.Translucent.NoTitleBar" />
+187-->[com.google.android.gms:play-services-base:18.1.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/02e37f92c71ffadabef41ae6f5feca22/transformed/play-services-base-18.1.0/AndroidManifest.xml:21:19-78
+188
+189 [com.google.android.gms:play-services-basement:18.1.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/d176d6696a4772b4ce2a6021c61f9202/transformed/play-services-basement-18.1.0/AndroidManifest.xml:21:9-23:69
+190 android:name="com.google.android.gms.version"
+190-->[com.google.android.gms:play-services-basement:18.1.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/d176d6696a4772b4ce2a6021c61f9202/transformed/play-services-basement-18.1.0/AndroidManifest.xml:22:13-58
+191 android:value="@integer/google_play_services_version" />
+191-->[com.google.android.gms:play-services-basement:18.1.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/d176d6696a4772b4ce2a6021c61f9202/transformed/play-services-basement-18.1.0/AndroidManifest.xml:23:13-66
+192
+193 [androidx.emoji2:emoji2:1.3.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/5cb7738f5242d8c4e38c8ffa2b265b31/transformed/emoji2-1.3.0/AndroidManifest.xml:24:9-32:20
+194 android:name="androidx.startup.InitializationProvider"
+194-->[androidx.emoji2:emoji2:1.3.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/5cb7738f5242d8c4e38c8ffa2b265b31/transformed/emoji2-1.3.0/AndroidManifest.xml:25:13-67
+195 android:authorities="me.humetrain.tr.twa.androidx-startup"
+195-->[androidx.emoji2:emoji2:1.3.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/5cb7738f5242d8c4e38c8ffa2b265b31/transformed/emoji2-1.3.0/AndroidManifest.xml:26:13-68
+196 android:exported="false" >
+196-->[androidx.emoji2:emoji2:1.3.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/5cb7738f5242d8c4e38c8ffa2b265b31/transformed/emoji2-1.3.0/AndroidManifest.xml:27:13-37
+197 [androidx.emoji2:emoji2:1.3.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/5cb7738f5242d8c4e38c8ffa2b265b31/transformed/emoji2-1.3.0/AndroidManifest.xml:29:13-31:52
+198 android:name="androidx.emoji2.text.EmojiCompatInitializer"
+198-->[androidx.emoji2:emoji2:1.3.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/5cb7738f5242d8c4e38c8ffa2b265b31/transformed/emoji2-1.3.0/AndroidManifest.xml:30:17-75
+199 android:value="androidx.startup" />
+199-->[androidx.emoji2:emoji2:1.3.0] /home/ckh08045/.gradle/caches/8.11.1/transforms/5cb7738f5242d8c4e38c8ffa2b265b31/transformed/emoji2-1.3.0/AndroidManifest.xml:31:17-49
+200 [androidx.lifecycle:lifecycle-process:2.6.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/4bc52031417e9743197e36b704fe409f/transformed/lifecycle-process-2.6.2/AndroidManifest.xml:29:13-31:52
+201 android:name="androidx.lifecycle.ProcessLifecycleInitializer"
+201-->[androidx.lifecycle:lifecycle-process:2.6.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/4bc52031417e9743197e36b704fe409f/transformed/lifecycle-process-2.6.2/AndroidManifest.xml:30:17-78
+202 android:value="androidx.startup" />
+202-->[androidx.lifecycle:lifecycle-process:2.6.2] /home/ckh08045/.gradle/caches/8.11.1/transforms/4bc52031417e9743197e36b704fe409f/transformed/lifecycle-process-2.6.2/AndroidManifest.xml:31:17-49
+203 [androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:29:13-31:52
+204 android:name="androidx.profileinstaller.ProfileInstallerInitializer"
+204-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:30:17-85
+205 android:value="androidx.startup" />
+205-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:31:17-49
+206
+207
+208 [androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:34:9-52:20
+209 android:name="androidx.profileinstaller.ProfileInstallReceiver"
+209-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:35:13-76
+210 android:directBootAware="false"
+210-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:36:13-44
+211 android:enabled="true"
+211-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:37:13-35
+212 android:exported="true"
+212-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:38:13-36
+213 android:permission="android.permission.DUMP" >
+213-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:39:13-57
+214
+214-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:40:13-42:29
+215
+215-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:41:17-91
+215-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:41:25-88
+216
+217
+217-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:43:13-45:29
+218
+218-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:44:17-85
+218-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:44:25-82
+219
+220
+220-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:46:13-48:29
+221
+221-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:47:17-88
+221-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:47:25-85
+222
+223
+223-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:49:13-51:29
+224
+224-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:50:17-95
+224-->[androidx.profileinstaller:profileinstaller:1.3.1] /home/ckh08045/.gradle/caches/8.11.1/transforms/bb4a0d32d1b17a1dcea0cf71d2bde5e0/transformed/profileinstaller-1.3.1/AndroidManifest.xml:50:25-92
+225
+226
+227
+228
+229
diff --git a/app/build/intermediates/merged_art_profile/release/mergeReleaseArtProfile/baseline-prof.txt b/app/build/intermediates/merged_art_profile/release/mergeReleaseArtProfile/baseline-prof.txt
new file mode 100644
index 0000000..6e9e03e
--- /dev/null
+++ b/app/build/intermediates/merged_art_profile/release/mergeReleaseArtProfile/baseline-prof.txt
@@ -0,0 +1,1485 @@
+# Baseline profiles for androidx.appcompat
+
+HSPLandroidx/appcompat/R$styleable;->()V
+HSPLandroidx/appcompat/app/ActionBar$LayoutParams;->(II)V
+HSPLandroidx/appcompat/app/ActionBar;->()V
+HSPLandroidx/appcompat/app/AppCompatActivity$1;->(Landroidx/appcompat/app/AppCompatActivity;)V
+HSPLandroidx/appcompat/app/AppCompatActivity$2;->(Landroidx/appcompat/app/AppCompatActivity;)V
+HSPLandroidx/appcompat/app/AppCompatActivity$2;->onContextAvailable(Landroid/content/Context;)V
+HSPLandroidx/appcompat/app/AppCompatActivity;->()V
+HSPLandroidx/appcompat/app/AppCompatActivity;->attachBaseContext(Landroid/content/Context;)V
+HSPLandroidx/appcompat/app/AppCompatActivity;->getDelegate()Landroidx/appcompat/app/AppCompatDelegate;
+HSPLandroidx/appcompat/app/AppCompatActivity;->getMenuInflater()Landroid/view/MenuInflater;
+HSPLandroidx/appcompat/app/AppCompatActivity;->getResources()Landroid/content/res/Resources;
+HSPLandroidx/appcompat/app/AppCompatActivity;->initDelegate()V
+HSPLandroidx/appcompat/app/AppCompatActivity;->initViewTreeOwners()V
+HSPLandroidx/appcompat/app/AppCompatActivity;->onContentChanged()V
+HSPLandroidx/appcompat/app/AppCompatActivity;->onPostCreate(Landroid/os/Bundle;)V
+HSPLandroidx/appcompat/app/AppCompatActivity;->onPostResume()V
+HSPLandroidx/appcompat/app/AppCompatActivity;->onStart()V
+HSPLandroidx/appcompat/app/AppCompatActivity;->onSupportContentChanged()V
+HSPLandroidx/appcompat/app/AppCompatActivity;->onTitleChanged(Ljava/lang/CharSequence;I)V
+HSPLandroidx/appcompat/app/AppCompatActivity;->setContentView(I)V
+HSPLandroidx/appcompat/app/AppCompatActivity;->setTheme(I)V
+HSPLandroidx/appcompat/app/AppCompatDelegate;->()V
+HSPLandroidx/appcompat/app/AppCompatDelegate;->()V
+HSPLandroidx/appcompat/app/AppCompatDelegate;->addActiveDelegate(Landroidx/appcompat/app/AppCompatDelegate;)V
+HSPLandroidx/appcompat/app/AppCompatDelegate;->attachBaseContext(Landroid/content/Context;)V
+HSPLandroidx/appcompat/app/AppCompatDelegate;->attachBaseContext2(Landroid/content/Context;)Landroid/content/Context;
+HSPLandroidx/appcompat/app/AppCompatDelegate;->create(Landroid/app/Activity;Landroidx/appcompat/app/AppCompatCallback;)Landroidx/appcompat/app/AppCompatDelegate;
+HSPLandroidx/appcompat/app/AppCompatDelegate;->getDefaultNightMode()I
+HSPLandroidx/appcompat/app/AppCompatDelegate;->removeDelegateFromActives(Landroidx/appcompat/app/AppCompatDelegate;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$2;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$2;->run()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$3;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$5;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$5;->onAttachedFromWindow()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$ActionMenuPresenterCallback;->(Landroidx/appcompat/app/AppCompatDelegateImpl;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$Api17Impl;->createConfigurationContext(Landroid/content/Context;Landroid/content/res/Configuration;)Landroid/content/Context;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->(Landroidx/appcompat/app/AppCompatDelegateImpl;Landroid/view/Window$Callback;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onContentChanged()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onCreatePanelMenu(ILandroid/view/Menu;)Z
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onCreatePanelView(I)Landroid/view/View;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;->(I)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;->setMenu(Landroidx/appcompat/view/menu/MenuBuilder;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->(Landroid/app/Activity;Landroidx/appcompat/app/AppCompatCallback;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->(Landroid/content/Context;Landroid/view/Window;Landroidx/appcompat/app/AppCompatCallback;Ljava/lang/Object;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyDayNight()Z
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyDayNight(Z)Z
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyFixedSizeWindow()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachBaseContext2(Landroid/content/Context;)Landroid/content/Context;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachToWindow(Landroid/view/Window;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->calculateNightMode()I
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createOverrideConfigurationForDayNight(Landroid/content/Context;ILandroid/content/res/Configuration;)Landroid/content/res/Configuration;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createSubDecor()Landroid/view/ViewGroup;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->doInvalidatePanelMenu(I)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureSubDecor()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureWindow()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getMenuInflater()Landroid/view/MenuInflater;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getPanelState(IZ)Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getSupportActionBar()Landroidx/appcompat/app/ActionBar;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getTitle()Ljava/lang/CharSequence;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getWindowCallback()Landroid/view/Window$Callback;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->initWindowDecorActionBar()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->initializePanelMenu(Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;)Z
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->installViewFactory()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->invalidatePanelMenu(I)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->isActivityManifestHandlingUiMode()Z
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->mapNightMode(Landroid/content/Context;I)I
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreate(Landroid/os/Bundle;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostCreate(Landroid/os/Bundle;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onPostResume()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onStart()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onSubDecorInstalled(Landroid/view/ViewGroup;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->peekSupportActionBar()Landroidx/appcompat/app/ActionBar;
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->preparePanel(Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;Landroid/view/KeyEvent;)Z
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->requestWindowFeature(I)Z
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->sanitizeWindowFeatureId(I)I
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setContentView(I)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTheme(I)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTitle(Ljava/lang/CharSequence;)V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->throwFeatureRequestIfSubDecorInstalled()V
+HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->updateForNightMode(IZ)Z
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->()V
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->()V
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->backportAccessibilityAttributes(Landroid/content/Context;Landroid/view/View;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->checkOnClickListener(Landroid/view/View;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->createButton(Landroid/content/Context;Landroid/util/AttributeSet;)Landroidx/appcompat/widget/AppCompatButton;
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->createEditText(Landroid/content/Context;Landroid/util/AttributeSet;)Landroidx/appcompat/widget/AppCompatEditText;
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->createTextView(Landroid/content/Context;Landroid/util/AttributeSet;)Landroidx/appcompat/widget/AppCompatTextView;
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/content/Context;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;ZZZZ)Landroid/view/View;
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->themifyContext(Landroid/content/Context;Landroid/util/AttributeSet;ZZ)Landroid/content/Context;
+HSPLandroidx/appcompat/app/AppCompatViewInflater;->verifyNotNull(Landroid/view/View;Ljava/lang/String;)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar$1;->(Landroidx/appcompat/app/WindowDecorActionBar;)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar$2;->(Landroidx/appcompat/app/WindowDecorActionBar;)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar$3;->(Landroidx/appcompat/app/WindowDecorActionBar;)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->()V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->(Landroid/app/Activity;Z)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->getDecorToolbar(Landroid/view/View;)Landroidx/appcompat/widget/DecorToolbar;
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->getNavigationMode()I
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->getThemedContext()Landroid/content/Context;
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->init(Landroid/view/View;)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->onWindowVisibilityChanged(I)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->setDefaultDisplayHomeAsUpEnabled(Z)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->setDisplayHomeAsUpEnabled(Z)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->setDisplayOptions(II)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->setElevation(F)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->setHasEmbeddedTabs(Z)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->setHomeButtonEnabled(Z)V
+HSPLandroidx/appcompat/app/WindowDecorActionBar;->setShowHideAnimationEnabled(Z)V
+HSPLandroidx/appcompat/view/ActionBarPolicy;->(Landroid/content/Context;)V
+HSPLandroidx/appcompat/view/ActionBarPolicy;->enableHomeButtonByDefault()Z
+HSPLandroidx/appcompat/view/ActionBarPolicy;->get(Landroid/content/Context;)Landroidx/appcompat/view/ActionBarPolicy;
+HSPLandroidx/appcompat/view/ActionBarPolicy;->getEmbeddedMenuWidthLimit()I
+HSPLandroidx/appcompat/view/ActionBarPolicy;->getMaxActionButtons()I
+HSPLandroidx/appcompat/view/ActionBarPolicy;->hasEmbeddedTabs()Z
+HSPLandroidx/appcompat/view/ActionBarPolicy;->showsOverflowMenuButton()Z
+HSPLandroidx/appcompat/view/ContextThemeWrapper;->(Landroid/content/Context;I)V
+HSPLandroidx/appcompat/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V
+HSPLandroidx/appcompat/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources;
+HSPLandroidx/appcompat/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources;
+HSPLandroidx/appcompat/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
+HSPLandroidx/appcompat/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme;
+HSPLandroidx/appcompat/view/ContextThemeWrapper;->initializeTheme()V
+HSPLandroidx/appcompat/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V
+HSPLandroidx/appcompat/view/SupportMenuInflater;->()V
+HSPLandroidx/appcompat/view/SupportMenuInflater;->(Landroid/content/Context;)V
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->(Landroid/view/Window$Callback;)V
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->getWrapped()Landroid/view/Window$Callback;
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onAttachedToWindow()V
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onCreatePanelMenu(ILandroid/view/Menu;)Z
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onCreatePanelView(I)Landroid/view/View;
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
+HSPLandroidx/appcompat/view/WindowCallbackWrapper;->onWindowFocusChanged(Z)V
+HSPLandroidx/appcompat/view/menu/ActionMenuItem;->(Landroid/content/Context;IIIILjava/lang/CharSequence;)V
+HSPLandroidx/appcompat/view/menu/BaseMenuPresenter;->(Landroid/content/Context;II)V
+HSPLandroidx/appcompat/view/menu/BaseMenuPresenter;->initForMenu(Landroid/content/Context;Landroidx/appcompat/view/menu/MenuBuilder;)V
+HSPLandroidx/appcompat/view/menu/BaseMenuPresenter;->setCallback(Landroidx/appcompat/view/menu/MenuPresenter$Callback;)V
+HSPLandroidx/appcompat/view/menu/BaseMenuPresenter;->setId(I)V
+HSPLandroidx/appcompat/view/menu/BaseMenuPresenter;->updateMenuView(Z)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->()V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->(Landroid/content/Context;)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->addMenuPresenter(Landroidx/appcompat/view/menu/MenuPresenter;Landroid/content/Context;)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->dispatchPresenterUpdate(Z)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->flagActionItems()V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->getActionItems()Ljava/util/ArrayList;
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->getNonActionItems()Ljava/util/ArrayList;
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->getVisibleItems()Ljava/util/ArrayList;
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->hasVisibleItems()Z
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->onItemsChanged(Z)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->setCallback(Landroidx/appcompat/view/menu/MenuBuilder$Callback;)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->setOverrideVisibleItems(Z)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->setQwertyMode(Z)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->setShortcutsVisibleInner(Z)V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->size()I
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->startDispatchingItemsChanged()V
+HSPLandroidx/appcompat/view/menu/MenuBuilder;->stopDispatchingItemsChanged()V
+HSPLandroidx/appcompat/widget/AbsActionBarView$VisibilityAnimListener;->(Landroidx/appcompat/widget/AbsActionBarView;)V
+HSPLandroidx/appcompat/widget/AbsActionBarView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/ActionBarBackgroundDrawable;->(Landroidx/appcompat/widget/ActionBarContainer;)V
+HSPLandroidx/appcompat/widget/ActionBarBackgroundDrawable;->draw(Landroid/graphics/Canvas;)V
+HSPLandroidx/appcompat/widget/ActionBarBackgroundDrawable;->getOpacity()I
+HSPLandroidx/appcompat/widget/ActionBarBackgroundDrawable;->getOutline(Landroid/graphics/Outline;)V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->drawableStateChanged()V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->jumpDrawablesToCurrentState()V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->onFinishInflate()V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->onLayout(ZIIII)V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/ActionBarContainer;->setTabContainer(Landroidx/appcompat/widget/ScrollingTabContainerView;)V
+HSPLandroidx/appcompat/widget/ActionBarContextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/ActionBarContextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout$1;->(Landroidx/appcompat/widget/ActionBarOverlayLayout;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout$2;->(Landroidx/appcompat/widget/ActionBarOverlayLayout;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout$3;->(Landroidx/appcompat/widget/ActionBarOverlayLayout;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->()V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->applyInsets(Landroid/view/View;Landroid/graphics/Rect;ZZZZ)Z
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroidx/appcompat/widget/ActionBarOverlayLayout$LayoutParams;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->getDecorToolbar(Landroid/view/View;)Landroidx/appcompat/widget/DecorToolbar;
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->init(Landroid/content/Context;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onLayout(ZIIII)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onMeasure(II)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;II)Z
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->onWindowVisibilityChanged(I)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->pullChildren()V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setActionBarVisibilityCallback(Landroidx/appcompat/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setHasNonEmbeddedTabs(Z)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setMenu(Landroid/view/Menu;Landroidx/appcompat/view/menu/MenuPresenter$Callback;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setMenuPrepared()V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setWindowCallback(Landroid/view/Window$Callback;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->setWindowTitle(Ljava/lang/CharSequence;)V
+HSPLandroidx/appcompat/widget/ActionBarOverlayLayout;->shouldDelayChildPressedState()Z
+HSPLandroidx/appcompat/widget/ActionMenuPresenter$OverflowMenuButton$1;->(Landroidx/appcompat/widget/ActionMenuPresenter$OverflowMenuButton;Landroid/view/View;Landroidx/appcompat/widget/ActionMenuPresenter;)V
+HSPLandroidx/appcompat/widget/ActionMenuPresenter$OverflowMenuButton;->(Landroidx/appcompat/widget/ActionMenuPresenter;Landroid/content/Context;)V
+HSPLandroidx/appcompat/widget/ActionMenuPresenter$PopupPresenterCallback;->