From 6fb954b77f76adc6dd715f0df231e055f3242afd Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Fri, 21 Oct 2022 13:20:11 +0200 Subject: [PATCH] Initial Commit --- README.md | 1 + app/.gitignore | 1 + app/build.gradle | 65 ++++ app/proguard-rules.pro | 21 ++ app/src/main/AndroidManifest.xml | 27 ++ app/src/main/ic_launcher-playstore.png | Bin 0 -> 14316 bytes app/src/main/java/com/cyb3rko/flashdim/App.kt | 11 + .../java/com/cyb3rko/flashdim/MainActivity.kt | 302 ++++++++++++++++++ .../flashdim/seekbar/LightLevelSeekBar.kt | 150 +++++++++ .../flashdim/seekbar/SeekBarChangeListener.kt | 5 + app/src/main/res/drawable/ic_github.xml | 30 ++ app/src/main/res/layout/activity_main.xml | 171 ++++++++++ app/src/main/res/menu/menu.xml | 20 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1437 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 1430 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 2908 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1067 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 961 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 1848 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 1966 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 2005 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 4089 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3175 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 3144 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 6551 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4390 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 4389 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 9391 bytes app/src/main/res/values/attrs.xml | 9 + .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/styles.xml | 8 + build.gradle | 8 + gradle.properties | 23 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++++ gradlew.bat | 84 +++++ settings.gradle | 15 + 41 files changed, 1146 insertions(+) create mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro 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/com/cyb3rko/flashdim/App.kt create mode 100644 app/src/main/java/com/cyb3rko/flashdim/MainActivity.kt create mode 100644 app/src/main/java/com/cyb3rko/flashdim/seekbar/LightLevelSeekBar.kt create mode 100644 app/src/main/java/com/cyb3rko/flashdim/seekbar/SeekBarChangeListener.kt create mode 100644 app/src/main/res/drawable/ic_github.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/menu/menu.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.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values/attrs.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/styles.xml create mode 100644 build.gradle create mode 100644 gradle.properties 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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..b2a81c7 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# FlashDim \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..bd33508 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,65 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { +// signingConfigs { +// Properties properties = new Properties() +// properties.load(project.rootProject.file('local.properties').newDataInputStream()) +// +// signingConf1 { +// storeFile file(properties.getProperty("signing.file")) +// storePassword properties.getProperty("signing.password") +// keyAlias properties.getProperty("signing.key1.alias") +// keyPassword properties.getProperty("signing.key1.password") +// } +// signingConf2 { +// storeFile file(properties.getProperty("signing.file")) +// storePassword properties.getProperty("signing.password") +// keyAlias properties.getProperty("signing.key2.alias") +// keyPassword properties.getProperty("signing.key2.password") +// } +// } + + compileSdk 33 + + defaultConfig { + applicationId "com.cyb3rko.flashdim" + minSdk 33 + targetSdk 33 + versionCode 1 + versionName "1.0.0" + } + buildTypes { + debug { + versionNameSuffix "-debug" + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + releaseGP { + versionNameSuffix "-googleplay" + minifyEnabled true + shrinkResources true +// signingConfig signingConfigs.signingConf1 + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + releaseFD { + versionNameSuffix "-fdroid" + minifyEnabled true + shrinkResources true +// signingConfig signingConfigs.signingConf2 + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + buildFeatures { + viewBinding true + } +} + +dependencies { + implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.core:core-ktx:1.9.0' + implementation 'com.google.android.material:material:1.8.0-alpha01' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a5aa952 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ 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..10ab6a3742f1935ad2e8997a1f13f1f33bfcd103 GIT binary patch literal 14316 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/cyb3rko/flashdim/App.kt b/app/src/main/java/com/cyb3rko/flashdim/App.kt new file mode 100644 index 0000000..1c01b20 --- /dev/null +++ b/app/src/main/java/com/cyb3rko/flashdim/App.kt @@ -0,0 +1,11 @@ +package com.cyb3rko.flashdim + +import android.app.Application +import com.google.android.material.color.DynamicColors + +class App : Application() { + override fun onCreate() { + DynamicColors.applyToActivitiesIfAvailable(this) + super.onCreate() + } +} diff --git a/app/src/main/java/com/cyb3rko/flashdim/MainActivity.kt b/app/src/main/java/com/cyb3rko/flashdim/MainActivity.kt new file mode 100644 index 0000000..a44ccb9 --- /dev/null +++ b/app/src/main/java/com/cyb3rko/flashdim/MainActivity.kt @@ -0,0 +1,302 @@ +package com.cyb3rko.flashdim + +import android.annotation.SuppressLint +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.hardware.camera2.CameraCharacteristics +import android.hardware.camera2.CameraManager +import android.net.Uri +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import com.cyb3rko.flashdim.databinding.ActivityMainBinding +import com.cyb3rko.flashdim.seekbar.SeekBarChangeListener +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import kotlin.math.roundToInt +import kotlin.system.exitProcess + +class MainActivity : AppCompatActivity() { + + private lateinit var binding: ActivityMainBinding + + private val cameraId by lazy { cameraManager.cameraIdList[0] } + private val cameraManager by lazy { getSystemService(Context.CAMERA_SERVICE) as CameraManager } + private var currentLevel = -1 + private var maxLevel = -1 + + private var sosActivated = false + private val sosHandler by lazy { Handler(Looper.getMainLooper()) } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + if (!doesDeviceHaveFlash()) { + setContentView(View(this)) + MaterialAlertDialogBuilder(this) + .setCancelable(false) + .setTitle("Device not supported") + .setMessage("This device does not have a flash light.") + .setPositiveButton("Close") { _, _ -> + exitProcess(0) + } + .show() + return + } + + binding = ActivityMainBinding.inflate(layoutInflater) + val view = binding.root + setContentView(view) + + setSupportActionBar(binding.topAppBar) + + val cameraInfo = cameraManager.getCameraCharacteristics(cameraId) + maxLevel = cameraInfo[CameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVEL] ?: -1 + + if (maxLevel > 1) { + cameraManager.setTorchMode(cameraId, false) + binding.seekBar.apply { + maxProgress = maxLevel.toFloat() + onProgressChanged = object : SeekBarChangeListener { + override fun onProgressChanged(progress: Float) { + val progressInt = progress.roundToInt() + if (progressInt > 0) { + if (progressInt <= maxLevel) { + cameraManager.sendLightLevel(progressInt) + updateLightLevelView(progressInt) + currentLevel = progressInt + } else { + cameraManager.sendLightLevel(maxLevel) + updateLightLevelView(maxLevel) + currentLevel = progressInt + } + } else if (progressInt == 0) { + cameraManager.setTorchMode(cameraId, false) + updateLightLevelView(0) + currentLevel = 0 + } + } + } + } + updateLightLevelView(0) + } else { + switchToSimpleMode() + } + } + + override fun onPostCreate(savedInstanceState: Bundle?) { + super.onPostCreate(savedInstanceState) + if (!doesDeviceHaveFlash()) return + binding.apply { + sosButton.setOnClickListener { + sosButton.disable() + sosActivated = true + cameraManager.setTorchMode(cameraId, false) + seekBar.setProgress(0) + updateLightLevelView(0, " (SOS)") + maxButton.hide() + halfButton.hide() + minButton.hide() + seekBar.disable() + handleSosCall() + } + maxButton.setOnClickListener { + if (isDimAllowed()) { + updateLightLevelView(maxLevel) + cameraManager.sendLightLevel(maxLevel) + currentLevel = maxLevel + seekBar.setProgress(maxLevel) + } else { + cameraManager.setTorchMode(cameraId, true) + } + } + halfButton.setOnClickListener { + updateLightLevelView(maxLevel / 2) + cameraManager.sendLightLevel(maxLevel / 2) + currentLevel = maxLevel / 2 + seekBar.setProgress(maxLevel / 2) + } + minButton.setOnClickListener { + updateLightLevelView(1) + cameraManager.sendLightLevel(1) + currentLevel = 1 + seekBar.setProgress(1) + } + offButton.setOnClickListener { + val dimAllowed = isDimAllowed() + if (sosActivated) { + sosHandler.removeCallbacksAndMessages(null) + sosActivated = false + binding.apply { + maxButton.show() + sosButton.enable() + if (dimAllowed) { + halfButton.show() + minButton.show() + seekBar.enable() + } + } + } + if (dimAllowed) { + updateLightLevelView(0) + currentLevel = 0 + seekBar.setProgress(0) + } + cameraManager.setTorchMode(cameraId, false) + } + } + } + + @SuppressLint("SetTextI18n") + private fun switchToSimpleMode() { + binding.apply { + buttonContainer.setPadding(0, 24, 64, 24) + maxButton.text = "On" + halfButton.hide() + minButton.hide() + seekBar.hide() + levelIndicatorDesc.makeInvisible() + levelIndicator.makeInvisible() + errorView.text = "This evice only supports 1 light level.\nDim feature deactivated." + errorView.show() + quickActionsView.hide() + } + } + + @SuppressLint("SetTextI18n") + private fun updateLightLevelView(level: Int, note: String = "") { + binding.levelIndicator.text = "$level / $maxLevel$note" + } + + private fun CameraManager.sendLightLevel(level: Int) { + if (currentLevel != level) { + turnOnTorchWithStrengthLevel(cameraId, level) + } + } + + private fun isDimAllowed() = binding.maxButton.text == "Maximum" + + private fun handleSosCall() { + if (!sosActivated) return + val t = 250L + val runnableOn = Runnable { + cameraManager.setTorchMode(cameraId, true) + updateLightLevelView(maxLevel, " (SOS)") + binding.seekBar.setProgress(maxLevel) + } + val runnableOff = Runnable { + cameraManager.setTorchMode(cameraId, false) + updateLightLevelView(0, " (SOS)") + binding.seekBar.setProgress(0) + } + val runnableFinishRound = Runnable { + handleSosCall() + } + + handleSosS(runnableOn, runnableOff, t, 4 * t) + handleSosO(runnableOn, runnableOff, t, 12 * t) + handleSosS(runnableOn, runnableOff, t, 26 * t) + finishSosRound(runnableFinishRound, 34 * t) + } + + private fun handleSosS(on: Runnable, off: Runnable, t: Long, offset: Long) { + sosHandler.postDelayed(on, 3 * t + offset) + sosHandler.postDelayed(off, 4 * t + offset) + sosHandler.postDelayed(on, 5 * t + offset) + sosHandler.postDelayed(off, 6 * t + offset) + sosHandler.postDelayed(on, 7 * t + offset) + sosHandler.postDelayed(off, 8 * t + offset) + } + + private fun handleSosO(on: Runnable, off: Runnable, t: Long, offset: Long) { + sosHandler.postDelayed(on, 3 * t + offset) + sosHandler.postDelayed(off, 6 * t + offset) + sosHandler.postDelayed(on, 7 * t + offset) + sosHandler.postDelayed(off, 10 * t + offset) + sosHandler.postDelayed(on, 11 * t + offset) + sosHandler.postDelayed(off, 14 * t + offset) + } + + private fun finishSosRound(r: Runnable, offset: Long) { + sosHandler.postDelayed(r, offset) + } + + private fun doesDeviceHaveFlash(): Boolean { + return packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) + } + + + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu, menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.icon_credits_action -> { + MaterialAlertDialogBuilder(this) + .setTitle("Icon Credits") + .setMessage("Flashlight icon created by Freepik - Flaticon\n\n" + + "Knob icon created by Debi Alpa Nugraha - Flaticon") + .setPositiveButton("Open Flaticon") { _, _ -> + openURL("https://flaticon.com") + } + .show() + return true + } + R.id.github_action -> { + openURL("https://github.com/cyb3rko/flashdim") + return true + } + } + return super.onOptionsItemSelected(item) + } + + private fun View.disable() { + this.isEnabled = false + } + + private fun View.enable() { + this.isEnabled = true + } + + private fun View.hide() { + this.visibility = View.GONE + } + + private fun View.makeInvisible() { + this.visibility = View.INVISIBLE + } + + private fun View.show() { + this.visibility = View.VISIBLE + } + + private fun openURL(url: String) { + try { + val intent = Intent( + Intent.ACTION_VIEW, + Uri.parse(url) + ) + startActivity(intent) + } catch (e: Exception) { + e.printStackTrace() + val clip = ClipData.newPlainText("Flaticon", url) + (getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager) + .setPrimaryClip(clip) + Toast.makeText( + this, + "Opening URL failed, copied URL instead", + Toast.LENGTH_SHORT + ).show() + } + } +} diff --git a/app/src/main/java/com/cyb3rko/flashdim/seekbar/LightLevelSeekBar.kt b/app/src/main/java/com/cyb3rko/flashdim/seekbar/LightLevelSeekBar.kt new file mode 100644 index 0000000..c7f46a7 --- /dev/null +++ b/app/src/main/java/com/cyb3rko/flashdim/seekbar/LightLevelSeekBar.kt @@ -0,0 +1,150 @@ +package com.cyb3rko.flashdim.seekbar + +import android.content.Context +import android.graphics.* +import android.util.AttributeSet +import android.util.TypedValue +import android.view.MotionEvent +import android.view.View +import com.cyb3rko.flashdim.R +import kotlin.math.roundToInt + +open class LightLevelSeekBar @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : View(context, attrs, defStyleAttr) { + + private var mCanvasWidth = 0 + private var mCanvasHeight = 0 + private val mWavePaint = Paint(Paint.ANTI_ALIAS_FLAG) + private val mWaveRect = RectF() + private lateinit var progressBitmap: Bitmap + + var onProgressChanged: SeekBarChangeListener? = null + + var maxProgress: Float = 1F + set(value) { + field = value + progress = value + invalidate() + } + + private var progress: Float = 0F + set(value) { + field = value + invalidate() + } + + private var levelBackgroundColor: Int = Color.LTGRAY + + private var levelProgressColor: Int = Color.WHITE + + private var levelGap: Float = calculateDp(2) + + private var levelCornerRadius: Float = calculateDp(4) + + init { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.LightLevelSeekBar) + levelBackgroundColor = typedArray.getColor( + R.styleable.LightLevelSeekBar_level_background_color, levelBackgroundColor + ) + levelCornerRadius = typedArray.getDimension( + R.styleable.LightLevelSeekBar_level_corner_radius, levelCornerRadius + ) + levelGap = typedArray.getDimension(R.styleable.LightLevelSeekBar_level_gap, levelGap) + levelProgressColor = typedArray.getColor( + R.styleable.LightLevelSeekBar_level_progress_color, levelProgressColor + ) + typedArray.recycle() + } + + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(w, h, oldw, oldh) + mCanvasWidth = w + mCanvasHeight = h + progressBitmap = + Bitmap.createBitmap(getAvailableWidth(), getAvailableHeight(), Bitmap.Config.ARGB_8888) + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.clipRect( + paddingLeft, + paddingTop, + mCanvasWidth - paddingRight, + mCanvasHeight - paddingBottom + ) + val availableWidth = getAvailableWidth() + val availableHeight = getAvailableHeight() + val totalWaveHeight = availableHeight / maxProgress + val waveHeight = totalWaveHeight - levelGap + + var previousWaveBottom = paddingTop.toFloat() + + val progressYPosition: Float = availableHeight * progress / maxProgress + + for (i in 0 until maxProgress.roundToInt()) { + mWaveRect.set( + paddingLeft.toFloat(), + previousWaveBottom, + availableWidth.toFloat() + paddingRight.toFloat(), + previousWaveBottom + waveHeight + ) + if (mWaveRect.centerY() <= progressYPosition) { + mWavePaint.color = levelBackgroundColor + } else { + mWavePaint.color = levelProgressColor + } + canvas.drawRoundRect(mWaveRect, levelCornerRadius, levelCornerRadius, mWavePaint) + previousWaveBottom = mWaveRect.bottom + levelGap + } + } + + private fun updateProgress(event: MotionEvent) { + progress = getRawProgress(event) + onProgressChanged?.onProgressChanged(maxProgress - progress) + } + + private fun getRawProgress(event: MotionEvent) = maxProgress * event.y / getAvailableHeight() + + internal fun setProgress(progress: Int) { + this.progress = maxProgress - progress + } + + private fun getAvailableWidth(): Int { + var width = mCanvasWidth - paddingLeft - paddingRight + if (width <= 0) width = 1 + return width + } + + private fun getAvailableHeight(): Int { + var height = mCanvasHeight - paddingTop - paddingBottom + if (height <= 0) height = 1 + return height + } + + override fun onTouchEvent(event: MotionEvent?): Boolean { + if (!isEnabled) + return false + + event?.let { + updateProgress(it) + performClick() + } + return true + } + + override fun performClick(): Boolean { + super.performClick() + return true + } + + private fun calculateDp(dp: Int): Float { + return TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + dp.toFloat(), + resources.displayMetrics + ) + } +} diff --git a/app/src/main/java/com/cyb3rko/flashdim/seekbar/SeekBarChangeListener.kt b/app/src/main/java/com/cyb3rko/flashdim/seekbar/SeekBarChangeListener.kt new file mode 100644 index 0000000..b72f8c2 --- /dev/null +++ b/app/src/main/java/com/cyb3rko/flashdim/seekbar/SeekBarChangeListener.kt @@ -0,0 +1,5 @@ +package com.cyb3rko.flashdim.seekbar + +interface SeekBarChangeListener { + fun onProgressChanged(progress: Float) +} diff --git a/app/src/main/res/drawable/ic_github.xml b/app/src/main/res/drawable/ic_github.xml new file mode 100644 index 0000000..74eb8dd --- /dev/null +++ b/app/src/main/res/drawable/ic_github.xml @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file 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..51b6eab --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml new file mode 100644 index 0000000..0bfb637 --- /dev/null +++ b/app/src/main/res/menu/menu.xml @@ -0,0 +1,20 @@ + + + + + + + + \ 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..036d09b --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ 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..036d09b --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..caf4673f98b8774685a5594260f3e614a36366b6 GIT binary patch literal 1437 zcmV;O1!DS%P)5Q}9i@`;3*~1@gM)#e89zJ5fU$71StMTZOUg$II2j*_ zJ~lL~MKbQ6e-XXIXD0(=`kTCoV^vPVB!>1qc@sza4LCYHrXPsjc+3_V&+>J|)R{BE zWBQf6jnWny-i%GJjhH&K8y+4WP*PF?Gcz*~9UU#ZZU=ZwT|^(N)dC^y#MGJH@b&eD z?d@%NeSL+ToE+J8JHTW5oxH_svGEEW#MGH8xVgE3ySuwdnV+8@?C$O|fpT+mWp$+Y zs{oJbJy9UgZ^YD@V!XV(puWByIy*ZdGBVOo{waYxJv|{WFAw_r`yoC)Ugl2$Jf=U0 zNCJh1hQjgjF%tswO?Y@XE5|Ojxw*;8v$L~V8Rn&ef&#d>xPX_J7bq$!lKE4Bm;zz< zs;;hvySqCkMo&+Vp&VOEdwV+s2M4pV#Kc56J3C|dZEbC-oxH^q2*H+7TU!ec4-e4Y z-7UM$NlHqB^Ye2ij>_E&5mz7tTTDbm1o-&)$gXj8Ivs?Cg+X9opzN9oh%Jx+Xabo* zEP-$y6Bif960cH1LPBKzZ9pu6aBhRcJ0@MFOixdtUalIrG?BiCm53#ffQTg!4)dj@rO?#Wq?oj{G?{-J z5KACjHlRQ_0!j0UH5?oqu;qu;zYT~b5E2j&0E>%@vY;*H@$nJz^YfY5Qr|WpoaHa46P7APw#%iNJ$udlPNH#j)RPB?CFZ(Ua)oDbn4 z;@;jKbaiz>TU#3p4Gpmw_tMf5^!4>Iaa>lQ+1Xhb9UX>fs;Z!@ ztcrDh%eB{$OtSiFEc@&o}QRMn1ANx=2%ObpPz@;)>gyeqRNOb5FRz- zJ~bw1o{;(Z{J_8fEG#UroP_yET3-dk7l@ByIAZno_8NxutE(&4s`#4CWpfZ02wM+! zBWy{yPQzDRduj6^qlqH^jf>LL(^I&=zc-X?0vQSMDKvr1pb2CKO&~L90+~S*$P6wi zP;zpz;rT;zG&eWP>Z^d*0^y@~I60JxA?4`k2oe$!Wc5`*Y=IDb5UQo6g`Iavg+W$U zR@l}oo`gv2s(|HR9=7y?B_MZw9*iA)>>f7~LyUqw_A$S%Lt zFb0pKCnqOm;#^-}Lwb6;?0yyDF})`W1hRVzLh!*%+?(dP2)8+ki;KbA+go<8im1|p znuw`0yMYNCAM`9NEM%jW9e&*-g~x=Az-EE+h^aGYg2(hD(Z}jZtS}wLo$?iBiM%;< zCNQQI$~QzGE5>Yj%o8lmW`1 zgMptJKl_J&V|hpPvH1`MhRyDCN(d#2@+~FS!NC|XmSBo6v7u}Imtg|KrilNkAjrYN r7%&#AlCq_SYC8j(X{MQG4q^WQQe>7h+3pI$00000NkvXXu0mjf96FSj literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..b264293186973fe8cfeba569002f5f15e363c30e GIT binary patch literal 1430 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..5cbb73e8417d5d2b769d326753acff4a6bb97734 GIT binary patch literal 961 zcmV;y13vtTP)U}6Tlo?^{tA+XU%1!01vNn#R2Ab%*jZ)-a<%iN(e_hWT>E@(q{E zsi2K3_(d5ooK7>hc)f;7A z+y_ROCV6k1`4(-B+eQs6eJAm%^0-3&v?0FN2ml>QZ)xk4b1h_1+!oqE6Mw{7!{@FX z?8}9{QywUv;y{7IaTjcM7!+j_$2OGMu z;h?Y_jKVsLQCMd&3hOLJVV%V&tg{$}brz$r&SK4ryWi^PxGl7SrLP0DVnN&%+Q8C1 zW98pJ91j0C%U6F$3^mf^&$jf-q{DGRnI5-+Hd6^>m0O{l=zLrc8QIWR<;zaTb&!z? z`71UQbjNj&kqY@GHWVz0>mVZ)GF7=2TPmC~&J0H%l`_rJhv}z9QIC}E#y!jc00000 j00000000000JOtr(LGy2+r;s*00000NkvXXu0mjfMkvk| literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..8821f7ad18f46718d1546d20a2a51e6642cf5ce8 GIT binary patch literal 1848 zcmV-82gmq{P)h%Vn32LCQX{=Lj1Qx{|ASR#EDLYkcP?umM|hCVq}rDBe?i ztN2;*yW&s9unVs79qyqG+Cs;aISB+qFM=n!QSqZDTaf*o9$3qjzbGiOd z(NED1{im1;2-=#uumzhkComchZGM;&^Hs$!6zLew{Nw)hK4C5@D&pnKmvc@|j&(1F zE^MO@ksw7Ou9ybu6#r7BbGh~+RTK z#flYt{``5at*vze@e81^u#gWNIKYPv9pc>FT+4<}KW!A53xR_$C(k!z8}$VN3=IwO zy?gg~_3G750Gl^&=Dxl@E-Nc@f@*JX=ZT34K7RZ-=jG*DHVn-EzN3gwfhM-p_)o|- z7MBehHt?-mw|MK;t4Z zeaXnkaGZ6NdH($Q*7tERC-&>4CFVL|=Dn0kb5cDj#D`xg;-l}1EyMExX$3^@ zTWw5`BBiCJPN@t-O-&8Yn>Ww0=YuSexc-Q=Sg9ltJw}lgHg264mMvSx7cXAqfq{Y0 z96NT*vKIsK<+>uDv_y@9M6{7~!@zmJcI{f8nwmGaCg4Yr&Q+ zTlm3)2bQCLpoEr}ms@rMAifPK3doQm#UGwVp}^DJvu6)?bacc8wSWEk^|7|pi4fm# z#x5a4$`pUQHf&xxat^e&;R3=;-K7tC09~M)3q`nLY~0Jowmc zlvEm-0mLH70KDlV{!WV=5S}M}Y(v99M@o}f3_yHAsV^Zd*1;YTWh*`--8l3p%u)cR zA77C6(K^&aBqIEp@*8P|P;+6H0uUei6wi^Cn6DWT85Xs-6qBSC1E*4DWo5zuLM~*| zH+*@Uv~MwAY>6OtrJDyw)ahmz@a+61p1y?QY~pOQL_q=gytu!NEaiTa905JbKXaJ_Oi)mvmp~Gj!U- z5=(@6)!1PDMvmhJ@If_!k%SN@s|s(@g459yKPsIezO1@ zumzje{$@4>oneBZW4yD6BPEI|#mkB}6mPoV8sFg_+Mq3T1u m|B&Z`YkA7j20Am&^Zxm@yFIn_j_>OlcRf0VqP>vJc3Bq@*OiXU`r!JUlE}zI?f3pBSOFfmS8# z?bCvBhrYY}o_$~j96fq8V8GU`TOIqvh~N_N6SHu4Oa_b%?--DupU?O1-OCp&SinnwkP4zIgG1&zLbIustUyhaWq3j2}FBkY{FQ27WIuFXufyJ%QtpMqy#0BYl_f zjsc*gq=Yv%HcBD;`uh0XxpN)+n9QF)pZE9o%VTgX(lGaN5pNj)ii?Y76|!N&20n4( zM8|d$+@MufR`L@kPVl0lBFA=@@ty&31{n}z$bc9_2E>^7HemYn>3qwUEqwd-?XIwK z<3_g|=J+)rFE5Wje*8Gle|H1i72msekLTv*I`X$f{2G9(-xSOZ1_uY-ECpo1Xh2?O z{+1vEMgtiT1~MRgM9ly+!e`H(jS9%i%-<66Yk)@}17b{k8!&6uEPmt04Of{xd$uEA zi^R797+AS^^QNQGw8i!7*Fy$xTp+#;0A*!mAtPG0=<4bU8BueI_%|RWC50b4bjTrK zq+lYK&*yXGXPNjn0HB(vudjEAI9~4Dxg$r)%zRwH8wP+mbLNE1Y#1-7dP+-69qGG- zcMJfF7A@jcRaFszG|Y5e#9Ic$A!I;|@ty%|*RJIq9UWul*|TSIZm5}_%XrTK3{jd5 z>uA8_tcr>XM|v)k7zPXs4DkE+@AJ!-FY_x`uJA{X9?6j|GQb6b4S>jaoUn4`O8NVd zBS+*cY0QpZy?V8L)}xIe11zBpz*T?d%o!>6!-o&$-<_SEa?&ou#*G_hJ)Ay$T5cl) zETIiRRf8$&xUp(zXpqxPunluYF&!OM5*lAL+Sr#2umnWLKUzRo)b(|Bb$r>fWxTew zR$l3^U%%$(&YhDF@g6*QAdOhDVugI5M+R5`2Hd@SSI&5b*eC@k0lHmiYir|+7cb_= zk00l|ckkwJ-n@||0!EPm7Jva4E?kgfxlf-yl~s-w|K-b(dOo*r-{#HD&3x0QO#uTSHmV~1_quiKGK1W4wL}=Ck^&RRYV3@z`PN=bmIGTCGyuY)O~7O3UAuNkaOJ}o^oqy;%a{fLR59)C?Xouna5HA^Lk3tPoB^YO46piQMj0G})46qCt5Mu){)QB4|Q{eZ3S#|T~&2yyZGTt))Z%YY&?lW5O zaBj+!DUS49#(M@}w)Ek{hh>#wiu^9{M0E4!&GOA!W_m8;Jp%w<%zEI!0r~vL6x*bw zr9}?hPna;lkxmrwrU3x&d_zev1vkNfRO_IZqn1lu4VTPWp1%u4}qfBrKC}kE6z+wbglpr{hn1QPtFK)$4 zH}LMCtgNh9_I!fT+H?wvnFRy%`|q(RO#@Sj(-J1{Mr(t`j&hg<0}xoG>{G!XOeIc> z_=G2T5ua+NGz(tfZQOxGuprG3f`6FG02yKFCKNeBX`#h$VX6WCM3BlX1lB=;0Vq-x zOl4rYPbgXizcHm141ji40;|G(E|}`~`^&`VpMqwlmhp)Xt*l-BI?y9Z z7i2NDu2{aHfT=EOA_EPe1vG&+&?utC+x{=$DjMaF1et;_1=&owo`~Swp#ijjCeX(E zl^-tj0%fS@kZB?V4WLC-gr}gOprD|jpzucg2luf<%tpS$4*&oF07*qoM6N<$f~*aa AS^xk5 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..72711a694b2e326c257650b1548fa2ff2a4414a0 GIT binary patch literal 2005 zcma)+dsGs57RU84grlXIwdkbg^cdZI5v*fsN}8|6@==MlDwv9v2%3n`0Y4M%;wPh}(JB5Yd%!3y+&`J=0gnUDA5 zpYnWuv;8Y{|K)E^+Pf4RTte8}J#HkLZo9D8dnk-?uQjj|dDcgD!wxWhaWOmr$lX)r z?}x6q+R5AatWk4%U?X`;i$eo>JiKD{=hsFsytUYJg-oTwV3I|?zBc{;wE$+O0ciTz z3zwh);whTRL4(sbcE)v<&#eC9_++=Im-3Z>{%OeFnc>IXky1L8r+#@-0_?ThzWKA6 z;U>+uK+41zvY{@=U;HgW;Qtn~!vQ>JA;QDEf+=C+-oy-XHJ|*q55pWZVffGA&)7vy zZd7wLcl^H8<%G~c{`R0x0~@a{X{^Vh!z7(=w;EO7L7Iy2j>&%To0CS@uToaapraD& z$!MemwY?~m(I8)zHpY7*AMmZyA>^(y1+Y_ZKnBITVIw+-z+?o8+c2H==;3_w%dndK zuqW*GZVp^#fO>i{?Mw{L=_ZlxbeT?9PR#eXK3GWC{D6;(G1f5vspP8s;Wn$4NVPQ1 zi{v9Vqk@u@F*|my^Idnr9eLyj^%!9qN$c!v9Ni6DfJQNsrW#?gpTIqm;btd*(BJrj z5zM42AD)#AJNBq=bSNB4;%P-faLv$AUKe9e)t#(W(Gz5g^{C=fg6{Q5Nw|x7GlZ zO3J4OKG{)xV6MKuRbjF@*mx#NCbi0sl95Jj=3_nG5GYW}S;drPlp3(f9<*4+9g=^? z>Mc#}5SmbG0BX8>9Z0HTi6Dk<*-cjWN$q^P`sZj7&b-uebcudF_i*NO`33G+{`!P_ zH|TW`!Q;%;bV!r+{oMAIBF>oh+LL~Gq_1o_VC+6sxu9aV%{P1PS9U`AyS8M_U@6$| zLFzxCk|d{F4Pku?94yee(m1k3GgDE zt2w9CP+gNI>*k463{*WScH0V!cYiwy6kh4~Qg(1AIYF=*w3k=VfXEs%EjZLvI_q~5 za$^qyyqHA=CuX9(YF9PO@AknbqG@jKEVQ6o7N(Vdbc)RL$W9Tz)niZY z5Q}+4U9t}oU=zYwkIzKuaGdz^F4e3IKm|WoII`4PcryV>%kj$?=P(J(zRM_@C_?+H zY9rOJ(&6WI7+V0gNVJ5^?x?Ggg;R^5sHujn4`HRdl>26}i_0gHF5+lOQ#gC`X;X}m>dJ++CC*^xn~fHfUj*GKj@&O6K(TZE zQ@(u)|9@9XRh^0pXVb@{w_(O-X9}3l_M1d7qWO&9kJ zQ3p+6*Qv%!dC5>BXb<<;{%V7_d=1)p zLe~co3`Dbv#-HR|xxV&n#r{r@P+l1*mxQ`biBW#qcz!fnEXdh%dtwlZf94=p*}}+C zwW&LFIWa&F%k7um8vrRAg$3SZA9geRTI|!NP>3|-KiXJ3g#Vjdya&bDHH-ZP>j)wa zJicF%euPNk^IANn9#$-~KCd%6{jyq~W>#{CHHYxWw2~_Q^~g}~8wdtS!V!_Rg;J-) zm-ML@MF@J341cfHH%s+WbUxc8w+G`oGUx?9hRAq+3MZk$Psv}8(OIP0!N}pOi|kxt zj5Fg1yE#G!eDDx(;4U4^@46jZ^Ssxx@XA7NzSWwcYLLGIWz=(>2=5|xGAbM%%b6}w zY3P_;44a_zL~*{L;rI$JF)3zOXhIm$vVJ5NjZa-!1lHGFaPv^gPP8VcipQ@-GYDKw v@W+cBNlo&Ok7~}JRJ;uOb&CEkGpesKxdWT?JfD%o*7+Xw3-+b^#1{M$Sx(uR literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..21b6dfd0595e7c06ae7b0335842b61222339c6b3 GIT binary patch literal 4089 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≈<-#3_ULM50k?T+BM_TnH?g|6xSiw@N5zfOQS~ zS;d`U!L2jTT176j|9&G;C6^1NO&-sZr^T7J48t>)hBEoqhB8xj>OftnQ)+Q4C_a&h z2Nu$V}iq|G|;OkM$DJWHdbp^TK3GE;VfW9mYkQsPuWlt=`W^hney zp$H{Y4{@{p3`{b9qQ819RG3r%3o#hwv;5X#e@liD79%ql!DpH8AjlAlLEig5S+aR$ z^449Tl*uQJx+&^FT~gvyS!nFARr1NiNG;u8=8E{mqePZ?(!)_w;ZoE>sKxRvmyhgs z{yUj8lq|Y{oxI4CyeR`^@ktZ5HYssxEXBx#Yhd7wkz0aO*2)m5vbhe6&>&9P#3HyB zl#j)L2mqG@^#6RvGd#;Xyh|FSMVh2d9^^%y92ikQQl@HhGX2d6Kv9o>I~zP<%r9q*7vG8BjP@ z0_6j&Mj`0;Jj*-0t3>h1k`kuQMU@*Smk-F`BmBKjl696W{}0X!?wonfet-Y~002ov JPDHLkV1mH4yKMjf literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..429a05166b02f1abc8a2ef264ace0be96f24ca25 GIT binary patch literal 4390 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..e59a32bc399631ded8a03cc8cc2fc74879cffb34 GIT binary patch literal 4389 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 0000000..ede77b9 --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file 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..beab31f --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #000000 + \ 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..bfe4d80 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + FlashDim + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cf73f75 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..28861b5 --- /dev/null +++ b/build.gradle @@ -0,0 +1,8 @@ +plugins { + id 'com.android.application' version '7.3.1' apply false + id 'org.jetbrains.kotlin.android' version '1.7.10' apply false +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..3c7a8bd --- /dev/null +++ b/gradle.properties @@ -0,0 +1,23 @@ +# 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 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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

