diff --git a/genAI/.env b/.env
similarity index 100%
rename from genAI/.env
rename to .env
diff --git a/.gitignore b/.gitignore
index fe70435..f5e96db 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-genAI/venv
\ No newline at end of file
+venv
\ No newline at end of file
diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml
deleted file mode 100644
index b375693..0000000
--- a/.idea/appInsightsSettings.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index b589d56..0000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
deleted file mode 100644
index b268ef3..0000000
--- a/.idea/deploymentTargetSelector.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
deleted file mode 100644
index 5d3ab35..0000000
--- a/.idea/gradle.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
deleted file mode 100644
index b1077fb..0000000
--- a/.idea/kotlinc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/migrations.xml b/.idea/migrations.xml
deleted file mode 100644
index f8051a6..0000000
--- a/.idea/migrations.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 0ad17cb..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Generative_AI.png b/Generative_AI.png
deleted file mode 100644
index 8786af1..0000000
Binary files a/Generative_AI.png and /dev/null differ
diff --git a/README.md b/README.md
deleted file mode 100644
index 5b107cf..0000000
--- a/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# Personalized Content Generation for Bank of Baroda Hackathon 2024
-
-## Team: Coach_Sahab
-"Driving the technology through the leaps of Himalayas"
-
-## Project Overview
-This project aims to solve the problem of personalized content generation for the banking sector, enhancing customer satisfaction and engagement through tailored content. Our solution leverages advanced AI and machine learning models to deliver personalized marketing materials, financial reports, and educational content.
-
-## Repository
-GitHub Link: [SmartBaroda](https://github.com/uphargaur/SmartBaroda)
-
-## Architecture
-
-### Overall Architecture
-1. **Data Ingestion Layer**
- - **Components**: Azure Data Factory, Azure Data Lake Storage
- - **Function**: Collects and processes customer data from multiple sources, ensuring data quality and consistency.
-
-2. **AI Model Layer**
- - **Components**: Azure Machine Learning, Azure Kubernetes Service (AKS), Azure Batch
- - **Function**: Utilizes AI models to generate personalized content based on customer data analysis.
-
-3. **Distribution Layer**
- - **Components**: Azure API Management, Azure Functions, Azure Logic Apps
- - **Function**: Distributes personalized content through appropriate channels (email, SMS, mobile app).
-
-4. **Feedback Loop**
- - **Components**: Azure Application Insights, Power BI
- - **Function**: Gathers feedback on content effectiveness to refine and improve personalization algorithms.
-
-### Backend Architecture
-1. **Source Code Management**
- - **Tools**: GitHub, Jenkins/GitHub Actions
- - **Function**: Version control, continuous integration, and deployment.
-
-2. **Deployment**
- - **Components**: Cloud-based virtual machines, Docker
- - **Function**: Hosting the application and running it in containers.
-
-3. **AI System**
- - **Components**: AI models for processing complex queries
- - **Function**: Provide advanced functionalities.
-
-4. **API**
- - **Function**: Interfaces for communication between software components, handling client requests.
-
-5. **Database Management**
- - **Components**: MongoDB
- - **Function**: Storing and retrieving application data efficiently.
-
-### Generative AI Architecture
-1. **Langchain Agent**
- - **Function**: Uses a language model to choose a sequence of actions to take.
-
-2. **Langchain Tools**
- - **Function**: Interfaces that the agent can use to interact with the world.
-
-3. **OpenAI LLM (Azure)**
- - **Components**: OpenAI ChatGPT 3.5/4.0, Langchain Framework
- - **Function**: Generative AI for creating personalized content.
-
-### Frontend Architecture
-1. **Retrofit Service**
- - **Function**: Simplifies network operations, manages API calls, and converts responses into data models.
-
-2. **DI Class for Dagger**
- - **Function**: Manages dependencies, ensuring clean and reusable components.
-
-3. **ViewModel**
- - **Function**: Manages UI data and business logic.
-
-4. **Repository**
- - **Function**: Provides a single source of truth for data, handles caching and synchronization.
-
-5. **Activity/Fragment**
- - **Function**: Displays data, handles user interactions, and delegates logic to ViewModel.
-
-## Azure Resources Required
-- **Azure Machine Learning**: For the entire machine learning lifecycle.
-- **Azure AI Studio & Azure OpenAI**: For advanced language models.
-- **Azure Virtual Machines**: For scalable computing power.
-- **Azure Kubernetes Service (AKS)**: For managing data processing nodes.
-- **Azure Data Lake Storage**: For scalable data storage.
-- **Azure Logic Apps**: For workflow automation.
-- **Azure Application Insights**: For monitoring and feedback.
-
-## Methodology
-1. **Pilot Testing**
-2. **Feedback and Refinement**
-3. **Gradual Rollout**
-4. **Marketing and Awareness Campaigns**
-5. **Customer Support and Training**
-6. **Continuous Improvement**
-
-## Key Differentiators
-- **Highly Personalized Content**
-- **Real-Time Content Generation**
-- **Comprehensive Integration**
-- **Data-Driven Insights**
-- **Continuous Improvement**
-
-## Adoption Plan
-1. **Pilot Testing**
-2. **Feedback and Refinement**
-3. **Gradual Rollout**
-4. **Marketing and Awareness Campaigns**
-5. **Customer Support and Training**
-6. **Continuous Improvement**
-
-## Scalability
-- **Cloud Infrastructure**
-- **Microservices Architecture**
-- **AI Model Deployment**
-- **Data Processing Efficiency**
-- **Distribution Channels**
-- **Continuous Monitoring and Optimization**
-
-## Security Considerations
-- **Data Encryption**
-- **Access Control**
-- **Compliance Certifications**
-- **Network Security**
-- **Threat Detection**
-- **Data Residency**
-- **Audits and Assessments**
-- **Disaster Recovery**
-
-## Contributors
-- Yash Kamal Saxena
-- Tushar Garg
-- Uphar Gaur
-
-Thank you for considering our project!
diff --git a/Screenshot from 2024-07-04 02-30-25.png b/Screenshot from 2024-07-04 02-30-25.png
deleted file mode 100644
index e2a9975..0000000
Binary files a/Screenshot from 2024-07-04 02-30-25.png and /dev/null differ
diff --git a/genAI/__init__.py b/__init__.py
similarity index 100%
rename from genAI/__init__.py
rename to __init__.py
diff --git a/genAI/__pycache__/financialAdvisor.cpython-311.pyc b/__pycache__/financialAdvisor.cpython-311.pyc
similarity index 100%
rename from genAI/__pycache__/financialAdvisor.cpython-311.pyc
rename to __pycache__/financialAdvisor.cpython-311.pyc
diff --git a/genAI/__pycache__/loanRecommenderAgent.cpython-311.pyc b/__pycache__/loanRecommenderAgent.cpython-311.pyc
similarity index 100%
rename from genAI/__pycache__/loanRecommenderAgent.cpython-311.pyc
rename to __pycache__/loanRecommenderAgent.cpython-311.pyc
diff --git a/genAI/__pycache__/main.cpython-311.pyc b/__pycache__/main.cpython-311.pyc
similarity index 100%
rename from genAI/__pycache__/main.cpython-311.pyc
rename to __pycache__/main.cpython-311.pyc
diff --git a/genAI/__pycache__/mongoClient.cpython-311.pyc b/__pycache__/mongoClient.cpython-311.pyc
similarity index 100%
rename from genAI/__pycache__/mongoClient.cpython-311.pyc
rename to __pycache__/mongoClient.cpython-311.pyc
diff --git a/genAI/__pycache__/policyRecommenderAgent.cpython-311.pyc b/__pycache__/policyRecommenderAgent.cpython-311.pyc
similarity index 100%
rename from genAI/__pycache__/policyRecommenderAgent.cpython-311.pyc
rename to __pycache__/policyRecommenderAgent.cpython-311.pyc
diff --git a/android/.gitignore b/android/.gitignore
deleted file mode 100644
index aa724b7..0000000
--- a/android/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
-.DS_Store
-/build
-/captures
-.externalNativeBuild
-.cxx
-local.properties
diff --git a/android/app/.gitignore b/android/app/.gitignore
deleted file mode 100644
index 42afabf..0000000
--- a/android/app/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/android/app/build.gradle b/android/app/build.gradle
deleted file mode 100644
index 3e45c98..0000000
--- a/android/app/build.gradle
+++ /dev/null
@@ -1,155 +0,0 @@
-plugins {
- id 'com.android.application'
- id 'org.jetbrains.kotlin.android'
- id 'kotlin-parcelize'
- id 'com.google.gms.google-services'
- id 'com.google.firebase.crashlytics'
- }
-
-android {
- compileSdk 32
-
- defaultConfig {
- applicationId "com.example.infuxion_alternate"
- minSdk 24
- targetSdk 32
- versionCode 26
- versionName "KYC v1.26"
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
- kotlinOptions {
- jvmTarget = '1.8'
- }
- buildFeatures {
- viewBinding = true
- }
-}
-
-dependencies {
-
- implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.5.1'
- implementation 'com.google.android.material:material:1.7.0'
- implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
- implementation 'androidx.compose.ui:ui-graphics:1.2.1'
-// implementation 'androidx.activity:activity:1.9.0'
-
- testImplementation 'junit:junit:4.13.2'
- androidTestImplementation 'androidx.test.ext:junit:1.1.3'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
-
- implementation 'com.google.android.material:material:1.2.0-alpha01'
- implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.17'
- implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'com.google.android.material:material:1.6.1'
-
-
- implementation 'androidx.annotation:annotation:1.2.0'
- implementation "androidx.constraintlayout:constraintlayout:2.1.3"
- implementation 'com.google.android.gms:play-services-auth:19.0.0'
- implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
- implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
- implementation 'com.google.firebase:firebase-auth:21.0.8'
-
-
-
- implementation 'androidx.cardview:cardview:1.0.0'
-
- // Feature module Support
- implementation 'com.airbnb.android:lottie:4.2.2'
-
-
- implementation 'com.google.android.material:material:1.6.1'
-
-
-
- implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.2.1'
- implementation 'com.squareup.okhttp3:logging-interceptor:4.2.1'
-
-// Coroutine
- implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")
- implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4")
- implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
-
- implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
-
- implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
-
- implementation 'com.google.android.gms:play-services-location:21.0.0'
- implementation 'com.google.android.gms:play-services-auth:20.3.0'
-
- implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
- implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
-// implementation 'com.google.android.gms:play-services-location:17.0.0'
-
-
- // Import the BoM for the Firebase platform
- implementation platform('com.google.firebase:firebase-bom:31.1.1')
-
- // Add the dependencies for the Crashlytics and Analytics libraries
- // When using the BoM, you don't specify versions in Firebase library dependencies
-
- implementation 'com.google.firebase:firebase-crashlytics-ktx'
- implementation 'com.google.firebase:firebase-analytics-ktx'
-
-
-
- def camerax_version = "1.0.0-beta07"
-// CameraX core library using camera2 implementation
- implementation "androidx.camera:camera-camera2:$camerax_version"
-// CameraX Lifecycle Library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
-// CameraX View class
- implementation "androidx.camera:camera-view:1.0.0-alpha14"
- implementation "androidx.camera:camera-core:1.0.0-alpha12"
- implementation 'com.google.mlkit:face-detection:16.1.5'
-
- implementation 'com.intuit.sdp:sdp-android:1.1.0' //for the margin,padding and layout sizes
- implementation 'com.intuit.ssp:ssp-android:1.1.0' //
-
-
-
- // gallery picker
-
- def nav_version = "2.5.3"
-
-
- // Add the dependency for the Firebase Authentication library
- // When using the BoM, you don't specify versions in Firebase library dependencies
- implementation 'com.google.firebase:firebase-auth-ktx'
-
-
- implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
- implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
-
-
-
- //j add
- //Biometric (Finger, Pin, Pattern Lock)
- implementation 'androidx.biometric:biometric:1.1.0'
-
- //Image Compress
- implementation project(':image_compressor')
-
- //Glide Image
- implementation 'com.github.bumptech.glide:glide:4.15.1'
-
- implementation 'com.google.mlkit:text-recognition:16.0.0'
-
-}
-
-
diff --git a/android/app/google-services.json b/android/app/google-services.json
deleted file mode 100644
index 81fe821..0000000
--- a/android/app/google-services.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "project_info": {
- "project_number": "380280935643",
- "project_id": "neosaturn-11e4c",
- "storage_bucket": "neosaturn-11e4c.appspot.com"
- },
- "client": [
- {
- "client_info": {
- "mobilesdk_app_id": "1:380280935643:android:ec85c6b6ba54b7b0b7e8fe",
- "android_client_info": {
- "package_name": "com.example.infuxion_alternate"
- }
- },
- "oauth_client": [
- {
- "client_id": "380280935643-ihtc7voi12vdfcfb91o5hc4mj952aljr.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "com.example.infuxion_alternate",
- "certificate_hash": "9a9e7584834c71976bbec7ae383a3452b4b7c39a"
- }
- },
- {
- "client_id": "380280935643-gjl97po7r4vfjqa6broh1f1hiotg0u6p.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
- "api_key": [
- {
- "current_key": "AIzaSyDKIGdndJLVKU60ob_J4k5rmYH7UnklJT4"
- }
- ],
- "services": {
- "appinvite_service": {
- "other_platform_oauth_client": [
- {
- "client_id": "380280935643-gjl97po7r4vfjqa6broh1f1hiotg0u6p.apps.googleusercontent.com",
- "client_type": 3
- }
- ]
- }
- }
- }
- ],
- "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
deleted file mode 100644
index f1b4245..0000000
--- a/android/app/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
diff --git a/android/app/src/androidTest/java/com/example/infuxion_alternate/ExampleInstrumentedTest.kt b/android/app/src/androidTest/java/com/example/infuxion_alternate/ExampleInstrumentedTest.kt
deleted file mode 100644
index 3680c90..0000000
--- a/android/app/src/androidTest/java/com/example/infuxion_alternate/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.example.infuxion_alternate
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.example.infuxion_alternate", appContext.packageName)
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 18da71c..0000000
--- a/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/CheckedEligibility.kt b/android/app/src/main/java/com/example/infuxion_alternate/CheckedEligibility.kt
deleted file mode 100644
index 2c5ac14..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/CheckedEligibility.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.widget.Button
-import com.example.infuxion_alternate.loan.LoanOffers
-
-class CheckedEligibility : AppCompatActivity() {
-
- private lateinit var btnNext: Button
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_checked_eligibility)
- overridePendingTransition(0, 0)
-
- btnNext = findViewById(R.id.btnNext)
-
- btnNext.setOnClickListener(){
- val intent = Intent(this, LoanOffers::class.java)
- startActivity(intent)
- finish()
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/DashboardFragment.kt b/android/app/src/main/java/com/example/infuxion_alternate/DashboardFragment.kt
deleted file mode 100644
index c776530..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/DashboardFragment.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-
-class DashboardFragment : Fragment() {
-
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- }
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_dashboard, container, false)
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/Eligibility.kt b/android/app/src/main/java/com/example/infuxion_alternate/Eligibility.kt
deleted file mode 100644
index 6eeccd7..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/Eligibility.kt
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.example.infuxion_alternate
-
-
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.os.Handler
-import android.text.TextWatcher
-import android.view.View
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Button
-import android.widget.ProgressBar
-import android.widget.TextView
-import androidx.core.content.ContextCompat
-
-
-
-class Eligibility : AppCompatActivity() {
-
-
- private var progressBar: ProgressBar? = null
- private var i = 0
- private var txtView: TextView? = null
- lateinit var textview : TextView
- lateinit var textProcess : TextView
- private val handler = Handler()
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_eligibility)
- supportActionBar?.hide()
-
-
- //Changing color of status bar
- val window: Window = this@Eligibility.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor( this@Eligibility, R.color.white)
-
-
- txtView = findViewById(R.id.text_view)
- textProcess = findViewById(R.id.textProcess)
-
- val progressBar = findViewById(R.id.progress_Bar) as ProgressBar
-
- i = progressBar.progress
-
- Thread(Runnable {
- // this loop will run until the value of i becomes 99
- while (i < 100) {
- i += 1
- // Update the progress bar and display the current value
- handler.post(Runnable {
- progressBar.progress = i
-// // setting current progress to the textview
- txtView = findViewById(R.id.text_view)
- txtView!!.text = i.toString() + "%"
- if (i==30){
- textProcess.text="Congratulations! Your Identity proof is verified! Woah! Took just three seconds!!"
- } else if (i==50){
- textProcess.text="Woah! That was blazingly fast! Your criminal record is all clean"
-
- }else if (i==70){
- textProcess.text="Hmmm. Your credit report seems all fine. Good job!"
-
- }
- else if (i==100){
- textProcess.text="Congrats! You have successfully passed all the levels! That too, just in 100secs!"
-
- }
- })
- try {
- Thread.sleep(100)
- } catch (e: InterruptedException) {
- e.printStackTrace()
- }
- }
-
-
- val intent = Intent(this, CheckedEligibility::class.java)
- startActivity(intent)
- }).start()
-
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/FaceAnalyzer.kt b/android/app/src/main/java/com/example/infuxion_alternate/FaceAnalyzer.kt
deleted file mode 100644
index 4086a58..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/FaceAnalyzer.kt
+++ /dev/null
@@ -1,219 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.annotation.SuppressLint
-import android.app.Activity
-import android.content.Context
-import android.content.Intent
-import android.media.Image
-import android.os.Handler
-import android.util.Log
-import android.util.Size
-import android.widget.ImageView
-import android.widget.TextView
-import android.widget.Toast
-import androidx.camera.core.*
-import androidx.lifecycle.Lifecycle
-import com.example.infuxion_alternate.utils.CameraActivity
-import com.google.android.gms.tasks.OnFailureListener
-import com.google.android.gms.tasks.OnSuccessListener
-import com.google.mlkit.vision.common.InputImage
-import com.google.mlkit.vision.face.Face
-import com.google.mlkit.vision.face.FaceDetection
-import com.google.mlkit.vision.face.FaceDetectorOptions
-import kotlinx.coroutines.*
-
-
-class FaceAnalyzer(context: Context, lifecycle: Lifecycle, private val overlay: Overlay) : ImageAnalysis.Analyzer {
-
- private val tvStatus:TextView = (context as Activity).findViewById(R.id.tvStatus)
- private val tvStep: TextView = (context as Activity).findViewById(R.id.tvStep)
-
- private val ivStepOne: ImageView = (context as Activity).findViewById(R.id.stepOne)
- private val ivStepTwo: ImageView = (context as Activity).findViewById(R.id.stepTwo)
- private val ivStepThree: ImageView = (context as Activity).findViewById(R.id.stepThree)
-// private val ivStepFour: ImageView = (context as Activity).findViewById(R.id.stepFour)
-
-
- var blinkToastShown = false
- var leftToastShown = false
- var rightToastShown = false
- private var count :Int = 0
-
- private var blinkSuccess :Boolean = false
- private var inside :Boolean = false
- private var headTurnLeftSuccess :Boolean = false
- private var headTurnRightSuccess :Boolean = false
-
-
-
-
-
-
-
-
- private val options = FaceDetectorOptions.Builder()
- .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE)
- .setLandmarkMode(FaceDetectorOptions.LANDMARK_MODE_ALL)
- .setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
- .setClassificationMode(FaceDetectorOptions.CLASSIFICATION_MODE_ALL)
- .setMinFaceSize(0.15f)
- //.enableTracking() //disable when contour is enable https://developers.google.com/ml-kit/vision/face-detection/android
- .build()
-
- private val detector = FaceDetection.getClient(options)
-
- init {
- //add the detector in lifecycle observer to properly close it when it's no longer needed.
- lifecycle.addObserver(detector)
- }
-
- override fun analyze(imageProxy: ImageProxy) {
- overlay.setPreviewSize(Size(imageProxy.width,imageProxy.height))
- detectFaces(imageProxy)
- }
-
- private val successListener = OnSuccessListener> { faces ->
-
-
- for (face in faces) {
-
-
-
- // Step 1 -> Blink Eyes.
-
- if (!blinkSuccess){
-
-
- val leftEyeOpenProbability = face.leftEyeOpenProbability
- val rightEyeOpenProbability = face.rightEyeOpenProbability
- if (rightEyeOpenProbability != null) {
- if (leftEyeOpenProbability != null) {
- if (leftEyeOpenProbability < 0.5 && rightEyeOpenProbability < 0.5) {
- count+=1
- tvStatus.text="Scanning for blinking eyes.."
-
- if(count ==5){
-
- blinkSuccess = true
-
- if (!blinkToastShown) {
- Toast.makeText(
- context, "Blinking Test is successful!",
- Toast.LENGTH_SHORT
- ).show()
-
- blinkToastShown = true
- }
- tvStep.text="Turn your head 30 degrees left"
- tvStatus.text="Scanning for movement.."
-
- ivStepOne.setImageResource(R.drawable.ic_successtick)
-
- }
- }
- }
- }
- else{
- tvStatus.text="Unable to detect eyes"
- }
- }
-
- //Step 2 -> Turn head left
- if( blinkSuccess and !headTurnLeftSuccess) {
- if (face.headEulerAngleY <= -30) {
- // User has rotated their head 30 degrees to the left
- if(!leftToastShown) {
- headTurnLeftSuccess = true
- Toast.makeText(
- context, "Left head movement has been registered!",
- Toast.LENGTH_SHORT
- ).show()
- leftToastShown = true
- }
- tvStep.text="Turn your head 30 degrees right"
- tvStatus.text="Scanning for movement.."
-
- ivStepTwo.setImageResource(R.drawable.ic_successtick)
- val handler = Handler()
- val runnable = Runnable {
- headTurnLeftSuccess = true
- }
- handler.postDelayed(runnable, 2000)
- }
- else{
- tvStatus.text="No movement detected.."
- }
- }
-
- //Step 3 -> Turn head right
- if( blinkSuccess and headTurnLeftSuccess and !headTurnRightSuccess) {
- if (face.headEulerAngleY >= 30) {
- // User has rotated their head 30 degrees to the right
- if(!rightToastShown) {
- headTurnRightSuccess = true
- Toast.makeText(
- context, "Right head movement has been registered!",
- Toast.LENGTH_SHORT
- ).show()
- rightToastShown = true
- }
- tvStep.text="Face detection is successful"
- tvStatus.text="All steps are successful!"
- ivStepThree.setImageResource(R.drawable.ic_successtick)
- val handler = Handler()
- val runnable = Runnable {
-
- //j remove
- /*val intent = Intent(context, ReviewRegisterDetails::class.java)
- context.startActivity(intent)*/
-
- // j add
- val intent = Intent(context, CameraActivity::class.java)
- context.startActivity(intent)
- }
- handler.postDelayed(runnable, 2000)
-
-
-
-
- }
- else{
- tvStatus.text="No movement detected.."
- }
- }
- }
-
-// if(faces.size == 1){
-//
-// }
-// else if(faces.size == 0){
-//
-// }
-// else{
-//
-// }
-overlay.setFaces(faces)
- }
-
- private val failureListener = OnFailureListener { e ->
- Log.e(TAG, "Face analysis failure.", e)
- }
-
- @SuppressLint("UnsafeExperimentalUsageError", "UnsafeOptInUsageError")
- private fun detectFaces(imageProxy: ImageProxy) {
- val image = InputImage.fromMediaImage(imageProxy.image as Image, imageProxy.imageInfo.rotationDegrees)
- detector.process(image)
- .addOnSuccessListener(successListener)
- .addOnFailureListener(failureListener)
- .addOnCompleteListener{
- imageProxy.close()
- }
- }
-
-
-
-
- companion object {
- private const val TAG = "FaceAnalyzer"
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/FirebasePhoneAuth.kt b/android/app/src/main/java/com/example/infuxion_alternate/FirebasePhoneAuth.kt
deleted file mode 100644
index c4ebfa5..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/FirebasePhoneAuth.kt
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.content.ContentValues.TAG
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.util.Log
-import com.google.firebase.FirebaseException
-import com.google.firebase.auth.FirebaseAuth
-import com.google.firebase.auth.PhoneAuthCredential
-import com.google.firebase.auth.PhoneAuthOptions
-import com.google.firebase.auth.PhoneAuthProvider
-import com.google.firebase.auth.PhoneAuthProvider.verifyPhoneNumber
-import com.google.firebase.auth.ktx.auth
-import com.google.firebase.ktx.Firebase
-import java.util.concurrent.TimeUnit
-
-class FirebasePhoneAuth : AppCompatActivity() {
- private lateinit var auth: FirebaseAuth
- private lateinit var verificationId:String
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_firebase_phone_auth)
-
-
- auth = FirebaseAuth.getInstance()
- // Get the user's phone number
- val phoneNumber = "+918445214758"
-
- // Set up the options for the SMS verification
- val options = PhoneAuthOptions.newBuilder(auth)
- .setPhoneNumber(phoneNumber) // Phone number to verify
- .setTimeout(60L, TimeUnit.SECONDS) // Timeout duration
- .setActivity(this) // Activity to handle the flow
- .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
-
- override fun onVerificationCompleted(p0: PhoneAuthCredential) {
- // Auto-retrieval or SMS-based verification completed successfully
- // Use `credential` to sign in the user
- }
-
- override fun onVerificationFailed(p0: FirebaseException) {
- Log.d(TAG, "onVerificationFailed: try again") }
-
- override fun onCodeSent(
- p0: String,
- p1: PhoneAuthProvider.ForceResendingToken
- ) {
-
- super.onCodeSent(p0, p1)
- verificationId = p0
- // Code sent successfully
- // Save the verification ID and token to use later
- // ...
- }
- }).build()
-
- PhoneAuthProvider.verifyPhoneNumber(options)
-
-
- val credential = PhoneAuthProvider.getCredential(verificationId, "878979")
-
- auth.signInWithCredential(credential)
- .addOnCompleteListener{
- if(it.isSuccessful){
- Log.d(TAG, "sendVerificationCode: complete")
- }
- else
- {
- Log.d(TAG, "sendVerificationCode: failed")
-
- }
- }
- }
- }
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/HistoryFragment.kt b/android/app/src/main/java/com/example/infuxion_alternate/HistoryFragment.kt
deleted file mode 100644
index d44aa74..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/HistoryFragment.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-
-
-class HistroyFragment : Fragment() {
-
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- }
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_histroy, container, false)
- }
-
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/HomeActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/HomeActivity.kt
deleted file mode 100644
index 55c87de..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/HomeActivity.kt
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.Manifest
-import android.content.pm.PackageManager
-import android.location.Location
-import android.os.Bundle
-import android.view.View
-import androidx.core.app.ActivityCompat
-import androidx.core.content.ContextCompat
-import androidx.lifecycle.lifecycleScope
-import androidx.navigation.findNavController
-import androidx.navigation.ui.setupWithNavController
-import com.example.infuxion_alternate.base.BaseActivity
-import com.example.infuxion_alternate.utils.AppConstant.DefaultValue.DEFAULT_LATITUDE
-import com.example.infuxion_alternate.utils.AppConstant.DefaultValue.DEFAULT_LONGITUDE
-import com.example.infuxion_alternate.utils.LocationFetchUtil
-import com.example.infuxion_alternate.utils.MethodMaster.fetchAllContacts
-import com.example.infuxion_alternate.utils.MethodMaster.getAllInstalledApps
-import com.example.infuxion_alternate.utils.MethodMaster.getAllSmsMessages
-import com.example.infuxion_alternate.utils.MethodMaster.getImeiNumber
-import com.example.infuxion_alternate.utils.MethodMaster.showToast
-import com.example.infuxion_alternate.utils.logD
-import com.google.android.material.bottomnavigation.BottomNavigationView
-import kotlinx.coroutines.launch
-
-class HomeActivity : BaseActivity() {
-
- private val TAG="HomeActivity"
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_home)
-
- val bottomNav =findViewById(R.id.bottomNavigationView)
- val fragmentContainer =findViewById(R.id.mainFragment)
-
- bottomNav.setupWithNavController(fragmentContainer.findNavController())
-
- init()
- }
-
- override fun onClick(p0: View?) {
- TODO("Not yet implemented")
- }
-
- override fun init() {
-// getContact()
-// getFinancialSms()
-// getInstallApp()
-// getImeiNum()
- getLocation()
- }
-
-// private fun getImeiNum(){
-// activity?.let {
-// if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
-// lifecycleScope.launch {
-// val imei = getImeiNumber(it)
-// "$TAG IMEI Number:-${imei}".logD()
-// }
-// }
-// }
-// }
-//
-// private fun getContact() {
-// activity?.let {
-// if (ContextCompat.checkSelfPermission(it, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED){
-// lifecycleScope.launch {
-// val contactList = fetchAllContacts(it)
-// for (contact in contactList) {
-// "$TAG Contact Model:-${contact}".logD()
-// }
-// }
-// }
-// }
-// }
-//
-// private fun getFinancialSms() {
-// activity?.let {
-// if (ContextCompat.checkSelfPermission(it, Manifest.permission.READ_SMS) == PackageManager.PERMISSION_GRANTED) {
-// lifecycleScope.launch {
-// val smsList = getAllSmsMessages(activity)
-// val financialSmsList = filterFinancialMessages(smsList)
-// for (sms in financialSmsList) {
-// "$TAG SMS Model:-${sms}".logD()
-// }
-// }
-// }
-// }
-// }
-//
-// private fun getInstallApp() {
-// activity?.let {
-// if (ContextCompat.checkSelfPermission(it, Manifest.permission.QUERY_ALL_PACKAGES) == PackageManager.PERMISSION_GRANTED) {
-// lifecycleScope.launch {
-// val installedApps = getAllInstalledApps(it)
-// val financialAppList = filterFinancialApp(installedApps)
-// for (app in financialAppList) {
-// "$TAG AppName:-${app.first}, PackageName:-${app.second}".logD()
-// }
-// }
-// }
-// }
-// }
-
- private fun getLocation(){
- activity?.let { activity ->
- locationFetchUtil = LocationFetchUtil(activity, null, shouldRequestPermissions = true, shouldRequestOptimization = true, callbacks = object : LocationFetchUtil.Callbacks {
- override fun onSuccess(location: Location) {
- val latitude = location.latitude
- val longitude = location.longitude
- "$TAG, onSuccess, Latitude:- $latitude".logD()
- "$TAG, onSuccess, Longitude:- $longitude".logD()
-
- if (latitude != DEFAULT_LATITUDE && longitude != DEFAULT_LONGITUDE) {
- val latLng= "($latitude, $longitude)"
- showToast(activity,latLng)
- }
- }
-
- override fun onFailed(locationFailedEnum: LocationFetchUtil.LocationFailedEnum, defaultLocation: Location) {
- "$TAG, onFailed, enum:- ${locationFailedEnum.name}".logD()
- }
- })
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/HomeFragment.kt b/android/app/src/main/java/com/example/infuxion_alternate/HomeFragment.kt
deleted file mode 100644
index 1d135b4..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/HomeFragment.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-class HomeFragment : Fragment() {
-
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- }
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_home, container, false)
- }
-
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/LoadingDialog.kt b/android/app/src/main/java/com/example/infuxion_alternate/LoadingDialog.kt
deleted file mode 100644
index b65ade5..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/LoadingDialog.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.app.Activity
-import android.app.AlertDialog
-import com.example.infuxion_alternate.R
-
-class LoadingDialog(val mActivity:Activity) {
- private lateinit var isDialog: AlertDialog
- fun startLoading(){
-
- val inflater = mActivity.layoutInflater
- val dialogView = inflater.inflate(R.layout.custom_dialog, null)
- val builder = AlertDialog.Builder(mActivity)
- builder.setView(dialogView)
- builder.setCancelable(false)
- isDialog = builder.create()
- isDialog.show()
- }
-
- fun isDismiss(){
- isDialog.dismiss()
- }
-
-}
-
-
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/LoanFragment.kt b/android/app/src/main/java/com/example/infuxion_alternate/LoanFragment.kt
deleted file mode 100644
index 93fd589..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/LoanFragment.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-
-class LoanFragment : Fragment() {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- }
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_loan, container, false)
- }
-
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/Overlay.kt b/android/app/src/main/java/com/example/infuxion_alternate/Overlay.kt
deleted file mode 100644
index 358ff1e..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/Overlay.kt
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.View
-import com.google.mlkit.vision.face.Face
-import android.content.res.Configuration
-import android.graphics.Color
-import android.graphics.Canvas
-import android.graphics.Paint
-import android.hardware.Camera
-import android.util.Size
-import com.google.mlkit.vision.face.FaceLandmark
-
-
-class Overlay @JvmOverloads constructor(
- context: Context,
- attrs: AttributeSet? = null,
- defStyleAttr: Int = 0
-) : View(context, attrs, defStyleAttr) {
-
- private var previewWidth: Int = 0
- private var widthScaleFactor = 1.0f
- private var previewHeight: Int = 0
- private var heightScaleFactor = 1.0f
-
- private var faces = emptyArray()
- private var orientation = Configuration.ORIENTATION_PORTRAIT
-
- private val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
- color = Color.YELLOW
- style = Paint.Style.STROKE
- strokeWidth = 5.0f
- }
-
- private val dotPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
- color = Color.YELLOW
- style = Paint.Style.FILL
- strokeWidth = 1.0f
- }
-
- override fun onDraw(canvas: Canvas) {
- super.onDraw(canvas)
- drawOverlay(canvas);
- }
-
- fun setOrientation(orientation: Int)
- {
- this.orientation = orientation
- }
-
- fun setPreviewSize(size: Size) {
- // Need to swap width and height when in portrait, since camera's natural orientation is landscape.
- if(orientation == Configuration.ORIENTATION_LANDSCAPE) {
- previewWidth = size.width
- previewHeight = size.height
- }
- else
- {
- previewWidth = size.height
- previewHeight = size.width
- }
- }
-
- fun setFaces(faceList: List)
- {
- faces = faceList.toTypedArray()
- postInvalidate()
- }
-
- private fun drawOverlay(canvas: Canvas) {
- widthScaleFactor = width.toFloat() / previewWidth
- heightScaleFactor = height.toFloat() / previewHeight
-
-// for(face in faces)
-// {
-//// drawFaceBorder(face, canvas)
-//// drawFaceContour(face,canvas)
-// //drawFaceLandmark(face,canvas)
-// }
- }
-
- private fun drawFaceBorder(face: Face, canvas: Canvas)
- {
- val bounds = face.boundingBox
- val left = translateX(bounds.left.toFloat())
- val top = translateY(bounds.top.toFloat())
- val right = translateX(bounds.right.toFloat())
- val bottom = translateY(bounds.bottom.toFloat())
-
- canvas.drawRect(left, top, right, bottom, paint)
- }
-
- //Note: Contours are detected for only the most prominent face in an image.
- private fun drawFaceContour(face: Face, canvas: Canvas)
- {
- val contour = face.allContours
- for (faceContour in contour) {
- for (point in faceContour.points) {
- val px = translateX(point.x)
- val py = translateY(point.y)
- canvas.drawCircle(px, py, 10.0f, dotPaint)
- }
- }
- }
-
- private fun drawFaceLandmark(face: Face, canvas: Canvas)
- {
- val leftEye = face.getLandmark(FaceLandmark.LEFT_EYE)
- val rightEye = face.getLandmark(FaceLandmark.RIGHT_EYE)
- val leftCheek = face.getLandmark(FaceLandmark.LEFT_CHEEK)
- val rightCheek = face.getLandmark(FaceLandmark.RIGHT_CHEEK)
-
- drawFaceLandmark(leftEye,canvas)
- drawFaceLandmark(rightEye,canvas)
- drawFaceLandmark(leftCheek,canvas)
- drawFaceLandmark(rightCheek,canvas)
- }
-
- private fun drawFaceLandmark(faceLandmark: FaceLandmark?, canvas: Canvas)
- {
- if(faceLandmark == null)
- return
- canvas.drawCircle(translateX(faceLandmark.position.x),translateY(faceLandmark.position.y), 10.0f, dotPaint)
- }
-
- private fun translateX(x: Float): Float = x * widthScaleFactor
- private fun translateY(y: Float): Float = y * heightScaleFactor
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/PrivacyPolicy.kt b/android/app/src/main/java/com/example/infuxion_alternate/PrivacyPolicy.kt
deleted file mode 100644
index 8d5d829..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/PrivacyPolicy.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.example.infuxion_alternate
-
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.view.Window
-import android.view.WindowManager
-import androidx.core.content.ContextCompat
-
-class PrivacyPolicy : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_privacy_policy)
-
- //Changing color of status bar
- val window: Window = this@PrivacyPolicy.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor( this@PrivacyPolicy, R.color.white)
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/Sanction.kt b/android/app/src/main/java/com/example/infuxion_alternate/Sanction.kt
deleted file mode 100644
index 17c76ef..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/Sanction.kt
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.content.ContentValues.TAG
-import android.content.Intent
-import android.os.Bundle
-import android.util.Log
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Button
-import android.widget.CheckBox
-import android.widget.ScrollView
-import androidx.appcompat.app.AlertDialog
-import androidx.appcompat.app.AppCompatActivity
-import androidx.appcompat.content.res.AppCompatResources
-import androidx.core.content.ContextCompat
-
-
-class Sanction : AppCompatActivity() {
-
- private lateinit var checkBoxTnc: CheckBox
- private lateinit var btnAllowTnc: Button
- private lateinit var scrollView: ScrollView
- private var isScrolledToBottom = false
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_sanction)
- supportActionBar?.hide()
-
- //Changing color of status bar
- val window: Window = this@Sanction.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor(this@Sanction, R.color.white)
-
- val builder = AlertDialog.Builder(this)
- .setTitle("Sanction")
- .setMessage("Please read till the bottom of this page before proceeding.")
- .setIcon(R.drawable.ic_saturn)
- .setPositiveButton("Accept") { _, _ ->
-
- }
-
- checkBoxTnc = findViewById(R.id.cbTnc)
- btnAllowTnc = findViewById(R.id.btnAllowTnc)
- scrollView = findViewById(R.id.svTnc)
-
-
- //VALIDATION
- checkBoxTnc.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- if (isChecked) {
- btnAllowTnc.isEnabled = true
- btnAllowTnc.backgroundTintList =
- AppCompatResources.getColorStateList(this, R.color.white)
- btnAllowTnc?.setTextColor(ContextCompat.getColor(this, R.color.black))
- } else {
- btnAllowTnc.isEnabled = false
- btnAllowTnc.backgroundTintList =
- AppCompatResources.getColorStateList(this, R.color.greybg)
- btnAllowTnc?.setTextColor(ContextCompat.getColor(this, R.color.grey))
-
- }
-
- }
-
- scrollView.viewTreeObserver
- .addOnScrollChangedListener {
- if (scrollView.getChildAt(0).bottom
- <= scrollView.height + scrollView.scrollY
- ) {
- isScrolledToBottom = true
- }
- }
-
- //Showing alert + Switching intent | Tnc => Privacy Policy
- btnAllowTnc.setOnClickListener() {
- if (btnAllowTnc.isEnabled && isScrolledToBottom) {
- val intent = Intent(this, SanctionLoanContract::class.java)
- startActivity(intent)
- }
- if (btnAllowTnc.isEnabled && !isScrolledToBottom) {
- builder.show()
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/SanctionLoanContract.kt b/android/app/src/main/java/com/example/infuxion_alternate/SanctionLoanContract.kt
deleted file mode 100644
index 4f918ac..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/SanctionLoanContract.kt
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.content.ContentValues.TAG
-import android.content.Intent
-import android.os.Bundle
-import android.util.Log
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Button
-import android.widget.CheckBox
-import android.widget.ScrollView
-import androidx.appcompat.app.AlertDialog
-import androidx.appcompat.app.AppCompatActivity
-import androidx.appcompat.content.res.AppCompatResources
-import androidx.core.content.ContextCompat
-
-
-class SanctionLoanContract : AppCompatActivity() {
-
-
- private lateinit var checkBoxTnc: CheckBox
- private lateinit var btnAllowTnc: Button
- private lateinit var scrollView: ScrollView
- private var isScrolledToBottom = false
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_sanction_loan_contract)
- supportActionBar?.hide()
-
- //Changing color of status bar
- val window: Window = this@SanctionLoanContract.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor(this@SanctionLoanContract, R.color.white)
-
- val builder = AlertDialog.Builder(this)
- .setTitle("Sanction")
- .setMessage("Please read till the bottom of this page before proceeding.")
- .setIcon(R.drawable.ic_saturn)
- .setPositiveButton("Accept") { _, _ ->
-
- }
-
- checkBoxTnc = findViewById(R.id.cbTnc)
- btnAllowTnc = findViewById(R.id.btnAllowTnc)
- scrollView = findViewById(R.id.svTnc)
-
-
- //VALIDATION
- checkBoxTnc.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- if (isChecked) {
- btnAllowTnc.isEnabled = true
- btnAllowTnc.backgroundTintList =
- AppCompatResources.getColorStateList(this, R.color.white)
- btnAllowTnc?.setTextColor(ContextCompat.getColor(this, R.color.black))
- } else {
- btnAllowTnc.isEnabled = false
- btnAllowTnc.backgroundTintList =
- AppCompatResources.getColorStateList(this, R.color.greybg)
- btnAllowTnc?.setTextColor(ContextCompat.getColor(this, R.color.grey))
-
- }
-
- }
-
- scrollView.viewTreeObserver
- .addOnScrollChangedListener {
- if (scrollView.getChildAt(0).bottom
- <= scrollView.height + scrollView.scrollY
- ) {
- isScrolledToBottom = true
- }
- }
-
- //Showing alert + Switching intent | Tnc => Privacy Policy
- btnAllowTnc.setOnClickListener() {
- if (btnAllowTnc.isEnabled && isScrolledToBottom) {
-// val intent = Intent(this, SanctionOtp::class.java)
-// startActivity(intent)
- }
- if (btnAllowTnc.isEnabled && !isScrolledToBottom) {
- builder.show()
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/TextActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/TextActivity.kt
deleted file mode 100644
index 916ab46..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/TextActivity.kt
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.Manifest
-import android.annotation.SuppressLint
-import android.content.pm.PackageManager
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.util.Log
-import android.view.ViewGroup
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Toast
-import androidx.camera.core.CameraSelector
-import androidx.camera.core.ImageAnalysis
-import androidx.camera.core.ImageCapture
-import androidx.camera.core.Preview
-import androidx.camera.lifecycle.ProcessCameraProvider
-import androidx.camera.view.PreviewView
-import androidx.core.app.ActivityCompat
-import androidx.core.content.ContextCompat
-
-import java.util.concurrent.Executors
-
-class TextActivity : AppCompatActivity() {
-
- private lateinit var viewFinder: PreviewView
- private lateinit var overlay: Overlay
- private var cameraExecutor = Executors.newSingleThreadExecutor()
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_text)
- supportActionBar?.hide()
-
- //Changing color of status bar
- val window: Window = this@TextActivity.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor(this@TextActivity, R.color.white)
-
- viewFinder = findViewById(R.id.viewFinder)
-
-
- if (allPermissionsGranted()) {
- startCamera()
- } else {
- ActivityCompat.requestPermissions(
- this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS
- )
- }
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults:
- IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- if (requestCode == REQUEST_CODE_PERMISSIONS) {
- if (allPermissionsGranted()) {
- startCamera()
- } else {
- Toast.makeText(this,
- "Permissions not granted by the user.",
- Toast.LENGTH_SHORT).show()
- finish()
- }
- }
- }
-
- private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all {
- ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED
- }
-
- @SuppressLint("UnsafeExperimentalUsageError")
- private fun startCamera()
- {
- val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
-
- cameraProviderFuture.addListener(Runnable {
- // Used to bind the lifecycle of cameras to the lifecycle owner
- val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
- // Select back camera as a default
- val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
- // Preview UseCase
- val previewUseCase = Preview.Builder()
- .build()
- .also {
- it.setSurfaceProvider(viewFinder.createSurfaceProvider())
- }
-
- val imageCapture = ImageCapture.Builder().build()
-
- // ImageAnalysis UseCase
- val analysisUseCase = ImageAnalysis.Builder()
- .build()
- .also {
- }
- try {
- // Unbind use cases before rebinding
- cameraProvider.unbindAll()
-
- cameraProvider.bindToLifecycle(this,cameraSelector,previewUseCase,analysisUseCase)
- // Bind use cases to camera
-
- } catch(exc: Exception) {
- Log.e(TAG, "Use case binding failed", exc)
- }
-
- }, ContextCompat.getMainExecutor(this))
- }
-
- companion object {
- private const val TAG = "TextActivity"
- private const val REQUEST_CODE_PERMISSIONS = 10
- private val REQUIRED_PERMISSIONS = arrayOf(
- Manifest.permission.CAMERA,
- )
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/TextAnalyzer.kt b/android/app/src/main/java/com/example/infuxion_alternate/TextAnalyzer.kt
deleted file mode 100644
index 1f3c591..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/TextAnalyzer.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-import android.annotation.SuppressLint
-import android.media.Image
-import android.util.Log
-import androidx.camera.core.ImageAnalysis
-import androidx.camera.core.ImageProxy
-import com.google.mlkit.vision.common.InputImage
-import com.google.mlkit.vision.text.TextRecognition
-import com.google.mlkit.vision.text.latin.TextRecognizerOptions
-
-class TextAnalyzer : ImageAnalysis.Analyzer {
-
- @SuppressLint("UnsafeOptInUsageError")
- override fun analyze(imageProxy: ImageProxy) {
- // Convert the image to an InputImage
- val image = InputImage.fromMediaImage(imageProxy.image as Image, imageProxy.imageInfo.rotationDegrees)
-
-
- // Pass the image to the ML Kit text recognition API
- val recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
- recognizer.process(image)
-
-
- .addOnSuccessListener { visionText ->
- val text = visionText.text
- Log.d(TAG, "Analyzed text: $text")
- }
- .addOnFailureListener { e ->
- Log.e(TAG, "Text recognition failed", e)
- }
- .addOnCompleteListener {
- // Close the image proxy when processing is complete
- imageProxy.close()
- }
- }
-
- companion object {
- private const val TAG = "TextAnalyzer"
- }
-}
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/Tnc.kt b/android/app/src/main/java/com/example/infuxion_alternate/Tnc.kt
deleted file mode 100644
index 3188746..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/Tnc.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.example.infuxion_alternate
-
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.view.Window
-import android.view.WindowManager
-import androidx.core.content.ContextCompat
-
-class Tnc : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_tnc)
- supportActionBar?.hide()
-
- //Changing color of status bar
- val window: Window = this@Tnc.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor( this@Tnc, R.color.white)
-
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/Utilities.kt b/android/app/src/main/java/com/example/infuxion_alternate/Utilities.kt
deleted file mode 100644
index 5e6f2fb..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/Utilities.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.infuxion_alternate
-
-import android.util.Log
-
-object Utilities {
-
- private var TAG = "Neo Saturn"
-
- fun logEwithoutstore(description : String){
- Log.e(TAG,""+description)
- }
-
- fun logW(description : String){
- Log.w(TAG,""+description)
- }
- fun logI(description : String){
- Log.i(TAG,""+description)
- }
- fun logD(description : String){
- Log.d(TAG,""+description)
- }
- fun logV(description : String){
- Log.v(TAG,""+description)
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/app_lock/PinLockActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/app_lock/PinLockActivity.kt
deleted file mode 100644
index 4ea6550..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/app_lock/PinLockActivity.kt
+++ /dev/null
@@ -1,532 +0,0 @@
-package com.example.infuxion_alternate.app_lock
-
-import android.Manifest
-import android.annotation.SuppressLint
-import android.app.Activity
-import android.app.AlertDialog
-import android.app.Dialog
-import android.app.KeyguardManager
-import android.content.Context
-import android.content.Intent
-import android.content.pm.PackageManager
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.hardware.fingerprint.FingerprintManager
-import android.os.*
-import android.security.keystore.KeyGenParameterSpec
-import android.security.keystore.KeyPermanentlyInvalidatedException
-import android.security.keystore.KeyProperties
-import android.view.View
-import android.view.ViewGroup
-import android.view.Window
-import android.view.WindowManager
-import android.view.animation.Animation
-import android.view.animation.AnimationUtils
-import android.widget.ImageView
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.app.ActivityCompat
-import androidx.core.content.ContextCompat
-import androidx.core.graphics.drawable.DrawableCompat
-import com.example.infuxion_alternate.R
-import com.example.infuxion_alternate.databinding.ActivityPinLockBinding
-import com.example.infuxion_alternate.databinding.DialogBiometricScanningBinding
-import com.example.infuxion_alternate.intro.SplashActivity
-import com.example.infuxion_alternate.utils.AppConstant
-import com.example.infuxion_alternate.utils.FingerprintHandler
-import com.example.infuxion_alternate.utils.MethodMaster.biometricIsWorkOrNot
-import com.example.infuxion_alternate.utils.MethodMaster.hide
-import com.example.infuxion_alternate.utils.MethodMaster.show
-import com.example.infuxion_alternate.utils.MethodMaster.showToast
-import com.example.infuxion_alternate.utils.TinyDB
-import com.example.infuxion_alternate.utils.logD
-import java.io.IOException
-import java.security.*
-import java.security.cert.CertificateException
-import javax.crypto.Cipher
-import javax.crypto.KeyGenerator
-import javax.crypto.NoSuchPaddingException
-import javax.crypto.SecretKey
-
-open class PinLockActivity : AppCompatActivity() {
-
- private var binding: ActivityPinLockBinding? = null
- private var activity:Activity?=null
- private var tinyDB: TinyDB?=null
- private var stringBuilderPin: StringBuilder = StringBuilder()
- private var keyStore: KeyStore? = null
- private val keySoreName = "PinLock"
- private var cipher: Cipher? = null
- private var isCreateNewPin = false
- private var isConfirmNewPin = false
- private var pinMessage: String? = null
- private var currentPin: String? = null
- private var isFrom: String? = null
- private var dialogBinding: DialogBiometricScanningBinding? = null
- private var biometricDialog: Dialog? = null
- private val TAG = "PinLockActivity"
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityPinLockBinding.inflate(layoutInflater)
- setContentView(binding?.root)
-
- val window: Window = this.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor(this, R.color.white)
-
- activity = this
- tinyDB = TinyDB(this)
-
- getIntentData()
- init()
- }
-
- private fun getIntentData() {
- intent?.extras?.let { bundle ->
- bundle.takeIf { it.containsKey(AppConstant.BundleData.PIN_MESSAGE) }?.let {
- pinMessage = it.getString(AppConstant.BundleData.PIN_MESSAGE)
- }
- bundle.takeIf { it.containsKey(AppConstant.BundleData.CREATE_NEW_PIN) }?.let {
- isCreateNewPin = it.getBoolean(AppConstant.BundleData.CREATE_NEW_PIN)
- }
- bundle.takeIf { it.containsKey(AppConstant.BundleData.IS_FROM) }?.let {
- isFrom = it.getString(AppConstant.BundleData.IS_FROM)
- }
- }
- }
-
- private fun init() {
- binding?.apply {
- activity?.let {
-
- textviewPinmessage.text = pinMessage
-
- if (!isCreateNewPin) {
- doBiometricWork()
- }
-
- num1.setOnClickListener {
- setToStringBuilder("1")
- }
- num2.setOnClickListener {
- setToStringBuilder("2")
- }
- num3.setOnClickListener {
- setToStringBuilder("3")
- }
- num4.setOnClickListener {
- setToStringBuilder("4")
- }
- num5.setOnClickListener {
- setToStringBuilder("5")
- }
- num6.setOnClickListener {
- setToStringBuilder("6")
- }
- num7.setOnClickListener {
- setToStringBuilder("7")
- }
- num8.setOnClickListener {
- setToStringBuilder("8")
- }
- num9.setOnClickListener {
- setToStringBuilder("9")
- }
- num0.setOnClickListener {
- setToStringBuilder("0")
- }
-
- numBackspace.setOnClickListener {
- if (stringBuilderPin.toString().trim { it <= ' ' }.isNotEmpty()) {
- stringBuilderPin.setLength(stringBuilderPin.length - 1)
- }
-
- checkCount()
- }
- }
- }
- }
-
- @SuppressLint("InflateParams")
- private fun showBioDialog() {
- activity?.let { activity ->
- val view = layoutInflater.inflate(R.layout.dialog_biometric_scanning, null)
- dialogBinding = DialogBiometricScanningBinding.bind(view)
- biometricDialog = Dialog(activity)
- dialogBinding?.root?.let {
- biometricDialog?.let { dialog ->
- dialog.setContentView(it)
- dialog.setCancelable(false)
- dialog.setCanceledOnTouchOutside(false)
- }
- }
-
- dialogBinding?.apply {
-
- if(tinyDB?.getBoolean(AppConstant.Prefs.SHOW_PIN_LOCK) == false){
- skipButton.hide()
- }
-
- makeGrayFingerLogo(dialogLogo)
- val alert = AlertDialog.Builder(activity)
- val fadeInAnimation = AnimationUtils.loadAnimation(activity, R.anim.fade_in)
- dialogLogo.startAnimation(fadeInAnimation)
- alert.setCancelable(true)
-
- skipButton.setOnClickListener {
- biometricDialog?.dismiss()
- }
-
- biometricDialog?.setOnCancelListener { biometricDialog?.dismiss() }
-
- biometricDialog?.window?.apply {
- setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
- setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
- }
-
- biometricDialog?.show()
- }
- }
- }
-
- open fun makeGrayFingerLogo(myImageView: ImageView?) {
- activity?.let { activity ->
- myImageView?.apply {
- DrawableCompat.setTint(
- drawable,
- ContextCompat.getColor(activity,R.color.color_dadada)
- )
- }
- }
- }
-
- open fun fingerScanResult(e: String, success: Boolean) {
- if (success) {
- "$TAG, fingerScanResult, e:-$e, success".logD()
- greenSignalFinger()
- goToNextScreen()
- } else {
- "$TAG, fingerScanResult, error , e:-$e, fail".logD()
- redAlertToFinger()
- }
- }
-
- private fun greenSignalFinger() {
- vibrateSmall(true)
- makeGreenOrRed(dialogBinding?.dialogLogo, true)
- }
-
- private fun redAlertToFinger() {
- vibrateSmall(false)
- makeGreenOrRed(dialogBinding?.dialogLogo, false)
- }
-
- @SuppressLint("ResourceAsColor")
- open fun makeGreenOrRed(myImageView: ImageView?, b: Boolean) {
- activity?.let { activity ->
- myImageView?.apply {
- if (b) {
- DrawableCompat.setTint(drawable, ContextCompat.getColor(activity, android.R.color.holo_green_light))
- } else {
- DrawableCompat.setTint(drawable, ContextCompat.getColor(activity, android.R.color.holo_red_light))
- }
- }
- dialogBinding?.apply {
- if (b) {
- txtSetUpYourTouchId.visibility = View.INVISIBLE
- txtMsgDialogbiometric.visibility = View.INVISIBLE
- txtTransferText1.text = getString(R.string.authentication_successful)
- } else {
- txtSetUpYourTouchId.visibility = View.INVISIBLE
- txtMsgDialogbiometric.visibility = View.INVISIBLE
- txtTransferText1.text = resources.getString(R.string.authentication_fail)
- }
- }
- }
- }
-
- fun changeModeToCreate(mode: Boolean) {
- if (mode) {
- binding?.textviewPinmessage?.text = resources.getString(R.string.create_pin)
- } else {
- binding?.textviewPinmessage?.text = resources.getString(R.string.enter_pin)
- }
- isCreateNewPin = mode
- clearPassword()
- }
-
- private fun enableDisable(b: Boolean) {
- binding?.apply {
- num0.isEnabled = b
- num1.isEnabled = b
- num2.isEnabled = b
- num3.isEnabled = b
- num4.isEnabled = b
- num5.isEnabled = b
- num6.isEnabled = b
- num7.isEnabled = b
- num8.isEnabled = b
- num9.isEnabled = b
- num0.isEnabled = b
- }
- }
-
- private fun setToStringBuilder(stringBuilder: String?) {
- stringBuilderPin.toString().trim { it <= ' ' }.length
- if (stringBuilderPin.toString().trim { it <= ' ' }.length < 4) {
- stringBuilderPin.append(stringBuilder)
- }
- checkCount()
- }
-
- private fun checkCount() {
- setDotCount(stringBuilderPin.toString().trim { it <= ' ' }.length)
- if (stringBuilderPin.toString().trim { it <= ' ' }.length == 4) {
- enableDisable(false)
-
- if (isConfirmNewPin){
- "$TAG, Confirm New Pin".logD()
- if (currentPin == stringBuilderPin.toString().trim { it <= ' ' }) {
- "$TAG, Successfully Create New Pin:-${stringBuilderPin.toString().trim { it <= ' ' }}".logD()
- tinyDB?.putString(AppConstant.Prefs.PIN_PASSWORD, stringBuilderPin.toString().trim { it <= ' ' })
- setResult(Activity.RESULT_OK)
- finish()
- }else{
- "$TAG, Confirm Pin Not Match:-${stringBuilderPin.toString().trim { it <= ' ' }}".logD()
- showToast(activity, resources.getString(R.string.confirm_pin_not_match))
- vibrateSmall(false)
- clearPassword()
- }
- }else if (isCreateNewPin) {
- currentPin = stringBuilderPin.toString().trim { it <= ' ' }
- "$TAG, New Pin:-${currentPin}".logD()
-
- binding?.textviewPinmessage?.text =
- resources.getString(R.string.confirm_new_pin)
-
- isConfirmNewPin = true
- clearPassword()
-
- } else {
- if (tinyDB?.getString(AppConstant.Prefs.PIN_PASSWORD) == stringBuilderPin.toString().trim { it <= ' ' }) {
- "$TAG, Match Pin:-${stringBuilderPin.toString().trim { it <= ' ' }}".logD()
- goToNextScreen()
- }else {
- "$TAG, Wrong Pin:-${stringBuilderPin.toString().trim { it <= ' ' }}".logD()
- showToast(activity, resources.getString(R.string.wrong_password))
- vibrateSmall(false)
- clearPassword()
- }
- }
- } else {
- enableDisable(true)
- }
- }
-
- private fun goToNextScreen(){
- if (isFrom == AppConstant.BundleData.IS_FROM_SPLASH){
- startActivity(Intent(activity,SplashActivity::class.java))
- finish()
- }else {
- setResult(Activity.RESULT_OK)
- finish()
- }
- }
-
- override fun onBackPressed() {
- if (isCreateNewPin){
- super.onBackPressed()
- }
- }
-
- private fun clearPassword() {
- stringBuilderPin.setLength(0)
- stringBuilderPin = java.lang.StringBuilder()
- setDotCount(0)
- enableDisable(true)
- }
-
- private fun setDotCount(dotCount: Int) {
- binding?.apply {
- "$TAG, DotCount:-$dotCount".logD()
- when (dotCount) {
- 0 -> {
- imageviewPincount0.hide()
- imageviewPincount1.hide()
- imageviewPincount2.hide()
- imageviewPincount3.hide()
- }
- 1 -> {
- imageviewPincount0.show()
- imageviewPincount1.hide()
- imageviewPincount2.hide()
- imageviewPincount3.hide()
- }
- 2 -> {
- imageviewPincount0.show()
- imageviewPincount1.show()
- imageviewPincount2.hide()
- imageviewPincount3.hide()
- }
- 3 -> {
- imageviewPincount0.show()
- imageviewPincount1.show()
- imageviewPincount2.show()
- imageviewPincount3.hide()
- }
- 4 -> {
- imageviewPincount0.show()
- imageviewPincount1.show()
- imageviewPincount2.show()
- imageviewPincount3.show()
- }
- }
- }
- }
-
- open fun vibrateSmall(success: Boolean?) {
- val shake = AnimationUtils.loadAnimation(this, R.anim.shake)
- shake.setAnimationListener(object : Animation.AnimationListener {
- override fun onAnimationStart(animation: Animation) {}
- override fun onAnimationEnd(animation: Animation) {
- changeModeToCreate(isCreateNewPin)
- }
-
- override fun onAnimationRepeat(animation: Animation) {}
- })
- if (!success!!) {
- dialogBinding?.dialogLogo?.startAnimation(shake)
- }
- val v = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
- val vibratorManager =
- activity?.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
- vibratorManager.defaultVibrator
- } else {
- @Suppress("DEPRECATION")
- getSystemService(VIBRATOR_SERVICE) as Vibrator
- }
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- v.vibrate(VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE))
- } else {
- @Suppress("DEPRECATION")
- v.vibrate(100)
- }
- }
-
- private fun doBiometricWork() {
- biometricIsWorkOrNot(activity) { isWorking: Boolean,hasFingerprintLockAvailable:Boolean, message: String ->
- if (isWorking){
- if (hasFingerprintLockAvailable){
- startBiometricScan()
- showBioDialog()
- }else{
- finish()
- }
- }else{
- finish()
- }
- }
- }
-
- private fun startBiometricScan() {
- val keyguardManager = getSystemService(KEYGUARD_SERVICE) as KeyguardManager
- val fingerprintManager = getSystemService(FINGERPRINT_SERVICE) as FingerprintManager
- if (!fingerprintManager.isHardwareDetected) {
- println("mnb::fingerprint no HardwareDetected")
- } else {
- if (ActivityCompat.checkSelfPermission(
- this,
- Manifest.permission.USE_FINGERPRINT
- ) != PackageManager.PERMISSION_GRANTED
- ) {
- println("mnb::fingerprint no permission")
- } else {
- if (!fingerprintManager.hasEnrolledFingerprints()) {
- println("mnb::fingerprint no registered fingerprint")
- } else {
- if (!keyguardManager.isKeyguardSecure) {
- println("mnb::fingerprint Lock screen security not enabled in Settings")
- } else {
- generateKey()
- if (cipherInit()) {
- val cryptoObject: FingerprintManager.CryptoObject? =
- cipher?.let { FingerprintManager.CryptoObject(it) }
- val helper = FingerprintHandler(activity)
- helper.startAuth(fingerprintManager, cryptoObject)
- }
- }
- }
- }
- }
- }
-
- open fun cipherInit(): Boolean {
- try {
- cipher =
- Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7)
- } catch (e: NoSuchAlgorithmException) {
- throw java.lang.RuntimeException("Failed to get Cipher", e)
- } catch (e: NoSuchPaddingException) {
- throw java.lang.RuntimeException("Failed to get Cipher", e)
- }
- return try {
- keyStore?.load(null)
- val key = keyStore?.getKey(keySoreName, null) as SecretKey
- cipher?.init(Cipher.ENCRYPT_MODE, key)
- true
- } catch (e: Exception) {
- when (e) {
- is KeyPermanentlyInvalidatedException -> {
- false
- }
- is KeyStoreException, is CertificateException, is UnrecoverableKeyException, is IOException, is NoSuchAlgorithmException, is InvalidKeyException -> {
- throw java.lang.RuntimeException("Failed to init Cipher", e)
- }
- else -> {
- false
- }
- }
- }
- }
-
- private fun generateKey() {
- try {
- keyStore = KeyStore.getInstance("AndroidKeyStore")
- } catch (e: Exception) {
- e.printStackTrace()
- }
- val keyGenerator: KeyGenerator = try {
- KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore")
- } catch (e: NoSuchAlgorithmException) {
- throw RuntimeException("Failed to get KeyGenerator instance", e)
- } catch (e: NoSuchProviderException) {
- throw RuntimeException("Failed to get KeyGenerator instance", e)
- }
- try {
- keyStore?.load(null)
- keyGenerator.init(
- KeyGenParameterSpec.Builder(
- keySoreName,
- KeyProperties.PURPOSE_ENCRYPT or
- KeyProperties.PURPOSE_DECRYPT
- )
- .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
- .setUserAuthenticationRequired(true)
- .setEncryptionPaddings(
- KeyProperties.ENCRYPTION_PADDING_PKCS7
- )
- .build()
- )
- keyGenerator.generateKey()
- } catch (e: NoSuchAlgorithmException) {
- throw RuntimeException(e)
- } catch (e: InvalidAlgorithmParameterException) {
- throw RuntimeException(e)
- } catch (e: CertificateException) {
- throw RuntimeException(e)
- } catch (e: IOException) {
- throw RuntimeException(e)
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/base/BaseActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/base/BaseActivity.kt
deleted file mode 100644
index a26149c..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/base/BaseActivity.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.example.infuxion_alternate.base
-
-import android.app.Activity
-import android.content.Intent
-import android.os.Bundle
-import android.view.View
-import androidx.appcompat.app.AppCompatActivity
-import com.example.infuxion_alternate.LoadingDialog
-import com.example.infuxion_alternate.utils.BetterActivityResult
-import com.example.infuxion_alternate.utils.LocationFetchUtil
-import com.example.infuxion_alternate.utils.TinyDB
-
-abstract class BaseActivity : AppCompatActivity(), View.OnClickListener{
-
- var activity: Activity?=null
- var tinyDB: TinyDB?=null
- var loader:LoadingDialog?=null
- var locationFetchUtil : LocationFetchUtil?=null
- val activityLauncher = BetterActivityResult.registerActivityForResult(this)
-
- protected abstract fun init()
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- activity = this
- tinyDB = TinyDB(this)
- loader = LoadingDialog(this)
-
- init()
- }
-
- override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- super.onActivityResult(requestCode, resultCode, data)
- locationFetchUtil?.onActivityResult(requestCode, resultCode, data)
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int,
- permissions: Array,
- grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- locationFetchUtil?.onRequestPermissionsResult(requestCode, permissions, grantResults)
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/dass.kt b/android/app/src/main/java/com/example/infuxion_alternate/dass.kt
deleted file mode 100644
index e69de29..0000000
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/extras/NoInternetConnection.kt b/android/app/src/main/java/com/example/infuxion_alternate/extras/NoInternetConnection.kt
deleted file mode 100644
index daf431f..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/extras/NoInternetConnection.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.example.infuxion_alternate.extras
-
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import com.example.infuxion_alternate.R
-
-class NoInternetConnection : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_no_internet_connection)
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/interface/AutoReadClickListener.kt b/android/app/src/main/java/com/example/infuxion_alternate/interface/AutoReadClickListener.kt
deleted file mode 100644
index b5c06a2..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/interface/AutoReadClickListener.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.example.infuxion_alternate.`interface`
-
-interface AutoReadClickListener {
-
- fun onItemsClick(items:String?)
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/intro/FaceMlActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/intro/FaceMlActivity.kt
deleted file mode 100644
index 4eedbff..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/intro/FaceMlActivity.kt
+++ /dev/null
@@ -1,135 +0,0 @@
-package com.example.infuxion_alternate.intro
-
-import android.Manifest
-import android.annotation.SuppressLint
-import android.content.pm.PackageManager
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.util.Log
-import android.view.ViewGroup
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Toast
-import androidx.camera.core.CameraSelector
-import androidx.camera.core.ImageAnalysis
-import androidx.camera.core.ImageCapture
-import androidx.camera.core.Preview
-import androidx.camera.lifecycle.ProcessCameraProvider
-import androidx.camera.view.PreviewView
-import androidx.core.app.ActivityCompat
-import androidx.core.content.ContextCompat
-import com.example.infuxion_alternate.FaceAnalyzer
-import com.example.infuxion_alternate.Overlay
-import com.example.infuxion_alternate.R
-
-import java.util.concurrent.Executors
-
-class FaceMlActivity : AppCompatActivity() {
-
- private lateinit var viewFinder: PreviewView
- private lateinit var overlay: Overlay
- private var cameraExecutor = Executors.newSingleThreadExecutor()
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_face_ml)
- supportActionBar?.hide()
-
- //Changing color of status bar
- val window: Window = this@FaceMlActivity.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor(this@FaceMlActivity, R.color.white)
-
- viewFinder = findViewById(R.id.viewFinder)
-
- overlay = Overlay(this)
-
- val layoutOverlay = ViewGroup.LayoutParams(
-
- ViewGroup.LayoutParams.MATCH_PARENT,
-
- ViewGroup.LayoutParams.MATCH_PARENT
-
- )
-
- this.addContentView(overlay,layoutOverlay)
-
- if (allPermissionsGranted()) {
- startCamera()
- } else {
- ActivityCompat.requestPermissions(
- this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS
- )
- }
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults:
- IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- if (requestCode == REQUEST_CODE_PERMISSIONS) {
- if (allPermissionsGranted()) {
- startCamera()
- } else {
- Toast.makeText(this,
- "Permissions not granted by the user.",
- Toast.LENGTH_SHORT).show()
- finish()
- }
- }
- }
-
- private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all {
- ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED
- }
-
- @SuppressLint("UnsafeExperimentalUsageError")
- private fun startCamera()
- {
- val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
-
- cameraProviderFuture.addListener(Runnable {
- // Used to bind the lifecycle of cameras to the lifecycle owner
- val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
- // Select back camera as a default
- val cameraSelector = CameraSelector.DEFAULT_FRONT_CAMERA
- // Preview UseCase
- val previewUseCase = Preview.Builder()
- .build()
- .also {
- it.setSurfaceProvider(viewFinder.createSurfaceProvider())
- }
-
- val imageCapture = ImageCapture.Builder().build()
-
- // ImageAnalysis UseCase
- val analysisUseCase = ImageAnalysis.Builder()
- .build()
- .also {
- it.setAnalyzer(cameraExecutor, FaceAnalyzer(this,lifecycle,overlay ))
- }
- try {
- // Unbind use cases before rebinding
- cameraProvider.unbindAll()
-
- cameraProvider.bindToLifecycle(this,cameraSelector,previewUseCase,analysisUseCase)
- // Bind use cases to camera
-
- } catch(exc: Exception) {
- Log.e(TAG, "Use case binding failed", exc)
- }
-
- }, ContextCompat.getMainExecutor(this))
- }
-
- companion object {
- private const val TAG = "MainActivity"
- private const val REQUEST_CODE_PERMISSIONS = 10
- private val REQUIRED_PERMISSIONS = arrayOf(
- Manifest.permission.CAMERA,
- )
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/intro/SecurityActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/intro/SecurityActivity.kt
deleted file mode 100644
index a337c0a..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/intro/SecurityActivity.kt
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.example.infuxion_alternate.intro
-
-import android.app.Activity
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import com.example.infuxion_alternate.databinding.ActivitySecurityBinding
-
-class SecurityActivity : AppCompatActivity() {
-
- private var binding: ActivitySecurityBinding? = null
- private var activity: Activity? = null
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivitySecurityBinding.inflate(layoutInflater)
- setContentView(binding?.root)
-
-
- activity = this
- overridePendingTransition(0, 0)
-
- init()
- }
-
-
-
- private fun init() {
-
- binding?.apply {
- activity?.let { activity->
- processFurther.setOnClickListener {
-// startActivity(Intent(activity, AllowPermissions::class.java))
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/intro/SplashActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/intro/SplashActivity.kt
deleted file mode 100644
index 4eaeec9..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/intro/SplashActivity.kt
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.example.infuxion_alternate.intro
-import android.app.Activity
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.os.Handler
-import android.os.Looper
-import androidx.activity.result.contract.ActivityResultContracts
-import com.example.infuxion_alternate.databinding.ActivitySplashBinding
-import com.example.infuxion_alternate.utils.AppConstant
-import com.example.infuxion_alternate.utils.MethodMaster
-import com.example.infuxion_alternate.utils.TinyDB
-import com.google.firebase.analytics.FirebaseAnalytics
-import com.google.firebase.analytics.ktx.analytics
-import com.google.firebase.ktx.Firebase
-
-class SplashActivity : AppCompatActivity() {
-
- private var binding: ActivitySplashBinding? = null
- private var activity: Activity? = null
-
- private val sharedPrefFile = "tempPref"
- private lateinit var firebaseAnalytics: FirebaseAnalytics
- private var tinyDB: TinyDB? = null
-
- private var resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
- if (result.resultCode == Activity.RESULT_OK) {
- goToNextScreen()
- }
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivitySplashBinding.inflate(layoutInflater)
- setContentView(binding?.root)
- supportActionBar?.hide()
-
- activity = this
- tinyDB = TinyDB(this)
- firebaseAnalytics = Firebase.analytics
-
- init()
- }
-
- private fun init() {
- Handler(Looper.getMainLooper()).postDelayed({
- tinyDB?.putBoolean(AppConstant.Prefs.SPLASH_COMPLETE_WATCH,true)
- if (MethodMaster.checkLockIsEnable(tinyDB)){
- val intent = Intent(this, FaceMlActivity::class.java)
- resultLauncher.launch(intent)
- }else{
- goToNextScreen()
- }
- }, if (tinyDB?.getBoolean(AppConstant.Prefs.SPLASH_COMPLETE_WATCH)==true) 4000 else 6000)
- }
-
- private fun goToNextScreen() {
-
-
- val intent = Intent(this, FaceMlActivity::class.java)
- startActivity(intent)
- finish()
-
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/intro/dashboard/DashbooardActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/intro/dashboard/DashbooardActivity.kt
deleted file mode 100644
index 120f42f..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/intro/dashboard/DashbooardActivity.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.example.infuxion_alternate.intro.dashboard
-
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.example.infuxion_alternate.R
-import com.example.infuxion_alternate.databinding.ActivitySplashBinding
-import com.example.infuxion_alternate.utils.TinyDB
-import com.google.firebase.analytics.ktx.analytics
-import com.google.firebase.ktx.Firebase
-
-class DashbooardActivity : AppCompatActivity() {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_dashbooard)
-
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/loan/LoanOfferReview.kt b/android/app/src/main/java/com/example/infuxion_alternate/loan/LoanOfferReview.kt
deleted file mode 100644
index 7e5cbfb..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/loan/LoanOfferReview.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.example.infuxion_alternate.loan
-
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.view.Window
-import android.view.WindowManager
-import android.widget.Button
-import androidx.core.content.ContextCompat
-import com.example.infuxion_alternate.R
-import com.example.infuxion_alternate.Sanction
-
-class LoanOfferReview : AppCompatActivity() {
- lateinit var btnNext : Button
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_loan_offer_review)
- supportActionBar?.hide()
-
- //Changing color of status bar
- val window: Window = this@LoanOfferReview.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor(this@LoanOfferReview, R.color.white)
-
- //To Sanction
- btnNext = findViewById(R.id.btnNext)
- btnNext.setOnClickListener() {
- var intent = Intent(this, Sanction::class.java)
- startActivity(intent)
- }
-
- }
-}
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/loan/LoanOffers.kt b/android/app/src/main/java/com/example/infuxion_alternate/loan/LoanOffers.kt
deleted file mode 100644
index 73764ae..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/loan/LoanOffers.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.infuxion_alternate.loan
-
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.view.Window
-import android.view.WindowManager
-import android.widget.ArrayAdapter
-import android.widget.Button
-import android.widget.Spinner
-import androidx.core.content.ContextCompat
-import com.example.infuxion_alternate.R
-
-class LoanOffers : AppCompatActivity() {
-
- lateinit var spLoanOffer: Spinner
- lateinit var spInterest: Spinner
- lateinit var btnNext: Button
-
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_loan_offers)
-
- //Changing color of status bar
- val window: Window = this@LoanOffers.window
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
- window.statusBarColor = ContextCompat.getColor(this@LoanOffers, R.color.white)
-
- spLoanOffer = findViewById(R.id.spLoanOffer)
- val options = listOf("₹3000")
-// val loanAm = arrayOf()
- val arrayAdapter: ArrayAdapter =
- ArrayAdapter(this, R.layout.spinnner_itemlist, options)
-
- arrayAdapter.setDropDownViewResource(R.layout.spinnner_itemlist)
- spLoanOffer.adapter = arrayAdapter
-
-
- spInterest = findViewById(R.id.spInterest)
- val loanIn = arrayOf(
- "a% for 4W, b% for 4W, and c% for 5W",
- "x% for 4W, y% for 4W, and z% for 5W"
- )
- val arrAdapter: ArrayAdapter =
- ArrayAdapter(this, R.layout.spinnner_itemlist, loanIn)
- arrAdapter.setDropDownViewResource(R.layout.spinner_loan_interest_items)
- spInterest.adapter = arrAdapter
-
- btnNext = findViewById(R.id.btnNext)
-
- //To Loan Review
- btnNext.setOnClickListener() {
- val intent = Intent(this, LoanOfferReview::class.java)
- startActivity(intent)
- }
- }
-}
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/AppModel.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/AppModel.kt
deleted file mode 100644
index 72b3901..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/AppModel.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class AppModel(val appName: String)
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/ContactModel.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/ContactModel.kt
deleted file mode 100644
index 30d954a..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/ContactModel.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class ContactModel(/*val id: String, */val name: String, val phone: String)
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/CreateUserRequest.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/CreateUserRequest.kt
deleted file mode 100644
index ca7986b..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/CreateUserRequest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class CreateUserRequest(
- var firstName : String? = null,
- var middleName : String? = null,
- var lastName : String? = null,
- var email : String? = null,
- var phone : String? = null,
- var fatherName : String? = null,
- var dob : String? = null,
- var location : String? = null,
- var imei : String? = null,
- var tempId : String? = null,
- var gender : String? = null,
-)
-
-
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/CreateUserResponse.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/CreateUserResponse.kt
deleted file mode 100644
index 5c3aa82..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/CreateUserResponse.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.example.infuxion_alternate.model
-
-import java.util.*
-
-data class CreateUserResponse(
- val regId: String?,
- val statusId:Int?
-
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/ImageRequest.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/ImageRequest.kt
deleted file mode 100644
index 8acd189..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/ImageRequest.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.example.infuxion_alternate.model
-
-import retrofit2.http.Part
-
-data class ImageRequest(
- var img : Part? = null,
-
-)
-
-
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/ImageResponse.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/ImageResponse.kt
deleted file mode 100644
index d52ab97..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/ImageResponse.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.example.infuxion_alternate.model
-
-import java.util.*
-
-data class ImageResponse(
- val message:String?,
-
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/ImeiRequest.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/ImeiRequest.kt
deleted file mode 100644
index 5d74b6d..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/ImeiRequest.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class ImeiRequest(
- val imei: String?,
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/ImeiResponse.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/ImeiResponse.kt
deleted file mode 100644
index 3834d1d..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/ImeiResponse.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class ImeiResponse(
- val userId: String?,
- val statusId: Int?,
- val tempId: String?,
- val imei: String?,
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/KycResponse.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/KycResponse.kt
deleted file mode 100644
index 4518783..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/KycResponse.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class KycResponse(val success: Boolean?,)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/PPRequest.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/PPRequest.kt
deleted file mode 100644
index 6b85d9d..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/PPRequest.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class PPRequest(
- val tempId: String?,
- val PP: Boolean?,
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/PPResponse.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/PPResponse.kt
deleted file mode 100644
index 430e9c3..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/PPResponse.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class PPResponse(
- val message: String?,
-
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/PanResponse.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/PanResponse.kt
deleted file mode 100644
index 29976f3..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/PanResponse.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.example.infuxion_alternate.model
-
-import java.util.*
-
-data class PanResponse(val success: Boolean?,)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/PermissionRequest.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/PermissionRequest.kt
deleted file mode 100644
index ffdd8e7..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/PermissionRequest.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class PermissionRequest(
- val tempId: String?,
- val imei: String?,
- val isLocationGranted: Boolean?,
- val isContactsGranted: Boolean?,
- val isReadSmsGranted: Boolean?,
- val isAudioGranted: Boolean?,
- val isCameraGranted: Boolean?,
- val PP: Boolean?,
- val TNC: Boolean?,
- val contacts : List?,
- val financialSMS: List?,
- val financialAppsInstalled: List?,
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/PermissionResponse.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/PermissionResponse.kt
deleted file mode 100644
index d31807b..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/PermissionResponse.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class PermissionResponse(
- val message: String?,
-
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/RegEmail.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/RegEmail.kt
deleted file mode 100644
index 52f1611..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/RegEmail.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class RegEmail(
- val message: String?,
- val statusId:Int?,
- val email:String?,
- val otp:String?
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/RegEmailBody.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/RegEmailBody.kt
deleted file mode 100644
index e90315c..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/RegEmailBody.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class RegEmailBody (
- val email:String
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/RegPhone.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/RegPhone.kt
deleted file mode 100644
index 1546322..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/RegPhone.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class RegPhone(
- val message: String?,
- val statusId:Int?,
- val phone:String?
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/RegPhoneBody.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/RegPhoneBody.kt
deleted file mode 100644
index 22e4588..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/RegPhoneBody.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class RegPhoneBody (
- val phone:String
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/SmsModel.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/SmsModel.kt
deleted file mode 100644
index ca4df63..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/SmsModel.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class SmsModel(/*val id:String, val threadId:String, val phoneNumber: String,*/ val body: String /*, val readState: String, val timestamp: String, val type:String*/)
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/TNCRequest.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/TNCRequest.kt
deleted file mode 100644
index 709c583..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/TNCRequest.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class TNCRequest(
- val tempId: String?,
- val TNC: Boolean?,
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/model/TNCResponse.kt b/android/app/src/main/java/com/example/infuxion_alternate/model/TNCResponse.kt
deleted file mode 100644
index f05fd04..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/model/TNCResponse.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.example.infuxion_alternate.model
-
-data class TNCResponse(
- val message: String?,
-)
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/AppConstant.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/AppConstant.kt
deleted file mode 100644
index 7d68008..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/AppConstant.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-class AppConstant {
-
- object DefaultValue {
- const val DEFAULT_LATITUDE = 00.000000
- const val DEFAULT_LONGITUDE = 00.000000
- }
-
- object BundleData {
- const val PIN_MESSAGE = "pin_message"
- const val CREATE_NEW_PIN = "create_new_pin"
- const val IS_FROM = "is_from"
- const val IS_FROM_SPLASH = "is_from_splash"
- }
-
- object Prefs {
- const val SHOW_PIN_LOCK = "show_pin_lock"
- const val PIN_PASSWORD = "pin_password"
- const val SPLASH_COMPLETE_WATCH = "splash_complete_watch"
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/BetterActivityResult.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/BetterActivityResult.kt
deleted file mode 100644
index c2b0643..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/BetterActivityResult.kt
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import androidx.activity.result.ActivityResultCaller
-import androidx.activity.result.contract.ActivityResultContract
-import androidx.activity.result.ActivityResultLauncher
-import kotlin.jvm.JvmOverloads
-import android.content.Intent
-import androidx.activity.result.ActivityResult
-import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
-import androidx.core.app.ActivityOptionsCompat
-
-class BetterActivityResult private constructor(
- caller : ActivityResultCaller,
- contract : ActivityResultContract,
- var onActivityResult : ((Result) -> Unit)?,
-) {
-
- private val launcher : ActivityResultLauncher =
- caller.registerForActivityResult(contract) { onActivityResult?.invoke(it) }
-
- /**
- * Launch activity, same as [ActivityResultLauncher.launch] except that it
- * allows a callback
- * executed after receiving a result from the target activity.
- */
- /**
- * Same as [.launch] with last parameter set to `null`.
- */
- @JvmOverloads
- fun launch(
- input : Input,
- animation: ActivityOptionsCompat?= null,
- onActivityResult : ((Result) -> Unit)? = this.onActivityResult,
- ) {
- this.onActivityResult = onActivityResult
- if (animation != null)
- launcher.launch(input,animation)
- else
- launcher.launch(input)
- }
-
- companion object {
- /**1
- * Register activity result using a [ActivityResultContract] and an in-place
- * activity result callback like
- * the default approach. You can still customise callback using [.launch].
- */
- fun registerForActivityResult(
- caller : ActivityResultCaller,
- contract : ActivityResultContract,
- onActivityResult : ((Result) -> Unit)?,
- ) : BetterActivityResult {
- return BetterActivityResult(caller, contract, onActivityResult)
- }
-
- /**
- * Same as [.registerForActivityResult] except
- * the last argument is set to `null`.
- */
- fun registerForActivityResult(
- caller : ActivityResultCaller,
- contract : ActivityResultContract,
- ) : BetterActivityResult {
- return registerForActivityResult(caller, contract, null)
- }
-
- /**
- * Specialised method for launching new activities.
- */
- @JvmStatic
- fun registerActivityForResult(
- caller : ActivityResultCaller,
- ) : BetterActivityResult {
- return registerForActivityResult(caller, StartActivityForResult())
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/CameraActivity.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/CameraActivity.kt
deleted file mode 100644
index cb75ded..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/CameraActivity.kt
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import android.app.Activity
-import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import android.os.Handler
-import android.os.Looper
-import android.util.Log
-import android.view.WindowManager
-import android.widget.Toast
-import androidx.camera.core.*
-import androidx.camera.lifecycle.ProcessCameraProvider
-import androidx.core.content.ContextCompat
-import com.example.infuxion_alternate.intro.dashboard.DashbooardActivity
-import com.example.infuxion_alternate.databinding.ActivityCameraBinding
-import java.io.File
-import java.util.concurrent.Executors
-
-class CameraActivity : AppCompatActivity() {
-
- private var binding: ActivityCameraBinding? = null
- private var activity: Activity?=null
- private var TAG="CameraActivity"
- private lateinit var photoFilePath: String
- private var imageCapture: ImageCapture? = null
-
- private var cameraExecutor = Executors.newSingleThreadExecutor()
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityCameraBinding.inflate(layoutInflater)
- setContentView(binding?.root)
- overridePendingTransition(0, 0)
-
- window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
-
- activity = this
-
- init()
- }
-
- private fun init() {
- binding?.apply {
- activity?.let {
- cameraExecutor = Executors.newSingleThreadExecutor()
-
- imgCaptureBtn.setOnClickListener{
- takePhoto()
- }
-
- startCamera()
- }
- }
- }
-
- private fun startCamera() {
- val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
- imageCapture = ImageCapture.Builder().setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY).setFlashMode(ImageCapture.FLASH_MODE_AUTO)/*.setTargetResolution(Size(1200, 1600))*/.build()
- cameraProviderFuture.addListener({
- val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
- val cameraSelector = CameraSelector.DEFAULT_FRONT_CAMERA
- val previewUseCase = Preview.Builder().build()
- .also {
- it.setSurfaceProvider(binding?.viewFinder?.createSurfaceProvider())
- }
- try {
- cameraProvider.unbindAll()
- cameraProvider.bindToLifecycle(this,cameraSelector,previewUseCase,imageCapture)
-
- } catch(exc: Exception) {
- Log.e(TAG, "startCamera failed", exc)
- }
-
- }, ContextCompat.getMainExecutor(this))
- }
-
- private fun takePhoto(){
- imageCapture?.let{
- val fileName = "JPEG_${System.currentTimeMillis()}.jpg"
- val file = File(externalMediaDirs[0],fileName)
- val outputFileOptions = ImageCapture.OutputFileOptions.Builder(file).build()
- it.takePicture(
- outputFileOptions,
- cameraExecutor,
- object : ImageCapture.OnImageSavedCallback {
-
-// override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults){
-// Log.i(TAG,"The image has been saved in ${file.toUri()}")
-//// runOnUiThread{
-//// Toast.makeText(activity, "Photo Store in :-${file.absolutePath}", Toast.LENGTH_LONG).show()
-//// }
-// Handler(Looper.getMainLooper()).postDelayed({
-// // todo (Store profile image in API)
-// val intent = Intent(activity, ReviewRegisterDetails::class.java)
-// startActivity(intent)
-// },2000)
-// }
-
- override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
- photoFilePath = file.absolutePath
- Log.i(TAG, "The image has been saved in $photoFilePath")
- Handler(Looper.getMainLooper()).postDelayed({
- // Store the photoFilePath in a shared preference or pass it to the next activity
- val intent = Intent(activity, DashbooardActivity::class.java)
- intent.putExtra("photoPath", photoFilePath)
- startActivity(intent)
- }, 2000)
- }
-
- override fun onError(exception: ImageCaptureException) {
- Log.d(TAG, "Error taking photo:$exception")
- runOnUiThread {
- Toast.makeText(activity, "Error taking photo", Toast.LENGTH_LONG).show()
- }
- }
-
- })
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/CircleImageView.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/CircleImageView.kt
deleted file mode 100644
index 41cbf43..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/CircleImageView.kt
+++ /dev/null
@@ -1,428 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import androidx.appcompat.widget.AppCompatImageView
-import kotlin.jvm.JvmOverloads
-import android.os.Build
-import android.annotation.SuppressLint
-import android.content.Context
-import android.graphics.*
-import android.graphics.drawable.Drawable
-import androidx.annotation.ColorRes
-import androidx.annotation.DrawableRes
-import android.graphics.drawable.BitmapDrawable
-import android.graphics.drawable.ColorDrawable
-import android.net.Uri
-import android.util.AttributeSet
-import android.view.MotionEvent
-import android.view.View
-import androidx.annotation.RequiresApi
-import android.view.ViewOutlineProvider
-import com.example.infuxion_alternate.R
-import java.lang.Exception
-
-class CircleImageView : AppCompatImageView {
- private val mDrawableRect = RectF()
- private val mBorderRect = RectF()
- private val mShaderMatrix = Matrix()
- private val mBitmapPaint = Paint()
- private val mBorderPaint = Paint()
- private val mCircleBackgroundPaint = Paint()
- private var mBorderColor = DEFAULT_BORDER_COLOR
- private var mBorderWidth = DEFAULT_BORDER_WIDTH
- private var mCircleBackgroundColor = DEFAULT_CIRCLE_BACKGROUND_COLOR
- private var mImageAlpha = DEFAULT_IMAGE_ALPHA
- private var mBitmap: Bitmap? = null
- private var mBitmapCanvas: Canvas? = null
- private var mDrawableRadius = 0f
- private var mBorderRadius = 0f
- private var mColorFilter: ColorFilter? = null
- private var mInitialized = false
- private var mRebuildShader = false
- private var mDrawableDirty = false
- private var mBorderOverlay = false
- private var mDisableCircularTransformation = false
-
- constructor(context: Context?) : super(context!!) {
- init()
- }
-
- @JvmOverloads
- constructor(context: Context, attrs: AttributeSet?, defStyle: Int = 0) : super(
- context,
- attrs,
- defStyle
- ) {
- val a = context.obtainStyledAttributes(attrs, R.styleable.CircleImageView, defStyle, 0)
- mBorderWidth = a.getDimensionPixelSize(
- R.styleable.CircleImageView_civ_border_width,
- DEFAULT_BORDER_WIDTH
- )
- mBorderColor =
- a.getColor(R.styleable.CircleImageView_civ_border_color, DEFAULT_BORDER_COLOR)
- mBorderOverlay =
- a.getBoolean(R.styleable.CircleImageView_civ_border_overlay, DEFAULT_BORDER_OVERLAY)
- mCircleBackgroundColor = a.getColor(
- R.styleable.CircleImageView_civ_circle_background_color,
- DEFAULT_CIRCLE_BACKGROUND_COLOR
- )
- a.recycle()
- init()
- }
-
- private fun init() {
- mInitialized = true
- super.setScaleType(SCALE_TYPE)
- mBitmapPaint.isAntiAlias = true
- mBitmapPaint.isDither = true
- mBitmapPaint.isFilterBitmap = true
- mBitmapPaint.alpha = mImageAlpha
- mBitmapPaint.colorFilter = mColorFilter
- mBorderPaint.style = Paint.Style.STROKE
- mBorderPaint.isAntiAlias = true
- mBorderPaint.color = mBorderColor
- mBorderPaint.strokeWidth = mBorderWidth.toFloat()
- mCircleBackgroundPaint.style = Paint.Style.FILL
- mCircleBackgroundPaint.isAntiAlias = true
- mCircleBackgroundPaint.color = mCircleBackgroundColor
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- outlineProvider = OutlineProvider()
- }
- }
-
- override fun setScaleType(scaleType: ScaleType) {
- require(scaleType == SCALE_TYPE) { String.format("ScaleType %s not supported.", scaleType) }
- }
-
- override fun setAdjustViewBounds(adjustViewBounds: Boolean) {
- require(!adjustViewBounds) { "adjustViewBounds not supported." }
- }
-
- @SuppressLint("CanvasSize")
- override fun onDraw(canvas: Canvas) {
- if (mDisableCircularTransformation) {
- super.onDraw(canvas)
- return
- }
- if (mCircleBackgroundColor != Color.TRANSPARENT) {
- canvas.drawCircle(
- mDrawableRect.centerX(),
- mDrawableRect.centerY(),
- mDrawableRadius,
- mCircleBackgroundPaint
- )
- }
- if (mBitmap != null) {
- if (mDrawableDirty && mBitmapCanvas != null) {
- mDrawableDirty = false
- val drawable = drawable
- drawable.setBounds(0, 0, mBitmapCanvas!!.width, mBitmapCanvas!!.height)
- drawable.draw(mBitmapCanvas!!)
- }
- if (mRebuildShader) {
- mRebuildShader = false
- val bitmapShader =
- BitmapShader(mBitmap!!, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
- bitmapShader.setLocalMatrix(mShaderMatrix)
- mBitmapPaint.shader = bitmapShader
- }
- canvas.drawCircle(
- mDrawableRect.centerX(),
- mDrawableRect.centerY(),
- mDrawableRadius,
- mBitmapPaint
- )
- }
- if (mBorderWidth > 0) {
- canvas.drawCircle(
- mBorderRect.centerX(),
- mBorderRect.centerY(),
- mBorderRadius,
- mBorderPaint
- )
- }
- }
-
- override fun invalidateDrawable(dr: Drawable) {
- mDrawableDirty = true
- invalidate()
- }
-
- override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
- super.onSizeChanged(w, h, oldw, oldh)
- updateDimensions()
- invalidate()
- }
-
- override fun setPadding(left: Int, top: Int, right: Int, bottom: Int) {
- super.setPadding(left, top, right, bottom)
- updateDimensions()
- invalidate()
- }
-
- override fun setPaddingRelative(start: Int, top: Int, end: Int, bottom: Int) {
- super.setPaddingRelative(start, top, end, bottom)
- updateDimensions()
- invalidate()
- }
-
- var borderColor: Int
- get() = mBorderColor
- set(borderColor) {
- if (borderColor == mBorderColor) {
- return
- }
- mBorderColor = borderColor
- mBorderPaint.color = borderColor
- invalidate()
- }
- var circleBackgroundColor: Int
- get() = mCircleBackgroundColor
- set(circleBackgroundColor) {
- if (circleBackgroundColor == mCircleBackgroundColor) {
- return
- }
- mCircleBackgroundColor = circleBackgroundColor
- mCircleBackgroundPaint.color = circleBackgroundColor
- invalidate()
- }
-
- @Deprecated("Use {@link #setCircleBackgroundColor(int)} instead")
- fun setCircleBackgroundColorResource(@ColorRes circleBackgroundRes: Int) {
- circleBackgroundColor = context.resources.getColor(circleBackgroundRes)
- }
-
- var borderWidth: Int
- get() = mBorderWidth
- set(borderWidth) {
- if (borderWidth == mBorderWidth) {
- return
- }
- mBorderWidth = borderWidth
- mBorderPaint.strokeWidth = borderWidth.toFloat()
- updateDimensions()
- invalidate()
- }
- var isBorderOverlay: Boolean
- get() = mBorderOverlay
- set(borderOverlay) {
- if (borderOverlay == mBorderOverlay) {
- return
- }
- mBorderOverlay = borderOverlay
- updateDimensions()
- invalidate()
- }
- var isDisableCircularTransformation: Boolean
- get() = mDisableCircularTransformation
- set(disableCircularTransformation) {
- if (disableCircularTransformation == mDisableCircularTransformation) {
- return
- }
- mDisableCircularTransformation = disableCircularTransformation
- if (disableCircularTransformation) {
- mBitmap = null
- mBitmapCanvas = null
- mBitmapPaint.shader = null
- } else {
- initializeBitmap()
- }
- invalidate()
- }
-
- override fun setImageBitmap(bm: Bitmap) {
- super.setImageBitmap(bm)
- initializeBitmap()
- invalidate()
- }
-
- override fun setImageDrawable(drawable: Drawable?) {
- super.setImageDrawable(drawable)
- initializeBitmap()
- invalidate()
- }
-
- override fun setImageResource(@DrawableRes resId: Int) {
- super.setImageResource(resId)
- initializeBitmap()
- invalidate()
- }
-
- override fun setImageURI(uri: Uri?) {
- super.setImageURI(uri)
- initializeBitmap()
- invalidate()
- }
-
- override fun setImageAlpha(alpha: Int) {
- var alpha = alpha
- alpha = alpha and 0xFF
- if (alpha == mImageAlpha) {
- return
- }
- mImageAlpha = alpha
-
- // This might be called during ImageView construction before
- // member initialization has finished on API level >= 16.
- if (mInitialized) {
- mBitmapPaint.alpha = alpha
- invalidate()
- }
- }
-
- override fun getImageAlpha(): Int {
- return mImageAlpha
- }
-
- override fun setColorFilter(cf: ColorFilter) {
- if (cf === mColorFilter) {
- return
- }
- mColorFilter = cf
-
- // This might be called during ImageView construction before
- // member initialization has finished on API level <= 19.
- if (mInitialized) {
- mBitmapPaint.colorFilter = cf
- invalidate()
- }
- }
-
- override fun getColorFilter(): ColorFilter {
- return mColorFilter!!
- }
-
- private fun getBitmapFromDrawable(drawable: Drawable?): Bitmap? {
- if (drawable == null) {
- return null
- }
- return if (drawable is BitmapDrawable) {
- drawable.bitmap
- } else try {
- val bitmap: Bitmap
- bitmap = if (drawable is ColorDrawable) {
- Bitmap.createBitmap(COLORDRAWABLE_DIMENSION, COLORDRAWABLE_DIMENSION, BITMAP_CONFIG)
- } else {
- Bitmap.createBitmap(
- drawable.intrinsicWidth,
- drawable.intrinsicHeight,
- BITMAP_CONFIG
- )
- }
- val canvas = Canvas(bitmap)
- drawable.setBounds(0, 0, canvas.width, canvas.height)
- drawable.draw(canvas)
- bitmap
- } catch (e: Exception) {
- e.printStackTrace()
- null
- }
- }
-
- private fun initializeBitmap() {
- mBitmap = getBitmapFromDrawable(drawable)
- mBitmapCanvas = if (mBitmap != null && mBitmap!!.isMutable) {
- Canvas(mBitmap!!)
- } else {
- null
- }
- if (!mInitialized) {
- return
- }
- if (mBitmap != null) {
- updateShaderMatrix()
- } else {
- mBitmapPaint.shader = null
- }
- }
-
- private fun updateDimensions() {
- mBorderRect.set(calculateBounds())
- mBorderRadius = Math.min(
- (mBorderRect.height() - mBorderWidth) / 2.0f,
- (mBorderRect.width() - mBorderWidth) / 2.0f
- )
- mDrawableRect.set(mBorderRect)
- if (!mBorderOverlay && mBorderWidth > 0) {
- mDrawableRect.inset(mBorderWidth - 1.0f, mBorderWidth - 1.0f)
- }
- mDrawableRadius = Math.min(mDrawableRect.height() / 2.0f, mDrawableRect.width() / 2.0f)
- updateShaderMatrix()
- }
-
- private fun calculateBounds(): RectF {
- val availableWidth = width - paddingLeft - paddingRight
- val availableHeight = height - paddingTop - paddingBottom
- val sideLength = Math.min(availableWidth, availableHeight)
- val left = paddingLeft + (availableWidth - sideLength) / 2f
- val top = paddingTop + (availableHeight - sideLength) / 2f
- return RectF(left, top, left + sideLength, top + sideLength)
- }
-
- private fun updateShaderMatrix() {
- if (mBitmap == null) {
- return
- }
- val scale: Float
- var dx = 0f
- var dy = 0f
- mShaderMatrix.set(null)
- val bitmapHeight = mBitmap!!.height
- val bitmapWidth = mBitmap!!.width
- if (bitmapWidth * mDrawableRect.height() > mDrawableRect.width() * bitmapHeight) {
- scale = mDrawableRect.height() / bitmapHeight.toFloat()
- dx = (mDrawableRect.width() - bitmapWidth * scale) * 0.5f
- } else {
- scale = mDrawableRect.width() / bitmapWidth.toFloat()
- dy = (mDrawableRect.height() - bitmapHeight * scale) * 0.5f
- }
- mShaderMatrix.setScale(scale, scale)
- mShaderMatrix.postTranslate(
- (dx + 0.5f).toInt() + mDrawableRect.left,
- (dy + 0.5f).toInt() + mDrawableRect.top
- )
- mRebuildShader = true
- }
-
- @SuppressLint("ClickableViewAccessibility")
- override fun onTouchEvent(event: MotionEvent): Boolean {
- return if (mDisableCircularTransformation) {
- super.onTouchEvent(event)
- } else inTouchableArea(event.x, event.y) && super.onTouchEvent(event)
- }
-
- private fun inTouchableArea(x: Float, y: Float): Boolean {
- return if (mBorderRect.isEmpty) {
- true
- } else Math.pow(
- (x - mBorderRect.centerX()).toDouble(),
- 2.0
- ) + Math.pow((y - mBorderRect.centerY()).toDouble(), 2.0) <= Math.pow(
- mBorderRadius.toDouble(),
- 2.0
- )
- }
-
- @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
- private inner class OutlineProvider : ViewOutlineProvider() {
- override fun getOutline(view: View, outline: Outline) {
- if (mDisableCircularTransformation) {
- BACKGROUND.getOutline(view, outline)
- } else {
- val bounds = Rect()
- mBorderRect.roundOut(bounds)
- outline.setRoundRect(bounds, bounds.width() / 2.0f)
- }
- }
- }
-
- companion object {
- private val SCALE_TYPE = ScaleType.CENTER_CROP
- private val BITMAP_CONFIG = Bitmap.Config.ARGB_8888
- private const val COLORDRAWABLE_DIMENSION = 2
- private const val DEFAULT_BORDER_WIDTH = 0
- private const val DEFAULT_BORDER_COLOR = Color.BLACK
- private const val DEFAULT_CIRCLE_BACKGROUND_COLOR = Color.TRANSPARENT
- private const val DEFAULT_IMAGE_ALPHA = 255
- private const val DEFAULT_BORDER_OVERLAY = false
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/Constants.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/Constants.kt
deleted file mode 100644
index c1c4b74..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/Constants.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.example.infuxion_alternate.utils
-class Constants {
-
- companion object {
- const val baseUrl = "http://infuxion.finance"
- }
-
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/FileUtil.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/FileUtil.kt
deleted file mode 100644
index dae3a5b..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/FileUtil.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import android.content.Context
-import android.os.Build
-import android.os.Environment
-import android.util.Log
-import com.example.infuxion_alternate.R
-import java.io.File
-
-object FileUtil {
-
- /**
- * compress image path
- */
- @JvmStatic
- fun getDestinationCompressImageFilePath(context: Context?, file: File): File? {
- val compressImageSave: File
- val path= context?.resources?.getString(R.string.app_name)+"/" + "CompressImage" + "/" +"Image_" + System.currentTimeMillis() +"."+ file.extension
- val parent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
- context?.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
- else
- Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
-
- compressImageSave = File(parent, path)
-
- if (!compressImageSave.exists()) {
- if (!compressImageSave.mkdirs()) {
- Log.d("DestinationCompressPath", "Failed to create directory")
- return null
- }
- }
-
- Log.d("DestinationCompressPath", compressImageSave.toString())
- return compressImageSave
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/FingerprintHandler.java b/android/app/src/main/java/com/example/infuxion_alternate/utils/FingerprintHandler.java
deleted file mode 100644
index 06b660f..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/FingerprintHandler.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.example.infuxion_alternate.utils;
-
-import android.Manifest;
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.hardware.fingerprint.FingerprintManager;
-import android.os.CancellationSignal;
-
-import com.example.infuxion_alternate.app_lock.PinLockActivity;
-
-import androidx.core.app.ActivityCompat;
-
-@SuppressLint("NewApi")
-public class FingerprintHandler extends FingerprintManager.AuthenticationCallback {
-
- Context context;
-
- public FingerprintHandler(Context context) {
- this.context = context;
- }
-
- public void startAuth(FingerprintManager manager, FingerprintManager.CryptoObject cryptoObject) {
- CancellationSignal cancellationSignal = new CancellationSignal();
- if (ActivityCompat.checkSelfPermission(context, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
- return;
- }
- manager.authenticate(cryptoObject, cancellationSignal, 0, this, null);
- }
-
- @Override
- public void onAuthenticationError(int errMsgId, CharSequence errString) {
- this.update("Fingerprint Authentication error\n" + errString, false);
- }
-
- @Override
- public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
- this.update("Fingerprint Authentication help\n" + helpString, false);
- }
-
- @Override
- public void onAuthenticationFailed() {
- this.update("Fingerprint Authentication failed.", false);
- }
-
- @Override
- public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
- this.update("Fingerprint Authentication succeeded.", true);
- }
-
- public void update(String e, Boolean success) {
- ((PinLockActivity) context).fingerScanResult(e, success);
- }
-}
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/LocationUtil.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/LocationUtil.kt
deleted file mode 100644
index 6e004a0..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/LocationUtil.kt
+++ /dev/null
@@ -1,260 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import android.Manifest
-import android.annotation.SuppressLint
-import android.app.Activity
-import android.content.Context
-import android.content.Intent
-import android.content.IntentSender
-import android.content.pm.PackageManager
-import android.location.*
-import android.os.Looper
-import androidx.core.app.ActivityCompat
-import androidx.core.content.ContextCompat
-import androidx.fragment.app.Fragment
-import com.example.infuxion_alternate.utils.AppConstant.DefaultValue.DEFAULT_LATITUDE
-import com.example.infuxion_alternate.utils.AppConstant.DefaultValue.DEFAULT_LONGITUDE
-import com.google.android.gms.common.api.ResolvableApiException
-import com.google.android.gms.location.*
-import com.google.android.gms.location.LocationRequest
-import com.google.android.gms.tasks.Task
-import java.lang.ref.WeakReference
-import java.util.*
-
-private var TAG = "LocationUtil"
-
-data class LatLng(var latitude: Double, var longitude: Double)
-
-@SuppressLint("MissingPermission")
-class LocationFetchUtil(
- private val activity: Activity,
- private val fragment: Fragment? = null,
- private val shouldRequestPermissions: Boolean=false,
- private val shouldRequestOptimization: Boolean=false,
- private val callbacks: Callbacks
-) {
- private val nwUtil:NetworkUtil = NetworkUtil
- private var activityWeakReference = WeakReference(activity)
- private var locationCallback: LocationCallback? = null
- private var fusedLocationClient: FusedLocationProviderClient? = null
- private val requestCheckSettings = 1111
- private val requestLocation = 1112
- val defaultLocation:Location= Location(LocationManager.NETWORK_PROVIDER).apply {
- this.latitude = DEFAULT_LATITUDE
- this.longitude = DEFAULT_LONGITUDE
- }
-
- interface Callbacks {
- fun onSuccess(location: Location)
- fun onFailed(locationFailedEnum: LocationFailedEnum,defaultLocation:Location)
- }
-
- enum class LocationFailedEnum {
- DeviceInFlightMode,
- LocationPermissionNotGranted,
- LocationOptimizationPermissionNotGranted,
- HighPrecisionNA_TryAgainPreferablyWithInternet
- }
-
- init {
- //try to get last available location, if it matches our precision level
- fusedLocationClient = activity.let { LocationServices.getFusedLocationProviderClient(it) }
- val task = fusedLocationClient?.lastLocation
-
- task?.addOnSuccessListener { location: Location? ->
- if (location != null) {
- callbacks.onSuccess(location)
- } else {
- onLastLocationFailed()
- }
- }
- task?.addOnFailureListener {
- onLastLocationFailed()
- }
- }
-
- private fun onLastLocationFailed() {
- locationCallback = object : LocationCallback() {
- override fun onLocationResult(locationResult: LocationResult) {
- locationResult.lastLocation?.let { callbacks.onSuccess(it) }
- locationCallback?.let { fusedLocationClient?.removeLocationUpdates(it) }
- }
-
- @SuppressLint("MissingPermission")
- override fun onLocationAvailability(locationAvailability: LocationAvailability) {
- super.onLocationAvailability(locationAvailability)
- if (!locationAvailability.isLocationAvailable) {
- callbacks.onFailed(LocationFailedEnum.HighPrecisionNA_TryAgainPreferablyWithInternet,defaultLocation)
- locationCallback?.let { fusedLocationClient?.removeLocationUpdates(it) }
- }
- }
- }
-
- if (activityWeakReference.get() == null)
- return
- if (nwUtil.isInFlightMode(activity))
- callbacks.onFailed(LocationFailedEnum.DeviceInFlightMode,defaultLocation)
- else {
- val permissions = ArrayList()
- permissions.add(Manifest.permission.ACCESS_FINE_LOCATION)
- permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION)
- var permissionGranted = true
- for (permission in permissions) {
- if (ContextCompat.checkSelfPermission(
- activityWeakReference.get() as Activity,
- permission
- ) != PackageManager.PERMISSION_GRANTED
- ) {
- permissionGranted = false
- break
- }
- }
- if (!permissionGranted) {
- if (shouldRequestPermissions) {
- val permissionsArgs = permissions.toTypedArray()
- if (fragment != null)
- fragment.requestPermissions(
- permissionsArgs,
- requestLocation
- )
- else
- ActivityCompat.requestPermissions(
- activityWeakReference.get() as Activity,
- permissionsArgs,
- requestLocation
- )
- } else {
- callbacks.onFailed(LocationFailedEnum.LocationPermissionNotGranted,defaultLocation)
- }
- } else {
- getLocation()
- }
- }
- }
-
- fun onRequestPermissionsResult(
- requestCode: Int,
- permissions: Array,
- grantResults: IntArray
- ) {
-
- if (activityWeakReference.get() == null) {
- return
- }
-
- if (requestCode == requestLocation) {
- if (grantResults.isEmpty()) {
- callbacks.onFailed(LocationFailedEnum.LocationPermissionNotGranted,defaultLocation)
- return
- }
-
- var granted = true
- for (grantResult in grantResults) {
- if (grantResult != PackageManager.PERMISSION_GRANTED) {
- granted = false
- break
- }
- }
- if (granted) {
- getLocation()
- } else {
- callbacks.onFailed(LocationFailedEnum.LocationPermissionNotGranted,defaultLocation)
- }
- }
- }
-
- @SuppressLint("MissingPermission")
- private fun getLocation() {
-
- if (activityWeakReference.get() == null) {
- return
- }
-
- val locationRequest: LocationRequest = LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY,10000).setMaxUpdates(1).build()
-
- val task: Task =
- (LocationServices.getSettingsClient(activityWeakReference.get() as Activity))
- .checkLocationSettings(
- (LocationSettingsRequest.Builder().addLocationRequest(
- locationRequest
- )).build()
- )
-
- task.addOnSuccessListener {
- locationCallback?.let {
- fusedLocationClient?.requestLocationUpdates(
- locationRequest,
- it,
- Looper.myLooper()
- )
- }
- }
-
- task.addOnFailureListener { exception ->
- if (exception is ResolvableApiException) {
- if (activityWeakReference.get() == null) {
- return@addOnFailureListener
- }
- try {
- if (shouldRequestOptimization) {
- if (fragment != null)
- activity.startIntentSenderForResult(
- exception.resolution.intentSender,
- requestCheckSettings,
- null,
- 0,
- 0,
- 0,
- null
- )
- else
- exception.startResolutionForResult(
- activityWeakReference.get() as Activity,
- requestCheckSettings
- )
- } else {
- callbacks.onFailed(LocationFailedEnum.LocationOptimizationPermissionNotGranted,defaultLocation)
- }
- } catch (sendEx: IntentSender.SendIntentException) {
- //ignore the error
- }
- }
- }
- }
-
- fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- if (activityWeakReference.get() == null) {
- return
- }
-
- if (requestCode == requestCheckSettings) {
- if (resultCode == Activity.RESULT_OK) {
- getLocation()
- } else {
- val locationManager =
- (activityWeakReference.get() as Activity).getSystemService(Context.LOCATION_SERVICE) as LocationManager
- if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
- callbacks.onFailed(LocationFailedEnum.HighPrecisionNA_TryAgainPreferablyWithInternet,defaultLocation)
- } else {
- "$TAG, LocationOptimizationPermissionNotGranted, GPS_PROVIDER:-Disable".logD()
- val task = fusedLocationClient?.lastLocation
-
- task?.addOnSuccessListener { location: Location? ->
- if (location != null) {
- "$TAG, addOnSuccessListener, GPS_PROVIDER disable but get current location".logD()
- callbacks.onSuccess(location)
- } else {
- "$TAG, addOnSuccessListener, GPS_PROVIDER disable fail to get current location".logD()
- callbacks.onFailed(LocationFailedEnum.LocationOptimizationPermissionNotGranted,defaultLocation)
- }
- }
- task?.addOnFailureListener {
- "$TAG, addOnFailureListener, GPS_PROVIDER disable fail to get current location".logD()
- callbacks.onFailed(LocationFailedEnum.LocationOptimizationPermissionNotGranted,defaultLocation)
- }
- }
- }
- }
- }
-}
-
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/LogUtil.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/LogUtil.kt
deleted file mode 100644
index 94861f8..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/LogUtil.kt
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.example.infuxion_alternate.utils;
-
-import android.text.TextUtils
-import android.util.Log
-import com.example.infuxion_alternate.BuildConfig
-
-object LogUtil {
-
- val VERBOSE = Log.VERBOSE
- val DEBUG = Log.DEBUG
- val INFO = Log.INFO
- val WARN = Log.WARN
- val ERROR = Log.ERROR
- val WTF = Log.ASSERT
-
- private val TAG = "LogHelper"
-
- fun log(level: Int, msg: String?, throwable: Throwable?) {
- if (BuildConfig.DEBUG) {
- val elements = Throwable().stackTrace
- var callerClassName = "?"
- var callerMethodName = "?"
- var callerLineNumber = "?"
- if (elements.size >= 4) {
- callerClassName = elements[3].className
- callerClassName = callerClassName.substring(callerClassName.lastIndexOf('.') + 1)
- if (callerClassName.indexOf("$") > 0) {
- callerClassName = callerClassName.substring(0, callerClassName.indexOf("$"))
- }
- callerMethodName = elements[3].methodName
- callerMethodName = callerMethodName.substring(callerMethodName.lastIndexOf('_') + 1)
- if (callerMethodName == "") {
- callerMethodName = callerClassName
- }
- callerLineNumber = elements[3].lineNumber.toString()
- }
-
- val stack =
- "[$callerClassName.$callerMethodName():$callerLineNumber]" + if (TextUtils.isEmpty(
- msg
- )
- ) "" else " "
-
- when (level) {
- VERBOSE -> Log.v(TAG, stack + msg, throwable)
- DEBUG -> Log.d(TAG, stack + msg, throwable)
- INFO -> Log.i(TAG, stack + msg, throwable)
- WARN -> Log.w(TAG, stack + msg, throwable)
- ERROR -> Log.e(TAG, stack + msg, throwable)
- WTF -> Log.wtf(TAG, stack + msg, throwable)
- }
- }
- }
-}
-
-fun String.logD(throwable: Throwable? = null) {
- LogUtil.log(LogUtil.DEBUG, this, throwable)
-}
-
-fun String.logV(throwable: Throwable? = null) {
- LogUtil.log(LogUtil.VERBOSE, this, throwable)
-}
-
-fun String.logI(throwable: Throwable? = null) {
- LogUtil.log(LogUtil.INFO, this, throwable)
-}
-
-fun String.logW(throwable: Throwable? = null) {
- LogUtil.log(LogUtil.WARN, this, throwable)
-}
-
-fun String.logE(throwable: Throwable? = null) {
- LogUtil.log(LogUtil.ERROR, this, throwable)
-}
-
-fun String.logWTF(throwable: Throwable? = null) {
- LogUtil.log(LogUtil.WTF, this, throwable)
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/MethodMaster.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/MethodMaster.kt
deleted file mode 100644
index 8d066ec..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/MethodMaster.kt
+++ /dev/null
@@ -1,306 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import android.annotation.SuppressLint
-import android.app.Activity
-import android.content.Context
-import android.content.Context.TELEPHONY_SERVICE
-import android.content.Intent
-import android.graphics.BitmapFactory
-import android.net.Uri
-import android.os.Build
-import android.provider.ContactsContract
-import android.telephony.TelephonyManager
-import android.view.View
-import android.widget.ImageView
-import android.widget.ProgressBar
-import android.widget.Toast
-import androidx.biometric.BiometricManager
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.engine.DiskCacheStrategy
-import com.bumptech.glide.request.RequestOptions
-import com.example.infuxion_alternate.LoadingDialog
-import com.example.infuxion_alternate.model.AppModel
-import com.example.infuxion_alternate.model.ContactModel
-import com.example.infuxion_alternate.model.SmsModel
-import id.zelory.compressor.Compressor
-import id.zelory.compressor.constraint.destination
-import id.zelory.compressor.constraint.resolution
-import kotlinx.coroutines.*
-import java.io.File
-import java.io.IOException
-import java.text.DecimalFormat
-import kotlin.math.log10
-import kotlin.math.pow
-
-
-object MethodMaster {
-
- private const val TAG = "MethodMaster"
-
- fun View.show() {
- visibility = View.VISIBLE
- }
-
- fun View.hide() {
- visibility = View.GONE
- }
-
- fun biometricIsWorkOrNot(
- context: Context?,
- callbacks: ((isWorking: Boolean, hasFingerprintLockAvailable: Boolean, message: String) -> Unit)
- ) {
- context?.let { activity ->
- val biometricManager: BiometricManager = BiometricManager.from(activity)
- when (biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG)) {
- BiometricManager.BIOMETRIC_SUCCESS -> {
- "Biometric, Biometric has Available".logD()
- callbacks.invoke(true, true, "Biometric has Available")
- }
- BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE -> {
- "Biometric, Biometric Authentication currently unavailable".logD()
- callbacks.invoke(false, false, "Biometric Authentication currently unavailable")
- }
- BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> {
- "Biometric, Your device doesn't support Biometric Authentication".logD()
- callbacks.invoke(
- false,
- false,
- "Your device doesn't support Biometric Authentication"
- )
- }
- BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> {
- "Biometric, Your device doesn't have any fingerprint enrolled".logD()
- callbacks.invoke(
- true,
- false,
- "Your device doesn't have any fingerprint enrolled"
- )
- }
- BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED -> {
- "Biometric, Your device have security update required".logD()
- callbacks.invoke(false, false, "Your device have security update required")
- }
- BiometricManager.BIOMETRIC_ERROR_UNSUPPORTED -> {
- "Biometric, Biometric unsupported".logD()
- callbacks.invoke(false, false, "Biometric unsupported")
- }
- BiometricManager.BIOMETRIC_STATUS_UNKNOWN -> {
- "Biometric, Biometric status unknown".logD()
- callbacks.invoke(false, false, "Biometric status unknown")
- }
- }
- }
- }
-
- fun checkLockIsEnable(tinyDB: TinyDB?): Boolean {
- return tinyDB?.getBoolean(AppConstant.Prefs.SHOW_PIN_LOCK) == true
- }
-
- fun showToast(context: Context? = null, msg: String?=null, dur: Int = Toast.LENGTH_SHORT) {
- context?.takeIf { msg?.isNotEmpty() == true }?.apply {
- Toast.makeText(this, msg, dur).show()
- }
- }
-
- suspend fun getAllSmsMessages(context: Context?): List = withContext(Dispatchers.IO) {
- val smsList = mutableListOf()
- val contentResolver = context?.contentResolver
- val uri = Uri.parse("content://sms/inbox")
- val cursor = contentResolver?.query(uri, null, null, null, null)
-
- cursor?.apply {
- if (moveToFirst()) {
- do {
- val id = getString(getColumnIndexOrThrow("_id"))
- val threadId = getString(getColumnIndexOrThrow("thread_id"))
- val phoneNumber = getString(getColumnIndexOrThrow("address"))
- val body = getString(getColumnIndexOrThrow("body"))
- val readState =getString(getColumnIndexOrThrow("read"))
- val timestamp = getString(getColumnIndexOrThrow("date"))
- val type = if (getString(getColumnIndexOrThrow("type")).contains("1")) "inbox" else "sent"
-
- smsList.add(SmsModel(/*id,threadId,phoneNumber,*/ body/*,readState, timestamp,type*/))
- } while (moveToNext())
-
- close()
- }
- }
-
- return@withContext filterFinancialMessages(smsList)
- }
-
- private fun filterFinancialMessages(smsList: List): List {
- val financialKeywords = listOf("balance", "transaction", "credit card", "debit card", "ATM", "bank", "interest", "loan")
-// val financialKeywords = listOf("shopping", "airtel", "recharge", "disney", "xstream")
- return smsList.filter { sms -> financialKeywords.any { keyword -> sms.body.contains(keyword, ignoreCase = true) } }
- }
-
- suspend fun getAllInstalledApps(context: Context): List = withContext(Dispatchers.IO) {
- val packageManager = context.packageManager
- val intent = Intent(Intent.ACTION_MAIN, null)
- intent.addCategory(Intent.CATEGORY_LAUNCHER)
- val resolveInfoList = packageManager.queryIntentActivities(intent, 0)
- val appList = mutableListOf()
-
- for (resolveInfo in resolveInfoList) {
- val appName = resolveInfo.loadLabel(packageManager).toString()
- val packageName = resolveInfo.activityInfo.packageName
- appList.add(AppModel(appName))
- }
-
- return@withContext filterFinancialApp(appList)
- }
-
- private fun filterFinancialApp(appList: List):List{
-// val financialPackage = listOf("com.google.android.youtube", "com.android.chrome", "com.spotify.music", "com.facebook.katana","com.instagram.android", "com.google.android.apps.nbu.paisa.user")
- val financialPackage = listOf("YouTube", "Chrome", "Spotify", "Facebook","Instagram", "Google","WhatsApp","GPay","Amazon","Gmail")
- return appList.filter { app -> financialPackage.any { keyword -> app.appName.contains(keyword, ignoreCase = true) } }
- }
-
- @SuppressLint("Range")
- suspend fun fetchAllContacts(context: Context): List = withContext(Dispatchers.IO) {
- val contactModels = mutableListOf()
- val contentResolver = context.contentResolver
- val uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI
- val selection = null
- val selectionArgs = null
- val sortOrder = "${ContactsContract.Contacts.DISPLAY_NAME_PRIMARY} ASC"
-
- val projection = arrayOf(
- ContactsContract.Contacts._ID,
- ContactsContract.Contacts.DISPLAY_NAME_PRIMARY,
- ContactsContract.CommonDataKinds.Phone.NUMBER
- )
-
- val cursor = contentResolver.query(
- uri,
- projection,
- selection,
- selectionArgs,
- sortOrder
- )
-
- cursor?.use {
- val seenPhoneNumbers = mutableSetOf()
-
- while (it.moveToNext()) {
-// if (contactModels.size<=7) {
- val phoneNumber = it.getString(it.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).replace(" ", "").replace("-", "")
- if (!seenPhoneNumbers.contains(phoneNumber)) {
- val id = it.getString(it.getColumnIndex(ContactsContract.Contacts._ID))
- val name = it.getString(it.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME_PRIMARY))
- contactModels.add(ContactModel(/*id,*/ name, phoneNumber))
- seenPhoneNumbers.add(phoneNumber)
-// }
- }
- }
- }
-
- return@withContext contactModels
- }
-
-
- @SuppressLint("HardwareIds")
- fun getImeiNumber(context: Context?){
- context?.apply {
- val telephonyManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager?
- val imei = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- telephonyManager?.imei
- } else {
- telephonyManager?.deviceId
- }
- }
- }
-
- val genderOption = listOf("Select Gender", "Male", "Female", "Transgender")
-
- /*
- * lifecycleScope.launch {
- compressFile(context,File(data!!.data),true){
- imageView.setImageURI(Uri.fromFile(it))
- }
- }
- * */
- suspend fun compressFile(context: Context?, file: File, showLoader: Boolean = true, onCompress: (File) -> Unit) {
- var loader: LoadingDialog?
- showLoader.takeIf { it }.let {
- loader = LoadingDialog(context as Activity)
- loader?.startLoading()
- }
-
- try {
- "$TAG Original File:- ${file.path}".logD()
- val widthHeight = getImageWidthOrHeight(Uri.parse(file.toString()))
- "$TAG Original File, Width:-${widthHeight.first}, Height:-${widthHeight.second}".logD()
- val outputPath: File? = FileUtil.getDestinationCompressImageFilePath(context, file)
-
- Compressor.compress(context!!, file) {
- resolution(
- if (widthHeight.first != 0) widthHeight.first else 1280,
- if (widthHeight.second != 0) widthHeight.second else 720
- )
- outputPath?.let {
- destination(it)
- }
- }.also {
- "$TAG Compress File:- ${it.path}".logD()
- "$TAG Compress File, Size:-${it.length()}, FormatSize:-${it.length().formatSize()}, Image Quality".logD()
- onCompressImage(it,loader, onCompress)
- }
-
- } catch (e: IOException) {
- "$TAG IOException, onCompress File ${e.message}".logD()
- onCompressImage(file, loader, onCompress)
- }catch (e: OutOfMemoryError) {
- "$TAG OutOfMemoryError, onCompress File ${e.message}".logD()
- onCompressImage(file, loader, onCompress)
- } catch (e: Exception) {
- "$TAG Exception, onCompress File ${e.message}".logD()
- onCompressImage(file, loader, onCompress)
- }
- }
-
- private fun onCompressImage(cropFile: File, loader: LoadingDialog?, onCompress: (File) -> Unit) {
- loader?.isDismiss()
- onCompress.invoke(cropFile)
- }
-
- private fun getImageWidthOrHeight(uri: Uri): Pair {
- val options: BitmapFactory.Options = BitmapFactory.Options()
- options.inJustDecodeBounds = true
- BitmapFactory.decodeFile(uri.path?.let { File(it).absolutePath }, options)
- val imageHeight: Int = options.outHeight
- val imageWidth: Int = options.outWidth
- return Pair(imageWidth, imageHeight)
- }
-
- private fun log(fileLength: Long, quality: Int): Int {
- "$TAG Original File, Size:-${fileLength}, FormatSize:-${fileLength.formatSize()}, Image Quality, $quality".logD()
- return quality
- }
-
- private fun Long.formatSize(): String {
- if (this <= 0) return "0"
- val units = arrayOf("Bytes", "KB", "MB", "GB", "TB")
- val digitGroups = (log10(this.toDouble()) / log10(1024.0)).toInt()
- return DecimalFormat("#,##0.#").format(this / 1024.0.pow(digitGroups.toDouble()))
- .toString() + " " + units[digitGroups]
- }
-
- fun Context.loadImage(
- image: Any?,
- imageView: ImageView,
- requestOptions: RequestOptions? = null,
- ) {
- requestOptions?.let {
- Glide.with(this)
- .applyDefaultRequestOptions(it)
- .load(image)
- .into(imageView)
- }?: kotlin.run {
- Glide.with(this)
- .load(image)
- .into(imageView)
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/MethodMasterOld.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/MethodMasterOld.kt
deleted file mode 100644
index 2dd3039..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/MethodMasterOld.kt
+++ /dev/null
@@ -1,304 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import android.annotation.SuppressLint
-import android.app.Activity
-import android.content.Context
-import android.content.Context.TELEPHONY_SERVICE
-import android.content.Intent
-import android.graphics.BitmapFactory
-import android.net.Uri
-import android.os.Build
-import android.provider.ContactsContract
-import android.telephony.TelephonyManager
-import android.view.View
-import android.widget.ImageView
-import android.widget.ProgressBar
-import android.widget.Toast
-import androidx.biometric.BiometricManager
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.engine.DiskCacheStrategy
-import com.bumptech.glide.request.RequestOptions
-import com.example.infuxion_alternate.LoadingDialog
-import com.example.infuxion_alternate.model.ContactModel
-import com.example.infuxion_alternate.model.SmsModel
-import id.zelory.compressor.Compressor
-import id.zelory.compressor.constraint.destination
-import id.zelory.compressor.constraint.resolution
-import kotlinx.coroutines.*
-import java.io.File
-import java.io.IOException
-import java.text.DecimalFormat
-import kotlin.math.log10
-import kotlin.math.pow
-
-
-object MethodMasterOld {
-
- private const val TAG = "MethodMaster"
-
- fun View.show() {
- visibility = View.VISIBLE
- }
-
- fun View.hide() {
- visibility = View.GONE
- }
-
- fun biometricIsWorkOrNot(
- context: Context?,
- callbacks: ((isWorking: Boolean, hasFingerprintLockAvailable: Boolean, message: String) -> Unit)
- ) {
- context?.let { activity ->
- val biometricManager: BiometricManager = BiometricManager.from(activity)
- when (biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG)) {
- BiometricManager.BIOMETRIC_SUCCESS -> {
- "Biometric, Biometric has Available".logD()
- callbacks.invoke(true, true, "Biometric has Available")
- }
- BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE -> {
- "Biometric, Biometric Authentication currently unavailable".logD()
- callbacks.invoke(false, false, "Biometric Authentication currently unavailable")
- }
- BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> {
- "Biometric, Your device doesn't support Biometric Authentication".logD()
- callbacks.invoke(
- false,
- false,
- "Your device doesn't support Biometric Authentication"
- )
- }
- BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> {
- "Biometric, Your device doesn't have any fingerprint enrolled".logD()
- callbacks.invoke(
- true,
- false,
- "Your device doesn't have any fingerprint enrolled"
- )
- }
- BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED -> {
- "Biometric, Your device have security update required".logD()
- callbacks.invoke(false, false, "Your device have security update required")
- }
- BiometricManager.BIOMETRIC_ERROR_UNSUPPORTED -> {
- "Biometric, Biometric unsupported".logD()
- callbacks.invoke(false, false, "Biometric unsupported")
- }
- BiometricManager.BIOMETRIC_STATUS_UNKNOWN -> {
- "Biometric, Biometric status unknown".logD()
- callbacks.invoke(false, false, "Biometric status unknown")
- }
- }
- }
- }
-
- fun checkLockIsEnable(tinyDB: TinyDB?): Boolean {
- return tinyDB?.getBoolean(AppConstant.Prefs.SHOW_PIN_LOCK) == true
- }
-
- fun showToast(context: Context? = null, msg: String?=null, dur: Int = Toast.LENGTH_SHORT) {
- context?.takeIf { msg?.isNotEmpty() == true }?.apply {
- Toast.makeText(this, msg, dur).show()
- }
- }
-
- suspend fun getAllSmsMessages(context: Context?): List = withContext(Dispatchers.IO) {
- val smsList = mutableListOf()
- val contentResolver = context?.contentResolver
- val uri = Uri.parse("content://sms/inbox")
- val cursor = contentResolver?.query(uri, null, null, null, null)
-
- cursor?.apply {
- if (moveToFirst()) {
- do {
- val id = getString(getColumnIndexOrThrow("_id"))
- val threadId = getString(getColumnIndexOrThrow("thread_id"))
- val phoneNumber = getString(getColumnIndexOrThrow("address"))
- val body = getString(getColumnIndexOrThrow("body"))
- val readState =getString(getColumnIndexOrThrow("read"))
- val timestamp = getString(getColumnIndexOrThrow("date"))
- val type = if (getString(getColumnIndexOrThrow("type")).contains("1")) "inbox" else "sent"
-
- smsList.add(SmsModel(/*id,threadId,phoneNumber,*/ body/*,readState, timestamp,type*/))
- } while (moveToNext())
-
- close()
- }
- }
-
- return@withContext filterFinancialMessages(smsList)
- }
-
- private fun filterFinancialMessages(smsList: List): List {
-// val financialKeywords = listOf("balance", "transaction", "credit card", "debit card", "ATM", "bank", "interest", "loan")
- val financialKeywords = listOf("shopping", "airtel", "recharge", "disney", "xstream")
- return smsList.filter { sms -> financialKeywords.any { keyword -> sms.body.contains(keyword, ignoreCase = true) } }
- }
-
- suspend fun getAllInstalledApps(context: Context): List> = withContext(Dispatchers.IO) {
- val packageManager = context.packageManager
- val intent = Intent(Intent.ACTION_MAIN, null)
- intent.addCategory(Intent.CATEGORY_LAUNCHER)
- val resolveInfoList = packageManager.queryIntentActivities(intent, 0)
- val appList = mutableListOf>()
-
- for (resolveInfo in resolveInfoList) {
- val appName = resolveInfo.loadLabel(packageManager).toString()
- val packageName = resolveInfo.activityInfo.packageName
- appList.add(Pair(appName, packageName))
- }
-
- return@withContext filterFinancialApp(appList)
- }
-
- private fun filterFinancialApp(appList: List>):List>{
- val financialPackage = listOf("com.google.android.youtube", "com.android.chrome", "com.spotify.music", "com.facebook.katana","com.instagram.android", "com.google.android.apps.nbu.paisa.user")
- return appList.filter { app -> financialPackage.any { keyword -> app.second.contains(keyword, ignoreCase = true) } }
- }
-
- @SuppressLint("Range")
- suspend fun fetchAllContacts(context: Context): List = withContext(Dispatchers.IO) {
- val contactModels = mutableListOf()
- val contentResolver = context.contentResolver
- val uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI
- val selection = null
- val selectionArgs = null
- val sortOrder = "${ContactsContract.Contacts.DISPLAY_NAME_PRIMARY} ASC"
-
- val projection = arrayOf(
- ContactsContract.Contacts._ID,
- ContactsContract.Contacts.DISPLAY_NAME_PRIMARY,
- ContactsContract.CommonDataKinds.Phone.NUMBER
- )
-
- val cursor = contentResolver.query(
- uri,
- projection,
- selection,
- selectionArgs,
- sortOrder
- )
-
- cursor?.use {
- val seenPhoneNumbers = mutableSetOf()
-
- while (it.moveToNext()) {
- if (contactModels.size<=7) {
- val phoneNumber = it.getString(it.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).replace(" ", "").replace("-", "")
- if (!seenPhoneNumbers.contains(phoneNumber)) {
- val id = it.getString(it.getColumnIndex(ContactsContract.Contacts._ID))
- val name = it.getString(it.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME_PRIMARY))
- contactModels.add(ContactModel(/*id,*/ name, phoneNumber))
- seenPhoneNumbers.add(phoneNumber)
- }
- }
- }
- }
-
- return@withContext contactModels
- }
-
-
- @SuppressLint("HardwareIds")
- fun getImeiNumber(context: Context?){
- context?.apply {
- val telephonyManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager?
- val imei = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- telephonyManager?.imei
- } else {
- telephonyManager?.deviceId
- }
- }
- }
-
- val genderOption = listOf("Select Gender", "Male", "Female", "Transgender")
-
- /*
- * lifecycleScope.launch {
- compressFile(context,File(data!!.data),true){
- imageView.setImageURI(Uri.fromFile(it))
- }
- }
- * */
- suspend fun compressFile(context: Context?, file: File, showLoader: Boolean = true, onCompress: (File) -> Unit) {
- var loader: LoadingDialog?
- showLoader.takeIf { it }.let {
- loader = LoadingDialog(context as Activity)
- loader?.startLoading()
- }
-
- try {
- "$TAG Original File:- ${file.path}".logD()
- val widthHeight = getImageWidthOrHeight(Uri.parse(file.toString()))
- "$TAG Original File, Width:-${widthHeight.first}, Height:-${widthHeight.second}".logD()
- val outputPath: File? = FileUtil.getDestinationCompressImageFilePath(context, file)
-
- Compressor.compress(context!!, file) {
- resolution(
- if (widthHeight.first != 0) widthHeight.first else 1280,
- if (widthHeight.second != 0) widthHeight.second else 720
- )
- outputPath?.let {
- destination(it)
- }
- }.also {
- "$TAG Compress File:- ${it.path}".logD()
- "$TAG Compress File, Size:-${it.length()}, FormatSize:-${it.length().formatSize()}, Image Quality".logD()
- onCompressImage(it,loader, onCompress)
- }
-
- } catch (e: IOException) {
- "$TAG IOException, onCompress File ${e.message}".logD()
- onCompressImage(file, loader, onCompress)
- }catch (e: OutOfMemoryError) {
- "$TAG OutOfMemoryError, onCompress File ${e.message}".logD()
- onCompressImage(file, loader, onCompress)
- } catch (e: Exception) {
- "$TAG Exception, onCompress File ${e.message}".logD()
- onCompressImage(file, loader, onCompress)
- }
- }
-
- private fun onCompressImage(cropFile: File, loader: LoadingDialog?, onCompress: (File) -> Unit) {
- loader?.isDismiss()
- onCompress.invoke(cropFile)
- }
-
- private fun getImageWidthOrHeight(uri: Uri): Pair {
- val options: BitmapFactory.Options = BitmapFactory.Options()
- options.inJustDecodeBounds = true
- BitmapFactory.decodeFile(uri.path?.let { File(it).absolutePath }, options)
- val imageHeight: Int = options.outHeight
- val imageWidth: Int = options.outWidth
- return Pair(imageWidth, imageHeight)
- }
-
- private fun log(fileLength: Long, quality: Int): Int {
- "$TAG Original File, Size:-${fileLength}, FormatSize:-${fileLength.formatSize()}, Image Quality, $quality".logD()
- return quality
- }
-
- private fun Long.formatSize(): String {
- if (this <= 0) return "0"
- val units = arrayOf("Bytes", "KB", "MB", "GB", "TB")
- val digitGroups = (log10(this.toDouble()) / log10(1024.0)).toInt()
- return DecimalFormat("#,##0.#").format(this / 1024.0.pow(digitGroups.toDouble()))
- .toString() + " " + units[digitGroups]
- }
-
- fun Context.loadImage(
- image: Any?,
- imageView: ImageView,
- requestOptions: RequestOptions? = null,
- ) {
- requestOptions?.let {
- Glide.with(this)
- .applyDefaultRequestOptions(it)
- .load(image)
- .into(imageView)
- }?: kotlin.run {
- Glide.with(this)
- .load(image)
- .into(imageView)
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/NetworkUtil.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/NetworkUtil.kt
deleted file mode 100644
index d80e4f6..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/NetworkUtil.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import android.content.Context
-import android.provider.Settings
-
-object NetworkUtil {
- private val TAG = NetworkUtil::class.java.simpleName
-
- fun isInFlightMode(context: Context): Boolean {
- return Settings.Global.getInt(
- context.contentResolver,
- Settings.Global.AIRPLANE_MODE_ON,
- 0
- ) != 0
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/TinyDB.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/TinyDB.kt
deleted file mode 100644
index 050035d..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/TinyDB.kt
+++ /dev/null
@@ -1,299 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import android.content.Context
-import android.content.SharedPreferences
-import android.text.TextUtils
-import java.lang.NullPointerException
-import java.lang.NumberFormatException
-import java.util.*
-
-class TinyDB(appContext: Context) {
- private val context: Context
- private val preferences: SharedPreferences = appContext.getSharedPreferences("tempPref", Context.MODE_PRIVATE)
-
- /**
- * Get int value from SharedPreferences at 'key'. If key not found, return 0
- * @param key SharedPreferences key
- * @return int value at 'key' or 0 if key not found
- */
- fun getInt(key: String?): Int {
- return preferences.getInt(key, 0)
- }
-
- /**
- * Get parsed ArrayList of Integers from SharedPreferences at 'key'
- * @param key SharedPreferences key
- * @return ArrayList of Integers
- */
- fun getListInt(key: String?): ArrayList {
- val myList = TextUtils.split(preferences.getString(key, ""), "‚‗‚")
- val arrayToList = ArrayList(Arrays.asList(*myList))
- val newList = ArrayList()
- for (item in arrayToList) newList.add(item.toInt())
- return newList
- }
-
- /**
- * Get long value from SharedPreferences at 'key'. If key not found, return 0
- * @param key SharedPreferences key
- * @return long value at 'key' or 0 if key not found
- */
- fun getLong(key: String?): Long {
- return preferences.getLong(key, 0)
- }
-
- /**
- * Get float value from SharedPreferences at 'key'. If key not found, return 0
- * @param key SharedPreferences key
- * @return float value at 'key' or 0 if key not found
- */
- fun getFloat(key: String?): Float {
- return preferences.getFloat(key, 0f)
- }
-
- /**
- * Get double value from SharedPreferences at 'key'. If exception thrown, return 0
- * @param key SharedPreferences key
- * @return double value at 'key' or 0 if exception is thrown
- */
- fun getDouble(key: String?): Double {
- val number = getString(key)
- return try {
- number!!.toDouble()
- } catch (e: NumberFormatException) {
- 0.toDouble()
- }
- }
-
- /**
- * Get parsed ArrayList of Double from SharedPreferences at 'key'
- * @param key SharedPreferences key
- * @return ArrayList of Double
- */
- fun getListDouble(key: String?): ArrayList {
- val myList = TextUtils.split(preferences.getString(key, ""), "‚‗‚")
- val arrayToList = ArrayList(Arrays.asList(*myList))
- val newList = ArrayList()
- for (item in arrayToList) newList.add(item.toDouble())
- return newList
- }
-
- /**
- * Get parsed ArrayList of Integers from SharedPreferences at 'key'
- * @param key SharedPreferences key
- * @return ArrayList of Longs
- */
- fun getListLong(key: String?): ArrayList {
- val myList = TextUtils.split(preferences.getString(key, ""), "‚‗‚")
- val arrayToList = ArrayList(Arrays.asList(*myList))
- val newList = ArrayList()
- for (item in arrayToList) newList.add(item.toLong())
- return newList
- }
-
- /**
- * Get String value from SharedPreferences at 'key'. If key not found, return ""
- * @param key SharedPreferences key
- * @return String value at 'key' or "" (empty String) if key not found
- */
- fun getString(key: String?): String? {
- return preferences.getString(key, "")
- }
-
- /**
- * Get parsed ArrayList of String from SharedPreferences at 'key'
- * @param key SharedPreferences key
- * @return ArrayList of String
- */
- fun getListString(key: String?): ArrayList {
- return ArrayList(Arrays.asList(*TextUtils.split(preferences.getString(key, ""), "‚‗‚")))
- }
-
- /**
- * Get boolean value from SharedPreferences at 'key'. If key not found, return false
- * @param key SharedPreferences key
- * @return boolean value at 'key' or false if key not found
- */
- fun getBoolean(key: String?): Boolean {
- return preferences.getBoolean(key, false)
- }
-
- /**
- * Get parsed ArrayList of Boolean from SharedPreferences at 'key'
- * @param key SharedPreferences key
- * @return ArrayList of Boolean
- */
- fun getListBoolean(key: String?): ArrayList {
- val myList = getListString(key)
- val newList = ArrayList()
- for (item in myList) {
- if (item == "true") {
- newList.add(true)
- } else {
- newList.add(false)
- }
- }
- return newList
- }
-
- /**
- * Put int value into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param value int value to be added
- */
- fun putInt(key: String?, value: Int) {
- checkForNullKey(key)
- preferences.edit().putInt(key, value).apply()
- }
-
- /**
- * Put ArrayList of Integer into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param intList ArrayList of Integer to be added
- */
- fun putListInt(key: String?, intList: ArrayList) {
- checkForNullKey(key)
- val myIntList = intList.toTypedArray()
- preferences.edit().putString(key, TextUtils.join("‚‗‚", myIntList)).apply()
- }
-
- /**
- * Put long value into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param value long value to be added
- */
- fun putLong(key: String?, value: Long) {
- checkForNullKey(key)
- preferences.edit().putLong(key, value).apply()
- }
-
- /**
- * Put ArrayList of Long into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param longList ArrayList of Long to be added
- */
- fun putListLong(key: String?, longList: ArrayList) {
- checkForNullKey(key)
- val myLongList = longList.toTypedArray()
- preferences.edit().putString(key, TextUtils.join("‚‗‚", myLongList)).apply()
- }
-
- /**
- * Put float value into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param value float value to be added
- */
- fun putFloat(key: String?, value: Float) {
- checkForNullKey(key)
- preferences.edit().putFloat(key, value).apply()
- }
-
- /**
- * Put double value into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param value double value to be added
- */
- fun putDouble(key: String?, value: Double) {
- checkForNullKey(key)
- putString(key, value.toString())
- }
-
- /**
- * Put ArrayList of Double into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param doubleList ArrayList of Double to be added
- */
- fun putListDouble(key: String?, doubleList: ArrayList) {
- checkForNullKey(key)
- val myDoubleList = doubleList.toTypedArray()
- preferences.edit().putString(key, TextUtils.join("‚‗‚", myDoubleList)).apply()
- }
-
- /**
- * Put String value into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param value String value to be added
- */
- fun putString(key: String?, value: String?) {
- checkForNullKey(key)
- checkForNullValue(value)
- preferences.edit().putString(key, value).apply()
- }
-
- /**
- * Put ArrayList of String into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param stringList ArrayList of String to be added
- */
- fun putListString(key: String?, stringList: ArrayList) {
- checkForNullKey(key)
- val myStringList = stringList.toTypedArray()
- preferences.edit().putString(key, TextUtils.join("‚‗‚", myStringList)).apply()
- }
-
- /**
- * Put boolean value into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param value boolean value to be added
- */
- fun putBoolean(key: String?, value: Boolean) {
- checkForNullKey(key)
- preferences.edit().putBoolean(key, value).apply()
- }
-
- /**
- * Put ArrayList of Boolean into SharedPreferences with 'key' and save
- * @param key SharedPreferences key
- * @param boolList ArrayList of Boolean to be added
- */
- fun putListBoolean(key: String?, boolList: ArrayList) {
- checkForNullKey(key)
- val newList = ArrayList()
- for (item in boolList) {
- if (item) {
- newList.add("true")
- } else {
- newList.add("false")
- }
- }
- putListString(key, newList)
- }
- /**
- * Remove SharedPreferences item with 'key'
- * @param key SharedPreferences key
- */
- fun remove(key: String?) {
- preferences.edit().remove(key).apply()
- }
-
- /**
- * Clear SharedPreferences (remove everything)
- */
- fun clear() {
- preferences.edit().clear().apply()
- }
-
- /**
- * null keys would corrupt the shared pref file and make them unreadable this is a preventive measure
- * @param key the pref key to check
- */
- private fun checkForNullKey(key: String?) {
- if (key == null) {
- throw NullPointerException()
- }
- }
-
- /**
- * null keys would corrupt the shared pref file and make them unreadable this is a preventive measure
- * @param value the pref value to check
- */
- private fun checkForNullValue(value: String?) {
- if (value == null) {
- throw NullPointerException()
- }
- }
-
- init {
- context = appContext
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/example/infuxion_alternate/utils/UriToFile.kt b/android/app/src/main/java/com/example/infuxion_alternate/utils/UriToFile.kt
deleted file mode 100644
index 2191245..0000000
--- a/android/app/src/main/java/com/example/infuxion_alternate/utils/UriToFile.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.example.infuxion_alternate.utils
-
-import android.annotation.SuppressLint
-import android.content.ContentResolver
-import android.content.Context
-import android.net.Uri
-import android.provider.OpenableColumns
-import java.io.File
-import java.io.FileInputStream
-import java.io.FileOutputStream
-
-class UriToFile(context: Context) {
- private val applicationContext = context.applicationContext
- fun getImageBody(imageUri: Uri): File {
- val parcelFileDescriptor = applicationContext.contentResolver.openFileDescriptor(
- imageUri,
- "r",
- null
- )
- val file = File(
- applicationContext.cacheDir,
- applicationContext.contentResolver.getFileName(imageUri)
- )
- val inputStream = FileInputStream(parcelFileDescriptor?.fileDescriptor)
- val outputStream = FileOutputStream(file)
- inputStream.copyTo(outputStream)
- return file
- }
-
- @SuppressLint("Range")
- fun ContentResolver.getFileName(uri: Uri): String {
- var name = ""
- val cursor = query(
- uri, null, null,
- null, null
- )
- cursor?.use {
- it.moveToFirst()
- name = it.getString(it.getColumnIndex(OpenableColumns.DISPLAY_NAME))
- }
- return name
- }
-
-}
diff --git a/android/app/src/main/res/anim/cycle_5.xml b/android/app/src/main/res/anim/cycle_5.xml
deleted file mode 100644
index 291e399..0000000
--- a/android/app/src/main/res/anim/cycle_5.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/anim/fade_in.xml b/android/app/src/main/res/anim/fade_in.xml
deleted file mode 100644
index 40c7bbf..0000000
--- a/android/app/src/main/res/anim/fade_in.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/anim/shake.xml b/android/app/src/main/res/anim/shake.xml
deleted file mode 100644
index 4b00c82..0000000
--- a/android/app/src/main/res/anim/shake.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index 2b068d1..0000000
--- a/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable-v24/icon.png b/android/app/src/main/res/drawable-v24/icon.png
deleted file mode 100644
index 9d9b765..0000000
Binary files a/android/app/src/main/res/drawable-v24/icon.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-v24/icon_new.png b/android/app/src/main/res/drawable-v24/icon_new.png
deleted file mode 100644
index 7ac3058..0000000
Binary files a/android/app/src/main/res/drawable-v24/icon_new.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-v24/zicon.png b/android/app/src/main/res/drawable-v24/zicon.png
deleted file mode 100644
index 7e77958..0000000
Binary files a/android/app/src/main/res/drawable-v24/zicon.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/abstract_rotated.png b/android/app/src/main/res/drawable/abstract_rotated.png
deleted file mode 100644
index 093c2bb..0000000
Binary files a/android/app/src/main/res/drawable/abstract_rotated.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/activity_register_ns.xml b/android/app/src/main/res/drawable/activity_register_ns.xml
deleted file mode 100644
index e97438a..0000000
--- a/android/app/src/main/res/drawable/activity_register_ns.xml
+++ /dev/null
@@ -1,572 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/allow_permission.png b/android/app/src/main/res/drawable/allow_permission.png
deleted file mode 100644
index 8fe5cb8..0000000
Binary files a/android/app/src/main/res/drawable/allow_permission.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/app_installed.png b/android/app/src/main/res/drawable/app_installed.png
deleted file mode 100644
index 5f9c1d4..0000000
Binary files a/android/app/src/main/res/drawable/app_installed.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/back_round.xml b/android/app/src/main/res/drawable/back_round.xml
deleted file mode 100644
index bba678b..0000000
--- a/android/app/src/main/res/drawable/back_round.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/baseline_celebration_24.xml b/android/app/src/main/res/drawable/baseline_celebration_24.xml
deleted file mode 100644
index b75e874..0000000
--- a/android/app/src/main/res/drawable/baseline_celebration_24.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/bg_blue_gradient_circle.xml b/android/app/src/main/res/drawable/bg_blue_gradient_circle.xml
deleted file mode 100644
index 21d5a3a..0000000
--- a/android/app/src/main/res/drawable/bg_blue_gradient_circle.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/bg_light_violet_corner_10.xml b/android/app/src/main/res/drawable/bg_light_violet_corner_10.xml
deleted file mode 100644
index 502a02f..0000000
--- a/android/app/src/main/res/drawable/bg_light_violet_corner_10.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/bg_violet_corner_10.xml b/android/app/src/main/res/drawable/bg_violet_corner_10.xml
deleted file mode 100644
index bb39aa0..0000000
--- a/android/app/src/main/res/drawable/bg_violet_corner_10.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/btn_primary.xml b/android/app/src/main/res/drawable/btn_primary.xml
deleted file mode 100644
index 856c08c..0000000
--- a/android/app/src/main/res/drawable/btn_primary.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/btn_secondary.xml b/android/app/src/main/res/drawable/btn_secondary.xml
deleted file mode 100644
index a2e4615..0000000
--- a/android/app/src/main/res/drawable/btn_secondary.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/camera.png b/android/app/src/main/res/drawable/camera.png
deleted file mode 100644
index 01479f9..0000000
Binary files a/android/app/src/main/res/drawable/camera.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/checked_image.png b/android/app/src/main/res/drawable/checked_image.png
deleted file mode 100644
index 0f9d740..0000000
Binary files a/android/app/src/main/res/drawable/checked_image.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/contact.png b/android/app/src/main/res/drawable/contact.png
deleted file mode 100644
index 4760e73..0000000
Binary files a/android/app/src/main/res/drawable/contact.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/creadit_score.png b/android/app/src/main/res/drawable/creadit_score.png
deleted file mode 100644
index 8315c30..0000000
Binary files a/android/app/src/main/res/drawable/creadit_score.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/custom_check.xml b/android/app/src/main/res/drawable/custom_check.xml
deleted file mode 100644
index cbdaed4..0000000
--- a/android/app/src/main/res/drawable/custom_check.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/custom_circle.xml b/android/app/src/main/res/drawable/custom_circle.xml
deleted file mode 100644
index 1207a4a..0000000
--- a/android/app/src/main/res/drawable/custom_circle.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/custom_radio_button_checked.xml b/android/app/src/main/res/drawable/custom_radio_button_checked.xml
deleted file mode 100644
index 5f30000..0000000
--- a/android/app/src/main/res/drawable/custom_radio_button_checked.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/custom_radio_button_selector.xml b/android/app/src/main/res/drawable/custom_radio_button_selector.xml
deleted file mode 100644
index ffa40c0..0000000
--- a/android/app/src/main/res/drawable/custom_radio_button_selector.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/custom_radio_button_unchecked.xml b/android/app/src/main/res/drawable/custom_radio_button_unchecked.xml
deleted file mode 100644
index 67d36d9..0000000
--- a/android/app/src/main/res/drawable/custom_radio_button_unchecked.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/customersuccess.png b/android/app/src/main/res/drawable/customersuccess.png
deleted file mode 100644
index 723fa7f..0000000
Binary files a/android/app/src/main/res/drawable/customersuccess.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/data_privacy.png b/android/app/src/main/res/drawable/data_privacy.png
deleted file mode 100644
index 2665576..0000000
Binary files a/android/app/src/main/res/drawable/data_privacy.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/data_security.png b/android/app/src/main/res/drawable/data_security.png
deleted file mode 100644
index 440d617..0000000
Binary files a/android/app/src/main/res/drawable/data_security.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/data_storage.png b/android/app/src/main/res/drawable/data_storage.png
deleted file mode 100644
index 1660516..0000000
Binary files a/android/app/src/main/res/drawable/data_storage.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/donut.png b/android/app/src/main/res/drawable/donut.png
deleted file mode 100644
index 1925006..0000000
Binary files a/android/app/src/main/res/drawable/donut.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/edit_circle.xml b/android/app/src/main/res/drawable/edit_circle.xml
deleted file mode 100644
index 3bad20c..0000000
--- a/android/app/src/main/res/drawable/edit_circle.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/edit_green.xml b/android/app/src/main/res/drawable/edit_green.xml
deleted file mode 100644
index 80743b9..0000000
--- a/android/app/src/main/res/drawable/edit_green.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/edit_red.xml b/android/app/src/main/res/drawable/edit_red.xml
deleted file mode 100644
index fb328a0..0000000
--- a/android/app/src/main/res/drawable/edit_red.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/edit_text_square_rounded.xml b/android/app/src/main/res/drawable/edit_text_square_rounded.xml
deleted file mode 100644
index b4f6864..0000000
--- a/android/app/src/main/res/drawable/edit_text_square_rounded.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/edit_text_square_rounded_new.xml b/android/app/src/main/res/drawable/edit_text_square_rounded_new.xml
deleted file mode 100644
index e2afa2e..0000000
--- a/android/app/src/main/res/drawable/edit_text_square_rounded_new.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/editext_bg_green.xml b/android/app/src/main/res/drawable/editext_bg_green.xml
deleted file mode 100644
index 799b4e5..0000000
--- a/android/app/src/main/res/drawable/editext_bg_green.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/edittext_bg.xml b/android/app/src/main/res/drawable/edittext_bg.xml
deleted file mode 100644
index 165290e..0000000
--- a/android/app/src/main/res/drawable/edittext_bg.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
diff --git a/android/app/src/main/res/drawable/edittext_bg_green.xml b/android/app/src/main/res/drawable/edittext_bg_green.xml
deleted file mode 100644
index fe0db24..0000000
--- a/android/app/src/main/res/drawable/edittext_bg_green.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/edittext_bg_red.xml b/android/app/src/main/res/drawable/edittext_bg_red.xml
deleted file mode 100644
index 0d279e3..0000000
--- a/android/app/src/main/res/drawable/edittext_bg_red.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/edittext_bg_white.xml b/android/app/src/main/res/drawable/edittext_bg_white.xml
deleted file mode 100644
index 1db55c5..0000000
--- a/android/app/src/main/res/drawable/edittext_bg_white.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/eligibility_card.png b/android/app/src/main/res/drawable/eligibility_card.png
deleted file mode 100644
index a25e090..0000000
Binary files a/android/app/src/main/res/drawable/eligibility_card.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/eligibilityasset.png b/android/app/src/main/res/drawable/eligibilityasset.png
deleted file mode 100644
index d314cad..0000000
Binary files a/android/app/src/main/res/drawable/eligibilityasset.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/email_file.png b/android/app/src/main/res/drawable/email_file.png
deleted file mode 100644
index 0aeac71..0000000
Binary files a/android/app/src/main/res/drawable/email_file.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/exit.png b/android/app/src/main/res/drawable/exit.png
deleted file mode 100644
index 77d2e90..0000000
Binary files a/android/app/src/main/res/drawable/exit.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/fingure_tap.png b/android/app/src/main/res/drawable/fingure_tap.png
deleted file mode 100644
index ae9155e..0000000
Binary files a/android/app/src/main/res/drawable/fingure_tap.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/glass_card.png b/android/app/src/main/res/drawable/glass_card.png
deleted file mode 100644
index 8a2241f..0000000
Binary files a/android/app/src/main/res/drawable/glass_card.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/ic_allowtick.xml b/android/app/src/main/res/drawable/ic_allowtick.xml
deleted file mode 100644
index a7c05be..0000000
--- a/android/app/src/main/res/drawable/ic_allowtick.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_arr.xml b/android/app/src/main/res/drawable/ic_arr.xml
deleted file mode 100644
index df2594c..0000000
--- a/android/app/src/main/res/drawable/ic_arr.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_arrowbottom.xml b/android/app/src/main/res/drawable/ic_arrowbottom.xml
deleted file mode 100644
index de38465..0000000
--- a/android/app/src/main/res/drawable/ic_arrowbottom.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_askregister.xml b/android/app/src/main/res/drawable/ic_askregister.xml
deleted file mode 100644
index 5274bf0..0000000
--- a/android/app/src/main/res/drawable/ic_askregister.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_back.xml b/android/app/src/main/res/drawable/ic_back.xml
deleted file mode 100644
index 8d2db26..0000000
--- a/android/app/src/main/res/drawable/ic_back.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_background.xml b/android/app/src/main/res/drawable/ic_background.xml
deleted file mode 100644
index a23ac84..0000000
--- a/android/app/src/main/res/drawable/ic_background.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_bankgrade.xml b/android/app/src/main/res/drawable/ic_bankgrade.xml
deleted file mode 100644
index 4ee4de7..0000000
--- a/android/app/src/main/res/drawable/ic_bankgrade.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_bell.xml b/android/app/src/main/res/drawable/ic_bell.xml
deleted file mode 100644
index 2e1d2d8..0000000
--- a/android/app/src/main/res/drawable/ic_bell.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_card_primary.xml b/android/app/src/main/res/drawable/ic_card_primary.xml
deleted file mode 100644
index b68adb3..0000000
--- a/android/app/src/main/res/drawable/ic_card_primary.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_dashboard.xml b/android/app/src/main/res/drawable/ic_dashboard.xml
deleted file mode 100644
index 3e7bf88..0000000
--- a/android/app/src/main/res/drawable/ic_dashboard.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_dataprivacy.xml b/android/app/src/main/res/drawable/ic_dataprivacy.xml
deleted file mode 100644
index 924d2cc..0000000
--- a/android/app/src/main/res/drawable/ic_dataprivacy.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_datastorage.xml b/android/app/src/main/res/drawable/ic_datastorage.xml
deleted file mode 100644
index d15f59e..0000000
--- a/android/app/src/main/res/drawable/ic_datastorage.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_edit.xml b/android/app/src/main/res/drawable/ic_edit.xml
deleted file mode 100644
index 91ef715..0000000
--- a/android/app/src/main/res/drawable/ic_edit.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_editphoto.xml b/android/app/src/main/res/drawable/ic_editphoto.xml
deleted file mode 100644
index a566d11..0000000
--- a/android/app/src/main/res/drawable/ic_editphoto.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_finger_prints.xml b/android/app/src/main/res/drawable/ic_finger_prints.xml
deleted file mode 100644
index 15abe68..0000000
--- a/android/app/src/main/res/drawable/ic_finger_prints.xml
+++ /dev/null
@@ -1,141 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_flag.xml b/android/app/src/main/res/drawable/ic_flag.xml
deleted file mode 100644
index cadf182..0000000
--- a/android/app/src/main/res/drawable/ic_flag.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_four.xml b/android/app/src/main/res/drawable/ic_four.xml
deleted file mode 100644
index 384389e..0000000
--- a/android/app/src/main/res/drawable/ic_four.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_glass.xml b/android/app/src/main/res/drawable/ic_glass.xml
deleted file mode 100644
index 4365704..0000000
--- a/android/app/src/main/res/drawable/ic_glass.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_history.xml b/android/app/src/main/res/drawable/ic_history.xml
deleted file mode 100644
index 042253b..0000000
--- a/android/app/src/main/res/drawable/ic_history.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_home.xml b/android/app/src/main/res/drawable/ic_home.xml
deleted file mode 100644
index 7a01e84..0000000
--- a/android/app/src/main/res/drawable/ic_home.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_kyc.xml b/android/app/src/main/res/drawable/ic_kyc.xml
deleted file mode 100644
index aa5e59c..0000000
--- a/android/app/src/main/res/drawable/ic_kyc.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_kyc_verified.xml b/android/app/src/main/res/drawable/ic_kyc_verified.xml
deleted file mode 100644
index d9bcd14..0000000
--- a/android/app/src/main/res/drawable/ic_kyc_verified.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_launcher_background.xml b/android/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 07d5da9..0000000
--- a/android/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_lendingpolicy.xml b/android/app/src/main/res/drawable/ic_lendingpolicy.xml
deleted file mode 100644
index 536daab..0000000
--- a/android/app/src/main/res/drawable/ic_lendingpolicy.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_loan.xml b/android/app/src/main/res/drawable/ic_loan.xml
deleted file mode 100644
index 2dca7d1..0000000
--- a/android/app/src/main/res/drawable/ic_loan.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_one.xml b/android/app/src/main/res/drawable/ic_one.xml
deleted file mode 100644
index b615526..0000000
--- a/android/app/src/main/res/drawable/ic_one.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_oone.xml b/android/app/src/main/res/drawable/ic_oone.xml
deleted file mode 100644
index f3fc064..0000000
--- a/android/app/src/main/res/drawable/ic_oone.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_othree.xml b/android/app/src/main/res/drawable/ic_othree.xml
deleted file mode 100644
index 1469674..0000000
--- a/android/app/src/main/res/drawable/ic_othree.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_otpsecurity.xml b/android/app/src/main/res/drawable/ic_otpsecurity.xml
deleted file mode 100644
index 26fd3f0..0000000
--- a/android/app/src/main/res/drawable/ic_otpsecurity.xml
+++ /dev/null
@@ -1,236 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_otwo.xml b/android/app/src/main/res/drawable/ic_otwo.xml
deleted file mode 100644
index b1d2755..0000000
--- a/android/app/src/main/res/drawable/ic_otwo.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_pendingtick.xml b/android/app/src/main/res/drawable/ic_pendingtick.xml
deleted file mode 100644
index 3c5ad1d..0000000
--- a/android/app/src/main/res/drawable/ic_pendingtick.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_pin_backspace.xml b/android/app/src/main/res/drawable/ic_pin_backspace.xml
deleted file mode 100644
index 99a005c..0000000
--- a/android/app/src/main/res/drawable/ic_pin_backspace.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_privacy.xml b/android/app/src/main/res/drawable/ic_privacy.xml
deleted file mode 100644
index 2ea6458..0000000
--- a/android/app/src/main/res/drawable/ic_privacy.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_regularbg.xml b/android/app/src/main/res/drawable/ic_regularbg.xml
deleted file mode 100644
index 233df48..0000000
--- a/android/app/src/main/res/drawable/ic_regularbg.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_saturn.xml b/android/app/src/main/res/drawable/ic_saturn.xml
deleted file mode 100644
index 4e9aa26..0000000
--- a/android/app/src/main/res/drawable/ic_saturn.xml
+++ /dev/null
@@ -1,51491 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_shutter.xml b/android/app/src/main/res/drawable/ic_shutter.xml
deleted file mode 100644
index 2fdf732..0000000
--- a/android/app/src/main/res/drawable/ic_shutter.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/ic_shutter_focused.xml b/android/app/src/main/res/drawable/ic_shutter_focused.xml
deleted file mode 100644
index ede5544..0000000
--- a/android/app/src/main/res/drawable/ic_shutter_focused.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/ic_shutter_normal.xml b/android/app/src/main/res/drawable/ic_shutter_normal.xml
deleted file mode 100644
index d761c3d..0000000
--- a/android/app/src/main/res/drawable/ic_shutter_normal.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/ic_shutter_pressed.xml b/android/app/src/main/res/drawable/ic_shutter_pressed.xml
deleted file mode 100644
index ede5544..0000000
--- a/android/app/src/main/res/drawable/ic_shutter_pressed.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/ic_shutter_selected.xml b/android/app/src/main/res/drawable/ic_shutter_selected.xml
deleted file mode 100644
index 93359f2..0000000
--- a/android/app/src/main/res/drawable/ic_shutter_selected.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/ic_speed.xml b/android/app/src/main/res/drawable/ic_speed.xml
deleted file mode 100644
index b4f9359..0000000
--- a/android/app/src/main/res/drawable/ic_speed.xml
+++ /dev/null
@@ -1,486 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_spinner.xml b/android/app/src/main/res/drawable/ic_spinner.xml
deleted file mode 100644
index ce587f5..0000000
--- a/android/app/src/main/res/drawable/ic_spinner.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_star.xml b/android/app/src/main/res/drawable/ic_star.xml
deleted file mode 100644
index 7cb8581..0000000
--- a/android/app/src/main/res/drawable/ic_star.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_successtick.xml b/android/app/src/main/res/drawable/ic_successtick.xml
deleted file mode 100644
index cf58acb..0000000
--- a/android/app/src/main/res/drawable/ic_successtick.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_wantloan.xml b/android/app/src/main/res/drawable/ic_wantloan.xml
deleted file mode 100644
index 8a4c8ca..0000000
--- a/android/app/src/main/res/drawable/ic_wantloan.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/ic_welcome.xml b/android/app/src/main/res/drawable/ic_welcome.xml
deleted file mode 100644
index a8b86bd..0000000
--- a/android/app/src/main/res/drawable/ic_welcome.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/icon.png b/android/app/src/main/res/drawable/icon.png
deleted file mode 100644
index 9d9b765..0000000
Binary files a/android/app/src/main/res/drawable/icon.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/icon_new.png b/android/app/src/main/res/drawable/icon_new.png
deleted file mode 100644
index 7ac3058..0000000
Binary files a/android/app/src/main/res/drawable/icon_new.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/input_primary.xml b/android/app/src/main/res/drawable/input_primary.xml
deleted file mode 100644
index 7b5d6be..0000000
--- a/android/app/src/main/res/drawable/input_primary.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/input_square.xml b/android/app/src/main/res/drawable/input_square.xml
deleted file mode 100644
index ff56d49..0000000
--- a/android/app/src/main/res/drawable/input_square.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/kyc_verified.png b/android/app/src/main/res/drawable/kyc_verified.png
deleted file mode 100644
index 161e408..0000000
Binary files a/android/app/src/main/res/drawable/kyc_verified.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/kycfiles.png b/android/app/src/main/res/drawable/kycfiles.png
deleted file mode 100644
index 3402b87..0000000
Binary files a/android/app/src/main/res/drawable/kycfiles.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/kyvverified.png b/android/app/src/main/res/drawable/kyvverified.png
deleted file mode 100644
index 24f9d64..0000000
Binary files a/android/app/src/main/res/drawable/kyvverified.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/lending_policy.png b/android/app/src/main/res/drawable/lending_policy.png
deleted file mode 100644
index 04f5482..0000000
Binary files a/android/app/src/main/res/drawable/lending_policy.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/location.png b/android/app/src/main/res/drawable/location.png
deleted file mode 100644
index 729d35a..0000000
Binary files a/android/app/src/main/res/drawable/location.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/manwithphone.png b/android/app/src/main/res/drawable/manwithphone.png
deleted file mode 100644
index c36f075..0000000
Binary files a/android/app/src/main/res/drawable/manwithphone.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/menu.xml b/android/app/src/main/res/drawable/menu.xml
deleted file mode 100644
index aa0e3a7..0000000
--- a/android/app/src/main/res/drawable/menu.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/money.png b/android/app/src/main/res/drawable/money.png
deleted file mode 100644
index e5cd534..0000000
Binary files a/android/app/src/main/res/drawable/money.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/moneybag.png b/android/app/src/main/res/drawable/moneybag.png
deleted file mode 100644
index f0c3b9e..0000000
Binary files a/android/app/src/main/res/drawable/moneybag.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/mountain.png b/android/app/src/main/res/drawable/mountain.png
deleted file mode 100644
index 2d6f3c3..0000000
Binary files a/android/app/src/main/res/drawable/mountain.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/msb0.png b/android/app/src/main/res/drawable/msb0.png
deleted file mode 100644
index 0b8e277..0000000
Binary files a/android/app/src/main/res/drawable/msb0.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/msb1.png b/android/app/src/main/res/drawable/msb1.png
deleted file mode 100644
index 7c65258..0000000
Binary files a/android/app/src/main/res/drawable/msb1.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/msb2.png b/android/app/src/main/res/drawable/msb2.png
deleted file mode 100644
index c95c6c1..0000000
Binary files a/android/app/src/main/res/drawable/msb2.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/msb3.png b/android/app/src/main/res/drawable/msb3.png
deleted file mode 100644
index 52a29de..0000000
Binary files a/android/app/src/main/res/drawable/msb3.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/msb4.png b/android/app/src/main/res/drawable/msb4.png
deleted file mode 100644
index 895883c..0000000
Binary files a/android/app/src/main/res/drawable/msb4.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/msb5.png b/android/app/src/main/res/drawable/msb5.png
deleted file mode 100644
index ac3fa08..0000000
Binary files a/android/app/src/main/res/drawable/msb5.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/msb6.png b/android/app/src/main/res/drawable/msb6.png
deleted file mode 100644
index 4cf68e8..0000000
Binary files a/android/app/src/main/res/drawable/msb6.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/neosaturn.png b/android/app/src/main/res/drawable/neosaturn.png
deleted file mode 100644
index d540cac..0000000
Binary files a/android/app/src/main/res/drawable/neosaturn.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/otp.xml b/android/app/src/main/res/drawable/otp.xml
deleted file mode 100644
index 97f6887..0000000
--- a/android/app/src/main/res/drawable/otp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/primary_gradient.xml b/android/app/src/main/res/drawable/primary_gradient.xml
deleted file mode 100644
index c0af216..0000000
--- a/android/app/src/main/res/drawable/primary_gradient.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/res/drawable/progressbarcustom.xml b/android/app/src/main/res/drawable/progressbarcustom.xml
deleted file mode 100644
index b014157..0000000
--- a/android/app/src/main/res/drawable/progressbarcustom.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/register_ask.webp b/android/app/src/main/res/drawable/register_ask.webp
deleted file mode 100644
index 2548992..0000000
Binary files a/android/app/src/main/res/drawable/register_ask.webp and /dev/null differ
diff --git a/android/app/src/main/res/drawable/register_saying_hellow.png b/android/app/src/main/res/drawable/register_saying_hellow.png
deleted file mode 100644
index 9deb647..0000000
Binary files a/android/app/src/main/res/drawable/register_saying_hellow.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/regorapptour.jpg b/android/app/src/main/res/drawable/regorapptour.jpg
deleted file mode 100644
index 1c232ce..0000000
Binary files a/android/app/src/main/res/drawable/regorapptour.jpg and /dev/null differ
diff --git a/android/app/src/main/res/drawable/repaidbox.xml b/android/app/src/main/res/drawable/repaidbox.xml
deleted file mode 100644
index eba6b3d..0000000
--- a/android/app/src/main/res/drawable/repaidbox.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/rev_black.xml b/android/app/src/main/res/drawable/rev_black.xml
deleted file mode 100644
index 71a3fc7..0000000
--- a/android/app/src/main/res/drawable/rev_black.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/rev_one.xml b/android/app/src/main/res/drawable/rev_one.xml
deleted file mode 100644
index cd6728e..0000000
--- a/android/app/src/main/res/drawable/rev_one.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/secondary_gradient.xml b/android/app/src/main/res/drawable/secondary_gradient.xml
deleted file mode 100644
index 6c80887..0000000
--- a/android/app/src/main/res/drawable/secondary_gradient.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/sms.png b/android/app/src/main/res/drawable/sms.png
deleted file mode 100644
index 69bca61..0000000
Binary files a/android/app/src/main/res/drawable/sms.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/splash_bg.png b/android/app/src/main/res/drawable/splash_bg.png
deleted file mode 100644
index fe8971c..0000000
Binary files a/android/app/src/main/res/drawable/splash_bg.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/switch_icon.xml b/android/app/src/main/res/drawable/switch_icon.xml
deleted file mode 100644
index f36a43a..0000000
--- a/android/app/src/main/res/drawable/switch_icon.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/tnc_doc.png b/android/app/src/main/res/drawable/tnc_doc.png
deleted file mode 100644
index 4e33ccc..0000000
Binary files a/android/app/src/main/res/drawable/tnc_doc.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/transparent.xml b/android/app/src/main/res/drawable/transparent.xml
deleted file mode 100644
index 47ccfaa..0000000
--- a/android/app/src/main/res/drawable/transparent.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/drawable/trophy.png b/android/app/src/main/res/drawable/trophy.png
deleted file mode 100644
index 15fcf5c..0000000
Binary files a/android/app/src/main/res/drawable/trophy.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/video.png b/android/app/src/main/res/drawable/video.png
deleted file mode 100644
index 3fcbc29..0000000
Binary files a/android/app/src/main/res/drawable/video.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/yellowdoc.png b/android/app/src/main/res/drawable/yellowdoc.png
deleted file mode 100644
index f2dc622..0000000
Binary files a/android/app/src/main/res/drawable/yellowdoc.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/zicon.png b/android/app/src/main/res/drawable/zicon.png
deleted file mode 100644
index 7e77958..0000000
Binary files a/android/app/src/main/res/drawable/zicon.png and /dev/null differ
diff --git a/android/app/src/main/res/font/dmsans_bold.ttf b/android/app/src/main/res/font/dmsans_bold.ttf
deleted file mode 100644
index e70172a..0000000
Binary files a/android/app/src/main/res/font/dmsans_bold.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/dmsans_bold_italic.ttf b/android/app/src/main/res/font/dmsans_bold_italic.ttf
deleted file mode 100644
index 8b972ca..0000000
Binary files a/android/app/src/main/res/font/dmsans_bold_italic.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/dmsans_italic.ttf b/android/app/src/main/res/font/dmsans_italic.ttf
deleted file mode 100644
index b965526..0000000
Binary files a/android/app/src/main/res/font/dmsans_italic.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/dmsans_medium.ttf b/android/app/src/main/res/font/dmsans_medium.ttf
deleted file mode 100644
index 71b2277..0000000
Binary files a/android/app/src/main/res/font/dmsans_medium.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/dmsans_medium_italic.ttf b/android/app/src/main/res/font/dmsans_medium_italic.ttf
deleted file mode 100644
index d3293d6..0000000
Binary files a/android/app/src/main/res/font/dmsans_medium_italic.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/dmsans_regular.ttf b/android/app/src/main/res/font/dmsans_regular.ttf
deleted file mode 100644
index cad73f0..0000000
Binary files a/android/app/src/main/res/font/dmsans_regular.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/overpass.xml b/android/app/src/main/res/font/overpass.xml
deleted file mode 100644
index f7ed7a2..0000000
--- a/android/app/src/main/res/font/overpass.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/font/overpass_black.ttf b/android/app/src/main/res/font/overpass_black.ttf
deleted file mode 100644
index bd4eb7d..0000000
Binary files a/android/app/src/main/res/font/overpass_black.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/overpass_bold.ttf b/android/app/src/main/res/font/overpass_bold.ttf
deleted file mode 100644
index a3b2b46..0000000
Binary files a/android/app/src/main/res/font/overpass_bold.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/overpass_extra_bold.ttf b/android/app/src/main/res/font/overpass_extra_bold.ttf
deleted file mode 100644
index f38dc78..0000000
Binary files a/android/app/src/main/res/font/overpass_extra_bold.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/overpass_light.ttf b/android/app/src/main/res/font/overpass_light.ttf
deleted file mode 100644
index e3a2a95..0000000
Binary files a/android/app/src/main/res/font/overpass_light.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/overpass_medium.ttf b/android/app/src/main/res/font/overpass_medium.ttf
deleted file mode 100644
index 84f506f..0000000
Binary files a/android/app/src/main/res/font/overpass_medium.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/overpass_regular.ttf b/android/app/src/main/res/font/overpass_regular.ttf
deleted file mode 100644
index 3b32102..0000000
Binary files a/android/app/src/main/res/font/overpass_regular.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/overpass_semibold.ttf b/android/app/src/main/res/font/overpass_semibold.ttf
deleted file mode 100644
index 71db7c5..0000000
Binary files a/android/app/src/main/res/font/overpass_semibold.ttf and /dev/null differ
diff --git a/android/app/src/main/res/font/overpass_thin.ttf b/android/app/src/main/res/font/overpass_thin.ttf
deleted file mode 100644
index 5733f02..0000000
Binary files a/android/app/src/main/res/font/overpass_thin.ttf and /dev/null differ
diff --git a/android/app/src/main/res/layout/activity_allow_permissions.xml b/android/app/src/main/res/layout/activity_allow_permissions.xml
deleted file mode 100644
index da76c1d..0000000
--- a/android/app/src/main/res/layout/activity_allow_permissions.xml
+++ /dev/null
@@ -1,310 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_allow_permissions_old.xml b/android/app/src/main/res/layout/activity_allow_permissions_old.xml
deleted file mode 100644
index 1c3daa5..0000000
--- a/android/app/src/main/res/layout/activity_allow_permissions_old.xml
+++ /dev/null
@@ -1,460 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_allow_terms_and_conditions.xml b/android/app/src/main/res/layout/activity_allow_terms_and_conditions.xml
deleted file mode 100644
index 1307fea..0000000
--- a/android/app/src/main/res/layout/activity_allow_terms_and_conditions.xml
+++ /dev/null
@@ -1,532 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_app_tour.xml b/android/app/src/main/res/layout/activity_app_tour.xml
deleted file mode 100644
index 9acabe9..0000000
--- a/android/app/src/main/res/layout/activity_app_tour.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_app_tour_ns.xml b/android/app/src/main/res/layout/activity_app_tour_ns.xml
deleted file mode 100644
index 9215447..0000000
--- a/android/app/src/main/res/layout/activity_app_tour_ns.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_camera.xml b/android/app/src/main/res/layout/activity_camera.xml
deleted file mode 100644
index c54ccbb..0000000
--- a/android/app/src/main/res/layout/activity_camera.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_checked_eligibility.xml b/android/app/src/main/res/layout/activity_checked_eligibility.xml
deleted file mode 100644
index d5a7165..0000000
--- a/android/app/src/main/res/layout/activity_checked_eligibility.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_checked_verify.xml b/android/app/src/main/res/layout/activity_checked_verify.xml
deleted file mode 100644
index 1aa319d..0000000
--- a/android/app/src/main/res/layout/activity_checked_verify.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cistomer_information04.xml b/android/app/src/main/res/layout/activity_cistomer_information04.xml
deleted file mode 100644
index b4206ac..0000000
--- a/android/app/src/main/res/layout/activity_cistomer_information04.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_confirm_disbursement.xml b/android/app/src/main/res/layout/activity_confirm_disbursement.xml
deleted file mode 100644
index 813ba67..0000000
--- a/android/app/src/main/res/layout/activity_confirm_disbursement.xml
+++ /dev/null
@@ -1,324 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_info_success.xml b/android/app/src/main/res/layout/activity_cust_info_success.xml
deleted file mode 100644
index 13caabe..0000000
--- a/android/app/src/main/res/layout/activity_cust_info_success.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_information04.xml b/android/app/src/main/res/layout/activity_cust_information04.xml
deleted file mode 100644
index 6ff3836..0000000
--- a/android/app/src/main/res/layout/activity_cust_information04.xml
+++ /dev/null
@@ -1,816 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_information05.xml b/android/app/src/main/res/layout/activity_cust_information05.xml
deleted file mode 100644
index 5d357e6..0000000
--- a/android/app/src/main/res/layout/activity_cust_information05.xml
+++ /dev/null
@@ -1,310 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-=
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_otp.xml b/android/app/src/main/res/layout/activity_cust_otp.xml
deleted file mode 100644
index d47090a..0000000
--- a/android/app/src/main/res/layout/activity_cust_otp.xml
+++ /dev/null
@@ -1,241 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_otpthree.xml b/android/app/src/main/res/layout/activity_cust_otpthree.xml
deleted file mode 100644
index e87742e..0000000
--- a/android/app/src/main/res/layout/activity_cust_otpthree.xml
+++ /dev/null
@@ -1,240 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_otptwo.xml b/android/app/src/main/res/layout/activity_cust_otptwo.xml
deleted file mode 100644
index 5383f72..0000000
--- a/android/app/src/main/res/layout/activity_cust_otptwo.xml
+++ /dev/null
@@ -1,241 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_review_five.xml b/android/app/src/main/res/layout/activity_cust_review_five.xml
deleted file mode 100644
index 4e34007..0000000
--- a/android/app/src/main/res/layout/activity_cust_review_five.xml
+++ /dev/null
@@ -1,232 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- =
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_review_four.xml b/android/app/src/main/res/layout/activity_cust_review_four.xml
deleted file mode 100644
index 4f8226d..0000000
--- a/android/app/src/main/res/layout/activity_cust_review_four.xml
+++ /dev/null
@@ -1,614 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_review_one.xml b/android/app/src/main/res/layout/activity_cust_review_one.xml
deleted file mode 100644
index b6b61cb..0000000
--- a/android/app/src/main/res/layout/activity_cust_review_one.xml
+++ /dev/null
@@ -1,1021 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_review_three.xml b/android/app/src/main/res/layout/activity_cust_review_three.xml
deleted file mode 100644
index 4dd143a..0000000
--- a/android/app/src/main/res/layout/activity_cust_review_three.xml
+++ /dev/null
@@ -1,630 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_cust_review_two.xml b/android/app/src/main/res/layout/activity_cust_review_two.xml
deleted file mode 100644
index 899ebde..0000000
--- a/android/app/src/main/res/layout/activity_cust_review_two.xml
+++ /dev/null
@@ -1,669 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_customer_form01.xml b/android/app/src/main/res/layout/activity_customer_form01.xml
deleted file mode 100644
index e9860f3..0000000
--- a/android/app/src/main/res/layout/activity_customer_form01.xml
+++ /dev/null
@@ -1,982 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_customer_form02.xml b/android/app/src/main/res/layout/activity_customer_form02.xml
deleted file mode 100644
index 5996d59..0000000
--- a/android/app/src/main/res/layout/activity_customer_form02.xml
+++ /dev/null
@@ -1,661 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_customer_form03.xml b/android/app/src/main/res/layout/activity_customer_form03.xml
deleted file mode 100644
index 0bff39b..0000000
--- a/android/app/src/main/res/layout/activity_customer_form03.xml
+++ /dev/null
@@ -1,606 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_customer_info_four.xml b/android/app/src/main/res/layout/activity_customer_info_four.xml
deleted file mode 100644
index 4dc23f9..0000000
--- a/android/app/src/main/res/layout/activity_customer_info_four.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_dashbooard.xml b/android/app/src/main/res/layout/activity_dashbooard.xml
deleted file mode 100644
index 7219338..0000000
--- a/android/app/src/main/res/layout/activity_dashbooard.xml
+++ /dev/null
@@ -1,314 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_disbursement.xml b/android/app/src/main/res/layout/activity_disbursement.xml
deleted file mode 100644
index 9829544..0000000
--- a/android/app/src/main/res/layout/activity_disbursement.xml
+++ /dev/null
@@ -1,547 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_disbursement_success.xml b/android/app/src/main/res/layout/activity_disbursement_success.xml
deleted file mode 100644
index 790b8d0..0000000
--- a/android/app/src/main/res/layout/activity_disbursement_success.xml
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_doyouwant_exit.xml b/android/app/src/main/res/layout/activity_doyouwant_exit.xml
deleted file mode 100644
index 496ebbf..0000000
--- a/android/app/src/main/res/layout/activity_doyouwant_exit.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_doyouwant_loan.xml b/android/app/src/main/res/layout/activity_doyouwant_loan.xml
deleted file mode 100644
index 815be53..0000000
--- a/android/app/src/main/res/layout/activity_doyouwant_loan.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_doyouwant_login.xml b/android/app/src/main/res/layout/activity_doyouwant_login.xml
deleted file mode 100644
index 6545fd9..0000000
--- a/android/app/src/main/res/layout/activity_doyouwant_login.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_eligibility.xml b/android/app/src/main/res/layout/activity_eligibility.xml
deleted file mode 100644
index a0dcca2..0000000
--- a/android/app/src/main/res/layout/activity_eligibility.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_exit.xml b/android/app/src/main/res/layout/activity_exit.xml
deleted file mode 100644
index 22d736b..0000000
--- a/android/app/src/main/res/layout/activity_exit.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_face_ml.xml b/android/app/src/main/res/layout/activity_face_ml.xml
deleted file mode 100644
index 8e5b085..0000000
--- a/android/app/src/main/res/layout/activity_face_ml.xml
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_firebase_phone_auth.xml b/android/app/src/main/res/layout/activity_firebase_phone_auth.xml
deleted file mode 100644
index d0ebd17..0000000
--- a/android/app/src/main/res/layout/activity_firebase_phone_auth.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_home.xml b/android/app/src/main/res/layout/activity_home.xml
deleted file mode 100644
index 2e85a9e..0000000
--- a/android/app/src/main/res/layout/activity_home.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_instructions_register.xml b/android/app/src/main/res/layout/activity_instructions_register.xml
deleted file mode 100644
index 64f7f7b..0000000
--- a/android/app/src/main/res/layout/activity_instructions_register.xml
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_kyc_optional.xml b/android/app/src/main/res/layout/activity_kyc_optional.xml
deleted file mode 100644
index 64c75ff..0000000
--- a/android/app/src/main/res/layout/activity_kyc_optional.xml
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_kyc_verification.xml b/android/app/src/main/res/layout/activity_kyc_verification.xml
deleted file mode 100644
index bccde90..0000000
--- a/android/app/src/main/res/layout/activity_kyc_verification.xml
+++ /dev/null
@@ -1,394 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_kycbridge.xml b/android/app/src/main/res/layout/activity_kycbridge.xml
deleted file mode 100644
index bd4e227..0000000
--- a/android/app/src/main/res/layout/activity_kycbridge.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_loan_offer_review.xml b/android/app/src/main/res/layout/activity_loan_offer_review.xml
deleted file mode 100644
index a16769a..0000000
--- a/android/app/src/main/res/layout/activity_loan_offer_review.xml
+++ /dev/null
@@ -1,469 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_loan_offers.xml b/android/app/src/main/res/layout/activity_loan_offers.xml
deleted file mode 100644
index 08a7174..0000000
--- a/android/app/src/main/res/layout/activity_loan_offers.xml
+++ /dev/null
@@ -1,344 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_login_phone.xml b/android/app/src/main/res/layout/activity_login_phone.xml
deleted file mode 100644
index 28e85ab..0000000
--- a/android/app/src/main/res/layout/activity_login_phone.xml
+++ /dev/null
@@ -1,353 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- android:textColor="@color/black"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_login_phone_otp.xml b/android/app/src/main/res/layout/activity_login_phone_otp.xml
deleted file mode 100644
index adb4876..0000000
--- a/android/app/src/main/res/layout/activity_login_phone_otp.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index 19cda4b..0000000
--- a/android/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_no_internet_connection.xml b/android/app/src/main/res/layout/activity_no_internet_connection.xml
deleted file mode 100644
index 2098d39..0000000
--- a/android/app/src/main/res/layout/activity_no_internet_connection.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_pin_lock.xml b/android/app/src/main/res/layout/activity_pin_lock.xml
deleted file mode 100644
index e8aa235..0000000
--- a/android/app/src/main/res/layout/activity_pin_lock.xml
+++ /dev/null
@@ -1,308 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_post_registration_info.xml b/android/app/src/main/res/layout/activity_post_registration_info.xml
deleted file mode 100644
index 9ec5c32..0000000
--- a/android/app/src/main/res/layout/activity_post_registration_info.xml
+++ /dev/null
@@ -1,336 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_privacy_policy.xml b/android/app/src/main/res/layout/activity_privacy_policy.xml
deleted file mode 100644
index ce92a9e..0000000
--- a/android/app/src/main/res/layout/activity_privacy_policy.xml
+++ /dev/null
@@ -1,532 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_privacy_policy_ns.xml b/android/app/src/main/res/layout/activity_privacy_policy_ns.xml
deleted file mode 100644
index d430ecc..0000000
--- a/android/app/src/main/res/layout/activity_privacy_policy_ns.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_reg_bridge_ns.xml b/android/app/src/main/res/layout/activity_reg_bridge_ns.xml
deleted file mode 100644
index 2fd06f3..0000000
--- a/android/app/src/main/res/layout/activity_reg_bridge_ns.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_register.xml b/android/app/src/main/res/layout/activity_register.xml
deleted file mode 100644
index 68169c0..0000000
--- a/android/app/src/main/res/layout/activity_register.xml
+++ /dev/null
@@ -1,346 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_register_email.xml b/android/app/src/main/res/layout/activity_register_email.xml
deleted file mode 100644
index cfd8f5e..0000000
--- a/android/app/src/main/res/layout/activity_register_email.xml
+++ /dev/null
@@ -1,307 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_register_email_otp.xml b/android/app/src/main/res/layout/activity_register_email_otp.xml
deleted file mode 100644
index 8a43a48..0000000
--- a/android/app/src/main/res/layout/activity_register_email_otp.xml
+++ /dev/null
@@ -1,286 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_register_info.xml b/android/app/src/main/res/layout/activity_register_info.xml
deleted file mode 100644
index 6a51e3c..0000000
--- a/android/app/src/main/res/layout/activity_register_info.xml
+++ /dev/null
@@ -1,344 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_register_phone.xml b/android/app/src/main/res/layout/activity_register_phone.xml
deleted file mode 100644
index 6f4012a..0000000
--- a/android/app/src/main/res/layout/activity_register_phone.xml
+++ /dev/null
@@ -1,414 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- android:textColor="@color/black"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_register_phone_ns.xml b/android/app/src/main/res/layout/activity_register_phone_ns.xml
deleted file mode 100644
index 6d56a06..0000000
--- a/android/app/src/main/res/layout/activity_register_phone_ns.xml
+++ /dev/null
@@ -1,664 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_register_phone_otp.xml b/android/app/src/main/res/layout/activity_register_phone_otp.xml
deleted file mode 100644
index 9238b55..0000000
--- a/android/app/src/main/res/layout/activity_register_phone_otp.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_register_success.xml b/android/app/src/main/res/layout/activity_register_success.xml
deleted file mode 100644
index ef385ef..0000000
--- a/android/app/src/main/res/layout/activity_register_success.xml
+++ /dev/null
@@ -1,388 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_registration_bridge.xml b/android/app/src/main/res/layout/activity_registration_bridge.xml
deleted file mode 100644
index 473fe1d..0000000
--- a/android/app/src/main/res/layout/activity_registration_bridge.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_registration_or_app_tour.xml b/android/app/src/main/res/layout/activity_registration_or_app_tour.xml
deleted file mode 100644
index b4b144c..0000000
--- a/android/app/src/main/res/layout/activity_registration_or_app_tour.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_review_register_details.xml b/android/app/src/main/res/layout/activity_review_register_details.xml
deleted file mode 100644
index fe10270..0000000
--- a/android/app/src/main/res/layout/activity_review_register_details.xml
+++ /dev/null
@@ -1,436 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_sanction.xml b/android/app/src/main/res/layout/activity_sanction.xml
deleted file mode 100644
index d95b187..0000000
--- a/android/app/src/main/res/layout/activity_sanction.xml
+++ /dev/null
@@ -1,546 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_sanction_loan_contract.xml b/android/app/src/main/res/layout/activity_sanction_loan_contract.xml
deleted file mode 100644
index 48c6061..0000000
--- a/android/app/src/main/res/layout/activity_sanction_loan_contract.xml
+++ /dev/null
@@ -1,546 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_sanction_otp.xml b/android/app/src/main/res/layout/activity_sanction_otp.xml
deleted file mode 100644
index b1d4276..0000000
--- a/android/app/src/main/res/layout/activity_sanction_otp.xml
+++ /dev/null
@@ -1,351 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_second_on_boarding_screen.xml b/android/app/src/main/res/layout/activity_second_on_boarding_screen.xml
deleted file mode 100644
index aa8de82..0000000
--- a/android/app/src/main/res/layout/activity_second_on_boarding_screen.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_security.xml b/android/app/src/main/res/layout/activity_security.xml
deleted file mode 100644
index fd69185..0000000
--- a/android/app/src/main/res/layout/activity_security.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_security_assurance.xml b/android/app/src/main/res/layout/activity_security_assurance.xml
deleted file mode 100644
index ee828f7..0000000
--- a/android/app/src/main/res/layout/activity_security_assurance.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_splash.xml b/android/app/src/main/res/layout/activity_splash.xml
deleted file mode 100644
index 4a2a3d7..0000000
--- a/android/app/src/main/res/layout/activity_splash.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_terms__conditions.xml b/android/app/src/main/res/layout/activity_terms__conditions.xml
deleted file mode 100644
index a773c5b..0000000
--- a/android/app/src/main/res/layout/activity_terms__conditions.xml
+++ /dev/null
@@ -1,225 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_text.xml b/android/app/src/main/res/layout/activity_text.xml
deleted file mode 100644
index 5b82325..0000000
--- a/android/app/src/main/res/layout/activity_text.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_tnc.xml b/android/app/src/main/res/layout/activity_tnc.xml
deleted file mode 100644
index 8dffab7..0000000
--- a/android/app/src/main/res/layout/activity_tnc.xml
+++ /dev/null
@@ -1,530 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/layout/activity_verification2.xml b/android/app/src/main/res/layout/activity_verification2.xml
deleted file mode 100644
index 42d7685..0000000
--- a/android/app/src/main/res/layout/activity_verification2.xml
+++ /dev/null
@@ -1,455 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_verification_mid.xml b/android/app/src/main/res/layout/activity_verification_mid.xml
deleted file mode 100644
index 115cb36..0000000
--- a/android/app/src/main/res/layout/activity_verification_mid.xml
+++ /dev/null
@@ -1,256 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/custom_dialog.xml b/android/app/src/main/res/layout/custom_dialog.xml
deleted file mode 100644
index 835667d..0000000
--- a/android/app/src/main/res/layout/custom_dialog.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/dialog_biometric_scanning.xml b/android/app/src/main/res/layout/dialog_biometric_scanning.xml
deleted file mode 100644
index 63c0b00..0000000
--- a/android/app/src/main/res/layout/dialog_biometric_scanning.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_allow_auto_read_otp.xml b/android/app/src/main/res/layout/fragment_allow_auto_read_otp.xml
deleted file mode 100644
index f5dba29..0000000
--- a/android/app/src/main/res/layout/fragment_allow_auto_read_otp.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_dashboard.xml b/android/app/src/main/res/layout/fragment_dashboard.xml
deleted file mode 100644
index 0ae6a3b..0000000
--- a/android/app/src/main/res/layout/fragment_dashboard.xml
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_histroy.xml b/android/app/src/main/res/layout/fragment_histroy.xml
deleted file mode 100644
index 140aa61..0000000
--- a/android/app/src/main/res/layout/fragment_histroy.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
-
-
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_home.xml b/android/app/src/main/res/layout/fragment_home.xml
deleted file mode 100644
index 26f3cf6..0000000
--- a/android/app/src/main/res/layout/fragment_home.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/fragment_loan.xml b/android/app/src/main/res/layout/fragment_loan.xml
deleted file mode 100644
index 988cd9b..0000000
--- a/android/app/src/main/res/layout/fragment_loan.xml
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/spinner_loan_interest_items.xml b/android/app/src/main/res/layout/spinner_loan_interest_items.xml
deleted file mode 100644
index 28919df..0000000
--- a/android/app/src/main/res/layout/spinner_loan_interest_items.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/spinnner_itemlist.xml b/android/app/src/main/res/layout/spinnner_itemlist.xml
deleted file mode 100644
index 012fe01..0000000
--- a/android/app/src/main/res/layout/spinnner_itemlist.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/testlayout.xml b/android/app/src/main/res/layout/testlayout.xml
deleted file mode 100644
index e5a3c42..0000000
--- a/android/app/src/main/res/layout/testlayout.xml
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/menu/bottom_nav.xml b/android/app/src/main/res/menu/bottom_nav.xml
deleted file mode 100644
index 482d500..0000000
--- a/android/app/src/main/res/menu/bottom_nav.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index eca70cf..0000000
--- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp
deleted file mode 100644
index c209e78..0000000
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
deleted file mode 100644
index b2dfe3d..0000000
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp
deleted file mode 100644
index 4f0f1d6..0000000
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
deleted file mode 100644
index 62b611d..0000000
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
deleted file mode 100644
index 948a307..0000000
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
deleted file mode 100644
index 1b9a695..0000000
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
deleted file mode 100644
index 28d4b77..0000000
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9287f50..0000000
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
deleted file mode 100644
index aa7d642..0000000
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9126ae3..0000000
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/android/app/src/main/res/navigation/navigation.xml b/android/app/src/main/res/navigation/navigation.xml
deleted file mode 100644
index ba71cb4..0000000
--- a/android/app/src/main/res/navigation/navigation.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/raw/smart_bank_animation.json b/android/app/src/main/res/raw/smart_bank_animation.json
deleted file mode 100644
index c7603e3..0000000
--- a/android/app/src/main/res/raw/smart_bank_animation.json
+++ /dev/null
@@ -1 +0,0 @@
-{"v":"5.7.13","fr":30,"ip":0,"op":90,"w":600,"h":600,"nm":"main_5_cards","ddd":0,"assets":[{"id":"comp_0","nm":"5_cards","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"main card Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[0]},{"t":36,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":1,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":2,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":3,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":4,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":5,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":8,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":9,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":10,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":11,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":13,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":14,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":15,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":16,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":17,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":18,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":19,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":20,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":21,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":22,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":23,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":25,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":26,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":27,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":28,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":29,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":30,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":32,"s":[0]},{"i":{"x":[0.833],"y":[0.992]},"o":{"x":[0.167],"y":[0]},"t":33,"s":[0]},{"i":{"x":[0.833],"y":[0.69]},"o":{"x":[0.167],"y":[0.083]},"t":34,"s":[0]},{"i":{"x":[0.833],"y":[0.794]},"o":{"x":[0.167],"y":[0.114]},"t":35,"s":[0.097]},{"i":{"x":[0.833],"y":[0.815]},"o":{"x":[0.167],"y":[0.14]},"t":36,"s":[0.36]},{"i":{"x":[0.833],"y":[0.826]},"o":{"x":[0.167],"y":[0.152]},"t":37,"s":[0.748]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.16]},"t":38,"s":[1.219]},{"i":{"x":[0.833],"y":[0.84]},"o":{"x":[0.167],"y":[0.167]},"t":39,"s":[1.732]},{"i":{"x":[0.833],"y":[0.848]},"o":{"x":[0.167],"y":[0.174]},"t":40,"s":[2.245]},{"i":{"x":[0.833],"y":[0.86]},"o":{"x":[0.167],"y":[0.185]},"t":41,"s":[2.716]},{"i":{"x":[0.833],"y":[0.886]},"o":{"x":[0.167],"y":[0.206]},"t":42,"s":[3.104]},{"i":{"x":[0.833],"y":[1.003]},"o":{"x":[0.167],"y":[0.31]},"t":43,"s":[3.367]},{"i":{"x":[0.833],"y":[0.691]},"o":{"x":[0.167],"y":[0.003]},"t":44,"s":[3.464]},{"i":{"x":[0.833],"y":[0.798]},"o":{"x":[0.167],"y":[0.114]},"t":45,"s":[3.363]},{"i":{"x":[0.833],"y":[0.816]},"o":{"x":[0.167],"y":[0.142]},"t":46,"s":[3.09]},{"i":{"x":[0.833],"y":[0.823]},"o":{"x":[0.167],"y":[0.152]},"t":47,"s":[2.699]},{"i":{"x":[0.833],"y":[0.827]},"o":{"x":[0.167],"y":[0.157]},"t":48,"s":[2.226]},{"i":{"x":[0.833],"y":[0.831]},"o":{"x":[0.167],"y":[0.161]},"t":49,"s":[1.692]},{"i":{"x":[0.833],"y":[0.841]},"o":{"x":[0.167],"y":[0.165]},"t":50,"s":[1.12]},{"i":{"x":[0.833],"y":[0.871]},"o":{"x":[0.167],"y":[0.175]},"t":51,"s":[0.534]},{"i":{"x":[0.833],"y":[0.871]},"o":{"x":[0.167],"y":[0.236]},"t":52,"s":[0]},{"i":{"x":[0.833],"y":[0.897]},"o":{"x":[0.167],"y":[0.236]},"t":53,"s":[-0.291]},{"i":{"x":[0.833],"y":[1.041]},"o":{"x":[0.167],"y":[0.437]},"t":54,"s":[-0.45]},{"i":{"x":[0.833],"y":[0.748]},"o":{"x":[0.167],"y":[0.028]},"t":55,"s":[-0.487]},{"i":{"x":[0.833],"y":[0.817]},"o":{"x":[0.167],"y":[0.124]},"t":56,"s":[-0.431]},{"i":{"x":[0.833],"y":[0.838]},"o":{"x":[0.167],"y":[0.153]},"t":57,"s":[-0.318]},{"i":{"x":[0.833],"y":[0.851]},"o":{"x":[0.167],"y":[0.171]},"t":58,"s":[-0.183]},{"i":{"x":[0.833],"y":[0.863]},"o":{"x":[0.167],"y":[0.189]},"t":59,"s":[-0.055]},{"i":{"x":[0.833],"y":[0.881]},"o":{"x":[0.167],"y":[0.214]},"t":60,"s":[0.046]},{"i":{"x":[0.833],"y":[0.928]},"o":{"x":[0.167],"y":[0.28]},"t":61,"s":[0.111]},{"i":{"x":[0.833],"y":[0.364]},"o":{"x":[0.167],"y":[-0.508]},"t":62,"s":[0.138]},{"i":{"x":[0.833],"y":[0.797]},"o":{"x":[0.167],"y":[0.096]},"t":63,"s":[0.134]},{"i":{"x":[0.833],"y":[0.829]},"o":{"x":[0.167],"y":[0.141]},"t":64,"s":[0.109]},{"i":{"x":[0.833],"y":[0.845]},"o":{"x":[0.167],"y":[0.163]},"t":65,"s":[0.072]},{"i":{"x":[0.833],"y":[0.857]},"o":{"x":[0.167],"y":[0.18]},"t":66,"s":[0.033]},{"i":{"x":[0.833],"y":[0.871]},"o":{"x":[0.167],"y":[0.2]},"t":67,"s":[0]},{"i":{"x":[0.833],"y":[0.897]},"o":{"x":[0.167],"y":[0.236]},"t":68,"s":[-0.024]},{"i":{"x":[0.833],"y":[1.041]},"o":{"x":[0.167],"y":[0.437]},"t":69,"s":[-0.037]},{"i":{"x":[0.833],"y":[0.748]},"o":{"x":[0.167],"y":[0.028]},"t":70,"s":[-0.04]},{"i":{"x":[0.833],"y":[0.817]},"o":{"x":[0.167],"y":[0.124]},"t":71,"s":[-0.035]},{"i":{"x":[0.833],"y":[0.838]},"o":{"x":[0.167],"y":[0.153]},"t":72,"s":[-0.026]},{"i":{"x":[0.833],"y":[0.851]},"o":{"x":[0.167],"y":[0.171]},"t":73,"s":[-0.015]},{"i":{"x":[0.833],"y":[0.863]},"o":{"x":[0.167],"y":[0.189]},"t":74,"s":[-0.004]},{"i":{"x":[0.833],"y":[0.881]},"o":{"x":[0.167],"y":[0.214]},"t":75,"s":[0.004]},{"i":{"x":[0.833],"y":[0.928]},"o":{"x":[0.167],"y":[0.28]},"t":76,"s":[0.009]},{"i":{"x":[0.833],"y":[0.364]},"o":{"x":[0.167],"y":[-0.508]},"t":77,"s":[0.011]},{"i":{"x":[0.833],"y":[0.797]},"o":{"x":[0.167],"y":[0.096]},"t":78,"s":[0.011]},{"i":{"x":[0.833],"y":[0.829]},"o":{"x":[0.167],"y":[0.141]},"t":79,"s":[0.009]},{"i":{"x":[0.833],"y":[0.845]},"o":{"x":[0.167],"y":[0.163]},"t":80,"s":[0.006]},{"i":{"x":[0.833],"y":[0.857]},"o":{"x":[0.167],"y":[0.18]},"t":81,"s":[0.003]},{"i":{"x":[0.833],"y":[0.871]},"o":{"x":[0.167],"y":[0.2]},"t":82,"s":[0]},{"i":{"x":[0.833],"y":[0.897]},"o":{"x":[0.167],"y":[0.236]},"t":83,"s":[-0.002]},{"i":{"x":[0.833],"y":[1.041]},"o":{"x":[0.167],"y":[0.437]},"t":84,"s":[-0.003]},{"i":{"x":[0.833],"y":[0.748]},"o":{"x":[0.167],"y":[0.028]},"t":85,"s":[-0.003]},{"i":{"x":[0.833],"y":[0.817]},"o":{"x":[0.167],"y":[0.124]},"t":86,"s":[-0.003]},{"i":{"x":[0.833],"y":[0.838]},"o":{"x":[0.167],"y":[0.153]},"t":87,"s":[-0.002]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.171]},"t":88,"s":[-0.001]},{"t":89,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":67,"s":[306.849,285.905,0],"to":[0,-60,0],"ti":[0,60,0]},{"t":75,"s":[306.849,-74.095,0]}],"ix":2,"l":2},"a":{"a":0,"k":[306.849,285.905,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.5,0.5,0.5],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":34,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.5],"y":[0,0,0]},"t":42,"s":[143,143,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":49,"s":[102,102,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":57,"s":[106,106,100]},{"t":63,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.888,-2.889]],"o":[[0,0],[0,0]],"v":[[-3.491,-0.964],[3.49,1.444]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[331.102,267.802],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.889,-2.889]],"o":[[0,0],[0,0]],"v":[[3.491,-0.964],[-3.491,1.444]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[277.975,267.802],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.74,-0.179],[0,1.181]],"o":[[0,0],[4.131,0.196],[0,0]],"v":[[-4.82,-1.967],[-0.492,1.969],[4.82,-2.164]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[305.57,294.36],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.875],[1.875,0],[0,1.875],[-1.875,0]],"o":[[0,1.875],[-1.875,0],[0,-1.875],[1.875,0]],"v":[[3.396,0],[-0.001,3.396],[-3.396,0],[-0.001,-3.396]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[330.41,281.787],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.875],[1.875,0],[0,1.875],[-1.875,0]],"o":[[0,1.875],[-1.875,0],[0,-1.875],[1.875,0]],"v":[[3.396,0],[0,3.396],[-3.396,0],[0,-3.396]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[281.219,281.787],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.13,-5.908],[-4.435,-0.098],[-0.131,5.908],[4.434,0.098]],"o":[[-0.131,5.908],[4.435,0.098],[0.13,-5.908],[-4.435,-0.098]],"v":[[-8.028,-0.178],[-0.236,10.697],[8.03,0.177],[0.237,-10.698]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.25,284.127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.435,-0.098],[-0.131,-5.908],[-4.434,0.098],[0.131,5.908]],"o":[[-4.435,0.098],[0.13,5.908],[4.434,-0.098],[-0.13,-5.908]],"v":[[-0.237,-10.698],[-8.029,0.177],[0.236,10.698],[8.028,-0.177]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[282.994,284.127],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.318,0],[0,0],[0,3.319],[0,0],[-3.318,0],[0,0],[0,-3.319],[0,0]],"o":[[0,0],[-3.318,0],[0,0],[0,-3.319],[0,0],[3.318,0],[0,0],[0,3.319]],"v":[[7.372,10.625],[-7.372,10.625],[-13.38,4.617],[-13.38,-4.617],[-7.372,-10.625],[7.372,-10.625],[13.38,-4.617],[13.38,4.617]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[248.41,325.843],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.024],[2.98,0],[0,3.024],[-2.979,0]],"o":[[0,3.024],[-2.979,0],[0,-3.024],[2.98,0]],"v":[[5.396,0],[-0.001,5.476],[-5.396,0],[-0.001,-5.476]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.607999973671,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[337.068,299.903],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.024],[2.979,0],[0,3.024],[-2.98,0]],"o":[[0,3.024],[-2.98,0],[0,-3.024],[2.979,0]],"v":[[5.395,0],[0,5.476],[-5.395,0],[0,-5.476]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.607999973671,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[274.104,299.903],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.499],[7.498,0],[0,7.498],[-7.499,0]],"o":[[0,7.498],[-7.499,0],[0,-7.499],[7.498,0]],"v":[[13.577,0],[0,13.577],[-13.577,0],[0,-13.577]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[369.814,324.072],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.499],[7.498,0],[0,7.498],[-7.499,0]],"o":[[0,7.498],[-7.499,0],[0,-7.499],[7.498,0]],"v":[[13.577,0],[0,13.577],[-13.577,0],[0,-13.577]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[351.318,324.072],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.717],[0.363,-1.33],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[8.717,0]],"v":[[60.505,-28.193],[59.946,43.978],[-60.506,-43.977],[44.721,-43.977]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[334.495,271.24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,8.717],[0,0]],"o":[[0,0],[-8.717,0],[0,0],[0,0]],"v":[[61.883,46.737],[-46.098,46.737],[-61.883,30.953],[-61.883,-46.737]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.776000019148,0.877999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[280.581,297.809],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-8.717],[0,0],[0.363,-1.33],[7.268,0],[0,0],[0,8.717],[0,0],[-8.717,0],[0,0]],"o":[[0,0],[0,1.448],[-1.834,6.686],[0,0],[-8.717,0],[0,0],[0,-8.717],[0,0],[8.717,0]],"v":[[88.151,-42.857],[88.151,42.858],[87.592,47.041],[72.367,58.642],[-72.366,58.642],[-88.151,42.858],[-88.151,-42.857],[-72.366,-58.642],[72.367,-58.642]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[306.849,285.905],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"red Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24,"s":[0]},{"t":35,"s":[29.446]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.33,"y":0},"t":20,"s":[167.592,124.042,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.744,"y":0.376},"o":{"x":0.419,"y":0},"t":24,"s":[175.368,103.323,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.906,"y":0.231},"t":29.455,"s":[167.592,124.042,0],"to":[-32.282,77.065,0],"ti":[-81.021,20.414,0]},{"t":36,"s":[306.848,285.904,0]}],"ix":2,"l":2},"a":{"a":0,"k":[167.592,124.042,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.67,0.67,0.67],"y":[1,1,1]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":22,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,-2.333]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":30,"s":[80,80,100]},{"t":38,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[162.32,128.603],[170.601,128.603]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.056],[2.287,0],[0,1.055],[-2.286,0]],"o":[[0,1.055],[-2.286,0],[0,-1.056],[2.287,0]],"v":[[4.141,0],[-0.001,1.911],[-4.141,0],[-0.001,-1.911]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[185.57,106.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.056],[2.287,0],[0,1.055],[-2.286,0]],"o":[[0,1.055],[-2.286,0],[0,-1.056],[2.287,0]],"v":[[4.141,0],[-0.001,1.911],[-4.141,0],[-0.001,-1.911]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[147.351,106.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.568],[1.569,0],[0,1.568],[-1.568,0]],"o":[[0,1.568],[-1.568,0],[0,-1.568],[1.569,0]],"v":[[2.84,0],[0,2.84],[-2.84,0],[0,-2.84]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.294,120.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.568],[1.569,0],[0,1.568],[-1.568,0]],"o":[[0,1.568],[-1.568,0],[0,-1.568],[1.569,0]],"v":[[2.84,0],[0,2.84],[-2.84,0],[0,-2.84]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[146.159,120.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.109,-4.94],[-3.708,-0.082],[-0.109,4.94],[3.708,0.082]],"o":[[-0.109,4.94],[3.708,0.082],[0.109,-4.941],[-3.708,-0.082]],"v":[[-6.714,-0.149],[-0.198,8.946],[6.714,0.149],[0.198,-8.946]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[185.488,122.555],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.708,-0.082],[-0.109,-4.94],[-3.708,0.082],[0.109,4.941]],"o":[[-3.708,0.082],[0.11,4.941],[3.709,-0.082],[-0.11,-4.94]],"v":[[-0.197,-8.946],[-6.715,0.148],[0.197,8.946],[6.714,-0.149]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[147.644,122.555],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.774,0],[0,0],[0,2.774],[0,0],[-2.774,0],[0,0],[0,-2.774],[0,0]],"o":[[0,0],[-2.774,0],[0,0],[0,-2.774],[0,0],[2.774,0],[0,0],[0,2.774]],"v":[[6.165,8.885],[-6.165,8.885],[-11.189,3.862],[-11.189,-3.861],[-6.165,-8.885],[6.165,-8.885],[11.189,-3.861],[11.189,3.862]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[118.723,157.439],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.529],[2.492,0],[0,2.529],[-2.491,0]],"o":[[0,2.529],[-2.491,0],[0,-2.529],[2.492,0]],"v":[[4.512,0],[-0.001,4.579],[-4.512,0],[-0.001,-4.579]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.862,135.748],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.529],[2.492,0],[0,2.529],[-2.491,0]],"o":[[0,2.529],[-2.491,0],[0,-2.529],[2.492,0]],"v":[[4.512,0],[-0.001,4.579],[-4.512,0],[-0.001,-4.579]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[140.209,135.748],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.27],[6.271,0],[0,6.271],[-6.27,0]],"o":[[0,6.271],[-6.27,0],[0,-6.27],[6.271,0]],"v":[[11.354,0],[-0.001,11.354],[-11.354,0],[-0.001,-11.354]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.245,155.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.27],[6.271,0],[0,6.271],[-6.27,0]],"o":[[0,6.271],[-6.27,0],[0,-6.27],[6.271,0]],"v":[[11.354,0],[-0.001,11.354],[-11.354,0],[-0.001,-11.354]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[204.778,155.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.289],[0,0],[0.302,-1.113],[6.078,0],[0,0],[0,7.289],[0,0],[-7.29,0],[0,0]],"o":[[0,0],[0,1.211],[-1.534,5.591],[0,0],[-7.29,0],[0,0],[0,-7.289],[0,0],[7.29,0]],"v":[[73.714,-35.839],[73.714,35.839],[73.247,39.337],[60.514,49.038],[-60.515,49.038],[-73.715,35.839],[-73.715,-35.839],[-60.515,-49.038],[60.514,-49.038]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[167.592,124.042],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":37,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"blue Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24,"s":[0]},{"t":34,"s":[-21.692]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.33,"y":0},"t":20.333,"s":[433.668,133.266,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.746,"y":0.377},"o":{"x":0.421,"y":0},"t":24.333,"s":[425.817,113.301,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.903,"y":0.235},"t":29.721,"s":[433.668,133.266,0],"to":[31.23,71.099,0],"ti":[75.617,17.675,0]},{"t":36,"s":[306.848,285.904,0]}],"ix":2,"l":2},"a":{"a":0,"k":[433.668,133.267,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.67,0.67,0.67],"y":[1,1,1]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":22.333,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,-2.333]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":30.333,"s":[80,80,100]},{"t":38,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[428.92,137.375],[436.378,137.375]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.951],[2.059,0],[0,0.951],[-2.06,0]],"o":[[0,0.951],[-2.06,0],[0,-0.951],[2.059,0]],"v":[[3.73,0],[0.001,1.721],[-3.729,0],[0.001,-1.721]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[449.861,117.293],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.951],[2.059,0],[0,0.951],[-2.06,0]],"o":[[0,0.951],[-2.06,0],[0,-0.951],[2.059,0]],"v":[[3.73,0],[0.001,1.721],[-3.729,0],[0.001,-1.721]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[415.436,117.293],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.413],[1.413,0],[0,1.413],[-1.412,0]],"o":[[0,1.413],[-1.412,0],[0,-1.413],[1.413,0]],"v":[[2.558,0],[-0.001,2.558],[-2.558,0],[-0.001,-2.558]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[451.415,130.165],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.413],[1.412,0],[0,1.413],[-1.413,0]],"o":[[0,1.413],[-1.413,0],[0,-1.413],[1.412,0]],"v":[[2.557,0],[-0.001,2.558],[-2.558,0],[-0.001,-2.558]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[414.363,130.165],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.099,-4.45],[-3.34,-0.074],[-0.099,4.45],[3.339,0.073]],"o":[[-0.099,4.45],[3.34,0.074],[0.098,-4.45],[-3.34,-0.074]],"v":[[-6.047,-0.134],[-0.178,8.057],[6.048,0.134],[0.179,-8.057]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[449.787,131.927],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.34,-0.074],[-0.098,-4.45],[-3.339,0.074],[0.097,4.45]],"o":[[-3.34,0.074],[0.099,4.451],[3.341,-0.073],[-0.099,-4.45]],"v":[[-0.177,-8.058],[-6.048,0.133],[0.177,8.057],[6.048,-0.134]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[415.7,131.927],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.5,0],[0,0],[0,2.499],[0,0],[-2.499,0],[0,0],[0,-2.499],[0,0]],"o":[[0,0],[-2.499,0],[0,0],[0,-2.499],[0,0],[2.5,0],[0,0],[0,2.499]],"v":[[5.553,8.003],[-5.552,8.003],[-10.077,3.478],[-10.077,-3.478],[-5.552,-8.003],[5.553,-8.003],[10.078,-3.478],[10.078,3.478]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[389.651,163.348],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.278],[2.244,0],[0,2.278],[-2.245,0]],"o":[[0,2.278],[-2.245,0],[0,-2.278],[2.244,0]],"v":[[4.064,0],[0,4.125],[-4.064,0],[0,-4.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[456.43,143.81],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.278],[2.244,0],[0,2.278],[-2.245,0]],"o":[[0,2.278],[-2.245,0],[0,-2.278],[2.244,0]],"v":[[4.064,0],[0.001,4.125],[-4.064,0],[0.001,-4.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[409.003,143.81],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.648],[5.649,0],[0,5.648],[-5.647,0]],"o":[[0,5.648],[-5.647,0],[0,-5.648],[5.649,0]],"v":[[10.226,0],[-0.001,10.226],[-10.226,0],[-0.001,-10.226]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[481.094,162.014],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.648],[5.648,0],[0,5.648],[-5.648,0]],"o":[[0,5.648],[-5.648,0],[0,-5.648],[5.648,0]],"v":[[10.226,0],[0,10.226],[-10.226,0],[0,-10.226]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[467.163,162.014],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.565],[0,0],[0.273,-1.002],[5.476,0],[0,0],[0,6.565],[0,0],[-6.566,0],[0,0]],"o":[[0,0],[0,1.09],[-1.382,5.037],[0,0],[-6.566,0],[0,0],[0,-6.565],[0,0],[6.567,0]],"v":[[66.396,-32.281],[66.396,32.281],[65.975,35.431],[54.506,44.17],[-54.507,44.17],[-66.397,32.281],[-66.397,-32.281],[-54.507,-44.17],[54.506,-44.17]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.776000019148,0.877999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[433.668,133.267],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":37,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"orange Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[10.979]},{"t":35,"s":[-22.524]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.33,"y":0},"t":21.333,"s":[106.109,371.736,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.746,"y":0.377},"o":{"x":0.42,"y":0},"t":25.333,"s":[87.721,357.525,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.904,"y":0.234},"t":30.23,"s":[106.109,371.736,0],"to":[65.171,55.238,0],"ti":[-5.088,85.279,0]},{"t":36,"s":[306.848,285.904,0]}],"ix":2,"l":2},"a":{"a":0,"k":[106.11,371.736,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.67,0.67,0.67],"y":[1,1,1]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":23.333,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,-2.333]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":31.333,"s":[80,80,100]},{"t":38,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[101.85,375.421],[108.54,375.421]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.853],[1.847,0],[0,0.853],[-1.848,0]],"o":[[0,0.853],[-1.848,0],[0,-0.853],[1.847,0]],"v":[[3.345,0],[0,1.544],[-3.345,0],[0,-1.544]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.635,357.408],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.853],[1.847,0],[0,0.853],[-1.847,0]],"o":[[0,0.853],[-1.847,0],[0,-0.853],[1.847,0]],"v":[[3.345,0],[0,1.544],[-3.345,0],[0,-1.544]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.756,357.408],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.268],[1.267,0],[0,1.267],[-1.267,0]],"o":[[0,1.267],[-1.267,0],[0,-1.268],[1.267,0]],"v":[[2.294,0],[0,2.294],[-2.294,0],[0,-2.294]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.028,368.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.268],[1.267,0],[0,1.267],[-1.268,0]],"o":[[0,1.267],[-1.268,0],[0,-1.268],[1.267,0]],"v":[[2.295,0],[0.001,2.294],[-2.295,0],[0.001,-2.294]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.793,368.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.088,-3.991],[-2.996,-0.067],[-0.089,3.991],[2.997,0.065]],"o":[[-0.088,3.992],[2.996,0.066],[0.088,-3.992],[-2.996,-0.067]],"v":[[-5.425,-0.12],[-0.16,7.228],[5.425,0.12],[0.159,-7.227]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.569,370.535],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.996,-0.066],[-0.088,-3.993],[-2.996,0.066],[0.089,3.993]],"o":[[-2.996,0.065],[0.089,3.991],[2.995,-0.066],[-0.088,-3.991]],"v":[[-0.16,-7.227],[-5.425,0.121],[0.16,7.228],[5.424,-0.12]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.992,370.535],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.242,0],[0,0],[0,2.243],[0,0],[-2.242,0],[0,0],[0,-2.242],[0,0]],"o":[[0,0],[-2.242,0],[0,0],[0,-2.242],[0,0],[2.242,0],[0,0],[0,2.243]],"v":[[4.981,7.179],[-4.98,7.179],[-9.04,3.119],[-9.04,-3.12],[-4.98,-7.179],[4.981,-7.179],[9.04,-3.12],[9.04,3.119]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[66.626,398.719],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.043],[2.013,0],[0,2.044],[-2.013,0]],"o":[[0,2.044],[-2.013,0],[0,-2.043],[2.013,0]],"v":[[3.646,0],[0.001,3.7],[-3.646,0],[0.001,-3.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.526,381.194],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.043],[2.013,0],[0,2.044],[-2.013,0]],"o":[[0,2.044],[-2.013,0],[0,-2.043],[2.013,0]],"v":[[3.646,0],[0.001,3.7],[-3.646,0],[0.001,-3.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.985,381.194],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.065],[5.067,0],[0,5.066],[-5.066,0]],"o":[[0,5.066],[-5.066,0],[0,-5.065],[5.067,0]],"v":[[9.173,0],[0,9.173],[-9.173,0],[0,-9.173]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[148.65,397.523],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.065],[5.066,0],[0,5.066],[-5.066,0]],"o":[[0,5.066],[-5.066,0],[0,-5.065],[5.066,0]],"v":[[9.173,0],[0,9.173],[-9.173,0],[0,-9.173]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.154,397.523],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.889],[0,0],[0.244,-0.898],[4.911,0],[0,0],[0,5.889],[0,0],[-5.89,0],[0,0]],"o":[[0,0],[0,0.979],[-1.24,4.518],[0,0],[-5.89,0],[0,0],[0,-5.889],[0,0],[5.89,0]],"v":[[59.557,-28.956],[59.557,28.956],[59.18,31.782],[48.892,39.62],[-48.893,39.62],[-59.558,28.956],[-59.558,-28.956],[-48.893,-39.62],[48.892,-39.62]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.501999978458,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[106.11,371.736],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":37,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"green Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.71],"y":[1]},"o":{"x":[0.378],"y":[0]},"t":20.667,"s":[0]},{"i":{"x":[0.895],"y":[0.901]},"o":{"x":[0.844],"y":[0]},"t":25,"s":[-13.571]},{"t":35,"s":[21.366]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.33,"y":0},"t":20.667,"s":[502.083,328.837,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.748,"y":0.378},"o":{"x":0.423,"y":0},"t":24.667,"s":[516.995,311.877,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.9,"y":0.239},"t":29.987,"s":[502.083,328.837,0],"to":[-49.193,60.819,0],"ti":[19.14,75.846,0]},{"t":36,"s":[306.848,285.904,0]}],"ix":2,"l":2},"a":{"a":0,"k":[502.083,328.837,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.67,0.67,0.67],"y":[1,1,1]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":22.667,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,-2.333]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":30.667,"s":[80,80,100]},{"t":38,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[497.655,332.669],[504.61,332.669]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.887],[1.921,0],[0,0.886],[-1.919,0]],"o":[[0,0.886],[-1.919,0],[0,-0.887],[1.921,0]],"v":[[3.478,0],[-0.001,1.604],[-3.478,0],[-0.001,-1.604]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[517.184,313.942],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.887],[1.92,0],[0,0.886],[-1.92,0]],"o":[[0,0.886],[-1.92,0],[0,-0.887],[1.92,0]],"v":[[3.478,0],[0,1.604],[-3.478,0],[0,-1.604]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[485.082,313.942],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.317],[1.318,0],[0,1.317],[-1.316,0]],"o":[[0,1.317],[-1.316,0],[0,-1.317],[1.318,0]],"v":[[2.385,0],[-0.001,2.385],[-2.386,0],[-0.001,-2.385]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[518.632,325.945],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.317],[1.318,0],[0,1.317],[-1.317,0]],"o":[[0,1.317],[-1.317,0],[0,-1.317],[1.318,0]],"v":[[2.386,0],[0,2.385],[-2.385,0],[0,-2.385]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[484.08,325.945],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.092,-4.15],[-3.116,-0.069],[-0.091,4.149],[3.114,0.069]],"o":[[-0.092,4.149],[3.114,0.069],[0.092,-4.15],[-3.116,-0.069]],"v":[[-5.639,-0.124],[-0.165,7.514],[5.64,0.125],[0.167,-7.514]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[517.115,327.589],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.115,-0.069],[-0.091,-4.151],[-3.114,0.07],[0.091,4.149]],"o":[[-3.114,0.068],[0.092,4.149],[3.115,-0.068],[-0.092,-4.151]],"v":[[-0.166,-7.514],[-5.64,0.125],[0.166,7.513],[5.64,-0.124]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[485.327,327.589],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.33,0],[0,0],[0,2.331],[0,0],[-2.332,0],[0,0],[0,-2.33],[0,0]],"o":[[0,0],[-2.332,0],[0,0],[0,-2.33],[0,0],[2.33,0],[0,0],[0,2.331]],"v":[[5.178,7.463],[-5.178,7.463],[-9.398,3.243],[-9.398,-3.243],[-5.178,-7.463],[5.178,-7.463],[9.398,-3.243],[9.398,3.243]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[461.036,356.889],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.124],[2.094,0],[0,2.124],[-2.093,0]],"o":[[0,2.124],[-2.093,0],[0,-2.124],[2.094,0]],"v":[[3.789,-0.001],[-0.001,3.846],[-3.79,-0.001],[-0.001,-3.846]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[523.309,338.67],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.124],[2.093,0],[0,2.124],[-2.094,0]],"o":[[0,2.124],[-2.094,0],[0,-2.124],[2.093,0]],"v":[[3.79,-0.001],[0.001,3.846],[-3.789,-0.001],[0.001,-3.846]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[479.083,338.67],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.267],[5.266,0],[0,5.268],[-5.267,0]],"o":[[0,5.268],[-5.267,0],[0,-5.267],[5.266,0]],"v":[[9.536,0],[0,9.536],[-9.536,0],[0,-9.536]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[546.31,355.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.267],[5.266,0],[0,5.268],[-5.268,0]],"o":[[0,5.268],[-5.268,0],[0,-5.267],[5.266,0]],"v":[[9.536,0],[0,9.536],[-9.537,0],[0,-9.536]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[533.318,355.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.123],[0,0],[0.254,-0.935],[5.106,0],[0,0],[0,6.123],[0,0],[-6.122,0],[0,0]],"o":[[0,0],[0,1.017],[-1.288,4.696],[0,0],[-6.122,0],[0,0],[0,-6.123],[0,0],[6.122,0]],"v":[[61.917,-30.103],[61.917,30.104],[61.524,33.042],[50.83,41.19],[-50.83,41.19],[-61.917,30.104],[-61.917,-30.103],[-50.83,-41.189],[50.83,-41.189]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.238999998803,0.819999964097,0.681999954523,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[502.083,328.837],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":37,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"fucusia Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.875],"y":[1]},"o":{"x":[0.622],"y":[0]},"t":25,"s":[0]},{"t":35,"s":[-27.279]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.33,"y":0},"t":21,"s":[311.646,482.644,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.744,"y":0.376},"o":{"x":0.418,"y":0},"t":25,"s":[329.332,491.905,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.907,"y":0.23},"t":29.96,"s":[311.646,482.644,0],"to":[-69.699,-32.75,0],"ti":[-68.019,36.109,0]},{"t":36,"s":[306.848,285.904,0]}],"ix":2,"l":2},"a":{"a":0,"k":[311.646,482.645,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.67,0.67,0.67],"y":[1,1,1]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":23,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,-2.333]},"o":{"x":[0.33,0.33,0.33],"y":[0,0,0]},"t":31,"s":[80,80,100]},{"t":38,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[306.769,486.864],[314.431,486.864]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.977],[2.116,0],[0,0.977],[-2.116,0]],"o":[[0,0.977],[-2.116,0],[0,-0.977],[2.116,0]],"v":[[3.831,0],[0,1.769],[-3.831,0],[0,-1.769]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.282,466.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.977],[2.116,0],[0,0.977],[-2.116,0]],"o":[[0,0.977],[-2.116,0],[0,-0.977],[2.116,0]],"v":[[3.831,0],[0,1.769],[-3.831,0],[0,-1.769]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[292.917,466.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.451],[1.451,0],[0,1.451],[-1.451,0]],"o":[[0,1.451],[-1.451,0],[0,-1.451],[1.451,0]],"v":[[2.628,0],[0,2.628],[-2.628,0],[0,-2.628]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[329.877,479.458],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.451],[1.451,0],[0,1.451],[-1.451,0]],"o":[[0,1.451],[-1.451,0],[0,-1.451],[1.451,0]],"v":[[2.628,0],[-0.001,2.628],[-2.628,0],[-0.001,-2.628]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[291.815,479.458],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.101,-4.571],[-3.431,-0.076],[-0.101,4.572],[3.43,0.077]],"o":[[-0.102,4.571],[3.431,0.075],[0.101,-4.571],[-3.432,-0.075]],"v":[[-6.212,-0.137],[-0.183,8.278],[6.213,0.137],[0.184,-8.278]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.206,481.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.431,-0.075],[-0.101,-4.571],[-3.431,0.075],[0.101,4.571]],"o":[[-3.431,0.076],[0.101,4.571],[3.431,-0.077],[-0.102,-4.572]],"v":[[-0.183,-8.278],[-6.213,0.137],[0.183,8.278],[6.213,-0.137]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.188,481.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.567,0],[0,0],[0,2.567],[0,0],[-2.568,0],[0,0],[0,-2.567],[0,0]],"o":[[0,0],[-2.568,0],[0,0],[0,-2.567],[0,0],[2.567,0],[0,0],[0,2.567]],"v":[[5.705,8.221],[-5.704,8.221],[-10.353,3.572],[-10.353,-3.574],[-5.704,-8.222],[5.705,-8.222],[10.353,-3.574],[10.353,3.572]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[266.427,513.548],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.341],[2.306,0],[0,2.34],[-2.305,0]],"o":[[0,2.34],[-2.305,0],[0,-2.341],[2.306,0]],"v":[[4.174,0.001],[-0.001,4.237],[-4.175,0.001],[-0.001,-4.236]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.936999990426,0.536999990426,0.764999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[335.03,493.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.341],[2.305,0],[0,2.34],[-2.306,0]],"o":[[0,2.34],[-2.306,0],[0,-2.341],[2.305,0]],"v":[[4.174,0.001],[0,4.237],[-4.175,0.001],[0,-4.236]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.936999990426,0.536999990426,0.764999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[286.309,493.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.802],[5.802,0],[0,5.803],[-5.802,0]],"o":[[0,5.803],[-5.802,0],[0,-5.802],[5.802,0]],"v":[[10.505,0],[-0.001,10.505],[-10.506,0],[-0.001,-10.505]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[360.367,512.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.802],[5.802,0],[0,5.803],[-5.802,0]],"o":[[0,5.803],[-5.802,0],[0,-5.802],[5.802,0]],"v":[[10.506,0],[0,10.505],[-10.505,0],[0,-10.505]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[346.056,512.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.744],[0,0],[0.281,-1.03],[5.625,0],[0,0],[0,6.745],[0,0],[-6.745,0],[0,0]],"o":[[0,0],[0,1.121],[-1.419,5.173],[0,0],[-6.745,0],[0,0],[0,-6.744],[0,0],[6.745,0]],"v":[[68.209,-33.162],[68.209,33.161],[67.776,36.4],[55.995,45.375],[-55.995,45.375],[-68.209,33.161],[-68.209,-33.162],[-55.995,-45.375],[55.995,-45.375]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.388000009574,0.647000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[311.646,482.645],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":37,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"red Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.25,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[79.592,-59.958,0],"to":[14.667,30.667,0],"ti":[-14.667,-30.667,0]},{"t":17,"s":[167.592,124.042,0]}],"ix":2,"l":2},"a":{"a":0,"k":[167.592,124.042,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[162.32,128.603],[170.601,128.603]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.056],[2.287,0],[0,1.055],[-2.286,0]],"o":[[0,1.055],[-2.286,0],[0,-1.056],[2.287,0]],"v":[[4.141,0],[-0.001,1.911],[-4.141,0],[-0.001,-1.911]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[185.57,106.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.056],[2.287,0],[0,1.055],[-2.286,0]],"o":[[0,1.055],[-2.286,0],[0,-1.056],[2.287,0]],"v":[[4.141,0],[-0.001,1.911],[-4.141,0],[-0.001,-1.911]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[147.351,106.308],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.568],[1.569,0],[0,1.568],[-1.568,0]],"o":[[0,1.568],[-1.568,0],[0,-1.568],[1.569,0]],"v":[[2.84,0],[0,2.84],[-2.84,0],[0,-2.84]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.294,120.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.568],[1.569,0],[0,1.568],[-1.568,0]],"o":[[0,1.568],[-1.568,0],[0,-1.568],[1.569,0]],"v":[[2.84,0],[0,2.84],[-2.84,0],[0,-2.84]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[146.159,120.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.109,-4.94],[-3.708,-0.082],[-0.109,4.94],[3.708,0.082]],"o":[[-0.109,4.94],[3.708,0.082],[0.109,-4.941],[-3.708,-0.082]],"v":[[-6.714,-0.149],[-0.198,8.946],[6.714,0.149],[0.198,-8.946]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[185.488,122.555],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.708,-0.082],[-0.109,-4.94],[-3.708,0.082],[0.109,4.941]],"o":[[-3.708,0.082],[0.11,4.941],[3.709,-0.082],[-0.11,-4.94]],"v":[[-0.197,-8.946],[-6.715,0.148],[0.197,8.946],[6.714,-0.149]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[147.644,122.555],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.774,0],[0,0],[0,2.774],[0,0],[-2.774,0],[0,0],[0,-2.774],[0,0]],"o":[[0,0],[-2.774,0],[0,0],[0,-2.774],[0,0],[2.774,0],[0,0],[0,2.774]],"v":[[6.165,8.885],[-6.165,8.885],[-11.189,3.862],[-11.189,-3.861],[-6.165,-8.885],[6.165,-8.885],[11.189,-3.861],[11.189,3.862]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[118.723,157.439],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.529],[2.492,0],[0,2.529],[-2.491,0]],"o":[[0,2.529],[-2.491,0],[0,-2.529],[2.492,0]],"v":[[4.512,0],[-0.001,4.579],[-4.512,0],[-0.001,-4.579]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.862,135.748],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.529],[2.492,0],[0,2.529],[-2.491,0]],"o":[[0,2.529],[-2.491,0],[0,-2.529],[2.492,0]],"v":[[4.512,0],[-0.001,4.579],[-4.512,0],[-0.001,-4.579]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[140.209,135.748],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.27],[6.271,0],[0,6.271],[-6.27,0]],"o":[[0,6.271],[-6.27,0],[0,-6.27],[6.271,0]],"v":[[11.354,0],[-0.001,11.354],[-11.354,0],[-0.001,-11.354]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.245,155.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.27],[6.271,0],[0,6.271],[-6.27,0]],"o":[[0,6.271],[-6.27,0],[0,-6.27],[6.271,0]],"v":[[11.354,0],[-0.001,11.354],[-11.354,0],[-0.001,-11.354]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[204.778,155.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.289],[0,0],[0.302,-1.113],[6.078,0],[0,0],[0,7.289],[0,0],[-7.29,0],[0,0]],"o":[[0,0],[0,1.211],[-1.534,5.591],[0,0],[-7.29,0],[0,0],[0,-7.289],[0,0],[7.29,0]],"v":[[73.714,-35.839],[73.714,35.839],[73.247,39.337],[60.514,49.038],[-60.515,49.038],[-73.715,35.839],[-73.715,-35.839],[-60.515,-49.038],[60.514,-49.038]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[167.592,124.042],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"blue Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.25,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[471.668,-67.733,0],"to":[-6.333,33.5,0],"ti":[6.333,-33.5,0]},{"t":17,"s":[433.668,133.267,0]}],"ix":2,"l":2},"a":{"a":0,"k":[433.668,133.267,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[428.92,137.375],[436.378,137.375]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.951],[2.059,0],[0,0.951],[-2.06,0]],"o":[[0,0.951],[-2.06,0],[0,-0.951],[2.059,0]],"v":[[3.73,0],[0.001,1.721],[-3.729,0],[0.001,-1.721]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[449.861,117.293],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.951],[2.059,0],[0,0.951],[-2.06,0]],"o":[[0,0.951],[-2.06,0],[0,-0.951],[2.059,0]],"v":[[3.73,0],[0.001,1.721],[-3.729,0],[0.001,-1.721]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[415.436,117.293],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.413],[1.413,0],[0,1.413],[-1.412,0]],"o":[[0,1.413],[-1.412,0],[0,-1.413],[1.413,0]],"v":[[2.558,0],[-0.001,2.558],[-2.558,0],[-0.001,-2.558]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[451.415,130.165],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.413],[1.412,0],[0,1.413],[-1.413,0]],"o":[[0,1.413],[-1.413,0],[0,-1.413],[1.412,0]],"v":[[2.557,0],[-0.001,2.558],[-2.558,0],[-0.001,-2.558]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[414.363,130.165],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.099,-4.45],[-3.34,-0.074],[-0.099,4.45],[3.339,0.073]],"o":[[-0.099,4.45],[3.34,0.074],[0.098,-4.45],[-3.34,-0.074]],"v":[[-6.047,-0.134],[-0.178,8.057],[6.048,0.134],[0.179,-8.057]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[449.787,131.927],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.34,-0.074],[-0.098,-4.45],[-3.339,0.074],[0.097,4.45]],"o":[[-3.34,0.074],[0.099,4.451],[3.341,-0.073],[-0.099,-4.45]],"v":[[-0.177,-8.058],[-6.048,0.133],[0.177,8.057],[6.048,-0.134]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[415.7,131.927],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.5,0],[0,0],[0,2.499],[0,0],[-2.499,0],[0,0],[0,-2.499],[0,0]],"o":[[0,0],[-2.499,0],[0,0],[0,-2.499],[0,0],[2.5,0],[0,0],[0,2.499]],"v":[[5.553,8.003],[-5.552,8.003],[-10.077,3.478],[-10.077,-3.478],[-5.552,-8.003],[5.553,-8.003],[10.078,-3.478],[10.078,3.478]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[389.651,163.348],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.278],[2.244,0],[0,2.278],[-2.245,0]],"o":[[0,2.278],[-2.245,0],[0,-2.278],[2.244,0]],"v":[[4.064,0],[0,4.125],[-4.064,0],[0,-4.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[456.43,143.81],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.278],[2.244,0],[0,2.278],[-2.245,0]],"o":[[0,2.278],[-2.245,0],[0,-2.278],[2.244,0]],"v":[[4.064,0],[0.001,4.125],[-4.064,0],[0.001,-4.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[409.003,143.81],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.648],[5.649,0],[0,5.648],[-5.647,0]],"o":[[0,5.648],[-5.647,0],[0,-5.648],[5.649,0]],"v":[[10.226,0],[-0.001,10.226],[-10.226,0],[-0.001,-10.226]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[481.094,162.014],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.648],[5.648,0],[0,5.648],[-5.648,0]],"o":[[0,5.648],[-5.648,0],[0,-5.648],[5.648,0]],"v":[[10.226,0],[0,10.226],[-10.226,0],[0,-10.226]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[467.163,162.014],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.565],[0,0],[0.273,-1.002],[5.476,0],[0,0],[0,6.565],[0,0],[-6.566,0],[0,0]],"o":[[0,0],[0,1.09],[-1.382,5.037],[0,0],[-6.566,0],[0,0],[0,-6.565],[0,0],[6.567,0]],"v":[[66.396,-32.281],[66.396,32.281],[65.975,35.431],[54.506,44.17],[-54.507,44.17],[-66.397,32.281],[-66.397,-32.281],[-54.507,-44.17],[54.506,-44.17]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.322000002394,0.776000019148,0.877999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[433.668,133.267],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"orange Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.25,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[-70.89,379.736,0],"to":[29.5,-1.333,0],"ti":[-29.5,1.333,0]},{"t":17,"s":[106.11,371.736,0]}],"ix":2,"l":2},"a":{"a":0,"k":[106.11,371.736,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[101.85,375.421],[108.54,375.421]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.853],[1.847,0],[0,0.853],[-1.848,0]],"o":[[0,0.853],[-1.848,0],[0,-0.853],[1.847,0]],"v":[[3.345,0],[0,1.544],[-3.345,0],[0,-1.544]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.635,357.408],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.853],[1.847,0],[0,0.853],[-1.847,0]],"o":[[0,0.853],[-1.847,0],[0,-0.853],[1.847,0]],"v":[[3.345,0],[0,1.544],[-3.345,0],[0,-1.544]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.756,357.408],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.268],[1.267,0],[0,1.267],[-1.267,0]],"o":[[0,1.267],[-1.267,0],[0,-1.268],[1.267,0]],"v":[[2.294,0],[0,2.294],[-2.294,0],[0,-2.294]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[122.028,368.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.268],[1.267,0],[0,1.267],[-1.268,0]],"o":[[0,1.267],[-1.268,0],[0,-1.268],[1.267,0]],"v":[[2.295,0],[0.001,2.294],[-2.295,0],[0.001,-2.294]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.793,368.954],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.088,-3.991],[-2.996,-0.067],[-0.089,3.991],[2.997,0.065]],"o":[[-0.088,3.992],[2.996,0.066],[0.088,-3.992],[-2.996,-0.067]],"v":[[-5.425,-0.12],[-0.16,7.228],[5.425,0.12],[0.159,-7.227]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.569,370.535],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.996,-0.066],[-0.088,-3.993],[-2.996,0.066],[0.089,3.993]],"o":[[-2.996,0.065],[0.089,3.991],[2.995,-0.066],[-0.088,-3.991]],"v":[[-0.16,-7.227],[-5.425,0.121],[0.16,7.228],[5.424,-0.12]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.992,370.535],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.242,0],[0,0],[0,2.243],[0,0],[-2.242,0],[0,0],[0,-2.242],[0,0]],"o":[[0,0],[-2.242,0],[0,0],[0,-2.242],[0,0],[2.242,0],[0,0],[0,2.243]],"v":[[4.981,7.179],[-4.98,7.179],[-9.04,3.119],[-9.04,-3.12],[-4.98,-7.179],[4.981,-7.179],[9.04,-3.12],[9.04,3.119]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[66.626,398.719],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.043],[2.013,0],[0,2.044],[-2.013,0]],"o":[[0,2.044],[-2.013,0],[0,-2.043],[2.013,0]],"v":[[3.646,0],[0.001,3.7],[-3.646,0],[0.001,-3.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.526,381.194],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.043],[2.013,0],[0,2.044],[-2.013,0]],"o":[[0,2.044],[-2.013,0],[0,-2.043],[2.013,0]],"v":[[3.646,0],[0.001,3.7],[-3.646,0],[0.001,-3.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[83.985,381.194],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.065],[5.067,0],[0,5.066],[-5.066,0]],"o":[[0,5.066],[-5.066,0],[0,-5.065],[5.067,0]],"v":[[9.173,0],[0,9.173],[-9.173,0],[0,-9.173]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[148.65,397.523],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.065],[5.066,0],[0,5.066],[-5.066,0]],"o":[[0,5.066],[-5.066,0],[0,-5.065],[5.066,0]],"v":[[9.173,0],[0,9.173],[-9.173,0],[0,-9.173]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.154,397.523],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.889],[0,0],[0.244,-0.898],[4.911,0],[0,0],[0,5.889],[0,0],[-5.89,0],[0,0]],"o":[[0,0],[0,0.979],[-1.24,4.518],[0,0],[-5.89,0],[0,0],[0,-5.889],[0,0],[5.89,0]],"v":[[59.557,-28.956],[59.557,28.956],[59.18,31.782],[48.892,39.62],[-48.893,39.62],[-59.558,28.956],[-59.558,-28.956],[-48.893,-39.62],[48.892,-39.62]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.501999978458,0.216000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[106.11,371.736],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"green Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.25,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[678.083,332.837,0],"to":[-29.333,-0.667,0],"ti":[29.333,0.667,0]},{"t":17,"s":[502.083,328.837,0]}],"ix":2,"l":2},"a":{"a":0,"k":[502.083,328.837,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[497.655,332.669],[504.61,332.669]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.887],[1.921,0],[0,0.886],[-1.919,0]],"o":[[0,0.886],[-1.919,0],[0,-0.887],[1.921,0]],"v":[[3.478,0],[-0.001,1.604],[-3.478,0],[-0.001,-1.604]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[517.184,313.942],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.887],[1.92,0],[0,0.886],[-1.92,0]],"o":[[0,0.886],[-1.92,0],[0,-0.887],[1.92,0]],"v":[[3.478,0],[0,1.604],[-3.478,0],[0,-1.604]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[485.082,313.942],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.317],[1.318,0],[0,1.317],[-1.316,0]],"o":[[0,1.317],[-1.316,0],[0,-1.317],[1.318,0]],"v":[[2.385,0],[-0.001,2.385],[-2.386,0],[-0.001,-2.385]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[518.632,325.945],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.317],[1.318,0],[0,1.317],[-1.317,0]],"o":[[0,1.317],[-1.317,0],[0,-1.317],[1.318,0]],"v":[[2.386,0],[0,2.385],[-2.385,0],[0,-2.385]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[484.08,325.945],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.092,-4.15],[-3.116,-0.069],[-0.091,4.149],[3.114,0.069]],"o":[[-0.092,4.149],[3.114,0.069],[0.092,-4.15],[-3.116,-0.069]],"v":[[-5.639,-0.124],[-0.165,7.514],[5.64,0.125],[0.167,-7.514]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[517.115,327.589],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.115,-0.069],[-0.091,-4.151],[-3.114,0.07],[0.091,4.149]],"o":[[-3.114,0.068],[0.092,4.149],[3.115,-0.068],[-0.092,-4.151]],"v":[[-0.166,-7.514],[-5.64,0.125],[0.166,7.513],[5.64,-0.124]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[485.327,327.589],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.33,0],[0,0],[0,2.331],[0,0],[-2.332,0],[0,0],[0,-2.33],[0,0]],"o":[[0,0],[-2.332,0],[0,0],[0,-2.33],[0,0],[2.33,0],[0,0],[0,2.331]],"v":[[5.178,7.463],[-5.178,7.463],[-9.398,3.243],[-9.398,-3.243],[-5.178,-7.463],[5.178,-7.463],[9.398,-3.243],[9.398,3.243]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[461.036,356.889],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.124],[2.094,0],[0,2.124],[-2.093,0]],"o":[[0,2.124],[-2.093,0],[0,-2.124],[2.094,0]],"v":[[3.789,-0.001],[-0.001,3.846],[-3.79,-0.001],[-0.001,-3.846]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[523.309,338.67],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.124],[2.093,0],[0,2.124],[-2.094,0]],"o":[[0,2.124],[-2.094,0],[0,-2.124],[2.093,0]],"v":[[3.79,-0.001],[0.001,3.846],[-3.789,-0.001],[0.001,-3.846]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.752999997606,0.752999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[479.083,338.67],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.267],[5.266,0],[0,5.268],[-5.267,0]],"o":[[0,5.268],[-5.267,0],[0,-5.267],[5.266,0]],"v":[[9.536,0],[0,9.536],[-9.536,0],[0,-9.536]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[546.31,355.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.267],[5.266,0],[0,5.268],[-5.268,0]],"o":[[0,5.268],[-5.268,0],[0,-5.267],[5.266,0]],"v":[[9.536,0],[0,9.536],[-9.537,0],[0,-9.536]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[533.318,355.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.123],[0,0],[0.254,-0.935],[5.106,0],[0,0],[0,6.123],[0,0],[-6.122,0],[0,0]],"o":[[0,0],[0,1.017],[-1.288,4.696],[0,0],[-6.122,0],[0,0],[0,-6.123],[0,0],[6.122,0]],"v":[[61.917,-30.103],[61.917,30.104],[61.524,33.042],[50.83,41.19],[-50.83,41.19],[-61.917,30.104],[-61.917,-30.103],[-50.83,-41.189],[50.83,-41.189]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.238999998803,0.819999964097,0.681999954523,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[502.083,328.837],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"fucusia Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.25,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[319.646,647.645,0],"to":[-1.333,-27.5,0],"ti":[1.333,27.5,0]},{"t":17,"s":[311.646,482.645,0]}],"ix":2,"l":2},"a":{"a":0,"k":[311.646,482.645,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[306.769,486.864],[314.431,486.864]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.046999998654,0.030999998953,0.008000000785,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.977],[2.116,0],[0,0.977],[-2.116,0]],"o":[[0,0.977],[-2.116,0],[0,-0.977],[2.116,0]],"v":[[3.831,0],[0,1.769],[-3.831,0],[0,-1.769]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.282,466.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-0.977],[2.116,0],[0,0.977],[-2.116,0]],"o":[[0,0.977],[-2.116,0],[0,-0.977],[2.116,0]],"v":[[3.831,0],[0,1.769],[-3.831,0],[0,-1.769]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[292.917,466.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.451],[1.451,0],[0,1.451],[-1.451,0]],"o":[[0,1.451],[-1.451,0],[0,-1.451],[1.451,0]],"v":[[2.628,0],[0,2.628],[-2.628,0],[0,-2.628]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[329.877,479.458],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.451],[1.451,0],[0,1.451],[-1.451,0]],"o":[[0,1.451],[-1.451,0],[0,-1.451],[1.451,0]],"v":[[2.628,0],[-0.001,2.628],[-2.628,0],[-0.001,-2.628]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[291.815,479.458],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.101,-4.571],[-3.431,-0.076],[-0.101,4.572],[3.43,0.077]],"o":[[-0.102,4.571],[3.431,0.075],[0.101,-4.571],[-3.432,-0.075]],"v":[[-6.212,-0.137],[-0.183,8.278],[6.213,0.137],[0.184,-8.278]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.206,481.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.431,-0.075],[-0.101,-4.571],[-3.431,0.075],[0.101,4.571]],"o":[[-3.431,0.076],[0.101,4.571],[3.431,-0.077],[-0.102,-4.572]],"v":[[-0.183,-8.278],[-6.213,0.137],[0.183,8.278],[6.213,-0.137]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.054999998504,0.075,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.188,481.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.567,0],[0,0],[0,2.567],[0,0],[-2.568,0],[0,0],[0,-2.567],[0,0]],"o":[[0,0],[-2.568,0],[0,0],[0,-2.567],[0,0],[2.567,0],[0,0],[0,2.567]],"v":[[5.705,8.221],[-5.704,8.221],[-10.353,3.572],[-10.353,-3.574],[-5.704,-8.222],[5.705,-8.222],[10.353,-3.574],[10.353,3.572]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.827000038297,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[266.427,513.548],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.341],[2.306,0],[0,2.34],[-2.305,0]],"o":[[0,2.34],[-2.305,0],[0,-2.341],[2.306,0]],"v":[[4.174,0.001],[-0.001,4.237],[-4.175,0.001],[-0.001,-4.236]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.936999990426,0.536999990426,0.764999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[335.03,493.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.341],[2.305,0],[0,2.34],[-2.306,0]],"o":[[0,2.34],[-2.306,0],[0,-2.341],[2.305,0]],"v":[[4.174,0.001],[0,4.237],[-4.175,0.001],[0,-4.236]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.936999990426,0.536999990426,0.764999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[286.309,493.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.802],[5.802,0],[0,5.803],[-5.802,0]],"o":[[0,5.803],[-5.802,0],[0,-5.802],[5.802,0]],"v":[[10.505,0],[-0.001,10.505],[-10.506,0],[-0.001,-10.505]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.713999968884,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[360.367,512.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.802],[5.802,0],[0,5.803],[-5.802,0]],"o":[[0,5.803],[-5.802,0],[0,-5.802],[5.802,0]],"v":[[10.506,0],[0,10.505],[-10.505,0],[0,-10.505]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.277999997606,0.238999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[346.056,512.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.744],[0,0],[0.281,-1.03],[5.625,0],[0,0],[0,6.745],[0,0],[-6.745,0],[0,0]],"o":[[0,0],[0,1.121],[-1.419,5.173],[0,0],[-6.745,0],[0,0],[0,-6.744],[0,0],[6.745,0]],"v":[[68.209,-33.162],[68.209,33.161],[67.776,36.4],[55.995,45.375],[-55.995,45.375],[-68.209,33.161],[-68.209,-33.162],[-55.995,-45.375],[55.995,-45.375]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.388000009574,0.647000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[311.646,482.645],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":20,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"5_cards","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[300,300,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":600,"h":600,"ip":0,"op":27,"st":-63,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"5_cards","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2,"l":2},"a":{"a":0,"k":[300,300,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":600,"h":600,"ip":27,"op":90,"st":27,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/android/app/src/main/res/raw/tour.mp4 b/android/app/src/main/res/raw/tour.mp4
deleted file mode 100644
index 738ae22..0000000
Binary files a/android/app/src/main/res/raw/tour.mp4 and /dev/null differ
diff --git a/android/app/src/main/res/values-night/themes.xml b/android/app/src/main/res/values-night/themes.xml
deleted file mode 100644
index 8a2899b..0000000
--- a/android/app/src/main/res/values-night/themes.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/values/attrs.xml b/android/app/src/main/res/values/attrs.xml
deleted file mode 100644
index 96aa981..0000000
--- a/android/app/src/main/res/values/attrs.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml
deleted file mode 100644
index 567816c..0000000
--- a/android/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
- #FF000000
- #FFFFFFFF
- #cccccc
- #555555
- #555555
- #cccccc
- #FF3131
- #eb7134
- #ebc334
- #04C604
- #41A4FF
- #dadada
- #392DA7
- #4D4D4E
- #7D89A0
- #7165E3
- #d9D9D9
- #808080
- #d5D4E3
- #00FFFFFF
- #7165E3
- #C8DBFF
- #8582A1
- #EAEAEA
- #7165E3
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/values/dimens.xml b/android/app/src/main/res/values/dimens.xml
deleted file mode 100644
index 2698c72..0000000
--- a/android/app/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- 20dp
- 1dp
- 20dp
- 20dp
- 12sp
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
deleted file mode 100644
index 4033157..0000000
--- a/android/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,176 +0,0 @@
-
- Neo Saturn
-
- Hello blank fragment
- Revolutionizing the banking experience like never done before
-
- Please create your Neo Saturn unique pin, this will be required each time you login into your app
-
- 1
-
- 2
-
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 0
- Please set up your TouchID
- To add your fingerprint, lift and rest your\nfinger at home button repeatedly
- Skip this Step
-
- Create Pin
- Enter Pin
- Enter Confirm Pin
- Confirm New Pin
- Authentication successful.
- Authentication failed.Try Again.
- Confirm Pin Not Match
- Wrong Password
- Take a photo
- Your data is secure with us
- Bank Grade Security
- 256-bit +SSL secured + XSS prevention
- Data Privacy
- Data is only shared with ISO 2001 certified 3rd parties only for credit assessment
- Data Storage
- We don\'t store any passwords or OTP you share with us
- Lending Policy
- Our policies and services are fully regulated and legally compliant
- Proceed further
- Allow permissions to proceed further
- Permit
- Location
- We access location permissions to register your location
- SMS
- We take SMS permission to read OTPs and financial messages
- Contact
- We take permission for fraud prevention, identity verification, and easy reference contact addition.
- Camera
- We take camera permissions for encrypted pictures of you and your KYC documents.
- Video
- We take audio and camera permissions to capture 360-degree video for valid user authentication
- Credit Score
- We request your permission to fetch your credit score from a third-party credit bureau for loan eligibility
- Apps Installed
- We read the apps installed on your device to ensure loan eligibility and prevent fraud
- Allow
- Processing
-
-
-
- - PAN Card
-
-
-
- - a% for 4 weeks, b% for 4 weeks, and c% for 5 weeks
- - x% for 4 weeks, y% for 4 weeks, and z% for 5 weeks
-
-
- - 3000
- - 6000
-
-
-
- Last updated on January 21, 2023
- Accept
- Accept
- Privacy Policy
- Introduction
- This Privacy Policy governs the collection, use, and disclosure of personal information collected by Neo Saturn loan disbursement app. By using our app, you consent to the terms of this Privacy Policy.
- Collection of Personal Information
- We collect personal information from our users to verify identity, prevent fraud, and assess loan eligibility. This information may include, but is not limited to, your name, date of birth, address, phone number, email address, financial information, and credit score.\n\nWe collect this information directly from you, or from third-party sources such as credit bureaus and public records. We only collect personal information that is necessary for the purposes for which it is being collected.
- Use and Sharing of Personal Information
- We use personal information collected from our users to process loan applications, verify identity and eligibility, and prevent fraud. We may share this information with our affiliates, service providers, and other third parties as necessary to provide our services.\n\nWe do not sell or rent your personal information to third parties for marketing purposes.
- Data Security
- We take reasonable steps to protect the personal information we collect from unauthorized access, use, and disclosure. We use industry-standard encryption and security measures to safeguard your personal information.\n\nHowever, no security system is completely foolproof, and we cannot guarantee the security of your personal information.
- Your Rights
- You have the right to access, correct, and delete your personal information that we hold. You may also have the right to restrict or object to our use of your personal information.\n\nIf you have any questions or concerns about our Privacy Policy or the collection, use, or sharing of your personal information, please contact us at privacy@neosaturn.in
- Changes to our Privacy Policy
- We may update our Privacy Policy from time to time. We will provide notice of any material changes to our Privacy Policy by posting the updated Privacy Policy on our app.
- Contact Us
- If you have any questions or concerns about our Privacy Policy or the collection, use, or sharing of your personal information, please contact us at privacy@neosaturn.in
-
-
- Terms and Conditions
- Welcome to Neo Saturn loan disbursement app. These Terms and Conditions govern your use of our app. By using our app, you agree to these Terms and Conditions. If you do not agree to these Terms and Conditions, you may not use our app.
- Use of the App
- You may use our app to apply for loans, check your loan status, and manage your loan account. You may not use our app for any illegal or unauthorized purpose.\n\nYou must provide accurate and complete information when applying for a loan. You are responsible for maintaining the confidentiality of your login credentials and for all activities that occur under your account.
- Intellectual Property
- All content and materials on our app, including but not limited to text, graphics, logos, images, and software, are the property of Neo Saturn or its affiliates, licensors, or service providers. You may not copy, distribute, modify, or create derivative works of any content or materials on our app without our prior written consent.
- Limitation of Liability
- In no event shall Neo Saturn, its affiliates, or its service providers be liable for any damages, including but not limited to direct, indirect, incidental, special, or consequential damages, arising out of or in connection with the use or inability to use our app.
- Indemnification
- You agree to indemnify and hold harmless Neo Saturn, its affiliates, and its service providers from any claim or demand, including reasonable attorneys\' fees, made by any third party due to or arising out of your use of our app, your violation of these Terms and Conditions, or your violation of any rights of another.
- Governing Law
- These Terms and Conditions shall be governed by and construed in accordance with the laws of the jurisdiction in which Neo Saturn is located, without giving effect to any principles of conflicts of law.
- Changes to Terms and Conditions
- We may update these Terms and Conditions from time to time. We will provide notice of any material changes to these Terms and Conditions by posting the updated Terms and Conditions on our app.
-
-
- Take an app tour to EXPLORE neosaturn, or REGISTER to get a loan
- Register
- OR
-
- Take an app tour
- Login
- Already have an account?
-
-
- Watch this video to get an OVERALL app overview
- Next
-
-
- Do you want to REGISTER?
- Yes
- No
-
-
- Do you want to EXIT?
-
-
- CONGRATULATIONS! You have been registered successfully!
- Your registration details have been sent to your email address, and phone number
-
-
- Welcome!
- Please provide following details for your new account
- Already have an account? -
-
- First name
- Last name
- Middle name
-
-
- Phone number
- Please enter your valid phone number. We will send you 6-digit code to verify account.
- An OTP will be sent to your phone number
-
-
- Verify Phone
- Enter 6-digit code we have sent to at +91 95607 62226
- Wrong number?-
- Change it
- Didn’t not received the OTP ?
- Resend OTP
- Send OTP
-
- `
- Fill your Personal Information
-
- Enter your Present Address
-
- Enter your Permanent Address
-
- Enter your Occupational Details
-
- Enter your Bank Account Details
-
-
-
- Congratulations! You have successfully filled all the details.
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index e0b2b8b..0000000
--- a/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/values/themes.xml b/android/app/src/main/res/values/themes.xml
deleted file mode 100644
index e852d7f..0000000
--- a/android/app/src/main/res/values/themes.xml
+++ /dev/null
@@ -1,210 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/xml/backup_rules.xml b/android/app/src/main/res/xml/backup_rules.xml
deleted file mode 100644
index fa0f996..0000000
--- a/android/app/src/main/res/xml/backup_rules.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/xml/data_extraction_rules.xml b/android/app/src/main/res/xml/data_extraction_rules.xml
deleted file mode 100644
index 9ee9997..0000000
--- a/android/app/src/main/res/xml/data_extraction_rules.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/xml/file_paths.xml b/android/app/src/main/res/xml/file_paths.xml
deleted file mode 100644
index cabd9de..0000000
--- a/android/app/src/main/res/xml/file_paths.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/test/java/com/example/infuxion_alternate/ExampleUnitTest.kt b/android/app/src/test/java/com/example/infuxion_alternate/ExampleUnitTest.kt
deleted file mode 100644
index 2063ca3..0000000
--- a/android/app/src/test/java/com/example/infuxion_alternate/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.example.infuxion_alternate
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
deleted file mode 100644
index 0ea066e..0000000
--- a/android/build.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
-
- repositories {
- // Make sure that you have the following two repositories
- google() // Google's Maven repository
- mavenCentral() // Maven Central repository
- }
-
- dependencies {
- classpath 'com.google.gms:google-services:4.3.15'
- classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
-
-
- }
-
-}
-plugins {
- id 'com.android.application' version '7.2.2' apply false
- id 'com.android.library' version '7.2.2' apply false
- id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
-
-}
-
-
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/android/gradle.properties b/android/gradle.properties
deleted file mode 100644
index cd0519b..0000000
--- a/android/gradle.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Project-wide Gradle settings.
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app"s APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=true
-# Kotlin code style for this project: "official" or "obsolete":
-kotlin.code.style=official
-# Enables namespacing of each library's R class so that its R class includes only the
-# resources declared in the library itself and none from the library's dependencies,
-# thereby reducing the size of the R class for that library
-android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e708b1c..0000000
Binary files a/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 522807d..0000000
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Sat Oct 29 03:59:23 IST 2022
-distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
-distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
diff --git a/android/gradlew b/android/gradlew
deleted file mode 100644
index 4f906e0..0000000
--- a/android/gradlew
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/android/gradlew.bat b/android/gradlew.bat
deleted file mode 100644
index 107acd3..0000000
--- a/android/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/android/image_compressor/.gitignore b/android/image_compressor/.gitignore
deleted file mode 100644
index 916b245..0000000
--- a/android/image_compressor/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea
-.DS_Store
-/build
-/captures
\ No newline at end of file
diff --git a/android/image_compressor/build.gradle b/android/image_compressor/build.gradle
deleted file mode 100644
index 5d3f914..0000000
--- a/android/image_compressor/build.gradle
+++ /dev/null
@@ -1,44 +0,0 @@
-apply plugin: 'com.android.library'
-apply plugin: 'kotlin-android'
-//apply plugin: 'com.github.dcendents.android-maven'
-//apply plugin: 'jacoco-android'
-
-ext {
- PUBLISH_GROUP_ID = 'id.zelory'
- PUBLISH_VERSION = '3.0.1'
- PUBLISH_ARTIFACT_ID = 'compressor'
-}
-
-//apply from: "$rootDir/gradle/publish_maven.gradle"
-
-android {
- compileSdkVersion 33
- buildToolsVersion '29.0.2'
-
- defaultConfig {
- minSdkVersion 14
- targetSdkVersion 33
- versionCode 5
- versionName "3.0.0"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-}
-
-
-dependencies {
- ext.kotlin_version = '1.3.61'
- ext.kotlin_coroutines_version = '1.3.3'
-
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
-
- testImplementation 'junit:junit:4.12'
- testImplementation 'io.mockk:mockk:1.9.3'
- testImplementation 'com.natpryce:hamkrest:1.7.0.0'
- testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlin_coroutines_version"
-}
diff --git a/android/image_compressor/proguard-rules.pro b/android/image_compressor/proguard-rules.pro
deleted file mode 100644
index 71a7f93..0000000
--- a/android/image_compressor/proguard-rules.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in /Users/macbookair/Library/Android/sdk/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
diff --git a/android/image_compressor/src/main/AndroidManifest.xml b/android/image_compressor/src/main/AndroidManifest.xml
deleted file mode 100644
index 828f078..0000000
--- a/android/image_compressor/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/Compressor.kt b/android/image_compressor/src/main/java/id/zelory/compressor/Compressor.kt
deleted file mode 100644
index bfc5ffe..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/Compressor.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package id.zelory.compressor
-
-import android.content.Context
-import id.zelory.compressor.constraint.Compression
-import id.zelory.compressor.constraint.default
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.withContext
-import java.io.File
-import kotlin.coroutines.CoroutineContext
-
-/**
- * Created on : January 22, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-object Compressor {
- suspend fun compress(
- context: Context,
- imageFile: File,
- coroutineContext: CoroutineContext = Dispatchers.IO,
- compressionPatch: Compression.() -> Unit = { default() }
- ) = withContext(coroutineContext) {
- val compression = Compression().apply(compressionPatch)
- var result = copyToCache(context, imageFile)
- compression.constraints.forEach { constraint ->
- while (constraint.isSatisfied(result).not()) {
- result = constraint.satisfy(result)
- }
- }
- return@withContext result
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/Util.kt b/android/image_compressor/src/main/java/id/zelory/compressor/Util.kt
deleted file mode 100644
index bcb1cb3..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/Util.kt
+++ /dev/null
@@ -1,108 +0,0 @@
-package id.zelory.compressor
-
-import android.content.Context
-import android.graphics.Bitmap
-import android.graphics.BitmapFactory
-import android.graphics.Matrix
-import android.media.ExifInterface
-import java.io.File
-import java.io.FileOutputStream
-
-/**
- * Created on : January 24, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-private val separator = File.separator
-
-private fun cachePath(context: Context) = "${context.cacheDir.path}${separator}compressor$separator"
-
-fun File.compressFormat() = when (extension.toLowerCase()) {
- "png" -> Bitmap.CompressFormat.PNG
- "webp" -> Bitmap.CompressFormat.WEBP
- else -> Bitmap.CompressFormat.JPEG
-}
-
-fun Bitmap.CompressFormat.extension() = when (this) {
- Bitmap.CompressFormat.PNG -> "png"
- Bitmap.CompressFormat.WEBP -> "webp"
- else -> "jpg"
-}
-
-fun loadBitmap(imageFile: File) = BitmapFactory.decodeFile(imageFile.absolutePath).run {
- determineImageRotation(imageFile, this)
-}
-
-fun decodeSampledBitmapFromFile(imageFile: File, reqWidth: Int, reqHeight: Int): Bitmap {
- return BitmapFactory.Options().run {
- inJustDecodeBounds = true
- BitmapFactory.decodeFile(imageFile.absolutePath, this)
-
- inSampleSize = calculateInSampleSize(this, reqWidth, reqHeight)
-
- inJustDecodeBounds = false
- BitmapFactory.decodeFile(imageFile.absolutePath, this)
- }
-}
-
-fun calculateInSampleSize(options: BitmapFactory.Options, reqWidth: Int, reqHeight: Int): Int {
- // Raw height and width of image
- val (height: Int, width: Int) = options.run { outHeight to outWidth }
- var inSampleSize = 1
-
- if (height > reqHeight || width > reqWidth) {
-
- val halfHeight: Int = height / 2
- val halfWidth: Int = width / 2
-
- // Calculate the largest inSampleSize value that is a power of 2 and keeps both
- // height and width larger than the requested height and width.
- while (halfHeight / inSampleSize >= reqHeight && halfWidth / inSampleSize >= reqWidth) {
- inSampleSize *= 2
- }
- }
-
- return inSampleSize
-}
-
-fun determineImageRotation(imageFile: File, bitmap: Bitmap): Bitmap {
- val exif = ExifInterface(imageFile.absolutePath)
- val orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 0)
- val matrix = Matrix()
- when (orientation) {
- 6 -> matrix.postRotate(90f)
- 3 -> matrix.postRotate(180f)
- 8 -> matrix.postRotate(270f)
- }
- return Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
-}
-
-internal fun copyToCache(context: Context, imageFile: File): File {
- return imageFile.copyTo(File("${cachePath(context)}${imageFile.name}"), true)
-}
-
-fun overWrite(imageFile: File, bitmap: Bitmap, format: Bitmap.CompressFormat = imageFile.compressFormat(), quality: Int = 100): File {
- val result = if (format == imageFile.compressFormat()) {
- imageFile
- } else {
- File("${imageFile.absolutePath.substringBeforeLast(".")}.${format.extension()}")
- }
- imageFile.delete()
- saveBitmap(bitmap, result, format, quality)
- return result
-}
-
-fun saveBitmap(bitmap: Bitmap, destination: File, format: Bitmap.CompressFormat = destination.compressFormat(), quality: Int = 100) {
- destination.parentFile?.mkdirs()
- var fileOutputStream: FileOutputStream? = null
- try {
- fileOutputStream = FileOutputStream(destination.absolutePath)
- bitmap.compress(format, quality, fileOutputStream)
- } finally {
- fileOutputStream?.run {
- flush()
- close()
- }
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/Compression.kt b/android/image_compressor/src/main/java/id/zelory/compressor/constraint/Compression.kt
deleted file mode 100644
index 4c19f3b..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/Compression.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package id.zelory.compressor.constraint
-
-class Compression {
- internal val constraints: MutableList = mutableListOf()
-
- fun constraint(constraint: Constraint) {
- constraints.add(constraint)
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/Constraint.kt b/android/image_compressor/src/main/java/id/zelory/compressor/constraint/Constraint.kt
deleted file mode 100644
index 474c435..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/Constraint.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package id.zelory.compressor.constraint
-
-import java.io.File
-
-/**
- * Created on : January 24, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
- interface Constraint {
- fun isSatisfied(imageFile: File): Boolean
-
- fun satisfy(imageFile: File): File
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/DefaultConstraint.kt b/android/image_compressor/src/main/java/id/zelory/compressor/constraint/DefaultConstraint.kt
deleted file mode 100644
index 7d4b112..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/DefaultConstraint.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package id.zelory.compressor.constraint
-
-import android.graphics.Bitmap
-import id.zelory.compressor.decodeSampledBitmapFromFile
-import id.zelory.compressor.determineImageRotation
-import id.zelory.compressor.overWrite
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class DefaultConstraint(
- private val width: Int = 612,
- private val height: Int = 816,
- private val format: Bitmap.CompressFormat = Bitmap.CompressFormat.JPEG,
- private val quality: Int = 80
-) : Constraint {
- private var isResolved = false
-
- override fun isSatisfied(imageFile: File): Boolean {
- return isResolved
- }
-
- override fun satisfy(imageFile: File): File {
- val result = decodeSampledBitmapFromFile(imageFile, width, height).run {
- determineImageRotation(imageFile, this).run {
- overWrite(imageFile, this, format, quality)
- }
- }
- isResolved = true
- return result
- }
-}
-
-fun Compression.default(
- width: Int = 612,
- height: Int = 816,
- format: Bitmap.CompressFormat = Bitmap.CompressFormat.JPEG,
- quality: Int = 80
-) {
- constraint(DefaultConstraint(width, height, format, quality))
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/DestinationConstraint.kt b/android/image_compressor/src/main/java/id/zelory/compressor/constraint/DestinationConstraint.kt
deleted file mode 100644
index 66134e8..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/DestinationConstraint.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package id.zelory.compressor.constraint
-
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class DestinationConstraint(private val destination: File) : Constraint {
- override fun isSatisfied(imageFile: File): Boolean {
- return imageFile.absolutePath == destination.absolutePath
- }
-
- override fun satisfy(imageFile: File): File {
- return imageFile.copyTo(destination, true)
- }
-}
-
-fun Compression.destination(destination: File) {
- constraint(DestinationConstraint(destination))
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/FormatConstraint.kt b/android/image_compressor/src/main/java/id/zelory/compressor/constraint/FormatConstraint.kt
deleted file mode 100644
index 38111e9..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/FormatConstraint.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package id.zelory.compressor.constraint
-
-import android.graphics.Bitmap
-import id.zelory.compressor.compressFormat
-import id.zelory.compressor.loadBitmap
-import id.zelory.compressor.overWrite
-import java.io.File
-
-/**
- * Created on : January 24, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class FormatConstraint(private val format: Bitmap.CompressFormat) : Constraint {
-
- override fun isSatisfied(imageFile: File): Boolean {
- return format == imageFile.compressFormat()
- }
-
- override fun satisfy(imageFile: File): File {
- return overWrite(imageFile, loadBitmap(imageFile), format)
- }
-}
-
-fun Compression.format(format: Bitmap.CompressFormat) {
- constraint(FormatConstraint(format))
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/QualityConstraint.kt b/android/image_compressor/src/main/java/id/zelory/compressor/constraint/QualityConstraint.kt
deleted file mode 100644
index 828657e..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/QualityConstraint.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package id.zelory.compressor.constraint
-
-import id.zelory.compressor.loadBitmap
-import id.zelory.compressor.overWrite
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class QualityConstraint(private val quality: Int) : Constraint {
- private var isResolved = false
-
- override fun isSatisfied(imageFile: File): Boolean {
- return isResolved
- }
-
- override fun satisfy(imageFile: File): File {
- val result = overWrite(imageFile, loadBitmap(imageFile), quality = quality)
- isResolved = true
- return result
- }
-}
-
-fun Compression.quality(quality: Int) {
- constraint(QualityConstraint(quality))
-}
-
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/ResolutionConstraint.kt b/android/image_compressor/src/main/java/id/zelory/compressor/constraint/ResolutionConstraint.kt
deleted file mode 100644
index 9b1b75f..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/ResolutionConstraint.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package id.zelory.compressor.constraint
-
-import android.graphics.BitmapFactory
-import id.zelory.compressor.calculateInSampleSize
-import id.zelory.compressor.decodeSampledBitmapFromFile
-import id.zelory.compressor.determineImageRotation
-import id.zelory.compressor.overWrite
-import java.io.File
-
-/**
- * Created on : January 24, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class ResolutionConstraint(private val width: Int, private val height: Int) : Constraint {
-
- override fun isSatisfied(imageFile: File): Boolean {
- return BitmapFactory.Options().run {
- inJustDecodeBounds = true
- BitmapFactory.decodeFile(imageFile.absolutePath, this)
- calculateInSampleSize(this, width, height) <= 1
- }
- }
-
- override fun satisfy(imageFile: File): File {
- return decodeSampledBitmapFromFile(imageFile, width, height).run {
- determineImageRotation(imageFile, this).run {
- overWrite(imageFile, this)
- }
- }
- }
-}
-
-fun Compression.resolution(width: Int, height: Int) {
- constraint(ResolutionConstraint(width, height))
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/SizeConstraint.kt b/android/image_compressor/src/main/java/id/zelory/compressor/constraint/SizeConstraint.kt
deleted file mode 100644
index 95d14ea..0000000
--- a/android/image_compressor/src/main/java/id/zelory/compressor/constraint/SizeConstraint.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package id.zelory.compressor.constraint
-
-import id.zelory.compressor.loadBitmap
-import id.zelory.compressor.overWrite
-import java.io.File
-
-/**
- * Created on : January 24, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class SizeConstraint(
- private val maxFileSize: Long,
- private val stepSize: Int = 10,
- private val maxIteration: Int = 10,
- private val minQuality: Int = 10
-) : Constraint {
- private var iteration: Int = 0
-
- override fun isSatisfied(imageFile: File): Boolean {
- return imageFile.length() <= maxFileSize || iteration >= maxIteration
- }
-
- override fun satisfy(imageFile: File): File {
- iteration++
- val quality = (100 - iteration * stepSize).takeIf { it >= minQuality } ?: minQuality
- return overWrite(imageFile, loadBitmap(imageFile), quality = quality)
- }
-}
-
-fun Compression.size(maxFileSize: Long, stepSize: Int = 10, maxIteration: Int = 10) {
- constraint(SizeConstraint(maxFileSize, stepSize, maxIteration))
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/CompressorTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/CompressorTest.kt
deleted file mode 100644
index c497278..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/CompressorTest.kt
+++ /dev/null
@@ -1,120 +0,0 @@
-package id.zelory.compressor
-
-import android.graphics.Bitmap
-import id.zelory.compressor.constraint.DefaultConstraint
-import id.zelory.compressor.constraint.FormatConstraint
-import id.zelory.compressor.constraint.QualityConstraint
-import id.zelory.compressor.constraint.ResolutionConstraint
-import id.zelory.compressor.constraint.format
-import id.zelory.compressor.constraint.quality
-import id.zelory.compressor.constraint.resolution
-import io.mockk.every
-import io.mockk.mockk
-import io.mockk.mockkConstructor
-import io.mockk.mockkStatic
-import io.mockk.verify
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.test.TestCoroutineDispatcher
-import kotlinx.coroutines.test.resetMain
-import kotlinx.coroutines.test.runBlockingTest
-import kotlinx.coroutines.test.setMain
-import org.junit.After
-import org.junit.Before
-import org.junit.Test
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class CompressorTest {
-
- private val testDispatcher = TestCoroutineDispatcher()
-
- @Before
- fun setup() {
- Dispatchers.setMain(testDispatcher)
- mockkStatic("id.zelory.compressor.UtilKt")
- every { copyToCache(any(), any()) } returns mockk(relaxed = true)
- }
-
- @After
- fun cleanUp() {
- Dispatchers.resetMain()
- testDispatcher.cleanupTestCoroutines()
- }
-
- @Test
- fun `compress with default specs should execute default constraint`() = testDispatcher.runBlockingTest {
- // Given
- mockkConstructor(DefaultConstraint::class)
- var executedConstraint = 0
- every { anyConstructed().isSatisfied(any()) } answers {
- executedConstraint > 0
- }
- every { anyConstructed().satisfy(any()) } answers {
- executedConstraint++
- mockk(relaxed = true)
- }
-
- // When
- Compressor.compress(mockk(relaxed = true), mockk(relaxed = true), testDispatcher)
-
- // Then
- verify {
- anyConstructed().isSatisfied(any())
- anyConstructed().satisfy(any())
- }
- }
-
- @Test
- fun `compress with custom specs should execute all constraint provided`() = testDispatcher.runBlockingTest {
- // Given
- mockkConstructor(ResolutionConstraint::class)
- mockkConstructor(QualityConstraint::class)
- mockkConstructor(FormatConstraint::class)
-
- var executedConstraint = 0
- every { anyConstructed().isSatisfied(any()) } answers {
- executedConstraint > 0
- }
- every { anyConstructed().satisfy(any()) } answers {
- executedConstraint++
- mockk(relaxed = true)
- }
-
- every { anyConstructed().isSatisfied(any()) } answers {
- executedConstraint > 1
- }
- every { anyConstructed().satisfy(any()) } answers {
- executedConstraint++
- mockk(relaxed = true)
- }
-
- every { anyConstructed().isSatisfied(any()) } answers {
- executedConstraint > 2
- }
- every { anyConstructed().satisfy(any()) } answers {
- executedConstraint++
- mockk(relaxed = true)
- }
-
- // When
- Compressor.compress(mockk(relaxed = true), mockk(relaxed = true), testDispatcher) {
- resolution(100, 100)
- quality(75)
- format(Bitmap.CompressFormat.PNG)
- }
-
- // Then
- verify {
- anyConstructed().isSatisfied(any())
- anyConstructed().satisfy(any())
- anyConstructed().isSatisfied(any())
- anyConstructed().satisfy(any())
- anyConstructed().isSatisfied(any())
- anyConstructed().satisfy(any())
- }
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/UtilTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/UtilTest.kt
deleted file mode 100644
index 68c0e76..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/UtilTest.kt
+++ /dev/null
@@ -1,208 +0,0 @@
-package id.zelory.compressor
-
-import android.content.Context
-import android.graphics.Bitmap
-import android.graphics.BitmapFactory
-import com.natpryce.hamkrest.assertion.assertThat
-import com.natpryce.hamkrest.equalTo
-import io.mockk.Runs
-import io.mockk.every
-import io.mockk.just
-import io.mockk.mockk
-import io.mockk.mockkStatic
-import io.mockk.unmockkAll
-import io.mockk.verify
-import org.junit.After
-import org.junit.Test
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class UtilTest {
-
- @After
- fun teardown() {
- unmockkAll()
- }
-
- @Test
- fun `get compress format from file should return correct format`() {
- assertThat(File("a_file.png").compressFormat(), equalTo(Bitmap.CompressFormat.PNG))
- assertThat(File("a_file.webp").compressFormat(), equalTo(Bitmap.CompressFormat.WEBP))
- assertThat(File("a_file.jpg").compressFormat(), equalTo(Bitmap.CompressFormat.JPEG))
- assertThat(File("a_file.jpeg").compressFormat(), equalTo(Bitmap.CompressFormat.JPEG))
- }
-
- @Test
- fun `get extension from compress format should return correct extension`() {
- assertThat(Bitmap.CompressFormat.PNG.extension(), equalTo("png"))
- assertThat(Bitmap.CompressFormat.WEBP.extension(), equalTo("webp"))
- assertThat(Bitmap.CompressFormat.JPEG.extension(), equalTo("jpg"))
- }
-
- @Test
- fun `load bitmap should determine image rotation`() {
- // Given
- mockkStatic(BitmapFactory::class)
- every { BitmapFactory.decodeFile(any()) } returns mockk()
- mockkStatic("id.zelory.compressor.UtilKt")
- every { determineImageRotation(any(), any()) } returns mockk()
-
- // When
- loadBitmap(mockk(relaxed = true))
-
- // Then
- verify { determineImageRotation(any(), any()) }
- }
-
- @Test
- fun `decode sampled bitmap should decode with subsampling`() {
- // Given
- mockkStatic(BitmapFactory::class)
- every { BitmapFactory.decodeFile(any(), any()) } returns mockk()
- mockkStatic("id.zelory.compressor.UtilKt")
- val inSampleSize = 2
- every { calculateInSampleSize(any(), any(), any()) } returns inSampleSize
-
- // When
- decodeSampledBitmapFromFile(mockk(relaxed = true), 100, 100)
-
- // Then
- verify {
- BitmapFactory.decodeFile(any(), match {
- it.inSampleSize == inSampleSize
- })
- }
- }
-
- @Test
- fun `when request half of resolution, it should return 2 in sample size`() {
- // Given
- val options = BitmapFactory.Options().apply {
- outWidth = 800
- outHeight = 800
- }
-
- // When + Then
- assertThat(calculateInSampleSize(options, 400, 400), equalTo(2))
- }
-
- @Test
- fun `when resolution requested greater than actual resolution, it should return 1 in sample size`() {
- // Given
- val options = BitmapFactory.Options().apply {
- outWidth = 800
- outHeight = 800
- }
-
- // When + Then
- assertThat(calculateInSampleSize(options, 1000, 1000), equalTo(1))
- }
-
- @Test
- fun `when partial resolution requested greater than actual resolution, it should return 1 in sample size`() {
- // Given
- val options = BitmapFactory.Options().apply {
- outWidth = 800
- outHeight = 800
- }
-
- // When + Then
- assertThat(calculateInSampleSize(options, 1000, 500), equalTo(1))
- }
-
- @Test
- fun `when resolution requested less than actual resolution but greater than of half it, it should return 1 in sample size`() {
- // Given
- val options = BitmapFactory.Options().apply {
- outWidth = 800
- outHeight = 800
- }
-
- // When + Then
- assertThat(calculateInSampleSize(options, 500, 500), equalTo(1))
- }
-
- @Test
- fun `when request 25% of resolution, it should return 4 in sample size`() {
- // Given
- val options = BitmapFactory.Options().apply {
- outWidth = 800
- outHeight = 800
- }
-
- // When + Then
- assertThat(calculateInSampleSize(options, 200, 200), equalTo(4))
- }
-
- @Test
- fun `when width 25% and height 50% of resolution, it should return min sample size (height)`() {
- // Given
- val options = BitmapFactory.Options().apply {
- outWidth = 800
- outHeight = 800
- }
-
- // When + Then
- assertThat(calculateInSampleSize(options, 200, 400), equalTo(2))
- }
-
- @Test
- fun `copy to cache should copy file to right folder`() {
- // Given
- val context = mockk(relaxed = true)
- every { context.cacheDir.path } returns "folder/"
-
- mockkStatic("kotlin.io.FilesKt__UtilsKt")
- every { any().copyTo(any(), any(), any()) } returns mockk(relaxed = true)
-
- val source = File("image.jpg")
-
- // When
- copyToCache(context, File("image.jpg"))
-
- // Then
- verify {
- source.copyTo(File("folder/compressor/image.jpg"), true, any())
- }
- }
-
- @Test
- fun `overwrite should delete old file and save new bitmap`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
- every { saveBitmap(any(), any(), any(), any()) } just Runs
-
- val imageFile = mockk(relaxed = true)
- val bitmap = mockk(relaxed = true)
-
- // When
- overWrite(imageFile, bitmap)
-
- // Then
- verify {
- imageFile.delete()
- saveBitmap(bitmap, imageFile, any(), any())
- }
- }
-
- @Test
- fun `overwrite with different format should save image with new format extension`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
- every { saveBitmap(any(), any(), any(), any()) } just Runs
-
- val imageFile = File("image.jpg")
- val bitmap = mockk(relaxed = true)
-
- // When
- val result = overWrite(imageFile, bitmap, Bitmap.CompressFormat.PNG)
-
- // Then
- assertThat(result.extension, equalTo("png"))
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/CompressionTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/constraint/CompressionTest.kt
deleted file mode 100644
index 57490df..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/CompressionTest.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package id.zelory.compressor.constraint
-
-import com.natpryce.hamkrest.assertion.assertThat
-import com.natpryce.hamkrest.equalTo
-import io.mockk.mockk
-import org.junit.Test
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class CompressionTest {
- @Test
- fun `add constraint should save it to constraint list`() {
- // Given
- val compression = Compression()
-
- // When
- compression.constraint(mockk())
- compression.constraint(mockk())
-
- // Then
- assertThat(compression.constraints.size, equalTo(2))
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/DefaultConstraintTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/constraint/DefaultConstraintTest.kt
deleted file mode 100644
index e866240..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/DefaultConstraintTest.kt
+++ /dev/null
@@ -1,99 +0,0 @@
-package id.zelory.compressor.constraint
-
-import android.graphics.Bitmap
-import com.natpryce.hamkrest.assertion.assertThat
-import com.natpryce.hamkrest.equalTo
-import com.natpryce.hamkrest.isA
-import id.zelory.compressor.decodeSampledBitmapFromFile
-import id.zelory.compressor.determineImageRotation
-import id.zelory.compressor.overWrite
-import io.mockk.every
-import io.mockk.mockk
-import io.mockk.mockkStatic
-import io.mockk.unmockkAll
-import io.mockk.verify
-import org.junit.After
-import org.junit.Test
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class DefaultConstraintTest {
-
- @After
- fun teardown() {
- unmockkAll()
- }
-
- @Test
- fun `when satisfy function not yet invoked, constraint should not satisfied`() {
- // Given
- val constraint = DefaultConstraint()
-
- // When + Then
- assertThat(constraint.isSatisfied(mockk()), equalTo(false))
- }
-
- @Test
- fun `when satisfy function is invoked, constraint should satisfied`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
- every { decodeSampledBitmapFromFile(any(), any(), any()) } returns mockk(relaxed = true)
- every { determineImageRotation(any(), any()) } returns mockk(relaxed = true)
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val constraint = DefaultConstraint()
-
- // When
- constraint.satisfy(mockk(relaxed = true))
-
- // Then
- assertThat(constraint.isSatisfied(mockk()), equalTo(true))
- }
-
- @Test
- fun `when trying satisfy constraint, it should subsampling image and overwrite file`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
-
- val sampledBitmap = mockk(relaxed = true)
- every { decodeSampledBitmapFromFile(any(), any(), any()) } returns sampledBitmap
-
- val rotatedBitmap = mockk(relaxed = true)
- every { determineImageRotation(any(), any()) } returns rotatedBitmap
-
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val imageFile = mockk(relaxed = true)
- val (width, height) = (1280 to 720)
- val format = Bitmap.CompressFormat.JPEG
- val quality = 80
- val constraint = DefaultConstraint(width, height, format, quality)
-
- // When
- constraint.satisfy(imageFile)
-
- // Then
- verify {
- decodeSampledBitmapFromFile(imageFile, width, height)
- determineImageRotation(imageFile, sampledBitmap)
- overWrite(imageFile, rotatedBitmap, format, quality)
- }
- }
-
- @Test
- fun `verify extension`() {
- // Given
- val compression = Compression()
-
- // When
- compression.default()
-
- // Then
- assertThat(compression.constraints.first(), isA())
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/DestinationConstraintTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/constraint/DestinationConstraintTest.kt
deleted file mode 100644
index a5355c2..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/DestinationConstraintTest.kt
+++ /dev/null
@@ -1,74 +0,0 @@
-package id.zelory.compressor.constraint
-
-import com.natpryce.hamkrest.assertion.assertThat
-import com.natpryce.hamkrest.equalTo
-import com.natpryce.hamkrest.isA
-import io.mockk.every
-import io.mockk.mockk
-import io.mockk.mockkStatic
-import io.mockk.unmockkAll
-import io.mockk.verify
-import org.junit.After
-import org.junit.Test
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class DestinationConstraintTest {
-
- @After
- fun teardown() {
- unmockkAll()
- }
-
- @Test
- fun `when destination is not equal with image file, constraint should not satisfied`() {
- // Given
- val constraint = DestinationConstraint(File("a_file.webp"))
-
- // When + Then
- assertThat(constraint.isSatisfied(File("another_file.png")), equalTo(false))
- }
-
- @Test
- fun `when destination is equal with image file, constraint should satisfied`() {
- // Given
- val constraint = DestinationConstraint(File("a_file.jpg"))
-
- // When + Then
- assertThat(constraint.isSatisfied(File("a_file.jpg")), equalTo(true))
- }
-
- @Test
- fun `when trying satisfy constraint, it should copy image to destination`() {
- // Given
- mockkStatic("kotlin.io.FilesKt__UtilsKt")
- every { any().copyTo(any(), any(), any()) } returns mockk(relaxed = true)
-
- val imageFile = File("source.jpg")
- val destination = File("destination.jpg")
- val constraint = DestinationConstraint(destination)
-
- // When
- constraint.satisfy(imageFile)
-
- // Then
- verify { imageFile.copyTo(destination, true, any()) }
- }
-
- @Test
- fun `verify extension`() {
- // Given
- val compression = Compression()
-
- // When
- compression.destination(mockk())
-
- // Then
- assertThat(compression.constraints.first(), isA())
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/FormatConstraintTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/constraint/FormatConstraintTest.kt
deleted file mode 100644
index 8df5385..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/FormatConstraintTest.kt
+++ /dev/null
@@ -1,78 +0,0 @@
-package id.zelory.compressor.constraint
-
-import android.graphics.Bitmap
-import com.natpryce.hamkrest.assertion.assertThat
-import com.natpryce.hamkrest.equalTo
-import com.natpryce.hamkrest.isA
-import id.zelory.compressor.loadBitmap
-import id.zelory.compressor.overWrite
-import io.mockk.every
-import io.mockk.mockk
-import io.mockk.mockkStatic
-import io.mockk.unmockkAll
-import io.mockk.verify
-import org.junit.After
-import org.junit.Test
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class FormatConstraintTest {
-
- @After
- fun teardown() {
- unmockkAll()
- }
-
- @Test
- fun `when extension is not equal with format, constraint should not satisfied`() {
- // Given
- val constraint = FormatConstraint(Bitmap.CompressFormat.JPEG)
-
- // When + Then
- assertThat(constraint.isSatisfied(File("a_file.webp")), equalTo(false))
- }
-
- @Test
- fun `when extension is equal with format, constraint should satisfied`() {
- // Given
- val constraint = FormatConstraint(Bitmap.CompressFormat.WEBP)
-
- // When + Then
- assertThat(constraint.isSatisfied(File("a_file.webp")), equalTo(true))
- }
-
- @Test
- fun `when trying satisfy constraint, it should save image with selected format`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
- every { loadBitmap(any()) } returns mockk()
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val imageFile = mockk()
- val format = Bitmap.CompressFormat.PNG
- val constraint = FormatConstraint(format)
-
- // When
- constraint.satisfy(imageFile)
-
- // Then
- verify { overWrite(imageFile, any(), format, any()) }
- }
-
- @Test
- fun `verify extension`() {
- // Given
- val compression = Compression()
-
- // When
- compression.format(Bitmap.CompressFormat.PNG)
-
- // Then
- assertThat(compression.constraints.first(), isA())
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/QualityConstraintTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/constraint/QualityConstraintTest.kt
deleted file mode 100644
index 7c6c0f7..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/QualityConstraintTest.kt
+++ /dev/null
@@ -1,84 +0,0 @@
-package id.zelory.compressor.constraint
-
-import com.natpryce.hamkrest.assertion.assertThat
-import com.natpryce.hamkrest.equalTo
-import com.natpryce.hamkrest.isA
-import id.zelory.compressor.loadBitmap
-import id.zelory.compressor.overWrite
-import io.mockk.every
-import io.mockk.mockk
-import io.mockk.mockkStatic
-import io.mockk.unmockkAll
-import io.mockk.verify
-import org.junit.After
-import org.junit.Test
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class QualityConstraintTest {
-
- @After
- fun teardown() {
- unmockkAll()
- }
-
- @Test
- fun `when satisfy function not yet invoked, constraint should not satisfied`() {
- // Given
- val constraint = QualityConstraint(mockk(relaxed = true))
-
- // When + Then
- assertThat(constraint.isSatisfied(mockk()), equalTo(false))
- }
-
- @Test
- fun `when satisfy function is invoked, constraint should satisfied`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
- every { loadBitmap(any()) } returns mockk()
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val constraint = QualityConstraint(mockk(relaxed = true))
-
- // When
- constraint.satisfy(mockk(relaxed = true))
-
- // Then
- assertThat(constraint.isSatisfied(mockk()), equalTo(true))
- }
-
- @Test
- fun `when trying satisfy constraint, it should save image with provided quality`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
- every { loadBitmap(any()) } returns mockk()
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val imageFile = mockk(relaxed = true)
- val quality = 75
- val constraint = QualityConstraint(quality)
-
- // When
- constraint.satisfy(imageFile)
-
- // Then
- verify { overWrite(imageFile, any(), any(), quality) }
- }
-
- @Test
- fun `verify extension`() {
- // Given
- val compression = Compression()
-
- // When
- compression.quality(90)
-
- // Then
- assertThat(compression.constraints.first(), isA())
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/ResolutionConstraintTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/constraint/ResolutionConstraintTest.kt
deleted file mode 100644
index 74281d5..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/ResolutionConstraintTest.kt
+++ /dev/null
@@ -1,101 +0,0 @@
-package id.zelory.compressor.constraint
-
-import android.graphics.Bitmap
-import android.graphics.BitmapFactory
-import com.natpryce.hamkrest.assertion.assertThat
-import com.natpryce.hamkrest.equalTo
-import com.natpryce.hamkrest.isA
-import id.zelory.compressor.calculateInSampleSize
-import id.zelory.compressor.decodeSampledBitmapFromFile
-import id.zelory.compressor.determineImageRotation
-import id.zelory.compressor.overWrite
-import io.mockk.every
-import io.mockk.mockk
-import io.mockk.mockkStatic
-import io.mockk.unmockkAll
-import io.mockk.verify
-import org.junit.After
-import org.junit.Test
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class ResolutionConstraintTest {
-
- @After
- fun teardown() {
- unmockkAll()
- }
-
- @Test
- fun `when sampled size is greater than 1, constraint should not satisfied`() {
- // Given
- mockkStatic(BitmapFactory::class)
- every { BitmapFactory.decodeFile(any(), any()) } returns mockk()
- mockkStatic("id.zelory.compressor.UtilKt")
- every { calculateInSampleSize(any(), any(), any()) } returns 2
-
- val constraint = ResolutionConstraint(100, 100)
-
- // When + Then
- assertThat(constraint.isSatisfied(mockk(relaxed = true)), equalTo(false))
- }
-
- @Test
- fun `when sampled size is equal 1, constraint should satisfied`() {
- // Given
- mockkStatic(BitmapFactory::class)
- every { BitmapFactory.decodeFile(any(), any()) } returns mockk()
- mockkStatic("id.zelory.compressor.UtilKt")
- every { calculateInSampleSize(any(), any(), any()) } returns 1
-
- val constraint = ResolutionConstraint(100, 100)
-
- // When + Then
- assertThat(constraint.isSatisfied(mockk(relaxed = true)), equalTo(true))
- }
-
- @Test
- fun `when trying satisfy constraint, it should subsampling image and overwrite file`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
-
- val sampledBitmap = mockk(relaxed = true)
- every { decodeSampledBitmapFromFile(any(), any(), any()) } returns sampledBitmap
-
- val rotatedBitmap = mockk(relaxed = true)
- every { determineImageRotation(any(), any()) } returns rotatedBitmap
-
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val imageFile = mockk(relaxed = true)
- val (width, height) = (1280 to 720)
- val constraint = ResolutionConstraint(width, height)
-
- // When
- constraint.satisfy(imageFile)
-
- // Then
- verify {
- decodeSampledBitmapFromFile(imageFile, width, height)
- determineImageRotation(imageFile, sampledBitmap)
- overWrite(imageFile, rotatedBitmap, any(), any())
- }
- }
-
- @Test
- fun `verify extension`() {
- // Given
- val compression = Compression()
-
- // When
- compression.resolution(100, 100)
-
- // Then
- assertThat(compression.constraints.first(), isA())
- }
-}
\ No newline at end of file
diff --git a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/SizeConstraintTest.kt b/android/image_compressor/src/test/java/id/zelory/compressor/constraint/SizeConstraintTest.kt
deleted file mode 100644
index 6bdcf5e..0000000
--- a/android/image_compressor/src/test/java/id/zelory/compressor/constraint/SizeConstraintTest.kt
+++ /dev/null
@@ -1,152 +0,0 @@
-package id.zelory.compressor.constraint
-
-import com.natpryce.hamkrest.assertion.assertThat
-import com.natpryce.hamkrest.equalTo
-import com.natpryce.hamkrest.isA
-import id.zelory.compressor.loadBitmap
-import id.zelory.compressor.overWrite
-import io.mockk.every
-import io.mockk.mockk
-import io.mockk.mockkStatic
-import io.mockk.unmockkAll
-import io.mockk.verify
-import org.junit.After
-import org.junit.Test
-import java.io.File
-
-/**
- * Created on : January 25, 2020
- * Author : zetbaitsu
- * Name : Zetra
- * GitHub : https://github.com/zetbaitsu
- */
-class SizeConstraintTest {
-
- @After
- fun teardown() {
- unmockkAll()
- }
-
- @Test
- fun `when file size greater than max file size, constraint should not satisfied`() {
- // Given
- val imageFile = mockk(relaxed = true)
- every { imageFile.length() } returns 2000
- val constraint = SizeConstraint(1000)
-
- // When + Then
- assertThat(constraint.isSatisfied(imageFile), equalTo(false))
- }
-
- @Test
- fun `when file size equal to max file size, constraint should satisfied`() {
- // Given
- val imageFile = mockk(relaxed = true)
- every { imageFile.length() } returns 1000
- val constraint = SizeConstraint(1000)
-
- // When + Then
- assertThat(constraint.isSatisfied(imageFile), equalTo(true))
- }
-
- @Test
- fun `when file size less than max file size, constraint should satisfied`() {
- // Given
- val imageFile = mockk(relaxed = true)
- every { imageFile.length() } returns 900
- val constraint = SizeConstraint(1000)
-
- // When + Then
- assertThat(constraint.isSatisfied(imageFile), equalTo(true))
- }
-
- @Test
- fun `when iteration less than max iteration, constraint should not satisfied`() {
- // Given
- val imageFile = mockk(relaxed = true)
- every { imageFile.length() } returns 2000
-
- mockkStatic("id.zelory.compressor.UtilKt")
- every { loadBitmap(any()) } returns mockk()
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val constraint = SizeConstraint(1000, maxIteration = 5)
-
- // When
- constraint.satisfy(imageFile)
-
- // Then
- assertThat(constraint.isSatisfied(imageFile), equalTo(false))
- }
-
- @Test
- fun `when iteration equal to max iteration, constraint should satisfied`() {
- // Given
- val imageFile = mockk(relaxed = true)
- every { imageFile.length() } returns 2000
-
- mockkStatic("id.zelory.compressor.UtilKt")
- every { loadBitmap(any()) } returns mockk()
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val constraint = SizeConstraint(1000, maxIteration = 5)
-
- // When
- repeat(5) {
- constraint.satisfy(imageFile)
- }
-
- // Then
- assertThat(constraint.isSatisfied(imageFile), equalTo(true))
- }
-
- @Test
- fun `when trying satisfy constraint, it should save image with calculated quality`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
- every { loadBitmap(any()) } returns mockk()
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val imageFile = mockk(relaxed = true)
- val stepSize = 10
- val quality = 100 - stepSize
- val constraint = SizeConstraint(200, stepSize = stepSize)
-
- // When
- constraint.satisfy(imageFile)
-
- // Then
- verify { overWrite(imageFile, any(), any(), quality) }
- }
-
- @Test
- fun `when trying satisfy constraint but calculated quality less than min quality, it should use min quality`() {
- // Given
- mockkStatic("id.zelory.compressor.UtilKt")
- every { loadBitmap(any()) } returns mockk()
- every { overWrite(any(), any(), any(), any()) } returns mockk()
-
- val imageFile = mockk(relaxed = true)
- val stepSize = 50
- val minQuality = 80
- val constraint = SizeConstraint(200, stepSize, minQuality = minQuality)
-
- // When
- constraint.satisfy(imageFile)
-
- // Then
- verify { overWrite(imageFile, any(), any(), minQuality) }
- }
-
- @Test
- fun `verify extension`() {
- // Given
- val compression = Compression()
-
- // When
- compression.size(9000)
-
- // Then
- assertThat(compression.constraints.first(), isA())
- }
-}
\ No newline at end of file
diff --git a/android/settings.gradle b/android/settings.gradle
deleted file mode 100644
index 9cfa5ef..0000000
--- a/android/settings.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-pluginManagement {
- repositories {
- gradlePluginPortal()
- google()
- mavenCentral()
- }
-}
-dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
- repositories {
- google()
- mavenCentral()
-
- }
-}
-rootProject.name = "Infuxion_alternate"
-include ':app'
-include ':image_compressor'
diff --git a/backend.png b/backend.png
deleted file mode 100644
index dcad33a..0000000
Binary files a/backend.png and /dev/null differ
diff --git a/genAI/constant.py b/constant.py
similarity index 100%
rename from genAI/constant.py
rename to constant.py
diff --git a/genAI/extras/main.ipynb b/extras/main.ipynb
similarity index 100%
rename from genAI/extras/main.ipynb
rename to extras/main.ipynb
diff --git a/genAI/extras/poc.py b/extras/poc.py
similarity index 100%
rename from genAI/extras/poc.py
rename to extras/poc.py
diff --git a/genAI/.DS_Store b/genAI/.DS_Store
deleted file mode 100644
index 0f3e641..0000000
Binary files a/genAI/.DS_Store and /dev/null differ
diff --git a/genAI/main.py b/main.py
similarity index 100%
rename from genAI/main.py
rename to main.py
diff --git a/genAI/mongoClient.py b/mongoClient.py
similarity index 100%
rename from genAI/mongoClient.py
rename to mongoClient.py
diff --git a/genAI/repo/__pycache__/promotions.cpython-311.pyc b/repo/__pycache__/promotions.cpython-311.pyc
similarity index 100%
rename from genAI/repo/__pycache__/promotions.cpython-311.pyc
rename to repo/__pycache__/promotions.cpython-311.pyc
diff --git a/genAI/repo/__pycache__/user.cpython-311.pyc b/repo/__pycache__/user.cpython-311.pyc
similarity index 100%
rename from genAI/repo/__pycache__/user.cpython-311.pyc
rename to repo/__pycache__/user.cpython-311.pyc
diff --git a/genAI/repo/loan.py b/repo/loan.py
similarity index 100%
rename from genAI/repo/loan.py
rename to repo/loan.py
diff --git a/genAI/repo/promotions.py b/repo/promotions.py
similarity index 100%
rename from genAI/repo/promotions.py
rename to repo/promotions.py
diff --git a/genAI/repo/user.py b/repo/user.py
similarity index 100%
rename from genAI/repo/user.py
rename to repo/user.py
diff --git a/genAI/requirements.txt b/requirements.txt
similarity index 100%
rename from genAI/requirements.txt
rename to requirements.txt
diff --git a/genAI/services/__pycache__/financialAdvisor.cpython-311.pyc b/services/__pycache__/financialAdvisor.cpython-311.pyc
similarity index 100%
rename from genAI/services/__pycache__/financialAdvisor.cpython-311.pyc
rename to services/__pycache__/financialAdvisor.cpython-311.pyc
diff --git a/genAI/services/__pycache__/loanRecommenderAgent.cpython-311.pyc b/services/__pycache__/loanRecommenderAgent.cpython-311.pyc
similarity index 100%
rename from genAI/services/__pycache__/loanRecommenderAgent.cpython-311.pyc
rename to services/__pycache__/loanRecommenderAgent.cpython-311.pyc
diff --git a/genAI/services/__pycache__/policyRecommenderAgent.cpython-311.pyc b/services/__pycache__/policyRecommenderAgent.cpython-311.pyc
similarity index 100%
rename from genAI/services/__pycache__/policyRecommenderAgent.cpython-311.pyc
rename to services/__pycache__/policyRecommenderAgent.cpython-311.pyc
diff --git a/genAI/services/__pycache__/reportGenerator.cpython-311.pyc b/services/__pycache__/reportGenerator.cpython-311.pyc
similarity index 100%
rename from genAI/services/__pycache__/reportGenerator.cpython-311.pyc
rename to services/__pycache__/reportGenerator.cpython-311.pyc
diff --git a/genAI/services/__pycache__/smartPromotions.cpython-311.pyc b/services/__pycache__/smartPromotions.cpython-311.pyc
similarity index 100%
rename from genAI/services/__pycache__/smartPromotions.cpython-311.pyc
rename to services/__pycache__/smartPromotions.cpython-311.pyc
diff --git a/genAI/services/financialAdvisor.py b/services/financialAdvisor.py
similarity index 100%
rename from genAI/services/financialAdvisor.py
rename to services/financialAdvisor.py
diff --git a/genAI/services/loanRecommenderAgent.py b/services/loanRecommenderAgent.py
similarity index 100%
rename from genAI/services/loanRecommenderAgent.py
rename to services/loanRecommenderAgent.py
diff --git a/genAI/services/policyRecommenderAgent.py b/services/policyRecommenderAgent.py
similarity index 100%
rename from genAI/services/policyRecommenderAgent.py
rename to services/policyRecommenderAgent.py
diff --git a/genAI/services/reportGenerator.py b/services/reportGenerator.py
similarity index 100%
rename from genAI/services/reportGenerator.py
rename to services/reportGenerator.py
diff --git a/genAI/services/smartPromotions.py b/services/smartPromotions.py
similarity index 100%
rename from genAI/services/smartPromotions.py
rename to services/smartPromotions.py
diff --git a/genAI/services/tempCodeRunnerFile.py b/services/tempCodeRunnerFile.py
similarity index 100%
rename from genAI/services/tempCodeRunnerFile.py
rename to services/tempCodeRunnerFile.py
diff --git a/genAI/startup.sh b/startup.sh
similarity index 100%
rename from genAI/startup.sh
rename to startup.sh
diff --git a/genAI/tools/__pycache__/loan.cpython-311.pyc b/tools/__pycache__/loan.cpython-311.pyc
similarity index 100%
rename from genAI/tools/__pycache__/loan.cpython-311.pyc
rename to tools/__pycache__/loan.cpython-311.pyc
diff --git a/genAI/tools/__pycache__/policy.cpython-311.pyc b/tools/__pycache__/policy.cpython-311.pyc
similarity index 100%
rename from genAI/tools/__pycache__/policy.cpython-311.pyc
rename to tools/__pycache__/policy.cpython-311.pyc
diff --git a/genAI/tools/__pycache__/promotions.cpython-311.pyc b/tools/__pycache__/promotions.cpython-311.pyc
similarity index 100%
rename from genAI/tools/__pycache__/promotions.cpython-311.pyc
rename to tools/__pycache__/promotions.cpython-311.pyc
diff --git a/genAI/tools/__pycache__/user.cpython-311.pyc b/tools/__pycache__/user.cpython-311.pyc
similarity index 100%
rename from genAI/tools/__pycache__/user.cpython-311.pyc
rename to tools/__pycache__/user.cpython-311.pyc
diff --git a/genAI/tools/loan.py b/tools/loan.py
similarity index 100%
rename from genAI/tools/loan.py
rename to tools/loan.py
diff --git a/genAI/tools/policy.py b/tools/policy.py
similarity index 100%
rename from genAI/tools/policy.py
rename to tools/policy.py
diff --git a/genAI/tools/promotions.py b/tools/promotions.py
similarity index 100%
rename from genAI/tools/promotions.py
rename to tools/promotions.py
diff --git a/genAI/tools/user.py b/tools/user.py
similarity index 100%
rename from genAI/tools/user.py
rename to tools/user.py
diff --git a/genAI/utils/__init__.py b/utils/__init__.py
similarity index 100%
rename from genAI/utils/__init__.py
rename to utils/__init__.py
diff --git a/genAI/utils/__pycache__/__init__.cpython-311.pyc b/utils/__pycache__/__init__.cpython-311.pyc
similarity index 100%
rename from genAI/utils/__pycache__/__init__.cpython-311.pyc
rename to utils/__pycache__/__init__.cpython-311.pyc
diff --git a/genAI/utils/__pycache__/fetchJsonData.cpython-311.pyc b/utils/__pycache__/fetchJsonData.cpython-311.pyc
similarity index 100%
rename from genAI/utils/__pycache__/fetchJsonData.cpython-311.pyc
rename to utils/__pycache__/fetchJsonData.cpython-311.pyc
diff --git a/genAI/utils/fetchJsonData.py b/utils/fetchJsonData.py
similarity index 100%
rename from genAI/utils/fetchJsonData.py
rename to utils/fetchJsonData.py