From 7f33022280de95520faeeefa4377d9de74b9e88f Mon Sep 17 00:00:00 2001 From: Kotonoha Akane Date: Sun, 26 May 2024 16:30:21 +0800 Subject: [PATCH] Omni: Initial commit Signed-off-by: Kotonoha Akane --- .gitignore | 15 + .idea/.gitignore | 3 + .idea/compiler.xml | 6 + .idea/deploymentTargetSelector.xml | 10 + .idea/gradle.xml | 19 + .idea/kotlinc.xml | 6 + .idea/migrations.xml | 10 + .idea/misc.xml | 17 + .idea/vcs.xml | 6 + app/.gitignore | 2 + app/build.gradle.kts | 77 ++++ app/lint.xml | 10 + app/proguard-rules.pro | 24 ++ .../uk/akane/omni/ExampleInstrumentedTest.kt | 24 ++ app/src/main/AndroidManifest.xml | 33 ++ app/src/main/ic_launcher-playstore.png | Bin 0 -> 6968 bytes app/src/main/java/uk/akane/omni/Omni.kt | 11 + .../java/uk/akane/omni/logic/Extensions.kt | 2 + .../omni/logic/ui/CallbackViewInflater.kt | 161 +++++++++ .../akane/omni/logic/ui/ViewCompatInflater.kt | 137 +++++++ .../java/uk/akane/omni/ui/MainActivity.kt | 24 ++ .../akane/omni/ui/components/CompassView.kt | 42 +++ .../omni/ui/fragments/CompassFragment.kt | 205 +++++++++++ app/src/main/res/drawable/compass_bg.xml | 6 + app/src/main/res/drawable/ic_explorer.xml | 10 + .../res/drawable/ic_launcher_background.xml | 170 +++++++++ .../res/drawable/ic_launcher_foreground.xml | 18 + app/src/main/res/drawable/ic_location_off.xml | 10 + app/src/main/res/drawable/ic_settings.xml | 10 + app/src/main/res/drawable/ic_star_shape.xml | 10 + .../main/res/drawable/location_indicator.xml | 9 + app/src/main/res/font/hankengrotesk.ttf | Bin 0 -> 129508 bytes app/src/main/res/layout/activity_main.xml | 11 + app/src/main/res/layout/compass_layout.xml | 341 ++++++++++++++++++ app/src/main/res/layout/fragment_compass.xml | 189 ++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 796 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2112 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 638 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1388 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1032 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3104 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 1324 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 4602 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 1778 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 6638 bytes app/src/main/res/values-night/colors.xml | 143 ++++++++ .../main/res/values-night/theme_overlays.xml | 98 +++++ app/src/main/res/values-zh-rCN/strings.xml | 12 + app/src/main/res/values/colors.xml | 143 ++++++++ .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 26 ++ app/src/main/res/values/styleables.xml | 9 + app/src/main/res/values/theme_overlays.xml | 98 +++++ app/src/main/res/values/themes.xml | 63 ++++ app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + .../java/uk/akane/omni/ExampleUnitTest.kt | 17 + build.gradle.kts | 5 + gradle.properties | 38 ++ gradle/libs.versions.toml | 26 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 ++++++++++ gradlew.bat | 89 +++++ settings.gradle.kts | 24 ++ 67 files changed, 2658 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/deploymentTargetSelector.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/kotlinc.xml create mode 100644 .idea/migrations.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle.kts create mode 100644 app/lint.xml create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/uk/akane/omni/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/java/uk/akane/omni/Omni.kt create mode 100644 app/src/main/java/uk/akane/omni/logic/Extensions.kt create mode 100644 app/src/main/java/uk/akane/omni/logic/ui/CallbackViewInflater.kt create mode 100644 app/src/main/java/uk/akane/omni/logic/ui/ViewCompatInflater.kt create mode 100644 app/src/main/java/uk/akane/omni/ui/MainActivity.kt create mode 100644 app/src/main/java/uk/akane/omni/ui/components/CompassView.kt create mode 100644 app/src/main/java/uk/akane/omni/ui/fragments/CompassFragment.kt create mode 100644 app/src/main/res/drawable/compass_bg.xml create mode 100644 app/src/main/res/drawable/ic_explorer.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_location_off.xml create mode 100644 app/src/main/res/drawable/ic_settings.xml create mode 100644 app/src/main/res/drawable/ic_star_shape.xml create mode 100644 app/src/main/res/drawable/location_indicator.xml create mode 100644 app/src/main/res/font/hankengrotesk.ttf create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/compass_layout.xml create mode 100644 app/src/main/res/layout/fragment_compass.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/values-night/colors.xml create mode 100644 app/src/main/res/values-night/theme_overlays.xml create mode 100644 app/src/main/res/values-zh-rCN/strings.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styleables.xml create mode 100644 app/src/main/res/values/theme_overlays.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/backup_rules.xml create mode 100644 app/src/main/res/xml/data_extraction_rules.xml create mode 100644 app/src/test/java/uk/akane/omni/ExampleUnitTest.kt create mode 100644 build.gradle.kts create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle.kts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.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/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..0897082 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..fdf8d99 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..3046108 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..956c004 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,2 @@ +/build +/release \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..fb460ce --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,77 @@ +import com.android.build.gradle.tasks.PackageAndroidArtifact + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.jetbrains.kotlin.android) +} + +android { + namespace = "uk.akane.omni" + compileSdk = 34 + + defaultConfig { + applicationId = "uk.akane.omni" + minSdk = 26 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + debug { + applicationIdSuffix = ".debug" + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = "17" + freeCompilerArgs += listOf( + "-Xno-param-assertions", + "-Xno-call-assertions", + "-Xno-receiver-assertions", + ) + } + + // https://gitlab.com/IzzyOnDroid/repo/-/issues/491 + dependenciesInfo { + includeInApk = false + includeInBundle = false + } + + // https://stackoverflow.com/a/77745844 + tasks.withType { + doFirst { appMetadata.asFile.orNull?.writeText("") } + } + + lint { + lintConfig = file("lint.xml") + } +} + +dependencies { + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.material) + implementation(libs.androidx.activity) + implementation(libs.androidx.constraintlayout) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + +} \ No newline at end of file diff --git a/app/lint.xml b/app/lint.xml new file mode 100644 index 0000000..6c287e1 --- /dev/null +++ b/app/lint.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..55864ad --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,24 @@ +# 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 + +# reflection by androidx via theme attr viewInflaterClass +-keep class uk.akane.omni.logic.ui.ViewCompatInflater { *; } \ No newline at end of file diff --git a/app/src/androidTest/java/uk/akane/omni/ExampleInstrumentedTest.kt b/app/src/androidTest/java/uk/akane/omni/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..2e05aab --- /dev/null +++ b/app/src/androidTest/java/uk/akane/omni/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package uk.akane.omni + +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("uk.akane.omni", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..08dd9a7 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..1c6d504aad58432ad1f1ca98fa799516eb17be89 GIT binary patch literal 6968 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 = + SimpleArrayMap() + private val sConstructorSignature = arrayOf( + Context::class.java, + AttributeSet::class.java + ) + private val mConstructorArgs = arrayOfNulls(2) + + @Throws(ClassNotFoundException::class, InflateException::class) + private fun createViewByPrefix(context: Context, name: String, prefix: String?): View? { + var constructor: Constructor? = sConstructorMap[name] + + try { + if (constructor == null) { + val clazz = Class.forName( + if (prefix != null) prefix + name else name, + false, + context.classLoader + ).asSubclass( + View::class.java + ) + constructor = clazz.getConstructor(*sConstructorSignature) + sConstructorMap.put(name, constructor) + } + + constructor!!.isAccessible = true + return constructor.newInstance(*this.mConstructorArgs) + } catch (ex: Exception) { + return null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/uk/akane/omni/logic/ui/ViewCompatInflater.kt b/app/src/main/java/uk/akane/omni/logic/ui/ViewCompatInflater.kt new file mode 100644 index 0000000..8ad806f --- /dev/null +++ b/app/src/main/java/uk/akane/omni/logic/ui/ViewCompatInflater.kt @@ -0,0 +1,137 @@ +package uk.akane.omni.logic.ui + +import android.content.Context +import android.content.res.TypedArray +import android.os.Build +import android.util.AttributeSet +import android.view.View +import android.widget.TextView +import androidx.appcompat.widget.AppCompatTextView +import androidx.appcompat.widget.TooltipCompat +import androidx.core.graphics.TypefaceCompat +import com.google.android.material.textview.MaterialTextView +import com.google.android.material.theme.MaterialComponentsViewInflater +import uk.akane.omni.R + +@Suppress("UNUSED") // reflection by androidx via theme attr viewInflaterClass +class ViewCompatInflater +@JvmOverloads constructor(impl: ViewCompatInflaterImpl = ViewCompatInflaterImpl()) + : CallbackViewInflater(impl, impl) { + class ViewCompatInflaterImpl : MaterialComponentsViewInflater(), Callback { + + override fun createTextView(context: Context, attrs: AttributeSet?): AppCompatTextView { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { + return TypefaceCompatTextView(context, attrs) + } + return super.createTextView(context, attrs) + } + + class TypefaceCompatTextView(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : + MaterialTextView(context, attrs, defStyleAttr) { + constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) + constructor(context: Context) : this(context, null) + + override fun setTextAppearance(resId: Int) { + super.setTextAppearance(resId) + val a = if (resId != -1) { + context.theme.obtainStyledAttributes(resId, R.styleable.MyTextAppearance) + } else null + val fontWeight = a?.getInt(R.styleable.MyTextAppearance_textFontWeight, -1)?.also { + a.recycle() + } ?: -1 + if (fontWeight != -1) { + val tf = TypefaceCompat.create(context, typeface, fontWeight, typeface.isItalic) + setTypeface(tf) + } + } + + @Deprecated( + "Deprecated in Java", ReplaceWith( + "super.setTextAppearance(resId)", + "android.widget.TextView" + ) + ) + override fun setTextAppearance(context: Context, resId: Int) { + super.setTextAppearance(context, resId) + val a = if (resId != -1) { + context.theme.obtainStyledAttributes(resId, R.styleable.MyTextAppearance) + } else null + val fontWeight = a?.getInt(R.styleable.MyTextAppearance_textFontWeight, -1)?.also { + a.recycle() + } ?: -1 + if (fontWeight != -1) { + val tf = TypefaceCompat.create(context, typeface, fontWeight, typeface.isItalic) + setTypeface(tf) + } + } + + } + + override fun onCreateView( + context: Context, + name: String, + attrs: AttributeSet, + result: View? + ) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P && result is TextView) { + // perhaps some descendant, not just TypefaceCompatTextView + var fontWeight = -1 + val theme = context.theme + var a = theme.obtainStyledAttributes( + attrs, + androidx.appcompat.R.styleable.AppCompatTextView, + 0, + 0 + ) + var appearance: TypedArray? = null + val ap = a.getResourceId( + androidx.appcompat.R.styleable.AppCompatTextView_android_textAppearance, + -1 + ) + a.recycle() + if (ap != -1) { + appearance = theme.obtainStyledAttributes(ap, R.styleable.MyTextAppearance) + } + if (appearance != null) { + fontWeight = + appearance.getInt(R.styleable.MyTextAppearance_textFontWeight, -1) + appearance.recycle() + } + a = theme.obtainStyledAttributes( + attrs, + androidx.appcompat.R.styleable.TextAppearance, + 0, + 0 + ) + if (a.hasValue(androidx.appcompat.R.styleable.TextAppearance_android_textFontWeight)) { + fontWeight = a.getInt( + androidx.appcompat.R.styleable.TextAppearance_android_textFontWeight, + -1 + ) + } + a.recycle() + if (fontWeight != -1) { + val tf = TypefaceCompat.create( + result.context, + result.typeface, + fontWeight, + result.typeface.isItalic + ) + result.setTypeface(tf) + } + } + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + val a = context.theme.obtainStyledAttributes( + attrs, + R.styleable.MyTooltipCompat, + 0, + 0 + ) + val tooltip = a.getText(R.styleable.MyTooltipCompat_android_tooltipText) + if (tooltip != null) { + result?.let { TooltipCompat.setTooltipText(it, tooltip) } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/uk/akane/omni/ui/MainActivity.kt b/app/src/main/java/uk/akane/omni/ui/MainActivity.kt new file mode 100644 index 0000000..30c80b9 --- /dev/null +++ b/app/src/main/java/uk/akane/omni/ui/MainActivity.kt @@ -0,0 +1,24 @@ +package uk.akane.omni.ui + +import android.content.Context +import android.hardware.SensorManager +import android.os.Bundle +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import uk.akane.omni.R + +class MainActivity : AppCompatActivity() { + + private val sensorManager: SensorManager by lazy { + getSystemService(Context.SENSOR_SERVICE) as SensorManager + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContentView(R.layout.activity_main) + } + + fun fetchSensorManager(): SensorManager = sensorManager + +} \ No newline at end of file diff --git a/app/src/main/java/uk/akane/omni/ui/components/CompassView.kt b/app/src/main/java/uk/akane/omni/ui/components/CompassView.kt new file mode 100644 index 0000000..6245e2e --- /dev/null +++ b/app/src/main/java/uk/akane/omni/ui/components/CompassView.kt @@ -0,0 +1,42 @@ +package uk.akane.omni.ui.components + +import android.annotation.SuppressLint +import android.content.Context +import android.util.AttributeSet +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import uk.akane.omni.R +import kotlin.math.absoluteValue + +class CompassView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0, + defStyleRes: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr, defStyleRes) { + + private val directionTextViews: List + private var degreeIndicatorTextView: TextView + + init { + inflate(context, R.layout.compass_layout, this) + degreeIndicatorTextView = findViewById(R.id.degree_indicator) + directionTextViews = listOf( + findViewById(R.id.north), findViewById(R.id.east), findViewById(R.id.south), findViewById(R.id.west), + findViewById(R.id.direction_1), findViewById(R.id.direction_2), findViewById(R.id.direction_3), + findViewById(R.id.direction_4), findViewById(R.id.direction_5), findViewById(R.id.direction_6), + findViewById(R.id.direction_7), findViewById(R.id.direction_8), findViewById(R.id.direction_9), + findViewById(R.id.direction_10), findViewById(R.id.direction_11), findViewById(R.id.direction_12), + degreeIndicatorTextView + ) + } + + @SuppressLint("StringFormatMatches") + fun rotate(degree: Float) { + this.rotation = degree + degreeIndicatorTextView.text = + context.getString(R.string.degree_format, degree.toInt().absoluteValue) + directionTextViews.forEach { it.rotation = -degree } + } + +} diff --git a/app/src/main/java/uk/akane/omni/ui/fragments/CompassFragment.kt b/app/src/main/java/uk/akane/omni/ui/fragments/CompassFragment.kt new file mode 100644 index 0000000..f2a39e8 --- /dev/null +++ b/app/src/main/java/uk/akane/omni/ui/fragments/CompassFragment.kt @@ -0,0 +1,205 @@ +package uk.akane.omni.ui.fragments + +import android.hardware.Sensor +import android.hardware.SensorEvent +import android.hardware.SensorEventListener +import android.hardware.SensorManager +import android.os.Build +import android.os.Bundle +import android.view.Display +import android.view.HapticFeedbackConstants +import android.view.LayoutInflater +import android.view.Surface +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.marginBottom +import androidx.core.view.updateLayoutParams +import androidx.fragment.app.Fragment +import com.google.android.material.button.MaterialButton +import uk.akane.omni.R +import uk.akane.omni.ui.MainActivity +import uk.akane.omni.ui.components.CompassView +import kotlin.math.abs + +class CompassFragment : Fragment(), SensorEventListener { + + private var mainActivity: MainActivity? = null + + private var sensorManager: SensorManager? = null + // private var locationManager: LocationManager? = null + + private var gyroscope: Sensor? = null + private var magnetometer: Sensor? = null + + private var lastDegree = 0f + + private lateinit var compassView: CompassView + private lateinit var textIndicatorTextView: TextView + private lateinit var sheetMaterialButton: MaterialButton + private lateinit var settingsMaterialButton: MaterialButton + // private lateinit var latitudeTextView: TextView + // private lateinit var longitudeTextView: TextView + + private lateinit var directionStringList: List + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mainActivity = requireActivity() as MainActivity + sensorManager = mainActivity!!.fetchSensorManager() + // locationManager = mainActivity!!.fetchLocationManager() + gyroscope = sensorManager!!.getDefaultSensor(Sensor.TYPE_GYROSCOPE) + magnetometer = sensorManager!!.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + } + + override fun onResume() { + super.onResume() + + val rotationVectorSensor = sensorManager!!.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR) + val magneticFieldSensor = sensorManager!!.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) + sensorManager!!.registerListener(this, rotationVectorSensor, SensorManager.SENSOR_DELAY_FASTEST) + sensorManager!!.registerListener(this, magneticFieldSensor, SensorManager.SENSOR_DELAY_NORMAL) + + /* + if (mainActivity!!.isLocationPermissionGranted()) { + try { + locationManager!!.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0f, this) + + val lastKnownLocation = locationManager!!.getLastKnownLocation(LocationManager.GPS_PROVIDER) + + } catch (e: SecurityException) { + e.printStackTrace() + } + } + */ + } + + override fun onPause() { + super.onPause() + sensorManager!!.unregisterListener(this) + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val rootView = inflater.inflate(R.layout.fragment_compass, container, false) + + compassView = rootView.findViewById(R.id.compass_view) + textIndicatorTextView = rootView.findViewById(R.id.text_indicator) + sheetMaterialButton = rootView.findViewById(R.id.sheet_btn) + settingsMaterialButton = rootView.findViewById(R.id.settings_btn) + // latitudeTextView = rootView.findViewById(R.id.latitude) + // longitudeTextView = rootView.findViewById(R.id.longitude) + + directionStringList = listOf( + getString(R.string.north), + getString(R.string.northeast), + getString(R.string.east), + getString(R.string.southeast), + getString(R.string.south), + getString(R.string.southwest), + getString(R.string.west), + getString(R.string.northwest) + ) + + return rootView + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + ViewCompat.setOnApplyWindowInsetsListener(view) { _, windowInsets -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + + sheetMaterialButton.updateLayoutParams { + bottomMargin = insets.bottom + sheetMaterialButton.marginBottom + } + + settingsMaterialButton.updateLayoutParams { + bottomMargin = insets.bottom + settingsMaterialButton.marginBottom + } + + WindowInsetsCompat.CONSUMED + } + } + + override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) { + // Do nothing + } + + override fun onSensorChanged(event: SensorEvent) { + when (event.sensor.type) { + Sensor.TYPE_ROTATION_VECTOR -> updateCompass(event) + } + } + + private fun updateCompass(event: SensorEvent) { + val rotationVector = floatArrayOf(event.values[0], event.values[1], event.values[2]) + + val rotationMatrix = FloatArray(9) + SensorManager.getRotationMatrixFromVector(rotationMatrix, rotationVector) + + val displayRotation = getDisplayCompat()?.rotation + val remappedRotationMatrix = remapRotationMatrix(rotationMatrix, displayRotation) + + val orientationInRadians = FloatArray(3) + SensorManager.getOrientation(remappedRotationMatrix, orientationInRadians) + + val azimuthInRadians = orientationInRadians[0] + val azimuthInDegrees = Math.toDegrees(azimuthInRadians.toDouble()).toFloat() + + val adjustedAzimuth = if (azimuthInDegrees < 0) 360f + azimuthInDegrees else azimuthInDegrees + if (lastDegree == 0f) lastDegree = adjustedAzimuth + + updateCompassViewWithAzimuth(adjustedAzimuth) + } + + private fun getDisplayCompat(): Display? { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + requireContext().display + } else { + @Suppress("DEPRECATION") + requireActivity().windowManager.defaultDisplay + } + } + + private fun remapRotationMatrix(rotationMatrix: FloatArray, displayRotation: Int?): FloatArray { + val (newX, newY) = when (displayRotation) { + Surface.ROTATION_90 -> Pair(SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X) + Surface.ROTATION_180 -> Pair(SensorManager.AXIS_MINUS_X, SensorManager.AXIS_MINUS_Y) + Surface.ROTATION_270 -> Pair(SensorManager.AXIS_MINUS_Y, SensorManager.AXIS_X) + else -> Pair(SensorManager.AXIS_X, SensorManager.AXIS_Y) + } + + val remappedRotationMatrix = FloatArray(9) + SensorManager.remapCoordinateSystem(rotationMatrix, newX, newY, remappedRotationMatrix) + return remappedRotationMatrix + } + + private fun updateCompassViewWithAzimuth(azimuthInDegrees: Float) { + compassView.rotate(-azimuthInDegrees) + updateTextIndicatorWithAzimuth(azimuthInDegrees) + checkAndVibrate(azimuthInDegrees) + } + + private fun updateTextIndicatorWithAzimuth(degree: Float) { + textIndicatorTextView.text = directionStringList[((degree + 22.5f) / 45).toInt() % 8] + } + + private fun checkAndVibrate(degree: Float) { + val threshold = 2f + + if (abs(degree - lastDegree) > threshold) { + view?.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) + lastDegree = degree + } + } + + // override fun onLocationChanged(location: Location) { + // longitudeTextView.text = location.longitude.toString() + // latitudeTextView.text = location.latitude.toString() + // } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable/compass_bg.xml b/app/src/main/res/drawable/compass_bg.xml new file mode 100644 index 0000000..a10c520 --- /dev/null +++ b/app/src/main/res/drawable/compass_bg.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_explorer.xml b/app/src/main/res/drawable/ic_explorer.xml new file mode 100644 index 0000000..e617c01 --- /dev/null +++ b/app/src/main/res/drawable/ic_explorer.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..0c5a8e7 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location_off.xml b/app/src/main/res/drawable/ic_location_off.xml new file mode 100644 index 0000000..8bf1570 --- /dev/null +++ b/app/src/main/res/drawable/ic_location_off.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 0000000..b09a38a --- /dev/null +++ b/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_star_shape.xml b/app/src/main/res/drawable/ic_star_shape.xml new file mode 100644 index 0000000..bc2f532 --- /dev/null +++ b/app/src/main/res/drawable/ic_star_shape.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/location_indicator.xml b/app/src/main/res/drawable/location_indicator.xml new file mode 100644 index 0000000..31d05b3 --- /dev/null +++ b/app/src/main/res/drawable/location_indicator.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/font/hankengrotesk.ttf b/app/src/main/res/font/hankengrotesk.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0b92c2236fa2c685042a6e9f96f3f0baba8192e4 GIT binary patch literal 129508 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 z z&>y*}rgxTY7N({ToG#L#t;IX5Xi@ySRjkC}DmC6xuQi)3@`AU}JnJl0*?$7(CRdEH zJYMibLeJTj(U8_#O~1E>^Uz3?BBY}uj2d*7+@Q;{T+egWoI>i2eC>kM2K!k8ZiS99 z@(_NB+6cK<*2~5!@0GS#0Zy53g;9q9AQk+Ul}^dfC^!!wC>Skz#e)jTS!FLiiYfTj zK#d#k&dU+iM5y4N0vkW(nF;Ro%A9`EYfM28*lyYg+)KR0J3oOOo)z5by3FiD5ud7@ zNS|-I1kP8K!yQMOxDTA6;53jKV-%YuOHc>gyV{KB0{S;)?>+rZO@O9AyTxXcfabuT zacQS0W5`f*UqI{hQs_rA2RhHkVd(_uRo>zm^O4Vb&W&H1 zo0I;Gd!W5;IS{e@*(li*%f#KOqTSV$A5%Z-}`9ls>wy=mK62D6{)@ zVM_!wr=LTlE?36%Yt7Db9Om7z62~h0Nu4Gmu0eV!Y@Nuf)S#5=6#BKGw1W<}QjBXD zv-*&YrdmM#xDGpFjACDL9#W%ggncX0v{z2x*ZkIlE?a0IKUqgNBL2Fdcj7&W?nV4d zSq3yej)frS?t%h;&AyQoXsi!LXI}aoJkRlZw?j*GWEMcvl{pGjF4&QE=j>pUQFc_{2NoHsaQZoC_fv&n4-{Oy7pO#;4XqZ ztp(4=%A9Q3dy5d4r55R0WX}oi1cQ>GQ|Nw9VJ2O7ME22d49;(KPI6l0(Or2AZ}7ur z=pqqcr+kW7Bx=%2#HX;6+AKjllM%_)UFm~)S0+;3&s(iMpCfnS{G>^l)8`4o>zj%8 z67vf>T~Nfc3C4iKT7K^cth9$5-a@=o>f~73OWB*UoJ++N5$_I-y(^?VpvC8q1w@u| z+Ac~V@|m%_QbVTqM4zPHO;Myo@N|bIj74hvYKfNmEEyzn8?MF2;GKV7n!kuYVQ6m} zkF!xk?~CGD3BTa1w@7zGn+@P(cu$-E`ZK|AS?tA~|L*fI;&-3x`0qaBHx=-^&-lkH z{O&Uy!++(OZs5Q2Ouyp4@=U+xzm@@ePD4f?-xd}ju7?)@L&FT#!A2ttMZkPf&^zMJ z)53;WID#hv!&Ao=>Q6k*Dg|~obl*sL`qx++%JSj?ZDEykroiC@EFEA#s28Y>w3U|6(-l0Q zRs4!^rCh`QBCw126~8SJNvuvh=dme*Ya@-v^P(pxlSKSSqSwwL;_vElwpzqLAtZMp za9Dl7b%lT))$7e37d&%mb>?bL!6{{Zo#6pcD1L9E8YwGvEc;aOyHvJ4xnfh7f?r;+yio%Q%_k&Y+dC*TudY+cXSq0nygguhqxm~*>F4M_4&)faO%W!Vy81)zDx9$}6YS#Cl zK@KB)33#n~wEGi;bcYYmt0g4=j4O?Er3=;}=ZE0KxZ&h=S}d{o7XSm_H5_4ytOqYc z{|K302M_9C)TavY0tA#H@aXmYqsL`T=B2~>U8~<==Ug2l?_3@(hY>2E`xLdtIRm(I z)NMFq=RHdM$b9seyz{htV9@KsvCa~HRgd#HS9d!{tIM3oo7X+h zQ?1QQRNrw9QP(;9qYZka%@ag2)Ls4AnImES%5~%Vs5_k9kPmDFY0NxkAY3mW7w!k6Gbp&sg0F6~otx~{kCPU0Ph(SDHKv0pvS^Mg#+9a5h+9NRP= z^aE}Oj*STG)k}`mI$o`HtkCt(acYeNy5)KD4{Yg*<6Q~Mt6JL&w&nV$mmQ0^4R8$d zeO0GGhWV)LbFzQ&KIY!fWP79DA4-01fBeJyP`4B=qr5xUO8o6tVXx2|Z(q^Zz{mTM z?i(CWA%05I^!69+cR;=2n1yr~WLc2;hGV*W{bkwi#? zZ*$RqVFMx`$Sv@Pai6cr$#spqV3*g^(1x7O%i-YeBD3J&8XX6S+Cv}nJ2HK(U*0*gp9mwZin2K`8blc6S@T*daCR3jLe(+6XzAR zE;AZ;$gcYm&Xu;6Ux9ZZY)5>PgpvLl*Sq_8;@%F96EdAXuJV|kud`gON&5vo;NzV72_FZX+trn652>p%cd0wlkOu9vvg;D{ zVA@ETUQ2U0ZK(P$y}e+2htdY9m1%vDKV(CigK2qyGtqzhqRxlab7`HB_hNNdTDn?` zxyjZv*p>XKyVF|h@SX3vpVs&fq{T~H;J%OBgyVZoK|Zj*v@mshT7cx_w#`3$KET^t z_|T;i=KTvkY&WNgevG^G1;}kxe@`>XJb4enq`%KQH6*svfaJZs$t%y1feW*6{X5sBrP{aYpzE$jI;f!^`J9+|Ib{{G<2l zUKMJs{Q%DseCxFUe(3#o`ySv?H?9lRug<<*(uLl#39*ZM^R#M%{acx@e&zZSI^ca^ zKIodwbq!a~+BF&6<&fzxPuQ%Uw?h_glXmVGQ3v<=i|}WKjGI=k3WnL z$lqR~Ua?P*Iq@X}_Yb#ocbt8+r0VzEdENU3Z{z>pK77pLwk+CfiEJk^p1`j7hx<|c zaOi0X>J480u@3?4$8A^YRrV?H!j|0Y$bHrAA4yk#vG+&XNEg-KTgt&@;lZARygo$V z>;||aVAzoR=hnV0Dcr~KHpVZfi@C1OZ%+m;QIAR4T`|O82c7fSB$oSqXN7v6$2eYo zVEb3g4X6g^AC)5{G(N4VWQuhlV@oefY z^^MeR>h4tNOSez(Zcp7PvM?@syK;onQ{B`J?J37q_4`!#F#btfrGA&XT75qieb@C- z7s&a(`d!)*l)GG(@1je4>I#}3c%7W(?i?J(*fdPs&*hhhXS$zL-v!?u^>FGU^|#bl z;m2PP^lhp0)$^&(-C9oSQ|ivtS)2|$d|m2vwTh3CQn%_asb#=#$GuqN*~8PTr&7m> z`_Ha%U%i$(O7i^KmFvo7&*}x|d0D3MoPC9-RI5@^pVUF>#niqsCo!I*4&1)E?Q);T z=Ue*xJT)J2*q#0?$5Zj=htzD>^Q1oJiSY>Se5VhWjrUL4rs|&5F78}veQJB;%jM8Q zs$JO1#ndF&2xQR5X+4!LpC0FTZcDrjF}}g3`6u-$nWt!9Pie=zuKK)$^Q3K6Z=@!; z>eDSAxJ*t#`dFl|5TLm5d~~}^4d*EJaP}k@U6;$AtnSBd_$?p3Zv37agy18|sTP;M z^#uAnPml9Ew;SGGscuMpO`~^$dX&$tcw6wXg^zb)Y;IJ4Olg3fhpRXEs#jh|b!W;2 z^{jkm;`#lD=cDz!AoXMlbjm-%R**Mv7gCPN=OcZdtBh;&>S(2unPMIowi?d4Jr5{(f_e7Z~lhjXA9^#zP z<5+P&lroavxg6X^)w-0S+|D4|0Eu^ekM{dN)V+6rTgBBkeCKLc+TOL=zN^))v})TV zt#-A&7k7JIaJR9IZLl$5da(_*!8XM)gcd>zF(xFC@Fawm1c)gKrh`N1#q{1xwei_f9s|U`{0lzm&Dt*Qk@gd7J4m-9 z@6?8nUe@1NwSGNrGXD4mm8%&{G+$g^jn)EpHjNo1mpv|ivLi*GyWs{*YOw%N51rip}$Yz{{i`o>-{s( zdn^{$`!&h~dNh8d@_6x_`a<+Myx%0T5_&&~|4W8-KObLqJ(fPUrC&McsL^@rhxr^{ zUeaTI{)>E({6yaG+7tQK`)cG9@ADEckpbR0atHMlqOjdwjgi9F+7OTUQI7&3eE5gb(udmS@%rEV@V^1x`TtFX|6e_h9PrMP^+NXM zyBu{e6~BFI40z{Vy-{0dXFuezk5J zx*vnSKRR{|N#g^0M|wha;BAzYydH_u$Kr$?s~eJEYOAPTy>^-I|4kS{DgI|4?$^K< za37oW9CjP+^PpaJ-%7G4|Ji;me&Jt8$GP4$UqEva@%}Wv?I4cgefr_;DWzjR$Y;@i z(4_x7|9K(o5B$Z?PmsSj{6q06P6Ogg`-{Bgt&o4~{@7cD`u!mCl{ZhOrhG|HxXk1W zGT>WCr}0a9>iS0g3f=eX`RaXe`kT^|eo;F^AH8p*%Y$S{eChwGO@eNJ>_s`+$!1Vy zlB=$xhx-?joo)k^Qhp+D_kt$bNdI{f<5h85*Z1gaUP-)1_IeIVJlcv+J)eNjo$_zY z>pkOn4{;zf`XKJ(9`G3ZM81k|quQUsydugd(??$OysXEJyybZ=ayPBt{_qp|&I5ZQ z9ij5*zLVln{jokhEPvy5BSt6kx@RArqmD>^!HZs}I)1!gDLbse zeIcLf<2jOpXHP5z={J2yuB1cM9uhB<4r8HjJ-9WL#zNF)vb|v)#&Z?=%HM*{rQiiR zN_`RH$paek{VvLr$F%rGIY0Gmm*X9T-}P+9{2%Hctm=ER}>mwg{J22OZ zw4PHC4}9ulIf}}4hdd=uGBMjN>c?|@rEz?|2mSp};5E0`(K5UPL~0e;fJ04e9HA zv|o$xF3#&-KF>{w+(+X-{iEAS#|;=apRHqm_zQkMaK9t*?$<#RcCL?&2upucp5(*m zm-6K?z-Ktk?L~?qKgj31UgSgkvi>8T8)YV6NM&(95xL*}Ptt?PCpZ@maUu`9|BCg; z%?RHvZI$Kt4E`p0BE9@XzI5NAhvhHzSEXN%yzahD>Mq&6`?vVNoA{8tpdOy2{w>YX zw|@fvy%lwTL(F#)HC;c6N8MgYKPeuSS+;4Bd%8;~cI4&$^JvdP1}%*^$THXGnVl&F9=FL8dQ99;f*; z&^$=;N4)*+b^QBi-1^Zwb&EB!Kk}ouE3ytFZ@O0#4gBAz{i1Bh^Iz^|kk!J-8*=_E z@+Qq&0sn-14*lZU^vHMaiO`J!vX{sM?k+|XpP$hBORQam&0G)KkQaTx|G(TJ8I}-h zh6%C1F&F&`_0wc~8F|-@uomw_cWvaaL#OF~kNss|J|F3zck%5z+w%FEP2-p9al8+; zDb$xB9d3M3`bpwh_qXmEJbO#iSL8t-o*zt$yyvbYy~W=sH)Qm_y97F!Pht6CpZh(Y zBY!-91^()wJB!0ld)G$ZrTqw)mwC~h0$<8?EqNh+Xw4Y?-e+l?;f9=eUQUxGQPA6A z3hSQ+=o*#V6^^_k^Uu>-PxJHiA^+zB$A{-bb`t+#KMDP$kJb-R z`DW2BAo}s`!kd0`m2SM{HeVUR9_ka63Cd~8Cfpo$4sP07qWl%N2mb=MAU>x2T6qe$ zIqtz-c7EkE5yWka-{6kJhjH@nBlvE{&1d_?7Tja_DsFpw58rcfhuMeXJlr*wCbr?u zFpt=do3~a7dN0Gak#@xX9S}F+GE^9<42=wF-#5--Wyo&;DYXdWjckJIQyhMs!xYn? zJi~Arpu%qs<2F#nv@)zAsLD7WF-FpHad?Q~{T%0Bf`WIYt9}lj#82g3T)B&w-{??j zYqdcs;5gqiOed)Ri}B|%#>(O6IeZ0&A0nu7j-s0JCo}8=#7WE?K9!(y3&Xh#f5-SH zhD=$xiSc<1nNNjxSS!;RQ^@chhPN_2fuOja!y6c8Fnk&iH)vB>-A7PJ{^kB>svU!p z%=i`#Q%xDv%Q*ZQ!?ze7!|>+}XEK~fP~{wjhr@QpZ(?{f!y<;4GOQ%1Ucm5f#_R+X ziri^^B4NZ9#$Q8FeV8#+;|8&f@vkuakTHJ*#6h?eRw4{PAt-*$;lD6^m!R6i;e3Wv z@7QI|Pz5w7Hv{5yYz{ABIF+Cv&J|@Dph1KQs{i1y%lfQNzJXfCeEomg){JgJCH{ zvKoco#KVy{2pa_Ji7M;j3dX!dP`QX<8^Zv@^$bk}#Uu{@mEk1}(-?LzJcppl^wsAX z^LxgmbNF?Fg0)vj`4fi*rJeD^98Tcy8w^)6TuV^-1&2@L@E06@l*45VPi6QZ!^I3q z6L9noL$W(XsRT3#=2LL}3aVMWX96e`whr+=VM+@uYSdGW&tV+%UsE3 z%$*GHVE8G+Ckd)a40khTKSA*#hlyu{lFLx~t}K3fh%r>lxOJSus)wPhmv<0G15X&` z28Pliq^4cK7_KR0D}}|mj9JN$>KBs+42fstz|aq9P)R;GIEvwXhE0G5h2)PDWdK!q z;)^&2VMR$~DEVK9utBBzGN@8}sV)qHNtcQbr~peX0?aSWwo(hyb@_G9YN2n%iiLZS zHDhGH7RDGEBe^;YVRWY$)-zk}b}zAt;DX z99qthN~9>1m%{OJb_2o&g-fbZe00MIqcT_OEDDQf7;`I!4=|k0kXlcJxQ(FlTZWGT zVzP?DVu-^`N37>C)eDYDWthoukYOvs7KQ^1rH14qY*4EiLoJ9tT<+sA*_XoQRWyI4 zGNv6+ML$m9{k{aH7~d+TM6rU$N_?yFR}jye@ipLP-xh>JN*BW2=>4h6BxM@lbiA)u zpv=U*v8u8_Sq`{D*@!rsl(P{&2VaA-8Mmscxb^fxB@H*2UaVv&m*4~YLnNc?BKi*$!_H*R3P2VXmSmiK|T`|(9j5O1%k=xIKL@WaX@2=7xKNB9Zl zDNuVF-%Q*f@hm9p$2SM(=Kl+MJ*RxCB;tmN&v2jY=OPpD+GXL*INazgEJ`YFY%Wmh zMIqiP%jJ8>8_;vDRT@Pd?qbfx+h6s#le|F$lyvlETM!Q6ZMzb@DcFT@H||IlxFdN! z!VB7l1_Hf)EEB-3(1)clEeV}u{_&Z|m6%V7l=zrsVz^BF2iUqfczXbTUcpDJ? zZ`>{&5fPlm50NTGxEUDdA*uK%0Tu6g0-vBJD5Ywmny8fFreLE|u9{SnQlX}(DTQX9kyRaK!kLp1fw+ky) zdS?@NGGP3Go9~ZSk4C+#xM3IlR{RzorsZj@<7Vhs5E@2WZe}g7W-U+UagT}h+XVfd zh1jz(2Fm6!P&SW&jIf;z(7cWKCP3piffi}JgEhXGH9nm+J|7x?m10tUiFai)aM$pS z2$S~Lu=dlv;DpSmReo}Ex#XW{|;SGg0Am{Ej=I}0RIn) z2f_J6;vs||j@p1qV^F1>#-M;0g94HbxLJ>DX$-0qunwU=ulnh&NMX({`k#HXuFbkO z^I+z>*f--j`K2fS-4`(v(sz#e)}+^@ZH|5u(*C1w*0rgdQ?pVo)xIh5pX3$#H|d_F zD*bDE*yK9=YrIE((>Cie$XutFAbqFgB&mv0A>Jv*T4QbEQ;CRl zYWx@U@J-ms--!wQHP$91$*}dqrNgTokf6>MMVu1a{ApFH9V9!AtxB%9F58i^OnUiza zo-cqM|4Z2kyZsh7e18u+yq0HC{>E1KAZ+YxZo6?g-KvS_0M zE6>EH7coYbK7(G!(=JP9gRL`=)*dD>ohex&4BbTYwYilv;vagC9esfEDm zVUb1!6H)wx#tH`Udq5*`lycd*Mri>vNS6C8{%!mQj`gRCgr)v=jv)m=3S*j92xl(xuU5|1qT=$f6r2AjOM)q zDGW*lLGgEnGl&M2k5U7kjb4G0hPD*@F^K;I;GgQigH}vQy&S2ze=GisbOzN3h$DUg zO_0=EkO3$qPZh^TzEb*#14x26Z)O^eL__fq7AXv}4=z?CjEQr?s9X!;M1-kaUtvb? z8={1AeF;j4mhu^w=x}-olv=qR5U;f|xEST`<8mWIaM%W_Pb<%H-W^Pj zdcedLZu?@YvzclohgrLn&k;@n?e9?T)eN^qzD%@>iy=*-_bk`Zt72KaWI=C~Y5ald zRdLt_h%!b#f$UaCK1b=Gn3iNl=W%j)U}*ijwon+n2NrOlHym+12-$t z|4@uWTsuoqJ0B_Yk;B`N1GF)@1o^xPX^=jRz_K1s+KD`&5s(~@ca(oH?O6;52r6p; zapVkz1&s}HKU`#Y%0y*){)Y_`Z^J)R| zd`a1eJb$m8MtLghQ5%mbYf&3_8lH!~Jf^Hv)yUH+ewNr$Jh9RV*NuxELI zJfykxz`xyJI82VmbaE z+--xdt%UAe4cU=LoUf+9QW6lFNx6xw1eNa@9%2kxtU=ku;pGe;XAFAr)6@0CZyvBS{&2B>+ z@CEBz44ZmguUWQWoFS%cH*F=Q(fFHl(g6Hrl(u@J?ivR^dK&R zCxd;X)|P_1H_+d>37Gxh>)!}}gYYa!>MLa`^8Z*F;hbUF%4VXc{+!`Fg5q)x^ZbN* z31g%+oz3`Gz!c>CCGvzFAw13SJ(EEN&&=1&&@Z3{hGR_bP+yy7V%=;f`E z^AUayaW+B=pN1B~v#a+*7axNz9t-?hc$|k|yT-_a;0s)!)(kweZ%{KfB2V!PKt;B5 z;%dgc${48~cQEEbg32E`JcpkS0g`|H3c5fVNjgU@OBN(Wp7n9VDD>|`ZdvwHe+9f# zf8{&&uK}W@?qE2|a2i2zC&T+0a}uDUECEbK`Co*b_e5TS%x^+(Y$;0qG__`kfmR)5 z?h%_2CN2DgweTCMh3fNEW^pxgYX>ERdODz@kbg%?hU^8@QxG<&=MYrB1I$JJ|4!YE z67I+P=6UF=Jq(@Ok5TzID9Jr2=cmf;(7)%E-$VbNQ+@*<^`UYDO8zOl?6L3&mqYTX zFR=}paz1?2zj1pg>F7py)3=n<$X|gw_$zfY>+5>tY^MALdvjG`Uf6evk14E9Wyo`j zN;Sva$(YFuxmDKY7Qf=Be_=>%wn6O#WS!>L>N{x7MQEGIv%QFnZbI*9BXs&v==!aZ zM-YZiLxZ5x%39WG(x8u^K`D`MpxMxAXf|mRd9ziZZ4e(Y{FI=Y1E?sH_u~;3vScdh zjzQT@P<1do8IWxKAo9Ej+H@K?`U18_w!Rj;yi4|_D6sX-fZt*qq`=}YhE>jo91lwS zLcJ3&uytkMM#|w{g6c3qaRH#Bkl#_{_&}u^2Ngh^(oIl37BCa}zlAn)5A1#yB=QdI zj<~oST8)kd;#O}YUMvLFWT; zkv*dIg{1Cad)!Sv0I|sjJj*#h%{f1ToT+xGC1@f_YLMYY1cikE#TeP{oWWt)i#v+r z>;;6GD2))?BjS0`F=0@dZOyK>W?LJ@72&O7UijDI`LMl0T#0zuh{=QVb^U$E$dgy^0rc9yRk~s}dsz zc%ypNNwL_kMzL2*EY6}n+MvgEs23?Og4U0v`DGlX*P@iJjl(`0#aXtFIVyP~VqxEu>)-T4zUKxjtak&AO&61>?aXzsw zVU|u*!m;=`Q#GzsTch!JV74<>BNL2qo$qG(mACS7qFAZX^ecKUZG-+6uqfRyFK7{Cp4&T8u`q ze(}$yP5as6RaaI{FFIz@;Odr^)q|6cDVkn+W!l_d9dpd}b63tU@0-wf`plVU^iAw7 zo3|QeV(MI`60J-HTrY>?w<_0Zct3Fi`O5e|!<-n^myAyuD)E;gehg1~BJmrA5i(O* zW^^8K64!_(F_Kji2?^qwa^KDO+;z*!#Yddk-F@oJmFk^$-n9D<(*h?hT6A(V@=Jis zksfp_*;+4tx)oTeiIcfBgf*#KX})g!*pMv6rZbaM*)K(PVv2Yqe1Vu2zE$ATfhn&{ z`EZIx8D}sfKf9EZa)2o_4fY;{hu1iUN-eRm*jtq~aj{8CGWKO_VzJ43CH4x5h2<3) z^tfd6PjSv$#?XqTx;%~+*}SCni*d16#$jVzZct8&<1&Wdh@44^Q-~v$Ing#rj>akN zCbTRZpX6&GUm)Y}z>V=SJoy5N->#gY(f6zEarAcy$T3QvY+9D-`lTSu8h4laAoQw2 zvkYGznF85ZrP1VIGa(B!ih$KDPFnV}DRa(Pciib`96xzY@wDonuUWop%9Njlx2XMT zbAGjM%dTBpwp`dhQn6^+?CaL8yMB&v^z~^vQUD!Ej?e1y$+~P<;5v{lMEX4+hP|DD0rFIiiZKmhtExxQTm=3lx#ZR!ewT z?SDa*=p8Az^MLeT#@-tFBgd9_vP6mBqTxS6{M5Mk8zO&U*^GeZEphmbSkEMxjo<{` zTe!3`*NX}%*XI%Y#<yf$cKr2SPe}P;L29mtQZ;$+)4GCmh1J-P^7iGyArrC)j9fRHB55zHn zWoaiJl{|51;T*AcO1NX%`VN$ZDKOX5!6)^+{>@xSJjqJp>4bH?jXa8L&P4t;7(fRP zHE1;i#U*0iNr&E>BaZm6N94S`P8^Lc9;#KG+#a6Db?aA=5)@~0PCIE{L28dqmuF4AVQew|8^ z806UK8IOtms~3wj-TxY~Gnu1YTQ2Fo#eg10_LQ?<$a-PZ9Mf~N{%rz}|5hC+ zUDYBE{Z30uH)e2KguXA?jev$P5Xb3QGr4>VwelTe`4h+S z_^nz$Yf8kgfx%t{zm0}YM&!tN2XDH@Pob%Y%R)>DZov%Kj0(R3jUU6 zgTHHXZnfI8=GZ2I&A+SdV6*ekeYdt2+VfJ=lZ$KmYIJGNWL+d4&^J4s>ru<8c#JOk z?G6+lV&IHPDeumz%2QK|lN;QLiO6pb=Um=vfRt<9}DsArd$E>-2?%eCwpbs_Lcg86C zPrYZ%nt4Vqm5My-om>+uWKEzaO4cs%9Yy2XA?g>gf=N~P1 zEIyq%9xLD0D4iW5C5nG8j?RUuC0g$1qH=Ypj3-YMmG5*lmM-=@o{#a;$Mf?X`&TJH zo&FfUSX;+FzaHg@)l00L=xIjFb0_;}DVOb7JC^15kCE3d<;xhIX!(um4c;G8w-a_u z*{Kf6tIIr?C(?I}b8rJ5))Qb&)=C;I_@YA{b2SV~*YzuIx%2LuRlnZRJ+yz(Q8Q2L z>OS)iyKjbjw6Q$}#T z*Rmx`jtV~`PHXLGNB2O*O1h#pB7K@-=JaMcLbBP+Q3{);ox9?MGuNJY;_$TTLno?t z9(mOKg{vPCd7T|yU1;wcBTuPMvnA&$wjbKE1zWzVf6AW!5&qOKvclK>m|0hfq+s~V zo-xKPM|L6boq?7T<1a2b5ABSVHgszY!CVnHVtHcfipFJ&GF^F7MeU#F-Wy(XY;B*z z(eK5*4Rv$cXD?3{;U`5XHGH=?v%v56_$-F{<&JUHs;!x`QWx|(I;v_0>q4{Z z{R=yKR+JA|dfb(PvZ}uN_Bjoq6{&0InFof;g0|}Vs+@fPa3CjKya z)*Zo4D>&gTVJyp3#^9j=CsFQ0Xob*iBKt)71L!`;iGd~#8pYrl=ghH=w6#sBoPAE(*0aT5 z!jn2@dAzea#ckoC&D+2SQ(!(W(dzCi=0oDC9V0yY${UD_!((q%i|U&mjlqF<=Re-JlONIbO? zz>_D%t(ubFbTyVP_B@`C@zTfh^Ppkt59p8K%W(8z&(ZfeQRi+bPUh#JR~9QJ_3>pX zw?ktj-akfKyRg2Y(-}0ZkH)`F`Gc}EDlKX!WZfZG=nBo6ZjhR46+Y^x3gHO9x8y+K zYfHi(pa*rEI{6Sfx|r=od$Job(ckqMe7U*w5B*u6;f;Osue)Z>HP_DHH~Z#{n~`Ln znsMke)sK#!>(GAW%qh8K7;uoh#f4k~i6{M#_{*@fmr8JW{0*WaEv7|WYylkW546P@Ef8u{Oj=bqAdJ6%9Dmvbn{XY zTE}deDqE-rm)-rhWnW-3)^EeV6{F$N@aM!4$K?{-s%ebWG>NAY5Zwqm^484XGP(#I2Mh-oZ#p5MT!KI}Y6S5CEZ+kdi z_fCi7H!AltpBQJ185wEgDEO@LMjzR@$2orPeGjjWMCac5DM?y@Cx@y(jh`vMKznLZ zcjHY*k`&WqiBl?*Oa;80`Jni6Ch|t1Y8(%ZnP=OBl|!!AxH&RPWoK%;l~pnoBwS>O z;crAL%6$rWj-MlAYGZPj^CdTmbc&C)MnzbdPM@TYJvKyV0QU<17ng$YMs<&wv}_7u ze~Eh4$D>)IU(n1n@EG+GH*$1$qw+RWX#_X%V}v~-gL4@>Mxb=EAGsS=M!9pkXrB}^ zq;wj7ygs-7TzY4sC;irLZDwx>e8hYCJqpSVdW0X(`|8i7S0H-Q`ge<5=1*!p;iWa~ z)@B^jKri0f_Gq)y6=V-AAF16pVlO9^GZX&p4wmOdBp2+c{uh2#r6KaQcwT&oesmo? zg=5T=qB+|nr{RN`Vf2}4u915d+!3UCz4MKo9W?{icIWEOC96Mep5e6?74=qMdr5wM zPI_jj!P)Dy8U53ae5$3x>hRZlm(349lH?eub+%+>r*|c#r#Jwd}x7tcp&&|EUf?Z?urkE1j-O6kNntUro9 zDTa;GH>z7lqP(ycNnW-@u^-?jSe?U@H7s#RJwb{a<1m)y`M5NvL@7OQsESfLH4a-I z#hwoE9yW7O3` z^WfawH(9l%q72oBL4wU_q#2N402+*rakaIn7I>ra^_lZ+%^giyCwH~h43%}%9o5-0 zE30r?uytC4MX2E$4gEcyu9CL0wq9rdB6CXVyr8q!op9Wwo&a9W$rNd2ey6vsJZV<1 zJ5ZKx$ZzSWsPX%qz6MXAx@(#zy(DE|T5-AGTAk6~-rG5B?eiyj?Kb!G>GcgZXOAqa z0b@m!^%JS@ygshNSA5N@HTmR;Wgj11Y+tscL&a!v{2854-2`8H$>?Z7YU4;<$BMS* z<b#*g* zK6mLrzgD*|ad|(N<;6_8t`RXjY^qP!D)0m8P;88t&Wyz+>yg+kT3qlRM;SXtkcPb* z-W9qNtCgB0wGko~6=~Wr04Mf?xv}it<;`s?I_gGzDFvgWCF%YVE6dQ!@=WSoKQ#IH zj_OWFmRNLX@Zw~5PxV+y8k8>7-yHQBw7y=YK_9`BG|N;=6OGu)4CXwUb5K)78n5L# zsx6|lZ&|=KVQGss=qxswg6FI;uG~JgvU=#4p5Ul2QBAitJG0yI(Aio=a8mzFZ6O_{8sAT+zBv?Ms%+%h9j z1UverVREm#tE9EKt#_6xvaLRwyQ2~}9-}Fk=kqNXayj}&y$PkMLsLu2{iW48A}c8? zsi59rsp+ZFwB~*0?U1H5_v$>07#<#;=dnqP9|VJjdS1;LJ%+$+zz z1g*SAZ-R$1P#2*L$_|HX6$$aWpbA{aJE_mzS=w6C+BaLM*;aq0r@hjE$)Ydgl_9Y- zMOTLKC#Gy&8K}RH9W%I{^gg^RhB*+dFpiz_F`Lm%$zHeOsH#p!u`9PEwJ4*a{Dc$4 z%{^Vs-Nh*>T}D$)byrV#CRWv*5x4jPZv=Xkc4b(ZBxe)+O~IhWWXyv-@`PWlDyNlV zb1E=hqan6CLHEY8B|@^GBWMwstIrVX>7@f=v?DlVafhnBGlLB^O_e3ZzN-4s?y7Zb zTjn(QW(WMU{Pm+Pjlob|eOu`9_Lc5uC-*02nU2VtonSQ7ILd8#g&8S{rlLltEtG3Z zvRZNr(i2Ttr45e0VR5Wya-)BW$1}CbH__GK?x_p4dcEzpIcL%Qlq?-An&0n$b+l5= z9**7G7Q;g0wYXd2u=hr>7n~J~tJ5Vty^eK8Qig_UG`3Hm+8P3Q4gLmWSX#w2ag$=k zVh68Wo6SQr%^8h-HPhzL3^up-qJ4TK$=+1DXhHZPQ8Zz2_M(H}8S^|u1C&wcuz-uP za_Yx;;zh#KssQ6LI=z|rLw7;>700Hrk5S!-?z~Vi#8+_NufCc(I4V92=OQ)@{R`t_ zpIreO*a@kKiRBObApd^=+$9fxo$uOl|q)2CEV*#D;}U#nD4 zlHcujP+EZ%)xSpb(RtYQ1f>8EB3p$w&{Aw89wKi?JPPh!1{N&?$r)Wf!B~Iq6_^SNN1LB98AlQmiYwKoLw{^<)~E>{OKQ~4wi5OQlqi`zv4-99 z8}dV>Q-@GaUR||1Oo5=!luN7c;_@4oys_pFkAx@846j`C-tA$ubi8IhgpoQ@fKDy* zx^uBk=X>z_LpqmfbSCO_NLx^$1K3IVDRP#jlQWO-5<#=kc(b>8v>-1zKP}sy)ZDI4 zJhZp8C?R3UWI{P8ohYE0If32)>f&tlvE<12Yq5;^lK9PRxEw_g)&ul|)8C^$X{f$-r67k^%o6nk6*&i_Y2CIYff>`<}sO_n$8g2@I zCCUc}s)rCD@$iNm9v(t0Liv0JrqCSl1R5DoO=Vp!_MY1orB?DV*} z)QkJ;Poy~|juLut8l_X?u;|5U*wbRzXnD|!TS_|BfH_b|Qj1HyHRQ_pvE|t`Iff-a zE@iR<>&-fT0?rQ5@fV8ikyA7(6QX%y2A}ZkPjp#MS7Yg7&*QoHVS4l(qufm3R)x5U zr5?)_>1q6P=xa2!HOiY&J?9j?Bw5_r$Qs+eQeypMq_hif7EAmSsIw9+2cvpv^%Gob z!jktU8g{~tDKkk{=PHgH!+L1617`_rqk8AGG_v-qMZoiT&_X7}JreH3VWt2>v+Uf% z)>el`i_?80b^4&NF|}Z4+`t-3&==>r+beoc7@l-OM`fGc624Akj~Q93%1Y$g0B@z| z8b6T#kz7~K%ua8f=aeBS9Yrl$9ZM4yEHU_(tTWko7{dtDNN-J(HNI_|N0-+Z};Pm3r z1979@ePWTt-d5Rh!ldC7dMn!9xff&i(%9l^zW*HLi#bj5pVIg16A3hh26JtZMge7HH$(_NL4Hqn@rW3R~YI^IU@lb1e+Ykv{j@7X+8?Klj(^&sg_ z7yLZ(g{H{3JE>2il%w_C4Q{Yvj6R9JUW)#@-BD|RFk)MbX%KFqvANOse&f`Z?AF`~ z{<`MMW@|}HZONiZ%?pZ}^12-ke?eVkc~_IQb~LH1v82)7P*Yh_k(Xr3E33D)PpGS_ zv6WYpn2U0NsR+1g2kgWfbHU{}66K&iz-6rSWASLQDr9Uw@r;sCY|MQO#AuNJlh`fe z#@)&72hAakVw{9Ibvc8?Lo$rg6EU%qK&7`;W*E3p(@h{F0Ry*0nwb#SG|UL4_odjH zZ1ujf`cP|qSy`RGuFMuJYwWaT8s_Brmrib9*u==P`qmJh`?`~CZPn$4u0nT3QF(4= zPFa0*O+!geR)IOcEX!i|da}a-@ks6LL04sWZB=baZf>!~T#%WOTkfxMgzV_%t4a#$ zsu?@ovy?npTY>B#mUp#ImH~@9AJ|$dW))SYlw{>Pz7VxZ#cg%s^ZG-dJH3esJtm|0 zubv+C^39;rtI@%zf$Dt>B?l-~(#TO_zUqS+5?gk z;PpJI?E#*xL@(9!xOB1Saa@d(9xa>B4W8=U#8QvtirNt3R)3DRB$_%s${Sj?Ww8>{ zI7&)s`>4eF1;!N7^6k=Alcb~%L}Q=F@5@N6o-gMI9f59$PoX15cu%=-``SMj?EKmM ze_#}{QEcRq2*z&e6NrP=q4?Em!!5h!E<0($Nz3P6Jo(g95&vSbCj4`8bU0U>9HyNQ zoQ}(~S!#`_=310^(gca$qRl=X9)AN)!lH5>j^BjSgGj%N0qE2kT8#}ld=?DNEH;O! z_z!;U{f^A}BZeLgUtRl8O zPQm58SS#mMoa8Gq1YDDX}1Fn60LHr4dGQ}Y*fbS`NMEotqUmzy-&wz{*HmLGWPyziN^V3p4m zD(-1JC%Ln`cU}L;+K#?Z>ZWkT)MZ}b_Dra6nCSIRY^a}rn+K>b4bE5=S8&~)yJS4< zR;}MnaY+wk+%0j~do`>{y#Q}d{*VUA?V&h4)vctm{WzQ}gE=#g_#X3wwRl5tM43!d zl5?JzDAcD3=`|k0+WGY)Y`pSm3pIwg4j1(+u-Y(orZBa3T4$BPu+Y;rG+|^oqsn?| zj>ldk?5>*ZLLo}(N>&GZ%T8X`GP}V)+aH@QYzQ?!(RP&Qne3{NGbJx+pt3#1Q|of% zR^+7@*AzS3%7ZDDc{%wh)>g;FsbVc=3Imh1nZn*S%oK)dJ?($gX9}r&nXn}1b6K8aX^@m<-EO)HK{j7%Sf}!!1H`4;eW|_w1VOu#>0oAbT_6TXS~0wh_pED z?q3r>b+v|Z)EkJ}f}pUbw1sBH#kv|C1Moop2d4=)Lc?QWr5ED_h3R$-55 z@r`)9K$e9(4dKa0P`&=0@lw|bf31e!jbHR=0ggaFyb}In?21MF%Z+l~!iK51Y+BI> z@@k5C@vK??BLWp|C3(RLOO3fC!;@VfE`^9VuM+6Sn5*J(!dJwf|Yy+c&Q`p#>ga) zEz8OaH(K_wRUOG6j{s5Z(5K}k$-_ny)}V^)S*huvMkzD#SMXUt zeVs8fGsQ7XiyEjU-^@n;8JlRih6N`CfOm2+}uE@f-;pe$S6Hdq`Z$> z?s3Wuj4Y)&^GMwl@Sw3h= zOc*v9Q39L*DmEgoVw~rwaagHKRyj@TdQpVYEOBzT^DvAV|X67xe1fks1y(Oy$tSnRAE>3+Jcx2~c*qbQ@iq^N@G zc)nO7{(zi$K2iLz1?278v;l(#+``m2$>W*a&;U5GvD#N$?5hSW@{1+)Q|lY1)YnaI zXqZ}8U)gG_YOSnnt+KUNA`fVfdI|iNf&0mL#j4tBXcftWA~{?w7U12pLxaO%7H%NTk+5Y>{PVw&a z(z4_%Q)YHWQs0263eOe02M5Dn)zu^#`cjg>RRG@fJDk#H!MT~#Pr&>FO}z7Zzah5M z028=aA{9lUY5wBWlw#l1Q1cXjXa5a^srxFPj2xiXhQc)W4r4Y7Yc? z1TVJ;1RC*fD9=7nmTcdYrD~G%E+Tirx{lHL6B~yd6~Pf#d23y9MYFwQK+I@9va5YT zQ;yYLP}b}z>O3|ncw|pv&!mdBn(BtqwBFPrkJZ{(+!sg;9nn}f9a9rkg-NC&SIFME zxCu3rg;HaF68<<7G74DnRvxCNZ02eQ1SaN(|0rfmUbim1+a%IbcK3=W!fjJ_|Eo+a zH=#ULT%J2In@Ac$`!{%bJ6eof?8Ofnzeru+^v#M^Q+tu%^v0KEdDOKUm5^JkES9dlZ(U0u#K0h?- zAowIs3^3*Pt8!+=DLH09IMw zNYBjbSlQLPy1jjMPi1$BI3m2aX29zisF4t5rdAZQuDr)z+g7_$j9S9O;*0R@>Um{T zx(}U4JG1PNO$vJ%H%`uB`N#$gkfzok5AApW-h-vdj4eM`?+epkqM+m0{?3rSwr!!m zc|p+Y2zBiYX)m;2c4cFkH5D&XboEXlIj-pcPz}$9d2ly?x`IOH4NnDFYM@F zP&c)_-Ro+%TH9UT_Hr?yt=`vJ)L`?qLyGXX%q2_FmpgW3!z>!W%^1IQ+ifZNJ{IEI zp5C=AME8I$#6eLS6XB}f%C6GzjiL?0^Y-f^M6Qm=ccNYF!3wsG=6h(=Kyz)hd*+Ax zj{eKrT$++n((LsFOH)%zn>^)}8JU&k6_x4fw#1t5i8grJ8b{~Es_F?{j%L@8yLQOs z8FD*^J*X|LvMGNN*YmhL&i>ENIjcW6uT@MbtIN(S4dWDOvU<@bcJn(vfe!d5UIf%l zku4F2L{t_H^m?jn#kOqGQqkdU9;)h?;>vunF3;aNXtz2G-9-tGUgtoob3#wECBF%D zD^S+S;znv~FteqZJW-b~QBp3H2{eKff;SM|(Kp)ace(4k8w*@T_6nO_geHc9Lsg{( zj)ED9BW;FikF&C-tS+^rpu}n~H3WJ)8Y!xK}%nv4l(@JnUf>c#<4leHf8RikCw*}+hssB@T zr_&fp^g2o%c^+4xGo#t@`o8j#9819B?6BE;6Dyi+spWOWt^%8{z?}8(rh;E2l;mNX zouki1T$UrhLFC7}mm5!68(jy3=EE%b;A&HPNqS9Zbxp4mZu*d+ zGGPN6-sGw7s>!R#e)Rr)M^Rx-etu11kprs0`XG9drwKkjmp8>5x*pC7hlTfktOGWA z!sr4U;McwrlTc^HXsrTL8vl*$LPFGL2X)KEA9vdO+%~JZsJgYHvc*6^E?aX(nzO8`vAD!nRq9O52v)gTN`g6+g*KP7s<1NWers{5 z&01PgNm46AF$Tb!v{>4H6E_#ZI;6dx%iS5~>R6VVqpKPsbN1Gxrp8IF=Ef9LQgxS| zWY+1FGGl2;$x)6DoJ-rT{#9CQ?*E0gikzD637WZ17{^?xe()~HUu1ioJC40t$YQh1 zn#Br>XjA_}7MuG&wpd|-&2|hrtj;2LQR3k?ixN*piM9TrY^MJQHjDj9n$0?j$YwAfqY_zahl;#M%9nSqxn-!KLYsqSZN9tA!UPq7)R*Sx@zKTO0`zNio z*3MRIab;>&o8MRrt9A5>obu+Xl=50K+eWh`^LaAcBD1~AUeo6!t3`hFmf8Q7)v9;? z2UZK&^de7KZSLV#Yl*j8@HPqcMm>A8azb>q-MZH8W;!MDt5Jp z*J?X|;0$qoHtnQ2fELn$xoNb2*e~(|PEez<06o8ToaZlzS^T_$+$73l7jJ3lkLUC+ z!839C$agB8%y2k;I-!l8qg6E2kCXm2@diIfTV!x^`gb(?=*fe>*Tlq@R>ul zsYA6jH6@NbQCr^TZXUFEj8vt5F5YqGH+2s?ZQkPA@&re>qr0_cq^rq{eOW?j5wD9y zhHbRI%9+rUEoNYDDMP=TC+KQ?=;ho?|Ba&N@TjVUP=@qY+ zg`5fQI=8d3GS!+zf8MZcYvxk|_0ywl6XjwBZjVT2c_&3yD0{`f@VCl;XX5Wi#6FB2 za}udO3zYl>uR4t9>sbB+fWN_cbI?5>b^;A7TfZI>DL|^Hahf`?7Q97RuwdcYR|;?V zY2uVq;N2TOBQ6(d44iJ+GO_f;6T?>{y{c$j$TⓈw3Fycy`{hD@958fcXBz6G<^a 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 U_211zC(Wq362PNUqy|O(Ul-U{MgRZ+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..969ef17 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,11 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/compass_layout.xml b/app/src/main/res/layout/compass_layout.xml new file mode 100644 index 0000000..39b2635 --- /dev/null +++ b/app/src/main/res/layout/compass_layout.xml @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_compass.xml b/app/src/main/res/layout/fragment_compass.xml new file mode 100644 index 0000000..849ab91 --- /dev/null +++ b/app/src/main/res/layout/fragment_compass.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..ef49c99 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..ef49c99 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..b56b009a60e7315923842c21f86bc67f2b90471b GIT binary patch literal 796 zcmV+%1LOQsNk&E#0{{S5MM6+kP&iBo0{{RoN5Byf@8qbFBuC117|!x1a&YeJdwMEq zIBwfWk~H^sQ`r1d*ogK!_e_`NHj*Ssso9edF#-Qwz#`Q9kDV^KwQZ|b=K1bghlYkr z5uVcnAsH?sfwJ1Q0*~0n~sZ5I_I{WPmbI00PLV7r;M|Sl8|txB-4uKu!hx zsyUTPl|;7|LuI1dq?#2;>(*2tl>(&bHpQq^VQJ6z(v36736Peq0EwGNJUNV{#zkfbQvRhey@W83!h*tTs)V{HB0j)-}0 z{OP`k{!f7V`(DVg6bE@Q6)OQoMqi9QCq0JI5rw>kp!l)`k3L>~S9zlX@VZpRvh*&f z3MM)Arc~vzEZ5IeIitW^E|r=Y0khzHj|r-$2hGBtxKygAhAlqwnPT&W&!qoe{H|>~ z9d7TfrZ?e=c6xO#xsJ2?=>vyP(Ot)n^o4dx{)T(n`NJ(fC8?dW=YZpV3+p^m zbpK=e%xALA2QH|dX7jbgq*AlQX0ccCIiTFIH9Tli2*tlumn#fWJu4Y1m|$(>*uAL3K2jA0uew2A|en0L?93WL?Bqcbk$HcF{~^Dmtv`O ahI~2|y&kXuE}p)8gZ$;wP)-93)!$SC3yHM= literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..f2f469296ea61242658965eea93e1eba25a2abf8 GIT binary patch literal 2112 zcmV-G2*3AINk&FE2mki4J1gCZQ9no z_xL>9w!UrKwr$(S6l~kJrtoar?;X?xfYM?(bunC7>N;px7ef$3bU~tPxVk0+BY;>j z6!FhL{^Ea6L^$J)|Ng0Oh1kFd)aDuhApZHsPng36&z|VKDe(8c?~^02I;xf^JN|uU zl+}Ov#uJkf$b@Pa}_xk#2>%C zBI^~yFbz~Zjx4fXKLE~E;9Q8jOOMWc7WYtvUK}GcKmA<>oJ-As@EUtNi=#^87-4&j zH4Y3)=R)LtW;w`FwH(8w3g^PPRL+I)9OEEI6>}CM<<?Al*G5XcL!S1gXIk7I?~TM|w=24rdri=zf3G%`rhwF?YM zE`3+CR%nh=Ahl8V_qT0b1J>oEdJjU4nd3o)wF`yD0h9* ztiv>$ay0Frd8=vuYF!}%y)?3e+XzOC>!+<}jLX?fwBsM^Cn2QqCza8~*arQJDX_w~za(T`*P+W$ zGhegNrci|-eOI0>kW$QPAv{12VA1{y46O?E6gXHaJx?HIugdXz!XXG?t^bViWar4MdJ=r>N^jhWeKE`T4#1$Vpe%dQlc~& z&FIJ>b!0~=qQDHUYs?Z)u^~31M-5+4b|LizNXrvQ1vO3ilnQ|k)Ae6S#;j0+DwQ%< z<%s=>23?1G!y|2Gp{*@jAjMX0f$#-g*GaflOTojT?a7)5?a}HTXSKu z?d{Qf#Sj3DJ9gg=F^whvwAOa!4g)|8frPmFHIbpFQUa+WX1~q(S3ZEA7&xQSSc;yO zY=IP;>-=r^?&)11hVWDBIYs=MpDeL|0cWkV+6 zyEktlm$oqXUHiS10w0BS?HAac21=}gI8hgKQ z_#3ATQ3^~M>gQJY-eaGR($qlevdW7EwzHobD>RTy!r4i9kci#>_C7B{Lv^VrjlA`5 zpGm|eeQEGb5qiRkIScXOF#IXNk{q~gwp zrulCBJ9-HpA83+rbs9dWOm^R@Vygk~OsOMvCo8x$PH^AaQ#uOY1kg=%6MiIO2HiVl zw=4JTC@otJ_8&6HPRi}?zUhxXIsvp3J%lfbr~=V@4l=RyPy@?1Rk=WJV zvFqwp*+qyr5t=qFJL!Z;*~MDB*In)%cf`Mr@j+n{V*BAoB9cVf=-E#<*`~?F%0EFA@&r{bQPnpi@Y68MbfHYWASuTX_}n700_ zv;EzDWfplWEq<#h!-n@=QS`NRkCpkswYSF$Zx=uHPZC|ed%;zmghwqK05fiP*d3#qb8s)_n=ZJqZL4n9=SZAslrfc|SjL`Qf@^TASDC8O`~NPQ#9P=%%BUi00-*w_6zQS@DO4JYQ9qPm z)USyqcFSmj)f$a)lI5KD;6J*uU#E%!+O_Rvq>OEIZQI7I?VYtbUVHbSx6Ro%%a2JW zqW=?seoDO#oZ%TbBam|p&Y0O~0ya{{xCCd~C#wydKWmvm>c!$9@m(gSM{gd7+wKCU zSxbHo(hGE~(dTecaBj&PL^`ovFCh^OA0eav1mT)GTpEU}*iNQ!=}sk7VDWBY40rx+ zDFifrzusJn+q6n2fMO5l$M|RL66hwiwTVv?w@@3ol=@3bg~b5}%~>O&JAN%p_Y+e; zJ13+K#89U=B?tHCyC&}NbY=>F`s4^`;39K{pNS0v(W;hK{FZ78_4$7cFCh`BJ|7_? zVtO?6YH{0Lz%=_N(d%%J!PJX#)sEsw!=B}ZcN{f_d2LJpecWt|6d3C5M0-Q^Wv Ywx>}VkTj2~)Zi>?K-gVv;9cye1j+F)3;+NC literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..d4037c75fc678e35b9ff2397c0fdf5f5be506a23 GIT binary patch literal 1388 zcmV-y1(W(xNk&Fw1pok7MM6+kP&iCi1pojqFTe{BHBr&FZISH!n>b-+W@b>#44#=e zQLN&anVFfHnVC81>FNp$^*{)j1m2KO!E!(zzZ)790ZQIIhet_*8+ctB?&o=hy69D1V5Kj%s z)R6YU^%K4YgHuByHKdR^wLhiQ&!-0+1(jZ&%@aHq%3b# zetO}aKhG;U^dSH;)GYxVvO6jrcn*Y)b@>;ZZev+sotZp@I;Q*ohf-K>YcHzLefJ1p8Fx z5_t4;gsj6nNTh~1u_&EwZ}V42_z7&sJli4ephCSyYa25w^Q;KY zB3xB8n7|>GqJmXfiiD3HoKaFJ@LDj68aA3RgkLTyO0S;thD*^(nsh3EM&Kl(=0^m^OA)EI;wfH5L+OmEU-}8T=vQ245&0yvm2MY~b73z=@W?mr2HXf=$tkw>Z)k9HA0*^&r<@(0DQW^d>` zwGd_q0Z0~d^RM+aD?0IvbdrC}aBcZf0ze2B`Wy3>Oyf*iZQipm!qg#|2{L<(_o8>4 zf9z^TMfu;`YWXwLdkNXghBV?!7HTtZU8f{nW8CCUWU9Bm_a(Si4ykOT8|i;yte4)U$yO-VCfEZ<4w*9t`~Ih_qPK6@ zNz-+-IIfwr-&lFQ9pt^VGq0}&ack<3VWG~#ezLWFT|VARo)@Fwas$t!d*7RM?O@^X z^idXcy(yc8UWITPN9vc8qb-)tZ`35)^E}U{ntyC5pO@F8!WZAoz6p9;H?fdsq07Ry z=l8-USeq8orIp_1zOv46 u>G0Qpu6F~k{^rXoi_5O5BtsZ%m9G{uM^!3ep~yn{r4vdj9hE4zAPfL%>#oKC literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..d146069ed7316006752f8a5cb5928babeea52910 GIT binary patch literal 1032 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..a8dffdc964176734e5aa4ced5cda32ea25f40991 GIT binary patch literal 4602 zcmV=R=L)d zxxE`?^efZ()JP@I<e)ugHDCYtqn+u4gWV5Ll-p}6!BszbY@3{(nTWl&O=5+qjZ-NWIv@U=Cb9ebK z{vwPJU(I4?`^mAp?DY4Sr2F~n7?o1_V{$}*PVc2w%x|fj8#)xkfVqV;V*()}J$dqYB#^Ded!6GtFDOoHIhel(; zY`x?4&42z9%d$Ef-RpHosaNsdhKl!opgFN|XdD)U$RMW-7Kg^6g%EyhW2Ds8(YYLb zcXmR0(~$BWLMS#)u_<#HIKnbGG&Qvl2ED!$`T?Zt4DnSLmwkxlL#Xw&aHPqi(Q4uE zsysr+3EBsl4Uo$<2%)coBUuiO7D5)84biupRxhGsS;SWr>0Lx;295$5(8)Q7uNuqh zRJ1`d6Ow=`5F*Cu%TXpxO$e*p%(6P#xGIrv5^~9bP{~m$hZbJ-Ullz}f0o@CF)w8I zp{fmHUP?CkQ;rKrSr)m>gRq8$qk$~G5Z=tPdr^JzvO)|*%w37g(L@sSj~B3%p2{|s z72WHElx$c7cNgWGd?8Y@o$hsJSsRr-5M6@f(#UkaECo=GvKBhl1!ST;1rg&6Mb6oekuyj-vi$e*UfhJZ>4Ss+`P|EWiFSQqo?>3ja$0Vm?E}lybC`$dp1S-0Vb-n)|b*{!0L2GN6)UgdEypm&|ydVXQwHMdHg{=*uxgzD|Zb_7MOv@fw{~SmsKK z7^51cm5g(lRY$l(8CMynh#56Sl0;n{Yb=lu^Z zl~mHyX@o4Bwcx+!CpMYT!YnLeLw?N)_Ze!n5y%^z%MPr^D66a?!+Ox@Phd}RSIG?; zn1%rsOd(oVNB%7~qq8}UM#hCbGU;WtP3~AM>%v+b168X)5`A9_d4tX9oado~i8%Ji zkk{2VIb)%&62#`2m(G`j-&a?@;BOTAwviKa8P-br&J^Uu|*{taB^nl9j@JF7mN7et8 zq6VUyvuEDISBvp^{M`lab%CKAF;=d$=D^UQV<^io7Sc6jqx~ybYgL8dN6W2X5?%+X z*8mxA#$4)L1)Yt9ATuj^$~BXP=<*YB-F7oxLNzpq0m#djn}iuhp`LeGh(7F8OOX#v z8>;X!bMddy+5FR52(k_JyyJxMy*yJ%91(nsHk`FOIkO?ARBK>1&c+FIo3bUi+UmtY zic@LNdF=pea?HlrP^)0FhU;(N5(l5cIt4l#ffR0ts3bN}qR+SLAcfH4Nu;*e2Zt>c zC4C#=L*$Uhz)_-oun>PZjlJ$u;4mFXOl8bj=HoahQC>juLWdDGrY+ zmcPb{O(8XKywD)0c#ax!YSHAbs^T3Wm1ePPl*r_2EsQ_+V7APgu&ap2jGv*xOk+M4 zn7L+*aWzY`p<;BNuhZq<2LNFDGqFDmR~#t~07Lom=>x%iD#iQ(z*8|ah_M)30|fwm z8S|L=SOSxn*8ogc8?jh>0|fxrB6;Qmz;n(X(YNbf-=Cm(2jI7B6&zS~ zkDvwMk+v>jG<;~`WQBd(0JwJxIyH-fu^&(eE!DLY8Hd zn5EP<81b$bqhU8-7k~*AKn`B2whNyF{jpNkeSPDzCde z0}%PmVClSEOQO|?&wc%JiQO#LdiPy9RT~2pAA+Rv5{~M0DZF%bV*xKHG%zBJn`k}Jc=ga>d!Wy#w9i{ zoFc+C-a#h_NDWPu>S3uYw(qpAT-DuEh6VKy8|$t=(=N^`c?T&&; zxb|Z+*AvfmH(ObxeCCtx;_3| zp+U*htxRl4r!2KQEdZ}7L0-^!Ljk9k+?EF_CaSP??Q|4AJQjLGd`xzQ=L46Q(ZitVOC0|Cfdk_G> z<{%nC>`&Le-pr&_F!<8uc;VA4D|UBUgW8&wA!c6yMt7+lq)*M>8v^ic4x#|W2*5I5 zw=9X~7fNbbcv`$#;UrGYpKV)J6+p}*$8YG39aK#0rs@E^8iugOAvR#}uJtepiF%(GRZ@G)S9c&3|2VC4RMBK7rh!6gtriCf^UWq9HOaIVj#XOhH7FXkx7M>^F zk@SIulBBkHxq6|$eQi%0)m&^nFu=a{8UW_+exY{QwlZC6Te?@jw{}Ai`M5*V3{;=FTd+=h zmMja-DPw@4N|6yfc)~elC@g2llO$UU4w_+G*fiA8I39nj_Py2JaeC6iv;&Zb0MG;Q zy#5P*j;aE%4+&itY+J*h5WE@JR8-)CE)iNtrti3(>%Yld%2x>x11qRWPnoA29`I} zEt2F(o=U#v{Cv%J`{i-ojqZ@Iu>kCvs%pOrce%y0I!*-*CqCW)bU~-=``m?ol>#Iw z0aWR8Uz>5>&&XNo(j~XOE9b>^-aU?HKgKS<6KH(0Gd09Y6Rz=b z%&+M7<9fTtE3X%=v(_d5d*JO*)u9o9C7_buh0pDKN)P}SZy%`{JtqLf<~kwU2Au-H z7eHXW5Z*Y%_%#l30OHV6heZGtUuhBQcE~m9W?%E3x|U!2{(nrb2%wU|fz|?uyU1^| zFCKZk#0jZmR%2(houK6sW5ckI?|Wpu5ZVw#Zsyk_SiV~+K%%M=1xQrsyF2-9_E^0T zdgQ(z58F`Up!L`p{S9vb+F&mLrh8vKzV?y3Jonfa8-mEkF1+xu$G%uEgg&>+k+qM1 z_1<&6g0Jw#cbH(P?Pdi4rF+Oh!Co5%o$DEPuS8*<=LT))6?{;LyGdcTtMMG>q$H(w kvyY;V$>fcZ$y7(-W423b@pDWom9#^pmdJ?8YNfiC1(G?$W&i*H literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..8370609e175c1f104a6236c32e0211e838e1d547 GIT binary patch literal 1778 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..5ffff82 --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,143 @@ + + #96D5A6 + #00391C + #12512E + #B1F1C1 + #B6CCB8 + #223527 + #384B3C + #D2E8D4 + #A2CEDA + #023640 + #214C57 + #BEEAF6 + #FFB4AB + #690005 + #93000A + #FFDAD6 + #101510 + #DFE4DC + #101510 + #DFE4DC + #414942 + #C1C9BF + #8B938A + #414942 + #000000 + #DFE4DC + #2C322D + #2E6A44 + #B1F1C1 + #00210E + #96D5A6 + #12512E + #D2E8D4 + #0D1F13 + #B6CCB8 + #384B3C + #BEEAF6 + #001F26 + #A2CEDA + #214C57 + #101510 + #353A35 + #0A0F0B + #181D18 + #1C211C + #262B26 + #313631 + #9AD9AA + #001B0A + #619E73 + #000000 + #BAD0BD + #081A0E + #819684 + #000000 + #A6D2DE + #00191F + #6D97A3 + #000000 + #FFBAB1 + #370001 + #FF5449 + #000000 + #101510 + #DFE4DC + #101510 + #F7FCF4 + #414942 + #C5CDC3 + #9DA59C + #7D857D + #000000 + #DFE4DC + #262B27 + #14522F + #B1F1C1 + #001507 + #96D5A6 + #003F20 + #D2E8D4 + #041509 + #B6CCB8 + #283A2C + #BEEAF6 + #001419 + #A2CEDA + #0B3C46 + #101510 + #353A35 + #0A0F0B + #181D18 + #1C211C + #262B26 + #313631 + #EFFFEF + #000000 + #9AD9AA + #000000 + #EFFFEF + #000000 + #BAD0BD + #000000 + #F4FCFF + #000000 + #A6D2DE + #000000 + #FFF9F9 + #000000 + #FFBAB1 + #000000 + #101510 + #DFE4DC + #101510 + #FFFFFF + #414942 + #F5FDF3 + #C5CDC3 + #C5CDC3 + #000000 + #DFE4DC + #000000 + #003218 + #B6F6C5 + #000000 + #9AD9AA + #001B0A + #D6EDD8 + #000000 + #BAD0BD + #081A0E + #C2EEFB + #000000 + #A6D2DE + #00191F + #101510 + #353A35 + #0A0F0B + #181D18 + #1C211C + #262B26 + #313631 + diff --git a/app/src/main/res/values-night/theme_overlays.xml b/app/src/main/res/values-night/theme_overlays.xml new file mode 100644 index 0000000..02adac7 --- /dev/null +++ b/app/src/main/res/values-night/theme_overlays.xml @@ -0,0 +1,98 @@ + + + + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000..9684960 --- /dev/null +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,12 @@ + + + Omni + + 东北 + + 东南 + 西南 + 西 + + 西北 + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f650a3b --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,143 @@ + + #2E6A44 + #FFFFFF + #B1F1C1 + #00210E + #4F6353 + #FFFFFF + #D2E8D4 + #0D1F13 + #3A646F + #FFFFFF + #BEEAF6 + #001F26 + #BA1A1A + #FFFFFF + #FFDAD6 + #410002 + #F6FBF3 + #181D18 + #F6FBF3 + #181D18 + #DDE5DB + #414942 + #717971 + #C1C9BF + #000000 + #2C322D + #EDF2EB + #96D5A6 + #B1F1C1 + #00210E + #96D5A6 + #12512E + #D2E8D4 + #0D1F13 + #B6CCB8 + #384B3C + #BEEAF6 + #001F26 + #A2CEDA + #214C57 + #D7DBD4 + #F6FBF3 + #FFFFFF + #F0F5ED + #EBEFE8 + #E5EAE2 + #DFE4DC + #0C4D2A + #FFFFFF + #458158 + #FFFFFF + #344738 + #FFFFFF + #657A69 + #FFFFFF + #1C4853 + #FFFFFF + #517B86 + #FFFFFF + #8C0009 + #FFFFFF + #DA342E + #FFFFFF + #F6FBF3 + #181D18 + #F6FBF3 + #181D18 + #DDE5DB + #3D453E + #596159 + #757D75 + #000000 + #2C322D + #EDF2EB + #96D5A6 + #458158 + #FFFFFF + #2C6741 + #FFFFFF + #657A69 + #FFFFFF + #4D6151 + #FFFFFF + #517B86 + #FFFFFF + #38626D + #FFFFFF + #D7DBD4 + #F6FBF3 + #FFFFFF + #F0F5ED + #EBEFE8 + #E5EAE2 + #DFE4DC + #002912 + #FFFFFF + #0C4D2A + #FFFFFF + #142619 + #FFFFFF + #344738 + #FFFFFF + #00262E + #FFFFFF + #1C4853 + #FFFFFF + #4E0002 + #FFFFFF + #8C0009 + #FFFFFF + #F6FBF3 + #181D18 + #F6FBF3 + #000000 + #DDE5DB + #1E261F + #3D453E + #3D453E + #000000 + #2C322D + #FFFFFF + #BBFBCA + #0C4D2A + #FFFFFF + #003519 + #FFFFFF + #344738 + #FFFFFF + #1E3123 + #FFFFFF + #1C4853 + #FFFFFF + #00323B + #FFFFFF + #D7DBD4 + #F6FBF3 + #FFFFFF + #F0F5ED + #EBEFE8 + #E5EAE2 + #DFE4DC + diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..f32180e --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #F6FBF3 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..cc6b27c --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,26 @@ + + Omni + N + NE + NW + S + SE + SW + W + E + 0 + 30 + 60 + 90 + 120 + 150 + 180 + 210 + 240 + 270 + 300 + 330 + " %1$s°" + N + E + \ No newline at end of file diff --git a/app/src/main/res/values/styleables.xml b/app/src/main/res/values/styleables.xml new file mode 100644 index 0000000..1c9559b --- /dev/null +++ b/app/src/main/res/values/styleables.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/theme_overlays.xml b/app/src/main/res/values/theme_overlays.xml new file mode 100644 index 0000000..e81f18f --- /dev/null +++ b/app/src/main/res/values/theme_overlays.xml @@ -0,0 +1,98 @@ + + + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..27d70f1 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,63 @@ + + + + + + +