<5G2M1WZP5 zzqSuO91lJod(SBDDw<*sX(+F6Uq~YAeYV#2A;XQu_p=N5X+#cmu19Qk>QAnV=k!?wbk5I;tDWgFc}0NkvC*G=V+Yh1cyeJVq~9czZiDXe+S=VfL2g`LWo8om z$Y~FQc6MFjV-t1Y`^D9XMwY*U_re2R?&(O~68T&D4S{X`6JYU-pz=}ew-)V0AOUT1 zVOkHAB-8uBcRjLvz<9HS#a@X*Kc@|W)nyiSgi|u5$Md|P()%2(?olGg@ypoJwp6>m z*dnfjjWC>?_1p;%1brqZyDRR;8EntVA92EJ3ByOxj6a+bhPl z;a?m4rQAV1@QU^#M1HX)0+}A<7TCO`ZR_RzF}X9-M>cRLyN4C+lCk2)kT^3gN^`IT zNP~fAm(wyIoR+l^lQDA(e1Yv}&$I!n?&*p6?lZcQ+vGLLd~fM)qt}wsbf3r=tmVYe zl)ntf#E!P7wlakP9MXS7m0nsAmqxZ*)#j;M&0De`oNmFgi$ov#!`6^4)iQyxg5Iuj zjLAhzQ)r`^hf7`*1`Rh`X;LVBtDSz@0T?kkT1o!ijeyTGt5vc^Cd*tmNgiNo^EaWvaC8$e+nb_{W01j3%=1Y&92YacjCi>eNbwk%-gPQ@H-+4xskQ}f_c=jg^S-# zYFBDf)2?@5cy@^@FHK5$YdAK9cI;!?Jgd}25lOW%xbCJ>By3=HiK@1EM+I46A)Lsd zeT|ZH;KlCml=@;5+hfYf>QNOr^XNH%J-lvev)$Omy8MZ`!{`j>(J5cG&ZXXgv)TaF zg;cz99i$4CX_@3MIb?GL0s*8J=3`#P(jXF(_(6DXZjc@(@h&=M&JG)9&Te1?(^XMW zjjC_70|b=9hB6pKQi`S^Ls7JyJw^@P>Ko^&q8F&?>6i;#CbxUiLz1ZH4lNyd@QACd zu>{!sqjB!2Dg}pbAXD>d!3jW}=5aN0b;rw*W>*PAxm7D)aw(c*RX2@bTGEI|RRp}vw7;NR2wa;rXN{L{Q#=Fa z$x@ms6pqb>!8AuV(prv>|aU8oWV={C&$c zMa=p=CDNOC2tISZcd8~18GN5oTbKY+Vrq;3_obJlfSKRMk;Hdp1`y`&LNSOqeauR_ z^j*Ojl3Ohzb5-a49A8s|UnM*NM8tg}BJXdci5%h&;$afbmRpN0&~9rCnBA`#lG!p zc{(9Y?A0Y9yo?wSYn>iigf~KP$0*@bGZ>*YM4&D;@{<%Gg5^uUJGRrV4 z(aZOGB&{_0f*O=Oi0k{@8vN^BU>s3jJRS&CJOl3o|BE{FAA&a#2YYiX3pZz@|Go-F z|Fly;7eX2OTs>R}<`4RwpHFs9nwh)B28*o5qK1Ge=_^w0m`uJOv!=&!tzt#Save(C zgKU=Bsgql|`ui(e1KVxR`?>Dx>(rD1$iWp&m`v)3A!j5(6vBm*z|aKm*T*)mo(W;R zNGo2`KM!^SS7+*9YxTm6YMm_oSrLceqN*nDOAtagULuZl5Q<7mOnB@Hq&P|#9y{5B z!2x+2s<%Cv2Aa0+u{bjZXS);#IFPk(Ph-K7K?3i|4ro> zRbqJoiOEYo(Im^((r}U4b8nvo_>4<`)ut`24?ILnglT;Pd&U}$lV3U$F9#PD(O=yV zgNNA=GW|(E=&m_1;uaNmipQe?pon4{T=zK!N!2_CJL0E*R^XXIKf*wi!>@l}3_P9Z zF~JyMbW!+n-+>!u=A1ESxzkJy$DRuG+$oioG7(@Et|xVbJ#BCt;J43Nvj@MKvTxzy zMmjNuc#LXBxFAwIGZJk~^!q$*`FME}yKE8d1f5Mp}KHNq(@=Z8YxV}0@;YS~|SpGg$_jG7>_8WWYcVx#4SxpzlV9N4aO>K{c z$P?a_fyDzGX$Of3@ykvedGd<@-R;M^Shlj*SswJLD+j@hi_&_>6WZ}#AYLR0iWMK|A zH_NBeu(tMyG=6VO-=Pb>-Q#$F*or}KmEGg*-n?vWQREURdB#+6AvOj*I%!R-4E_2$ zU5n9m>RWs|Wr;h2DaO&mFBdDb-Z{APGQx$(L`if?C|njd*fC=rTS%{o69U|meRvu?N;Z|Y zbT|ojL>j;q*?xXmnHH#3R4O-59NV1j=uapkK7}6@Wo*^Nd#(;$iuGsb;H315xh3pl zHaJ>h-_$hdNl{+|Zb%DZH%ES;*P*v0#}g|vrKm9;j-9e1M4qX@zkl&5OiwnCz=tb6 zz<6HXD+rGIVpGtkb{Q^LIgExOm zz?I|oO9)!BOLW#krLmWvX5(k!h{i>ots*EhpvAE;06K|u_c~y{#b|UxQ*O@Ks=bca z^_F0a@61j3I(Ziv{xLb8AXQj3;R{f_l6a#H5ukg5rxwF9A$?Qp-Mo54`N-SKc}fWp z0T)-L@V$$&my;l#Ha{O@!fK4-FSA)L&3<${Hcwa7ue`=f&YsXY(NgeDU#sRlT3+9J z6;(^(sjSK@3?oMo$%L-nqy*E;3pb0nZLx6 z;h5)T$y8GXK1DS-F@bGun8|J(v-9o=42&nLJy#}M5D0T^5VWBNn$RpC zZzG6Bt66VY4_?W=PX$DMpKAI!d`INr) zkMB{XPQ<52rvWVQqgI0OL_NWxoe`xxw&X8yVftdODPj5|t}S6*VMqN$-h9)1MBe0N zYq?g0+e8fJCoAksr0af1)FYtz?Me!Cxn`gUx&|T;)695GG6HF7!Kg1zzRf_{VWv^bo81v4$?F6u2g|wxHc6eJQAg&V z#%0DnWm2Rmu71rPJ8#xFUNFC*V{+N_qqFH@gYRLZ6C?GAcVRi>^n3zQxORPG)$-B~ z%_oB?-%Zf7d*Fe;cf%tQwcGv2S?rD$Z&>QC2X^vwYjnr5pa5u#38cHCt4G3|efuci z@3z=#A13`+ztmp;%zjXwPY_aq-;isu*hecWWX_=Z8paSqq7;XYnUjK*T>c4~PR4W7 z#C*%_H&tfGx`Y$w7`dXvVhmovDnT>btmy~SLf>>~84jkoQ%cv=MMb+a{JV&t0+1`I z32g_Y@yDhKe|K^PevP~MiiVl{Ou7^Mt9{lOnXEQ`xY^6L8D$705GON{!1?1&YJEl#fTf5Z)da=yiEQ zGgtC-soFGOEBEB~ZF_{7b(76En>d}mI~XIwNw{e>=Fv)sgcw@qOsykWr?+qAOZSVrQfg}TNI ztKNG)1SRrAt6#Q?(me%)>&A_^DM`pL>J{2xu>xa$3d@90xR61TQDl@fu%_85DuUUA za9tn64?At;{`BAW6oykwntxHeDpXsV#{tmt5RqdN7LtcF4vR~_kZNT|wqyR#z^Xcd zFdymVRZvyLfTpBT>w9<)Ozv@;Yk@dOSVWbbtm^y@@C>?flP^EgQPAwsy75bveo=}T zFxl(f)s)j(0#N_>Or(xEuV(n$M+`#;Pc$1@OjXEJZumkaekVqgP_i}p`oTx;terTx zZpT+0dpUya2hqlf`SpXN{}>PfhajNk_J0`H|2<5E;U5Vh4F8er z;RxLSFgpGhkU>W?IwdW~NZTyOBrQ84H7_?gviIf71l`EETodG9a1!8e{jW?DpwjL? zGEM&eCzwoZt^P*8KHZ$B<%{I}>46IT%jJ3AnnB5P%D2E2Z_ z1M!vr#8r}1|KTqWA4%67ZdbMW2YJ81b(KF&SQ2L1Qn(y-=J${p?xLMx3W7*MK;LFQ z6Z`aU;;mTL4XrrE;HY*Rkh6N%?qviUGNAKiCB~!P}Z->IpO6E(gGd7I#eDuT7j|?nZ zK}I(EJ>$Kb&@338M~O+em9(L!+=0zBR;JAQesx|3?Ok90)D1aS9P?yTh6Poh8Cr4X zk3zc=f2rE7jj+aP7nUsr@~?^EGP>Q>h#NHS?F{Cn`g-gD<8F&dqOh-0sa%pfL`b+1 zUsF*4a~)KGb4te&K0}bE>z3yb8% zibb5Q%Sfiv7feb1r0tfmiMv z@^4XYwg@KZI=;`wC)`1jUA9Kv{HKe2t$WmRcR4y8)VAFjRi zaz&O7Y2tDmc5+SX(bj6yGHYk$dBkWc96u3u&F)2yEE~*i0F%t9Kg^L6MJSb&?wrXi zGSc;_rln$!^ybwYBeacEFRsVGq-&4uC{F)*Y;<0y7~USXswMo>j4?~5%Zm!m@i@-> zXzi82sa-vpU{6MFRktJy+E0j#w`f`>Lbog{zP|9~hg(r{RCa!uGe>Yl536cn$;ouH za#@8XMvS-kddc1`!1LVq;h57~zV`7IYR}pp3u!JtE6Q67 zq3H9ZUcWPm2V4IukS}MCHSdF0qg2@~ufNx9+VMjQP&exiG_u9TZAeAEj*jw($G)zL zq9%#v{wVyOAC4A~AF=dPX|M}MZV)s(qI9@aIK?Pe+~ch|>QYb+78lDF*Nxz2-vpRbtQ*F4$0fDbvNM#CCatgQ@z1+EZWrt z2dZfywXkiW=no5jus-92>gXn5rFQ-COvKyegmL=4+NPzw6o@a?wGE-1Bt;pCHe;34K%Z z-FnOb%!nH;)gX+!a3nCk?5(f1HaWZBMmmC@lc({dUah+E;NOros{?ui1zPC-Q0);w zEbJmdE$oU$AVGQPdm{?xxI_0CKNG$LbY*i?YRQ$(&;NiA#h@DCxC(U@AJ$Yt}}^xt-EC_ z4!;QlLkjvSOhdx!bR~W|Ezmuf6A#@T`2tsjkr>TvW*lFCMY>Na_v8+{Y|=MCu1P8y z89vPiH5+CKcG-5lzk0oY>~aJC_0+4rS@c@ZVKLAp`G-sJB$$)^4*A!B zmcf}lIw|VxV9NSoJ8Ag3CwN&d7`|@>&B|l9G8tXT^BDHOUPrtC70NgwN4${$k~d_4 zJ@eo6%YQnOgq$th?0{h`KnqYa$Nz@vlHw<%!C5du6<*j1nwquk=uY}B8r7f|lY+v7 zm|JU$US08ugor8E$h3wH$c&i~;guC|3-tqJy#T;v(g( zBZtPMSyv%jzf->435yM(-UfyHq_D=6;ouL4!ZoD+xI5uCM5ay2m)RPmm$I}h>()hS zO!0gzMxc`BPkUZ)WXaXam%1;)gedA7SM8~8yIy@6TPg!hR0=T>4$Zxd)j&P-pXeSF z9W`lg6@~YDhd19B9ETv(%er^Xp8Yj@AuFVR_8t*KS;6VHkEDKI#!@l!l3v6`W1`1~ zP{C@keuV4Q`Rjc08lx?zmT$e$!3esc9&$XZf4nRL(Z*@keUbk!GZi(2Bmyq*saOD? z3Q$V<*P-X1p2}aQmuMw9nSMbOzuASsxten7DKd6A@ftZ=NhJ(0IM|Jr<91uAul4JR zADqY^AOVT3a(NIxg|U;fyc#ZnSzw2cr}#a5lZ38>nP{05D)7~ad7JPhw!LqOwATXtRhK!w0X4HgS1i<%AxbFmGJx9?sEURV+S{k~g zGYF$IWSlQonq6}e;B(X(sIH|;52+(LYW}v_gBcp|x%rEAVB`5LXg_d5{Q5tMDu0_2 z|LOm$@K2?lrLNF=mr%YP|U-t)~9bqd+wHb4KuPmNK<}PK6e@aosGZK57=Zt+kcszVOSbe;`E^dN! ze7`ha3WUUU7(nS0{?@!}{0+-VO4A{7+nL~UOPW9_P(6^GL0h${SLtqG!} zKl~Ng5#@Sy?65wk9z*3SA`Dpd4b4T^@C8Fhd8O)k_4%0RZL5?#b~jmgU+0|DB%0Z) zql-cPC>A9HPjdOTpPC` zQwvF}uB5kG$Xr4XnaH#ruSjM*xG?_hT7y3G+8Ox`flzU^QIgb_>2&-f+XB6MDr-na zSi#S+c!ToK84<&m6sCiGTd^8pNdXo+$3^l3FL_E`0 z>8it5YIDxtTp2Tm(?}FX^w{fbfgh7>^8mtvN>9fWgFN_*a1P`Gz*dyOZF{OV7BC#j zQV=FQM5m>47xXgapI$WbPM5V`V<7J9tD)oz@d~MDoM`R^Y6-Na(lO~uvZlpu?;zw6 zVO1faor3dg#JEb5Q*gz4<W8tgC3nE2BG2jeIQs1)<{In&7hJ39x=;ih;CJDy)>0S1at*7n?Wr0ahYCpFjZ|@u91Zl7( zv;CSBRC65-6f+*JPf4p1UZ)k=XivKTX6_bWT~7V#rq0Xjas6hMO!HJN8GdpBKg_$B zwDHJF6;z?h<;GXFZan8W{XFNPpOj!(&I1`&kWO86p?Xz`a$`7qV7Xqev|7nn_lQuX ziGpU1MMYt&5dE2A62iX3;*0WzNB9*nSTzI%62A+N?f?;S>N@8M=|ef3gtQTIA*=yq zQAAjOqa!CkHOQo4?TsqrrsJLclXcP?dlAVv?v`}YUjo1Htt;6djP@NPFH+&p1I+f_ z)Y279{7OWomY8baT(4TAOlz1OyD{4P?(DGv3XyJTA2IXe=kqD)^h(@*E3{I~w;ws8 z)ZWv7E)pbEM zd3MOXRH3mQhks9 zv6{s;k0y5vrcjXaVfw8^>YyPo=oIqd5IGI{)+TZq5Z5O&hXAw%ZlL}^6FugH;-%vP zAaKFtt3i^ag226=f0YjzdPn6|4(C2sC5wHFX{7QF!tG1E-JFA`>eZ`}$ymcRJK?0c zN363o{&ir)QySOFY0vcu6)kX#;l??|7o{HBDVJN+17rt|w3;(C_1b>d;g9Gp=8YVl zYTtA52@!7AUEkTm@P&h#eg+F*lR zQ7iotZTcMR1frJ0*V@Hw__~CL>_~2H2cCtuzYIUD24=Cv!1j6s{QS!v=PzwQ(a0HS zBKx04KA}-Ue+%9d`?PG*hIij@54RDSQpA7|>qYVIrK_G6%6;#ZkR}NjUgmGju)2F`>|WJoljo)DJgZr4eo1k1i1+o z1D{>^RlpIY8OUaOEf5EBu%a&~c5aWnqM zxBpJq98f=%M^{4mm~5`CWl%)nFR64U{(chmST&2jp+-r z3675V<;Qi-kJud%oWnCLdaU-)xTnMM%rx%Jw6v@=J|Ir=4n-1Z23r-EVf91CGMGNz zb~wyv4V{H-hkr3j3WbGnComiqmS0vn?n?5v2`Vi>{Ip3OZUEPN7N8XeUtF)Ry6>y> zvn0BTLCiqGroFu|m2zG-;Xb6;W`UyLw)@v}H&(M}XCEVXZQoWF=Ykr5lX3XWwyNyF z#jHv)A*L~2BZ4lX?AlN3X#axMwOC)PoVy^6lCGse9bkGjb=qz%kDa6}MOmSwK`cVO zt(e*MW-x}XtU?GY5}9{MKhRhYOlLhJE5=ca+-RmO04^ z66z{40J=s=ey9OCdc(RCzy zd7Zr1%!y3}MG(D=wM_ebhXnJ@MLi7cImDkhm0y{d-Vm81j`0mbi4lF=eirlr)oW~a zCd?26&j^m4AeXEsIUXiTal)+SPM4)HX%%YWF1?(FV47BaA`h9m67S9x>hWMVHx~Hg z1meUYoLL(p@b3?x|9DgWeI|AJ`Ia84*P{Mb%H$ZRROouR4wZhOPX15=KiBMHl!^JnCt$Az`KiH^_d>cev&f zaG2>cWf$=A@&GP~DubsgYb|L~o)cn5h%2`i^!2)bzOTw2UR!>q5^r&2Vy}JaWFUQE04v>2;Z@ZPwXr?y&G(B^@&y zsd6kC=hHdKV>!NDLIj+3rgZJ|dF`%N$DNd;B)9BbiT9Ju^Wt%%u}SvfM^=|q-nxDG zuWCQG9e#~Q5cyf8@y76#kkR^}{c<_KnZ0QsZcAT|YLRo~&tU|N@BjxOuy`#>`X~Q< z?R?-Gsk$$!oo(BveQLlUrcL#eirhgBLh`qHEMg`+sR1`A=1QX7)ZLMRT+GBy?&mM8 zQG^z-!Oa&J-k7I(3_2#Q6Bg=NX<|@X&+YMIOzfEO2$6Mnh}YV!m!e^__{W@-CTprr zbdh3f=BeCD$gHwCrmwgM3LAv3!Mh$wM)~KWzp^w)Cu6roO7uUG5z*}i0_0j47}pK; ztN530`ScGatLOL06~zO)Qmuv`h!gq5l#wx(EliKe&rz-5qH(hb1*fB#B+q`9=jLp@ zOa2)>JTl7ovxMbrif`Xe9;+fqB1K#l=Dv!iT;xF zdkCvS>C5q|O;}ns3AgoE({Ua-zNT-9_5|P0iANmC6O76Sq_(AN?UeEQJ>#b54fi3k zFmh+P%b1x3^)0M;QxXLP!BZ^h|AhOde*{9A=f3|Xq*JAs^Y{eViF|=EBfS6L%k4ip zk+7M$gEKI3?bQg?H3zaE@;cyv9kv;cqK$VxQbFEsy^iM{XXW0@2|DOu$!-k zSFl}Y=jt-VaT>Cx*KQnHTyXt}f9XswFB9ibYh+k2J!ofO+nD?1iw@mwtrqI4_i?nE zhLkPp41ED62me}J<`3RN80#vjW;wt`pP?%oQ!oqy7`miL>d-35a=qotK$p{IzeSk# ze_$CFYp_zIkrPFVaW^s#U4xT1lI^A0IBe~Y<4uS%zSV=wcuLr%gQT=&5$&K*bwqx| zWzCMiz>7t^Et@9CRUm9E+@hy~sBpm9fri$sE1zgLU((1?Yg{N1Sars=DiW&~Zw=3I zi7y)&oTC?UWD2w97xQ&5vx zRXEBGeJ(I?Y}eR0_O{$~)bMJRTsNUPIfR!xU9PE7A>AMNr_wbrFK>&vVw=Y;RH zO$mlpmMsQ}-FQ2cSj7s7GpC+~^Q~dC?y>M}%!-3kq(F3hGWo9B-Gn02AwUgJ>Z-pKOaj zysJBQx{1>Va=*e@sLb2z&RmQ7ira;aBijM-xQ&cpR>X3wP^foXM~u1>sv9xOjzZpX z0K;EGouSYD~oQ&lAafj3~EaXfFShC+>VsRlEMa9cg9i zFxhCKO}K0ax6g4@DEA?dg{mo>s+~RPI^ybb^u--^nTF>**0l5R9pocwB?_K)BG_)S zyLb&k%XZhBVr7U$wlhMqwL)_r&&n%*N$}~qijbkfM|dIWP{MyLx}X&}ES?}7i;9bW zmTVK@zR)7kE2+L42Q`n4m0VVg5l5(W`SC9HsfrLZ=v%lpef=Gj)W59VTLe+Z$8T8i z4V%5+T0t8LnM&H>Rsm5C%qpWBFqgTwL{=_4mE{S3EnBXknM&u8n}A^IIM4$s3m(Rd z>zq=CP-!9p9es2C*)_hoL@tDYABn+o#*l;6@7;knWIyDrt5EuakO99S$}n((Fj4y} zD!VvuRzghcE{!s;jC*<_H$y6!6QpePo2A3ZbX*ZzRnQq*b%KK^NF^z96CHaWmzU@f z#j;y?X=UP&+YS3kZx7;{ zDA{9(wfz7GF`1A6iB6fnXu0?&d|^p|6)%3$aG0Uor~8o? z*e}u#qz7Ri?8Uxp4m_u{a@%bztvz-BzewR6bh*1Xp+G=tQGpcy|4V_&*aOqu|32CM zz3r*E8o8SNea2hYJpLQ-_}R&M9^%@AMx&`1H8aDx4j%-gE+baf2+9zI*+Pmt+v{39 zDZ3Ix_vPYSc;Y;yn68kW4CG>PE5RoaV0n@#eVmk?p$u&Fy&KDTy!f^Hy6&^-H*)#u zdrSCTJPJw?(hLf56%2;_3n|ujUSJOU8VPOTlDULwt0jS@j^t1WS z!n7dZIoT+|O9hFUUMbID4Ec$!cc($DuQWkocVRcYSikFeM&RZ=?BW)mG4?fh#)KVG zcJ!<=-8{&MdE)+}?C8s{k@l49I|Zwswy^ZN3;E!FKyglY~Aq?4m74P-0)sMTGXqd5(S<-(DjjM z&7dL-Mr8jhUCAG$5^mI<|%`;JI5FVUnNj!VO2?Jiqa|c2;4^n!R z`5KK0hyB*F4w%cJ@Un6GC{mY&r%g`OX|1w2$B7wxu97%<@~9>NlXYd9RMF2UM>(z0 zouu4*+u+1*k;+nFPk%ly!nuMBgH4sL5Z`@Rok&?Ef=JrTmvBAS1h?C0)ty5+yEFRz zY$G=coQtNmT@1O5uk#_MQM1&bPPnspy5#>=_7%WcEL*n$;sSAZcXxMpcXxLe;_mLA z5F_paad+bGZV*oh@8h0(|D2P!q# zTHjmiphJ=AazSeKQPkGOR-D8``LjzToyx{lfK-1CDD6M7?pMZOdLKFtjZaZMPk4}k zW)97Fh(Z+_Fqv(Q_CMH-YYi?fR5fBnz7KOt0*t^cxmDoIokc=+`o# zrud|^h_?KW=Gv%byo~(Ln@({?3gnd?DUf-j2J}|$Mk>mOB+1{ZQ8HgY#SA8END(Zw z3T+W)a&;OO54~m}ffemh^oZ!Vv;!O&yhL0~hs(p^(Yv=(3c+PzPXlS5W79Er8B1o* z`c`NyS{Zj_mKChj+q=w)B}K za*zzPhs?c^`EQ;keH{-OXdXJet1EsQ)7;{3eF!-t^4_Srg4(Ot7M*E~91gwnfhqaM zNR7dFaWm7MlDYWS*m}CH${o?+YgHiPC|4?X?`vV+ws&Hf1ZO-w@OGG^o4|`b{bLZj z&9l=aA-Y(L11!EvRjc3Zpxk7lc@yH1e$a}8$_-r$)5++`_eUr1+dTb@ zU~2P1HM#W8qiNN3b*=f+FfG1!rFxnNlGx{15}BTIHgxO>Cq4 z;#9H9YjH%>Z2frJDJ8=xq>Z@H%GxXosS@Z>cY9ppF+)e~t_hWXYlrO6)0p7NBMa`+ z^L>-#GTh;k_XnE)Cgy|0Dw;(c0* zSzW14ZXozu)|I@5mRFF1eO%JM=f~R1dkNpZM+Jh(?&Zje3NgM{2ezg1N`AQg5%+3Y z64PZ0rPq6;_)Pj-hyIOgH_Gh`1$j1!jhml7ksHA1`CH3FDKiHLz+~=^u@kUM{ilI5 z^FPiJ7mSrzBs9{HXi2{sFhl5AyqwUnU{sPcUD{3+l-ZHAQ)C;c$=g1bdoxeG(5N01 zZy=t8i{*w9m?Y>V;uE&Uy~iY{pY4AV3_N;RL_jT_QtLFx^KjcUy~q9KcLE3$QJ{!)@$@En{UGG7&}lc*5Kuc^780;7Bj;)X?1CSy*^^ zPP^M)Pr5R>mvp3_hmCtS?5;W^e@5BjE>Cs<`lHDxj<|gtOK4De?Sf0YuK5GX9G93i zMYB{8X|hw|T6HqCf7Cv&r8A$S@AcgG1cF&iJ5=%+x;3yB`!lQ}2Hr(DE8=LuNb~Vs z=FO&2pdc16nD$1QL7j+!U^XWTI?2qQKt3H8=beVTdHHa9=MiJ&tM1RRQ-=+vy!~iz zj3O{pyRhCQ+b(>jC*H)J)%Wq}p>;?@W*Eut@P&?VU+Sdw^4kE8lvX|6czf{l*~L;J zFm*V~UC;3oQY(ytD|D*%*uVrBB}BbAfjK&%S;z;7$w68(8PV_whC~yvkZmX)xD^s6 z{$1Q}q;99W?*YkD2*;)tRCS{q2s@JzlO~<8x9}X<0?hCD5vpydvOw#Z$2;$@cZkYrp83J0PsS~!CFtY%BP=yxG?<@#{7%2sy zOc&^FJxsUYN36kSY)d7W=*1-{7ghPAQAXwT7z+NlESlkUH&8ODlpc8iC*iQ^MAe(B z?*xO4i{zFz^G=^G#9MsLKIN64rRJykiuIVX5~0#vAyDWc9-=6BDNT_aggS2G{B>dD ze-B%d3b6iCfc5{@yz$>=@1kdK^tX9qh0=ocv@9$ai``a_ofxT=>X7_Y0`X}a^M?d# z%EG)4@`^Ej_=%0_J-{ga!gFtji_byY&Vk@T1c|ucNAr(JNr@)nCWj?QnCyvXg&?FW;S-VOmNL6^km_dqiVjJuIASVGSFEos@EVF7St$WE&Z%)`Q##+0 zjaZ=JI1G@0!?l|^+-ZrNd$WrHBi)DA0-Eke>dp=_XpV<%CO_Wf5kQx}5e<90dt>8k zAi00d0rQ821nA>B4JHN7U8Zz=0;9&U6LOTKOaC1FC8GgO&kc=_wHIOGycL@c*$`ce703t%>S}mvxEnD-V!;6c`2(p74V7D0No1Xxt`urE66$0(ThaAZ1YVG#QP$ zy~NN%kB*zhZ2Y!kjn826pw4bh)75*e!dse+2Db(;bN34Uq7bLpr47XTX{8UEeC?2i z*{$`3dP}32${8pF$!$2Vq^gY|#w+VA_|o(oWmQX8^iw#n_crb(K3{69*iU?<%C-%H zuKi)3M1BhJ@3VW>JA`M>L~5*_bxH@Euy@niFrI$82C1}fwR$p2E&ZYnu?jlS}u7W9AyfdXh2pM>78bIt3 z)JBh&XE@zA!kyCDfvZ1qN^np20c1u#%P6;6tU&dx0phT1l=(mw7`u!-0e=PxEjDds z9E}{E!7f9>jaCQhw)&2TtG-qiD)lD(4jQ!q{`x|8l&nmtHkdul# zy+CIF8lKbp9_w{;oR+jSLtTfE+B@tOd6h=QePP>rh4@~!8c;Hlg9m%%&?e`*Z?qz5-zLEWfi>`ord5uHF-s{^bexKAoMEV@9nU z^5nA{f{dW&g$)BAGfkq@r5D)jr%!Ven~Q58c!Kr;*Li#`4Bu_?BU0`Y`nVQGhNZk@ z!>Yr$+nB=`z#o2nR0)V3M7-eVLuY`z@6CT#OTUXKnxZn$fNLPv7w1y7eGE=Qv@Hey`n;`U=xEl|q@CCV^#l)s0ZfT+mUf z^(j5r4)L5i2jnHW4+!6Si3q_LdOLQi<^fu?6WdohIkn79=jf%Fs3JkeXwF(?_tcF? z?z#j6iXEd(wJy4|p6v?xNk-)iIf2oX5^^Y3q3ziw16p9C6B;{COXul%)`>nuUoM*q zzmr|NJ5n)+sF$!yH5zwp=iM1#ZR`O%L83tyog-qh1I z0%dcj{NUs?{myT~33H^(%0QOM>-$hGFeP;U$puxoJ>>o-%Lk*8X^rx1>j|LtH$*)>1C!Pv&gd16%`qw5LdOIUbkNhaBBTo}5iuE%K&ZV^ zAr_)kkeNKNYJRgjsR%vexa~&8qMrQYY}+RbZ)egRg9_$vkoyV|Nc&MH@8L)`&rpqd zXnVaI@~A;Z^c3+{x=xgdhnocA&OP6^rr@rTvCnhG6^tMox$ulw2U7NgUtW%|-5VeH z_qyd47}1?IbuKtqNbNx$HR`*+9o=8`%vM8&SIKbkX9&%TS++x z5|&6P<%=F$C?owUI`%uvUq^yW0>`>yz!|WjzsoB9dT;2Dx8iSuK%%_XPgy0dTD4kd zDXF@&O_vBVVKQq(9YTClUPM30Sk7B!v7nOyV`XC!BA;BIVwphh+c)?5VJ^(C;GoQ$ zvBxr7_p*k$T%I1ke}`U&)$uf}I_T~#3XTi53OX)PoXVgxEcLJgZG^i47U&>LY(l%_ z;9vVDEtuMCyu2fqZeez|RbbIE7@)UtJvgAcVwVZNLccswxm+*L&w`&t=ttT=sv6Aq z!HouSc-24Y9;0q$>jX<1DnnGmAsP))- z^F~o99gHZw`S&Aw7e4id6Lg7kMk-e)B~=tZ!kE7sGTOJ)8@q}np@j7&7Sy{2`D^FH zI7aX%06vKsfJ168QnCM2=l|i>{I{%@gcr>ExM0Dw{PX6ozEuqFYEt z087%MKC;wVsMV}kIiuu9Zz9~H!21d!;Cu#b;hMDIP7nw3xSX~#?5#SSjyyg+Y@xh| z%(~fv3`0j#5CA2D8!M2TrG=8{%>YFr(j)I0DYlcz(2~92?G*?DeuoadkcjmZszH5& zKI@Lis%;RPJ8mNsbrxH@?J8Y2LaVjUIhRUiO-oqjy<&{2X~*f|)YxnUc6OU&5iac= z*^0qwD~L%FKiPmlzi&~a*9sk2$u<7Al=_`Ox^o2*kEv?p`#G(p(&i|ot8}T;8KLk- zPVf_4A9R`5^e`Om2LV*cK59EshYXse&IoByj}4WZaBomoHAPKqxRKbPcD`lMBI)g- zeMRY{gFaUuecSD6q!+b5(?vAnf>c`Z(8@RJy%Ulf?W~xB1dFAjw?CjSn$ph>st5bc zUac1aD_m6{l|$#g_v6;=32(mwpveQDWhmjR7{|B=$oBhz`7_g7qNp)n20|^^op3 zSfTdWV#Q>cb{CMKlWk91^;mHap{mk)o?udk$^Q^^u@&jd zfZ;)saW6{e*yoL6#0}oVPb2!}r{pAUYtn4{P~ES9tTfC5hXZnM{HrC8^=Pof{G4%Bh#8 ze~?C9m*|fd8MK;{L^!+wMy>=f^8b&y?yr6KnTq28$pFMBW9Oy7!oV5z|VM$s-cZ{I|Xf@}-)1=$V&x7e;9v81eiTi4O5-vs?^5pCKy2l>q);!MA zS!}M48l$scB~+Umz}7NbwyTn=rqt@`YtuwiQSMvCMFk2$83k50Q>OK5&fe*xCddIm)3D0I6vBU<+!3=6?(OhkO|b4fE_-j zimOzyfBB_*7*p8AmZi~X2bgVhyPy>KyGLAnOpou~sx9)S9%r)5dE%ADs4v%fFybDa_w*0?+>PsEHTbhKK^G=pFz z@IxLTCROWiKy*)cV3y%0FwrDvf53Ob_XuA1#tHbyn%Ko!1D#sdhBo`;VC*e1YlhrC z?*y3rp86m#qI|qeo8)_xH*G4q@70aXN|SP+6MQ!fJQqo1kwO_v7zqvUfU=Gwx`CR@ zRFb*O8+54%_8tS(ADh}-hUJzE`s*8wLI>1c4b@$al)l}^%GuIXjzBK!EWFO8W`>F^ ze7y#qPS0NI7*aU)g$_ziF(1ft;2<}6Hfz10cR8P}67FD=+}MfhrpOkF3hFhQu;Q1y zu%=jJHTr;0;oC94Hi@LAF5quAQ(rJG(uo%BiRQ@8U;nhX)j0i?0SL2g-A*YeAqF>RVCBOTrn{0R27vu}_S zS>tX4!#&U4W;ikTE!eFH+PKw%p+B(MR2I%n#+m0{#?qRP_tR@zpgCb=4rcrL!F=;A zh%EIF8m6%JG+qb&mEfuFTLHSxUAZEvC-+kvZKyX~SA3Umt`k}}c!5dy?-sLIM{h@> z!2=C)@nx>`;c9DdwZ&zeUc(7t<21D7qBj!|1^Mp1eZ6)PuvHx+poKSDCSBMFF{bKy z;9*&EyKitD99N}%mK8431rvbT+^%|O|HV23{;RhmS{$5tf!bIPoH9RKps`-EtoW5h zo6H_!s)Dl}2gCeGF6>aZtah9iLuGd19^z0*OryPNt{70RvJSM<#Ox9?HxGg04}b^f zrVEPceD%)#0)v5$YDE?f`73bQ6TA6wV;b^x*u2Ofe|S}+q{s5gr&m~4qGd!wOu|cZ||#h_u=k*fB;R6&k?FoM+c&J;ISg70h!J7*xGus)ta4veTdW)S^@sU@ z4$OBS=a~@F*V0ECic;ht4@?Jw<9kpjBgHfr2FDPykCCz|v2)`JxTH55?b3IM={@DU z!^|9nVO-R#s{`VHypWyH0%cs;0GO3E;It6W@0gX6wZ%W|Dzz&O%m17pa19db(er}C zUId1a4#I+Ou8E1MU$g=zo%g7K(=0Pn$)Rk z<4T2u<0rD)*j+tcy2XvY+0 z0d2pqm4)4lDewsAGThQi{2Kc3&C=|OQF!vOd#WB_`4gG3@inh-4>BoL!&#ij8bw7? zqjFRDaQz!J-YGitV4}$*$hg`vv%N)@#UdzHFI2E<&_@0Uw@h_ZHf}7)G;_NUD3@18 zH5;EtugNT0*RXVK*by>WS>jaDDfe!A61Da=VpIK?mcp^W?!1S2oah^wowRnrYjl~`lgP-mv$?yb6{{S55CCu{R z$9;`dyf0Y>uM1=XSl_$01Lc1Iy68IosWN8Q9Op=~I(F<0+_kKfgC*JggjxNgK6 z-3gQm6;sm?J&;bYe&(dx4BEjvq}b`OT^RqF$J4enP1YkeBK#>l1@-K`ajbn05`0J?0daOtnzh@l3^=BkedW1EahZlRp;`j*CaT;-21&f2wU z+Nh-gc4I36Cw+;3UAc<%ySb`#+c@5y ze~en&bYV|kn?Cn|@fqmGxgfz}U!98$=drjAkMi`43I4R%&H0GKEgx-=7PF}y`+j>r zg&JF`jomnu2G{%QV~Gf_-1gx<3Ky=Md9Q3VnK=;;u0lyTBCuf^aUi?+1+`4lLE6ZK zT#(Bf`5rmr(tgTbIt?yA@y`(Ar=f>-aZ}T~>G32EM%XyFvhn&@PWCm#-<&ApLDCXT zD#(9m|V(OOo7PmE@`vD4$S5;+9IQm19dd zvMEU`)E1_F+0o0-z>YCWqg0u8ciIknU#{q02{~YX)gc_u;8;i233D66pf(IkTDxeN zL=4z2)?S$TV9=ORVr&AkZMl<4tTh(v;Ix1{`pPVqI3n2ci&4Dg+W|N8TBUfZ*WeLF zqCH_1Q0W&f9T$lx3CFJ$o@Lz$99 zW!G&@zFHxTaP!o#z^~xgF|(vrHz8R_r9eo;TX9}2ZyjslrtH=%6O)?1?cL&BT(Amp zTGFU1%%#xl&6sH-UIJk_PGk_McFn7=%yd6tAjm|lnmr8bE2le3I~L{0(ffo}TQjyo zHZZI{-}{E4ohYTlZaS$blB!h$Jq^Rf#(ch}@S+Ww&$b);8+>g84IJcLU%B-W?+IY& zslcZIR>+U4v3O9RFEW;8NpCM0w1ROG84=WpKxQ^R`{=0MZCubg3st z48AyJNEvyxn-jCPTlTwp4EKvyEwD3e%kpdY?^BH0!3n6Eb57_L%J1=a*3>|k68A}v zaW`*4YitylfD}ua8V)vb79)N_Ixw_mpp}yJGbNu+5YYOP9K-7nf*jA1#<^rb4#AcS zKg%zCI)7cotx}L&J8Bqo8O1b0q;B1J#B5N5Z$Zq=wX~nQFgUfAE{@u0+EnmK{1hg> zC{vMfFLD;L8b4L+B51&LCm|scVLPe6h02rws@kGv@R+#IqE8>Xn8i|vRq_Z`V;x6F zNeot$1Zsu`lLS92QlLWF54za6vOEKGYQMdX($0JN*cjG7HP&qZ#3+bEN$8O_PfeAb z0R5;=zXac2IZ?fxu59?Nka;1lKm|;0)6|#RxkD05P5qz;*AL@ig!+f=lW5^Jbag%2 z%9@iM0ph$WFlxS!`p31t92z~TB}P-*CS+1Oo_g;7`6k(Jyj8m8U|Q3Sh7o-Icp4kV zK}%qri5>?%IPfamXIZ8pXbm-#{ytiam<{a5A+3dVP^xz!Pvirsq7Btv?*d7eYgx7q zWFxrzb3-%^lDgMc=Vl7^={=VDEKabTG?VWqOngE`Kt7hs236QKidsoeeUQ_^FzsXjprCDd@pW25rNx#6x&L6ZEpoX9Ffzv@olnH3rGOSW( zG-D|cV0Q~qJ>-L}NIyT?T-+x+wU%;+_GY{>t(l9dI%Ximm+Kmwhee;FK$%{dnF;C% zFjM2&$W68Sz#d*wtfX?*WIOXwT;P6NUw}IHdk|)fw*YnGa0rHx#paG!m=Y6GkS4VX zX`T$4eW9k1W!=q8!(#8A9h67fw))k_G)Q9~Q1e3f`aV@kbcSv7!priDUN}gX(iXTy zr$|kU0Vn%*ylmyDCO&G0Z3g>%JeEPFAW!5*H2Ydl>39w3W+gEUjL&vrRs(xGP{(ze zy7EMWF14@Qh>X>st8_029||TP0>7SG9on_xxeR2Iam3G~Em$}aGsNt$iES9zFa<3W zxtOF*!G@=PhfHO!=9pVPXMUVi30WmkPoy$02w}&6A7mF)G6-`~EVq5CwD2`9Zu`kd)52``#V zNSb`9dG~8(dooi1*-aSMf!fun7Sc`-C$-E(3BoSC$2kKrVcI!&yC*+ff2+C-@!AT_ zsvlAIV+%bRDfd{R*TMF><1&_a%@yZ0G0lg2K;F>7b+7A6pv3-S7qWIgx+Z?dt8}|S z>Qbb6x(+^aoV7FQ!Ph8|RUA6vXWQH*1$GJC+wXLXizNIc9p2yLzw9 z0=MdQ!{NnOwIICJc8!+Jp!zG}**r#E!<}&Te&}|B4q;U57$+pQI^}{qj669zMMe_I z&z0uUCqG%YwtUc8HVN7?0GHpu=bL7&{C>hcd5d(iFV{I5c~jpX&!(a{yS*4MEoYXh z*X4|Y@RVfn;piRm-C%b@{0R;aXrjBtvx^HO;6(>i*RnoG0Rtcd25BT6edxTNOgUAOjn zJ2)l{ipj8IP$KID2}*#F=M%^n&=bA0tY98@+2I+7~A&T-tw%W#3GV>GTmkHaqftl)#+E zMU*P(Rjo>8%P@_@#UNq(_L{}j(&-@1iY0TRizhiATJrnvwSH0v>lYfCI2ex^><3$q znzZgpW0JlQx?JB#0^^s-Js1}}wKh6f>(e%NrMwS`Q(FhazkZb|uyB@d%_9)_xb$6T zS*#-Bn)9gmobhAtvBmL+9H-+0_0US?g6^TOvE8f3v=z3o%NcPjOaf{5EMRnn(_z8- z$|m0D$FTU zDy;21v-#0i)9%_bZ7eo6B9@Q@&XprR&oKl4m>zIj-fiRy4Dqy@VVVs?rscG| zmzaDQ%>AQTi<^vYCmv#KOTd@l7#2VIpsj?nm_WfRZzJako`^uU%Nt3e;cU*y*|$7W zLm%fX#i_*HoUXu!NI$ey>BA<5HQB=|nRAwK!$L#n-Qz;~`zACig0PhAq#^5QS<8L2 zS3A+8%vbVMa7LOtTEM?55apt(DcWh#L}R^P2AY*c8B}Cx=6OFAdMPj1f>k3#^#+Hk z6uW1WJW&RlBRh*1DLb7mJ+KO>!t^t8hX1#_Wk`gjDio9)9IGbyCAGI4DJ~orK+YRv znjxRMtshZQHc$#Y-<-JOV6g^Cr@odj&Xw5B(FmI)*qJ9NHmIz_r{t)TxyB`L-%q5l ztzHgD;S6cw?7Atg*6E1!c6*gPRCb%t7D%z<(xm+K{%EJNiI2N0l8ud0Ch@_av_RW? zIr!nO4dL5466WslE6MsfMss7<)-S!e)2@r2o=7_W)OO`~CwklRWzHTfpB)_HYwgz=BzLhgZ9S<{nLBOwOIgJU=94uj6r!m>Xyn9>&xP+=5!zG_*yEoRgM0`aYts z^)&8(>z5C-QQ*o_s(8E4*?AX#S^0)aqB)OTyX>4BMy8h(cHjA8ji1PRlox@jB*1n? zDIfyDjzeg91Ao(;Q;KE@zei$}>EnrF6I}q&Xd=~&$WdDsyH0H7fJX|E+O~%LS*7^Q zYzZ4`pBdY{b7u72gZm6^5~O-57HwzwAz{)NvVaowo`X02tL3PpgLjwA`^i9F^vSpN zAqH3mRjG8VeJNHZ(1{%!XqC+)Z%D}58Qel{_weSEHoygT9pN@i zi=G;!Vj6XQk2tuJC>lza%ywz|`f7TIz*EN2Gdt!s199Dr4Tfd_%~fu8gXo~|ogt5Q zlEy_CXEe^BgsYM^o@L?s33WM14}7^T(kqohOX_iN@U?u;$l|rAvn{rwy>!yfZw13U zB@X9)qt&4;(C6dP?yRsoTMI!j-f1KC!<%~i1}u7yLXYn)(#a;Z6~r>hp~kfP));mi zcG%kdaB9H)z9M=H!f>kM->fTjRVOELNwh1amgKQT=I8J66kI)u_?0@$$~5f`u%;zl zC?pkr^p2Fe=J~WK%4ItSzKA+QHqJ@~m|Cduv=Q&-P8I5rQ-#G@bYH}YJr zUS(~(w|vKyU(T(*py}jTUp%I%{2!W!K(i$uvotcPjVddW z8_5HKY!oBCwGZcs-q`4Yt`Zk~>K?mcxg51wkZlX5e#B08I75F7#dgn5yf&Hrp`*%$ zQ;_Qg>TYRzBe$x=T(@WI9SC!ReSas9vDm(yslQjBJZde5z8GDU``r|N(MHcxNopGr z_}u39W_zwWDL*XYYt>#Xo!9kL#97|EAGyGBcRXtLTd59x%m=3i zL^9joWYA)HfL15l9%H?q`$mY27!<9$7GH(kxb%MV>`}hR4a?+*LH6aR{dzrX@?6X4 z3e`9L;cjqYb`cJmophbm(OX0b)!AFG?5`c#zLagzMW~o)?-!@e80lvk!p#&CD8u5_r&wp4O0zQ>y!k5U$h_K;rWGk=U)zX!#@Q%|9g*A zWx)qS1?fq6X<$mQTB$#3g;;5tHOYuAh;YKSBz%il3Ui6fPRv#v62SsrCdMRTav)Sg zTq1WOu&@v$Ey;@^+_!)cf|w_X<@RC>!=~+A1-65O0bOFYiH-)abINwZvFB;hJjL_$ z(9iScmUdMp2O$WW!520Hd0Q^Yj?DK%YgJD^ez$Z^?@9@Ab-=KgW@n8nC&88)TDC+E zlJM)L3r+ZJfZW_T$;Imq*#2<(j+FIk8ls7)WJ6CjUu#r5PoXxQs4b)mZza<8=v{o)VlLRM<9yw^0En#tXAj`Sylxvki{<1DPe^ zhjHwx^;c8tb?Vr$6ZB;$Ff$+3(*oinbwpN-#F)bTsXq@Sm?43MC#jQ~`F|twI=7oC zH4TJtu#;ngRA|Y~w5N=UfMZi?s0%ZmKUFTAye&6Y*y-%c1oD3yQ%IF2q2385Zl+=> zfz=o`Bedy|U;oxbyb^rB9ixG{Gb-{h$U0hVe`J;{ql!s_OJ_>>eoQn(G6h7+b^P48 zG<=Wg2;xGD-+d@UMZ!c;0>#3nws$9kIDkK13IfloGT@s14AY>&>>^#>`PT7GV$2Hp zN<{bN*ztlZu_%W=&3+=#3bE(mka6VoHEs~0BjZ$+=0`a@R$iaW)6>wp2w)=v2@|2d z%?34!+iOc5S@;AAC4hELWLH56RGxo4jw8MDMU0Wk2k_G}=Vo(>eRFo(g3@HjG|`H3 zm8b*dK=moM*oB<)*A$M9!!5o~4U``e)wxavm@O_R(`P|u%9^LGi(_%IF<6o;NLp*0 zKsfZ0#24GT8(G`i4UvoMh$^;kOhl?`0yNiyrC#HJH=tqOH^T_d<2Z+ zeN>Y9Zn!X4*DMCK^o75Zk2621bdmV7Rx@AX^alBG4%~;G_vUoxhfhFRlR&+3WwF^T zaL)8xPq|wCZoNT^>3J0K?e{J-kl+hu2rZI>CUv#-z&u@`hjeb+bBZ>bcciQVZ{SbW zez04s9oFEgc8Z+Kp{XFX`MVf-s&w9*dx7wLen(_@y34}Qz@&`$2+osqfxz4&d}{Ql z*g1ag00Gu+$C`0avds{Q65BfGsu9`_`dML*rX~hyWIe$T>CsPRoLIr%MTk3pJ^2zH1qub1MBzPG}PO;Wmav9w%F7?%l=xIf#LlP`! z_Nw;xBQY9anH5-c8A4mME}?{iewjz(Sq-29r{fV;Fc>fv%0!W@(+{={Xl-sJ6aMoc z)9Q+$bchoTGTyWU_oI19!)bD=IG&OImfy;VxNXoIO2hYEfO~MkE#IXTK(~?Z&!ae! zl8z{D&2PC$Q*OBC(rS~-*-GHNJ6AC$@eve>LB@Iq;jbBZj`wk4|LGogE||Ie=M5g= z9d`uYQ1^Sr_q2wmZE>w2WG)!F%^KiqyaDtIAct?}D~JP4shTJy5Bg+-(EA8aXaxbd~BKMtTf2iQ69jD1o* zZF9*S3!v-TdqwK$%&?91Sh2=e63;X0Lci@n7y3XOu2ofyL9^-I767eHESAq{m+@*r zbVDx!FQ|AjT;!bYsXv8ilQjy~Chiu&HNhFXt3R_6kMC8~ChEFqG@MWu#1Q1#=~#ix zrkHpJre_?#r=N0wv`-7cHHqU`phJX2M_^{H0~{VP79Dv{6YP)oA1&TSfKPEPZn2)G z9o{U1huZBLL;Tp_0OYw@+9z(jkrwIGdUrOhKJUbwy?WBt zlIK)*K0lQCY0qZ!$%1?3A#-S70F#YyUnmJF*`xx?aH5;gE5pe-15w)EB#nuf6B*c~ z8Z25NtY%6Wlb)bUA$w%HKs5$!Z*W?YKV-lE0@w^{4vw;J>=rn?u!rv$&eM+rpU6rc=j9>N2Op+C{D^mospMCjF2ZGhe4eADA#skp2EA26%p3Ex9wHW8l&Y@HX z$Qv)mHM}4*@M*#*ll5^hE9M^=q~eyWEai*P;4z<9ZYy!SlNE5nlc7gm;M&Q zKhKE4d*%A>^m0R?{N}y|i6i^k>^n4(wzKvlQeHq{l&JuFD~sTsdhs`(?lFK@Q{pU~ zb!M3c@*3IwN1RUOVjY5>uT+s-2QLWY z4T2>fiSn>>Fob+%B868-v9D@AfWr#M8eM6w#eAlhc#zk6jkLxGBGk`E3$!A@*am!R zy>29&ptYK6>cvP`b!syNp)Q$0UOW|-O@)8!?94GOYF_}+zlW%fCEl|Tep_zx05g6q z>tp47e-&R*hSNe{6{H!mL?+j$c^TXT{C&@T-xIaesNCl05 z9SLb@q&mSb)I{VXMaiWa3PWj=Ed!>*GwUe;^|uk=Pz$njNnfFY^MM>E?zqhf6^{}0 zx&~~dA5#}1ig~7HvOQ#;d9JZBeEQ+}-~v$at`m!(ai z$w(H&mWCC~;PQ1$%iuz3`>dWeb3_p}X>L2LK%2l59Tyc}4m0>9A!8rhoU3m>i2+hl zx?*qs*c^j}+WPs>&v1%1Ko8_ivAGIn@QK7A`hDz-Emkcgv2@wTbYhkiwX2l=xz*XG zaiNg+j4F-I>9v+LjosI-QECrtKjp&0T@xIMKVr+&)gyb4@b3y?2CA?=ooN zT#;rU86WLh(e@#mF*rk(NV-qSIZyr z$6!ZUmzD)%yO-ot`rw3rp6?*_l*@Z*IB0xn4|BGPWHNc-1ZUnNSMWmDh=EzWJRP`) zl%d%J613oXzh5;VY^XWJi{lB`f#u+ThvtP7 zq(HK<4>tw(=yzSBWtYO}XI`S1pMBe3!jFxBHIuwJ(@%zdQFi1Q_hU2eDuHqXte7Ki zOV55H2D6u#4oTfr7|u*3p75KF&jaLEDpxk!4*bhPc%mpfj)Us3XIG3 zIKMX^s^1wt8YK7Ky^UOG=w!o5e7W-<&c|fw2{;Q11vm@J{)@N3-p1U>!0~sKWHaL= zWV(0}1IIyt1p%=_-Fe5Kfzc71wg}`RDDntVZv;4!=&XXF-$48jS0Sc;eDy@Sg;+{A zFStc{dXT}kcIjMXb4F7MbX~2%i;UrBxm%qmLKb|2=?uPr00-$MEUIGR5+JG2l2Nq` zkM{{1RO_R)+8oQ6x&-^kCj)W8Z}TJjS*Wm4>hf+4#VJP)OBaDF%3pms7DclusBUw} z{ND#!*I6h85g6DzNvdAmnwWY{&+!KZM4DGzeHI?MR@+~|su0{y-5-nICz_MIT_#FE zm<5f3zlaKq!XyvY3H`9s&T};z!cK}G%;~!rpzk9-6L}4Rg7vXtKFsl}@sT#U#7)x- z7UWue5sa$R>N&b{J61&gvKcKlozH*;OjoDR+elkh|4bJ!_3AZNMOu?n9&|L>OTD78 z^i->ah_Mqc|Ev)KNDzfu1P3grBIM#%`QZqj5W{qu(HocQhjyS;UINoP`{J+DvV?|1 z_sw6Yr3z6%e7JKVDY<$P=M)dbk@~Yw9|2!Cw!io3%j92wTD!c^e9Vj+7VqXo3>u#= zv#M{HHJ=e$X5vQ>>ML?E8#UlmvJgTnb73{PSPTf*0)mcj6C z{KsfUbDK|F$E(k;ER%8HMdDi`=BfpZzP3cl5yJHu;v^o2FkHNk;cXc17tL8T!CsYI zfeZ6sw@;8ia|mY_AXjCS?kUfxdjDB28)~Tz1dGE|{VfBS9`0m2!m1yG?hR})er^pl4c@9Aq+|}ZlDaHL)K$O| z%9Jp-imI-Id0|(d5{v~w6mx)tUKfbuVD`xNt04Mry%M+jXzE>4(TBsx#&=@wT2Vh) z1yeEY&~17>0%P(eHP0HB^|7C+WJxQBTG$uyOWY@iDloRIb-Cf!p<{WQHR!422#F34 zG`v|#CJ^G}y9U*7jgTlD{D&y$Iv{6&PYG>{Ixg$pGk?lWrE#PJ8KunQC@}^6OP!|< zS;}p3to{S|uZz%kKe|;A0bL0XxPB&Q{J(9PyX`+Kr`k~r2}yP^ND{8!v7Q1&vtk& z2Y}l@J@{|2`oA%sxvM9i0V+8IXrZ4;tey)d;LZI70Kbim<4=WoTPZy=Yd|34v#$Kh zx|#YJ8s`J>W&jt#GcMpx84w2Z3ur-rK7gf-p5cE)=w1R2*|0mj12hvapuUWM0b~dG zMg9p8FmAZI@i{q~0@QuY44&mMUNXd7z>U58shA3o`p5eVLpq>+{(<3->DWuSFVZwC zxd50Uz(w~LxC4}bgag#q#NNokK@yNc+Q|Ap!u>Ddy+df>v;j@I12CDNN9do+0^n8p zMQs7X#+FVF0C5muGfN{r0|Nkql%BQT|K(DDNdR2pzM=_ea5+GO|J67`05AV92t@4l z0Qno0078PIHdaQGHZ~Scw!dzgqjK~3B7kf>BcP__&lLyU(cu3B^uLo%{j|Mb0NR)tkeT7Hcwp4O# z)yzu>cvG(d9~0a^)eZ;;%3ksk@F&1eEBje~ zW+-_s)&RgiweQc!otF>4%vbXKaOU41{!hw?|2`Ld3I8$&#WOsq>EG)1ANb!{N4z9@ zsU!bPG-~-bqCeIDzo^Q;gnucB{tRzm{ZH^Orphm2U+REA!*<*J6YQV83@&xoDl%#wnl5qcBqCcAF-vX5{30}(oJrnSH z{RY85hylK2dMOh2%oO1J8%)0?8TOL%rS8)+CsDv}aQ>4D)Jv+DLK)9gI^n-T^$)Tc zFPUD75qJm!Y-KBqj;JP4dV4 z`X{lGmn<)1IGz330}s}Jrjtf{(lnuuNHe5(ezA(pYa=1|Ff-LhPFK8 zyJh_b{yzu0yll6ZkpRzRjezyYivjyjW7QwO;@6X`m;2Apn2EK2!~7S}-*=;5*7K$B z`x(=!^?zgj(-`&ApZJXI09aDLXaT@<;CH=?fBOY5d|b~wBA@@p^K#nxr`)?i?SqTupI_PJ(A3cx`z~9mX_*)>L F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..311bd9e --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Apr 15 19:03:18 IRDT 2022 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## 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="" + +# 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, switch paths to Windows format before running java +if $cygwin ; 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=$((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" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@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 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= + +@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 init + +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 init + +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 + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +: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 %CMD_LINE_ARGS% + +: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/settings.gradle b/settings.gradle new file mode 100644 index 0000000..7aabc90 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,15 @@ +pluginManagement { + repositories { + gradlePluginPortal() + google() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "FlashDim" +include ':app'