From 307dbe8859692c48f1d3594d99077c0a2638bb39 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Fri, 27 Jan 2017 09:05:38 +0800 Subject: [PATCH] initial commit --- .gitignore | 9 + .idea/compiler.xml | 22 + .idea/copyright/profiles_settings.xml | 3 + .idea/encodings.xml | 6 + .idea/gradle.xml | 18 + .idea/inspectionProfiles/Project_Default.xml | 10 + .../inspectionProfiles/profiles_settings.xml | 7 + .idea/misc.xml | 61 +++ .idea/modules.xml | 9 + .idea/runConfigurations.xml | 12 + app/.gitignore | 1 + app/build.gradle | 43 ++ app/proguard-rules.pro | 17 + .../scriptdroid/ExampleInstrumentedTest.java | 26 + app/src/main/AndroidManifest.xml | 76 +++ .../stardust/scriptdroid/BaseActivity.java | 32 ++ .../stardust/scriptdroid/MainActivity.java | 162 ++++++ .../scriptdroid/ShortcutActivity.java | 89 ++++ .../stardust/scriptdroid/action/Action.java | 466 ++++++++++++++++++ .../action/ActionPerformService.java | 184 +++++++ .../stardust/scriptdroid/data/ScriptFile.java | 52 ++ .../scriptdroid/data/ScriptFileList.java | 28 ++ .../data/SharedPrefScriptFileList.java | 86 ++++ .../com/stardust/scriptdroid/droid/Droid.java | 29 ++ .../scriptdroid/droid/Interpreter.java | 210 ++++++++ .../scriptdroid/droid/StringTool.java | 10 + .../scriptdroid/droid/SyntaxDefinition.java | 30 ++ .../scriptdroid/file/FileChooser.java | 65 +++ .../stardust/scriptdroid/file/FileUtils.java | 79 +++ .../runningservices/RunningPackageTool.java | 78 +++ .../scriptdroid/shortcut/Shortcut.java | 114 +++++ .../scriptdroid/shortcut/ShortcutHelper.java | 418 ++++++++++++++++ .../scriptdroid/tile/TileService.java | 14 + .../stardust/scriptdroid/tool/ClassTool.java | 22 + .../stardust/scriptdroid/tool/ViewTool.java | 16 + .../scriptdroid/ui/ScriptFileOperation.java | 149 ++++++ .../ui/ScriptFileOperationPopupMenu.java | 135 +++++ .../ui/ScriptListRecyclerView.java | 165 +++++++ .../scriptdroid/ui/SlidingUpPanel.java | 108 ++++ .../java/com/stardust/util/MapEntries.java | 37 ++ .../com/stardust/util/SparseArrayEntries.java | 22 + .../stardust/util/function/ArrayOptional.java | 8 + .../com/stardust/util/function/Domino.java | 8 + .../stardust/util/function/FunctionTool.java | 15 + .../com/stardust/util/function/ListTool.java | 24 + .../AccessibilityNodeInfoReflect.java | 40 ++ app/src/main/res/anim/slide_down.xml | 9 + app/src/main/res/anim/slide_up.xml | 9 + .../res/drawable/ic_accessibility_service.png | Bin 0 -> 18349 bytes .../main/res/drawable/ic_add_black_24dp.png | Bin 0 -> 119 bytes .../main/res/drawable/ic_add_white_48dp.png | Bin 0 -> 116 bytes .../ic_create_new_folder_black_48dp.png | Bin 0 -> 191 bytes .../res/drawable/ic_delete_black_48dp.png | Bin 0 -> 148 bytes .../drawable/ic_delete_forever_black_48dp.png | Bin 0 -> 227 bytes .../drawable/ic_delete_forever_green_48dp.png | Bin 0 -> 965 bytes .../res/drawable/ic_delete_green_48dp.png | Bin 0 -> 546 bytes .../main/res/drawable/ic_edit_gray_48dp.png | Bin 0 -> 14872 bytes .../main/res/drawable/ic_edit_green_48dp.png | Bin 0 -> 767 bytes .../ic_play_circle_filled_black_48dp.png | Bin 0 -> 444 bytes app/src/main/res/drawable/ic_play_green.png | Bin 0 -> 23800 bytes app/src/main/res/drawable/ic_rename_green.png | Bin 0 -> 17787 bytes .../main/res/drawable/ic_shortcut_green.png | Bin 0 -> 4236 bytes .../navigation_show_more_vertical_512.png | Bin 0 -> 13339 bytes .../main/res/drawable/pencil_and_paper.png | Bin 0 -> 22025 bytes app/src/main/res/drawable/play_blue.png | Bin 0 -> 4508 bytes .../res/drawable/popup_menu_background.xml | 6 + app/src/main/res/drawable/rename.png | Bin 0 -> 4797 bytes app/src/main/res/drawable/robot_head.png | Bin 0 -> 23332 bytes .../main/res/drawable/robot_head_green.png | Bin 0 -> 32853 bytes .../main/res/drawable/robot_icon_green.png | Bin 0 -> 27697 bytes app/src/main/res/drawable/run.png | Bin 0 -> 15483 bytes app/src/main/res/drawable/script_droid.png | Bin 0 -> 15875 bytes .../main/res/drawable/script_droid_100.png | Bin 0 -> 3993 bytes app/src/main/res/drawable/script_droid_50.png | Bin 0 -> 1896 bytes .../main/res/drawable/sdcard_icon_black.png | Bin 0 -> 1897 bytes app/src/main/res/drawable/shortcut_icon.png | Bin 0 -> 4214 bytes app/src/main/res/layout/activity_main.xml | 97 ++++ app/src/main/res/layout/content_main.xml | 29 ++ ...ript_file_operation_popup_menu_content.xml | 14 + .../script_file_operation_popup_menu_item.xml | 27 + .../layout/script_list_recycler_view_item.xml | 88 ++++ app/src/main/res/layout/sliding_up_panel.xml | 24 + app/src/main/res/menu/menu_main.xml | 22 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10486 bytes app/src/main/res/values-v21/styles.xml | 9 + app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/attrs.xml | 3 + app/src/main/res/values/colors.xml | 7 + app/src/main/res/values/dimens.xml | 6 + app/src/main/res/values/strings.xml | 20 + app/src/main/res/values/styles.xml | 20 + .../res/xml/accessibility_service_config.xml | 8 + app/src/main/res/xml/provider_paths.xml | 4 + .../stardust/scriptdroid/ExampleUnitTest.java | 19 + build.gradle | 23 + gradle.properties | 20 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 ++++++ gradlew.bat | 90 ++++ settings.gradle | 1 + 105 files changed, 3942 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/stardust/scriptdroid/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/stardust/scriptdroid/BaseActivity.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/MainActivity.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/ShortcutActivity.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/action/Action.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/action/ActionPerformService.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/data/ScriptFile.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/data/ScriptFileList.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/data/SharedPrefScriptFileList.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/droid/Droid.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/droid/Interpreter.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/droid/StringTool.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/droid/SyntaxDefinition.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/file/FileChooser.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/file/FileUtils.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/runningservices/RunningPackageTool.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/shortcut/Shortcut.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/shortcut/ShortcutHelper.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/tile/TileService.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/tool/ClassTool.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/tool/ViewTool.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/ui/ScriptFileOperation.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/ui/ScriptFileOperationPopupMenu.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/ui/ScriptListRecyclerView.java create mode 100644 app/src/main/java/com/stardust/scriptdroid/ui/SlidingUpPanel.java create mode 100644 app/src/main/java/com/stardust/util/MapEntries.java create mode 100644 app/src/main/java/com/stardust/util/SparseArrayEntries.java create mode 100644 app/src/main/java/com/stardust/util/function/ArrayOptional.java create mode 100644 app/src/main/java/com/stardust/util/function/Domino.java create mode 100644 app/src/main/java/com/stardust/util/function/FunctionTool.java create mode 100644 app/src/main/java/com/stardust/util/function/ListTool.java create mode 100644 app/src/main/java/com/stardust/view/accessibility/AccessibilityNodeInfoReflect.java create mode 100644 app/src/main/res/anim/slide_down.xml create mode 100644 app/src/main/res/anim/slide_up.xml create mode 100644 app/src/main/res/drawable/ic_accessibility_service.png create mode 100644 app/src/main/res/drawable/ic_add_black_24dp.png create mode 100644 app/src/main/res/drawable/ic_add_white_48dp.png create mode 100644 app/src/main/res/drawable/ic_create_new_folder_black_48dp.png create mode 100644 app/src/main/res/drawable/ic_delete_black_48dp.png create mode 100644 app/src/main/res/drawable/ic_delete_forever_black_48dp.png create mode 100644 app/src/main/res/drawable/ic_delete_forever_green_48dp.png create mode 100644 app/src/main/res/drawable/ic_delete_green_48dp.png create mode 100644 app/src/main/res/drawable/ic_edit_gray_48dp.png create mode 100644 app/src/main/res/drawable/ic_edit_green_48dp.png create mode 100644 app/src/main/res/drawable/ic_play_circle_filled_black_48dp.png create mode 100644 app/src/main/res/drawable/ic_play_green.png create mode 100644 app/src/main/res/drawable/ic_rename_green.png create mode 100644 app/src/main/res/drawable/ic_shortcut_green.png create mode 100644 app/src/main/res/drawable/navigation_show_more_vertical_512.png create mode 100644 app/src/main/res/drawable/pencil_and_paper.png create mode 100644 app/src/main/res/drawable/play_blue.png create mode 100644 app/src/main/res/drawable/popup_menu_background.xml create mode 100644 app/src/main/res/drawable/rename.png create mode 100644 app/src/main/res/drawable/robot_head.png create mode 100644 app/src/main/res/drawable/robot_head_green.png create mode 100644 app/src/main/res/drawable/robot_icon_green.png create mode 100644 app/src/main/res/drawable/run.png create mode 100644 app/src/main/res/drawable/script_droid.png create mode 100644 app/src/main/res/drawable/script_droid_100.png create mode 100644 app/src/main/res/drawable/script_droid_50.png create mode 100644 app/src/main/res/drawable/sdcard_icon_black.png create mode 100644 app/src/main/res/drawable/shortcut_icon.png create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/content_main.xml create mode 100644 app/src/main/res/layout/script_file_operation_popup_menu_content.xml create mode 100644 app/src/main/res/layout/script_file_operation_popup_menu_item.xml create mode 100644 app/src/main/res/layout/script_list_recycler_view_item.xml create mode 100644 app/src/main/res/layout/sliding_up_panel.xml create mode 100644 app/src/main/res/menu/menu_main.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-v21/styles.xml create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/attrs.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/xml/accessibility_service_config.xml create mode 100644 app/src/main/res/xml/provider_paths.xml create mode 100644 app/src/test/java/com/stardust/scriptdroid/ExampleUnitTest.java 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/.gitignore b/.gitignore new file mode 100644 index 00000000..39fb081a --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..96cc43ef --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 00000000..e7bedf33 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 00000000..97626ba4 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..7ac24c77 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..65f3da7d --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..3b312839 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..8cdb7ebe --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..24411114 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 00000000..7f68460d --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 00000000..acf4a50f --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,43 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 25 + buildToolsVersion "25.0.2" + defaultConfig { + applicationId "com.stardust.scriptdroid" + minSdkVersion 24 + //由于不知道在API24以上如何调起其他文件编辑器应用编辑文件,只能改到API23。FileProvider貌似只能查看编辑后不能保存? + //参照ScriptFileOperation.Edit + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + jackOptions { + enabled true + } + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + encoding = 'utf-8' + } +} + +dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:25.0.0' + compile 'com.android.support:design:25.0.0' + testCompile 'junit:junit:4.12' + compile 'com.afollestad.material-dialogs:core:0.9.2.3' + compile 'com.google.code.gson:gson:2.8.0' + compile 'com.sothree.slidinguppanel:library:3.3.1' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 00000000..fba55431 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in E:\YiBin\eclipse\Android_SDK_windows/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/androidTest/java/com/stardust/scriptdroid/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/stardust/scriptdroid/ExampleInstrumentedTest.java new file mode 100644 index 00000000..11c68b43 --- /dev/null +++ b/app/src/androidTest/java/com/stardust/scriptdroid/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.stardust.scriptdroid; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.stardust.scriptdroid", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..2be358e3 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/stardust/scriptdroid/BaseActivity.java b/app/src/main/java/com/stardust/scriptdroid/BaseActivity.java new file mode 100644 index 00000000..cef1e52b --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/BaseActivity.java @@ -0,0 +1,32 @@ +package com.stardust.scriptdroid; + +import android.os.Build; +import android.support.v7.app.AppCompatActivity; +import android.view.View; + +import java.util.stream.Stream; + +import static android.content.pm.PackageManager.PERMISSION_DENIED; + +/** + * Created by Stardust on 2017/1/23. + */ + +public class BaseActivity extends AppCompatActivity { + + + @SuppressWarnings("unchecked") + public T $(int resId) { + return (T) findViewById(resId); + } + + protected void checkPermission(String... permissions) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + String[] requestPermissions = Stream.of(permissions).filter(permission -> checkSelfPermission(permission) == PERMISSION_DENIED).toArray(String[]::new); + + if (requestPermissions.length > 0) + requestPermissions(requestPermissions, 0); + } + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/MainActivity.java new file mode 100644 index 00000000..29714dc3 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/MainActivity.java @@ -0,0 +1,162 @@ +package com.stardust.scriptdroid; + +import android.content.Intent; +import android.os.Bundle; +import android.support.design.widget.Snackbar; +import android.support.v7.widget.Toolbar; +import android.text.InputType; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.stardust.scriptdroid.action.ActionPerformService; +import com.stardust.scriptdroid.data.ScriptFile; +import com.stardust.scriptdroid.data.ScriptFileList; +import com.stardust.scriptdroid.data.SharedPrefScriptFileList; +import com.stardust.scriptdroid.file.FileChooser; +import com.stardust.scriptdroid.file.FileUtils; +import com.stardust.scriptdroid.ui.ScriptFileOperation; +import com.stardust.scriptdroid.ui.ScriptListRecyclerView; +import com.stardust.scriptdroid.ui.SlidingUpPanel; +import com.stardust.util.MapEntries; + +import java.util.Map; +import java.util.Optional; + + +public class MainActivity extends BaseActivity { + + private View mView; + private SlidingUpPanel mSlidingUpPanel; + private ScriptListRecyclerView mScriptListRecyclerView; + private ScriptFileList mScriptFileList; + private FileChooser mFileChooser; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setUpUI(); + + setUpFileChooser(); + + checkPermissions(); + } + + private void checkPermissions() { + //checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE); + ActionPerformService.goToPermissionSettingIfDisabled(this); + } + + + private void setUpFileChooser() { + mFileChooser = new FileChooser(this); + mFileChooser.setOnFileChoseListener(inputStream -> Optional.ofNullable(FileUtils.getPath(inputStream)).ifPresent(this::addScriptFile)); + } + + private void addScriptFile(final String path) { + new MaterialDialog.Builder(this).title(R.string.text_name) + .inputType(InputType.TYPE_CLASS_TEXT) + .input(getString(R.string.text_please_input_name), "", (dialog, input) -> addScriptFile(input.toString(), path)).show(); + } + + private void addScriptFile(String name, String path) { + mScriptFileList.add(new ScriptFile(name, path)); + mScriptListRecyclerView.getAdapter().notifyItemInserted(mScriptFileList.size() - 1); + } + + + private void setUpUI() { + mView = View.inflate(this, R.layout.activity_main, null); + setContentView(mView); + mSlidingUpPanel = $(R.id.bottom_menu); + + setUpToolbar(); + setUpScriptList(); + setUpListener(); + } + + private void setUpToolbar() { + Toolbar toolbar = $(R.id.toolbar); + setSupportActionBar(toolbar); + toolbar.setNavigationIcon(R.drawable.script_droid_50); + toolbar.setTitle(R.string.app_name); + } + + private void setUpScriptList() { + mScriptListRecyclerView = $(R.id.script_list); + mScriptFileList = new SharedPrefScriptFileList(this); + mScriptListRecyclerView.setScriptFileList(mScriptFileList); + } + + private void setUpListener() { + $(R.id.fab).setOnClickListener(view -> mSlidingUpPanel.show()); + $(R.id.import_from_file).setOnClickListener(v -> showFileChooser()); + $(R.id.create_new_file).setOnClickListener(v -> createScriptFile()); + } + + private void createScriptFile() { + new MaterialDialog.Builder(this).title(R.string.text_name) + .inputType(InputType.TYPE_CLASS_TEXT) + .input(getString(R.string.text_please_input_name), "", (dialog, input) -> { + String path = ScriptFile.DEFAULT_FOLDER + input + ".text"; + createScriptFile(input.toString(), path); + }).show(); + } + + private void createScriptFile(String name, String path) { + if (FileUtils.createFileIfNotExists(path)) { + addScriptFile(name, path); + new ScriptFileOperation.Edit().operate(mScriptListRecyclerView, mScriptFileList, mScriptFileList.size() - 1); + } else { + Snackbar.make(mView, R.string.text_file_create_fail, Snackbar.LENGTH_LONG).show(); + } + } + + private void showFileChooser() { + mFileChooser.startFileManagerToChoose("*/*", (exception, mimeType) -> { + exception.printStackTrace(); + Snackbar.make(mView, R.string.text_file_manager_not_found, Snackbar.LENGTH_SHORT).show(); + }); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.menu_main, menu); + return true; + } + + + private final Map mOptionActionMap = new MapEntries() + .entry(R.id.action_exit, this::finish) + .entry(R.id.action_disable_service, this::disableAccessibilityService) + .entry(R.id.action_settings, () -> ActionPerformService.setActions(ActionPerformService.NO_ACTION)) + .map(); + + + private void startSettingActivity() { + //TODO create Setting Activity + startActivity(new Intent(this, MainActivity.class)); + } + + private void disableAccessibilityService() { + Optional.ofNullable(ActionPerformService.getInstance()).ifPresent(ActionPerformService::disableSelf); + Snackbar.make(mView, R.string.text_service_disabled, Snackbar.LENGTH_SHORT).show(); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + Runnable action = mOptionActionMap.get(item.getItemId()); + if (action != null) { + action.run(); + return true; + } else { + return super.onOptionsItemSelected(item); + } + } + + public void onActivityResult(int requestCode, int resultCode, Intent data) { + mFileChooser.onActivityResult(requestCode, resultCode, data); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/stardust/scriptdroid/ShortcutActivity.java b/app/src/main/java/com/stardust/scriptdroid/ShortcutActivity.java new file mode 100644 index 00000000..4a6bd36f --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/ShortcutActivity.java @@ -0,0 +1,89 @@ +package com.stardust.scriptdroid; + +import android.app.Activity; +import android.os.Build; +import android.os.Bundle; +import android.text.TextUtils; +import android.widget.Toast; + +import com.stardust.scriptdroid.droid.Droid; + +import java.io.File; +import java.util.LinkedList; +import java.util.List; +import java.util.function.BooleanSupplier; + +import static android.Manifest.permission.READ_EXTERNAL_STORAGE; +import static android.content.pm.PackageManager.PERMISSION_GRANTED; + +/** + * Created by Stardust on 2017/1/23. + */ +public class ShortcutActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final String path = getIntent().getStringExtra("path"); + if (!ensure(() -> !TextUtils.isEmpty(path), R.string.text_path_is_empty)) + return; + final File scriptFile = new File(path); + new Domino() + .then(() -> ensure(scriptFile::exists, R.string.text_file_not_exists)) + .then(() -> ensure(this::hasStorageReadPermission, R.string.text_no_file_rw_permission)) + .then(() -> { + runScriptFile(path); + return true; + }) + .fall(); + } + + private void runScriptFile(String path) { + try { + Droid.run(this, new File(path)); + } catch (Exception e) { + e.printStackTrace(); + Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); + } + } + + private boolean ensure(BooleanSupplier bool, String message) { + boolean b = bool.getAsBoolean(); + if (!b) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + return b; + } + + private boolean ensure(BooleanSupplier bool, int resId) { + return ensure(bool, getString(resId)); + } + + private boolean hasStorageReadPermission() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && + checkSelfPermission(READ_EXTERNAL_STORAGE) == PERMISSION_GRANTED; + } + + @FunctionalInterface + interface Tile { + boolean fall(); + } + + public static class Domino { + + private List mTiles = new LinkedList<>(); + + Domino then(Tile next) { + mTiles.add(next); + return this; + } + + void fall() { + for (Tile tile : mTiles) { + if (!tile.fall()) + break; + } + } + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/action/Action.java b/app/src/main/java/com/stardust/scriptdroid/action/Action.java new file mode 100644 index 00000000..a2cfc429 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/action/Action.java @@ -0,0 +1,466 @@ +package com.stardust.scriptdroid.action; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Rect; +import android.os.Build; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.RequiresApi; +import android.util.SparseArray; +import android.view.accessibility.AccessibilityNodeInfo; + +import java.lang.ref.WeakReference; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_FOCUS; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_SCROLL_FORWARD; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_SET_TEXT; + +/** + * Created by Stardust on 2017/1/21. + */ + +public abstract class Action { + + private static WeakReference mContext; + + public static void setActionContext(Context context) { + mContext = new WeakReference<>(context); + } + + public abstract boolean perform(AccessibilityNodeInfo rootNodeInfo); + + interface TargetFilter { + AccessibilityNodeInfo findTarget(AccessibilityNodeInfo nodeInfo); + } + + public static class MultiAction extends Action { + + private List mActions; + private boolean mDependent; + + public MultiAction(List actions, boolean dependent) { + if (actions == null) + throw new NullPointerException("actions = null"); + mDependent = dependent; + mActions = actions; + } + + @Override + public boolean perform(AccessibilityNodeInfo rootNodeInfo) { + boolean succeed = true; + for (Action action : mActions) { + if (!action.perform(rootNodeInfo)) { + succeed = false; + if (!mDependent) + break; + } + } + return succeed; + } + } + + public static abstract class TargetAction extends Action { + + static final int TYPE_ID = 1; + static final int TYPE_TEXT = 2; + static final int TYPE_BOUNDS = 3; + static final int TYPE_DESCRIPTION = 4; + + private int mType; + private String mString; + private Rect mBoundsInScreen; + + private TargetAction(String str, int type) { + if (str == null) + throw new NullPointerException("str == null"); + if (type != TYPE_TEXT && type != TYPE_ID && type != TYPE_DESCRIPTION) + throw new IllegalArgumentException("type illegal"); + mString = str; + mType = type; + } + + private TargetAction(Rect boundsInScreen) { + mType = TYPE_BOUNDS; + mBoundsInScreen = boundsInScreen; + } + + @Override + public boolean perform(AccessibilityNodeInfo rootNodeInfo) { + List target = null; + switch (mType) { + case TYPE_TEXT: + target = rootNodeInfo.findAccessibilityNodeInfosByText(mString); + break; + case TYPE_ID: + target = rootNodeInfo.findAccessibilityNodeInfosByViewId(mString); + break; + case TYPE_BOUNDS: + AccessibilityNodeInfo nodeInfo = findAccessibilityNodeInfosByBounds(rootNodeInfo, mBoundsInScreen); + target = nodeInfo == null ? Collections.EMPTY_LIST : Collections.singletonList(nodeInfo); + break; + case TYPE_DESCRIPTION: + target = findAccessibilityNodeInfosByDescription(rootNodeInfo, mString); + } + return target != null && perform(target); + } + + + private List findAccessibilityNodeInfosByDescription(AccessibilityNodeInfo rootNodeInfo, String description) { + if (description.startsWith("edittext") && !description.equals("edittext")) { + int i = Integer.parseInt(description.substring(8)); + return Collections.singletonList(findEditText(rootNodeInfo).get(i)); + } + if (description.equals("edittext")) { + return findEditText(rootNodeInfo); + } + return null; + } + + private List findEditText(AccessibilityNodeInfo rootNodeInfo) { + if (rootNodeInfo == null) { + return Collections.EMPTY_LIST; + } + if (rootNodeInfo.isEditable()) { + return Collections.singletonList(rootNodeInfo); + } + List list = new LinkedList<>(); + for (int i = 0; i < rootNodeInfo.getChildCount(); i++) { + list.addAll(findEditText(rootNodeInfo.getChild(i))); + } + return list; + } + + //(882, 1722 - 1036, 1876) + private AccessibilityNodeInfo findAccessibilityNodeInfosByBounds(AccessibilityNodeInfo root, Rect boundsInScreen) { + if (root == null) + return null; + Rect rect = new Rect(); + root.getBoundsInScreen(rect); + if (rect.equals(boundsInScreen)) { + return root; + } + for (int i = 0; i < root.getChildCount(); i++) { + AccessibilityNodeInfo child = root.getChild(i); + if (child == null) + continue; + AccessibilityNodeInfo nodeInfo = findAccessibilityNodeInfosByBounds(child, boundsInScreen); + if (nodeInfo != null) + return nodeInfo; + else + child.recycle(); + } + return null; + } + + abstract boolean perform(@NonNull List nodeInfoList); + } + + public static class SimpleAction extends TargetAction { + + private int mAction; + + SimpleAction(int action, String str, int type) { + super(str, type); + mAction = action; + } + + SimpleAction(int action, Rect boundsInScreen) { + super(boundsInScreen); + mAction = action; + } + + @Override + boolean perform(@NonNull List nodeInfoList) { + for (AccessibilityNodeInfo nodeInfo : nodeInfoList) { + performAction(nodeInfo); + } + return true; + } + + boolean performAction(AccessibilityNodeInfo nodeInfo) { + return nodeInfo.performAction(mAction); + } + + void setAction(int action) { + mAction = action; + } + + int getAction() { + return mAction; + } + } + + public static class SimpleFilterAction extends SimpleAction { + + private TargetFilter mFilter; + + SimpleFilterAction(int action, String str, int type, TargetFilter filter) { + super(action, str, type); + mFilter = filter; + } + + SimpleFilterAction(int action, Rect boundsInScreen, TargetFilter filter) { + super(action, boundsInScreen); + mFilter = filter; + } + + @Override + boolean perform(@NonNull List nodeInfoList) { + boolean performed = false; + for (AccessibilityNodeInfo node : nodeInfoList) { + node = mFilter.findTarget(node); + if (node != null) { + performAction(node); + performed = true; + } + } + return performed; + } + + } + + interface Able { + boolean isAble(AccessibilityNodeInfo node); + } + + private static final SparseArray ACTION_ABLE_MAP = new SparseArray<>(); + + static { + ACTION_ABLE_MAP.put(ACTION_CLICK, new Able() { + @Override + public boolean isAble(AccessibilityNodeInfo node) { + return node.isClickable(); + } + }); + ACTION_ABLE_MAP.put(ACTION_LONG_CLICK, new Able() { + @Override + public boolean isAble(AccessibilityNodeInfo node) { + return node.isLongClickable(); + } + }); + ACTION_ABLE_MAP.put(ACTION_FOCUS, new Able() { + @Override + public boolean isAble(AccessibilityNodeInfo node) { + return node.isFocusable(); + } + }); + ACTION_ABLE_MAP.put(ACTION_SCROLL_FORWARD, new Able() { + @Override + public boolean isAble(AccessibilityNodeInfo node) { + return node.isScrollable(); + } + }); + ACTION_ABLE_MAP.put(ACTION_SCROLL_BACKWARD, new Able() { + @Override + public boolean isAble(AccessibilityNodeInfo node) { + return node.isScrollable(); + } + }); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + ACTION_ABLE_MAP.put(ACTION_SET_TEXT, new Able() { + @Override + public boolean isAble(AccessibilityNodeInfo node) { + return node.isEditable(); + } + }); + } + } + + + public static class FindDownwardlyDfsFilterAction extends SimpleFilterAction { + + public static FindDownwardlyDfsFilterAction createActionByBounds(int action, Rect boundInScreen) { + Able able = ACTION_ABLE_MAP.get(action); + return new FindDownwardlyDfsFilterAction(action, boundInScreen, able); + } + + FindDownwardlyDfsFilterAction(int action, Rect boundInScreen, Able able) { + super(action, boundInScreen, new FindDownwardlyDfsTargetFilter(able)); + } + + FindDownwardlyDfsFilterAction(int action, String str, int type, Able able) { + super(action, str, type, new FindDownwardlyDfsTargetFilter(able)); + } + + + private static class FindDownwardlyDfsTargetFilter implements TargetFilter { + Able mAble; + + FindDownwardlyDfsTargetFilter(Able able) { + mAble = able; + } + + @Override + public AccessibilityNodeInfo findTarget(AccessibilityNodeInfo n) { + if (n == null) + return null; + if (mAble.isAble(n)) + return n; + for (int i = 0; i < n.getChildCount(); i++) { + AccessibilityNodeInfo child = n.getChild(i); + if (child == null) + continue; + AccessibilityNodeInfo node = findTarget(child); + if (node != null) + return node; + else + child.recycle(); + } + return null; + } + } + + } + + public static class FindUpwardlyFilterAction extends SimpleFilterAction { + + + public static FindUpwardlyFilterAction createActionById(int action, String id) { + return createActionInner(action, id, TYPE_ID); + } + + public static FindUpwardlyFilterAction createActionByText(int action, String text) { + return createActionInner(action, text, TYPE_TEXT); + } + + public static Action createActionByDescription(int action, String description) { + return createActionInner(action, description, TYPE_DESCRIPTION); + } + + private static FindUpwardlyFilterAction createActionInner(int action, String str, int type) { + Able able = ACTION_ABLE_MAP.get(action); + return new FindUpwardlyFilterAction(action, str, type, able); + } + + private static class FindUpwardlyTargetFilter implements TargetFilter { + Able mAble; + + FindUpwardlyTargetFilter(Able able) { + mAble = able; + } + + @Override + public AccessibilityNodeInfo findTarget(AccessibilityNodeInfo n) { + AccessibilityNodeInfo node = n; + while (node != null && !mAble.isAble(node)) { + AccessibilityNodeInfo parent = node.getParent(); + if (node != n) { + node.recycle(); + } + node = parent; + } + return node; + } + } + + FindUpwardlyFilterAction(int action, String str, int type, Able able) { + super(action, str, type, new FindUpwardlyTargetFilter(able)); + } + + FindUpwardlyFilterAction(int action, Rect boundsInScreen, Able able) { + super(action, boundsInScreen, new FindUpwardlyTargetFilter(able)); + } + } + + public static class ScrollAction extends Action { + + public static final int SCROLL_FORWARD = AccessibilityNodeInfo.ACTION_SCROLL_FORWARD; + public static final int SCROLL_BACKWARD = AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD; + + private int mScrollAction; + private int mTimes; + + public ScrollAction(int scrollAction) { + this(scrollAction, 1); + } + + public ScrollAction(int scrollAction, int times) { + if (scrollAction != SCROLL_BACKWARD && scrollAction != SCROLL_FORWARD) + throw new IllegalArgumentException("scrollAction illegal"); + mScrollAction = scrollAction; + mTimes = times; + } + + @Override + public boolean perform(AccessibilityNodeInfo rootNodeInfo) { + AccessibilityNodeInfo scrollableNodeInfo = findScrollableNodeInfo(rootNodeInfo); + if (scrollableNodeInfo == null) { + return false; + } else { + for (int i = 0; i < mTimes; i++) { + scrollableNodeInfo.performAction(mScrollAction); + } + return true; + } + } + + private AccessibilityNodeInfo findScrollableNodeInfo(AccessibilityNodeInfo nodeInfo) { + if (nodeInfo == null) + return null; + if (nodeInfo.isScrollable()) { + return nodeInfo; + } + for (int i = 0; i < nodeInfo.getChildCount(); i++) { + AccessibilityNodeInfo node = findScrollableNodeInfo(nodeInfo.getChild(i)); + if (node != null) { + return node; + } + } + return null; + } + + } + + public static class IntentAction extends Action { + + private final Intent mIntent; + + public IntentAction(Intent intent) { + mIntent = intent; + } + + @Override + public boolean perform(AccessibilityNodeInfo rootNodeInfo) { + if (mContext == null || mContext.get() == null) + return false; + mContext.get().startActivity(mIntent); + return true; + } + + public Intent getIntent() { + return mIntent; + } + } + + + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + public static class InputAction extends FindUpwardlyFilterAction { + + private static final Able EDITABLE = new Able() { + @Override + public boolean isAble(AccessibilityNodeInfo node) { + return node.isEditable(); + } + }; + private String mText; + + public InputAction(String description, String text) { + super(ACTION_SET_TEXT, description, TYPE_DESCRIPTION, EDITABLE); + mText = text; + } + + boolean performAction(AccessibilityNodeInfo nodeInfo) { + Bundle arg = new Bundle(); + arg.putCharSequence(ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, mText); + return nodeInfo.performAction(ACTION_SET_TEXT, arg); + } + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/action/ActionPerformService.java b/app/src/main/java/com/stardust/scriptdroid/action/ActionPerformService.java new file mode 100644 index 00000000..c851a2fb --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/action/ActionPerformService.java @@ -0,0 +1,184 @@ +package com.stardust.scriptdroid.action; + +import android.accessibilityservice.AccessibilityService; +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.graphics.Rect; +import android.provider.Settings; +import android.text.TextUtils; +import android.util.Log; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityNodeInfo; +import android.widget.Toast; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.stardust.scriptdroid.R; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + + +/** + * Created by Stardust on 2017/1/21. + */ + +public class ActionPerformService extends AccessibilityService { + + private static final String TAG = "SettingRunningServiceSS"; + private static ActionPerformService instance; + + public static void goToPermissionSettingIfDisabled(final Context context) { + if (!isAccessibilityServiceEnabled(context, ActionPerformService.class)) { + new MaterialDialog.Builder(context) + .content(R.string.explain_accessibility_permission) + .positiveText(R.string.text_go_to_setting) + .negativeText(R.string.text_cancel) + .onPositive((dialog, which) -> context.startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS))).show(); + } + } + + public static boolean isAccessibilityServiceEnabled(Context context, Class accessibilityService) { + ComponentName expectedComponentName = new ComponentName(context, accessibilityService); + + String enabledServicesSetting = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES); + if (enabledServicesSetting == null) + return false; + + TextUtils.SimpleStringSplitter colonSplitter = new TextUtils.SimpleStringSplitter(':'); + colonSplitter.setString(enabledServicesSetting); + + while (colonSplitter.hasNext()) { + String componentNameString = colonSplitter.next(); + ComponentName enabledService = ComponentName.unflattenFromString(componentNameString); + + if (enabledService != null && enabledService.equals(expectedComponentName)) + return true; + } + + return false; + } + + public static final int STATE_WAIT = 0; + @SuppressWarnings("unchecked") + public static final List NO_ACTION = Collections.EMPTY_LIST; + + public static final List actions = new ArrayList<>(); + private static int state = STATE_WAIT; + + public static boolean assistModeEnable = true; + private AccessibilityNodeInfo mLastFocus; + + public static void setActions(Collection collection) { + synchronized (actions) { + actions.clear(); + actions.addAll(collection); + state = STATE_WAIT; + } + } + + public static ActionPerformService getInstance() { + return instance; + } + + @Override + public void onAccessibilityEvent(AccessibilityEvent event) { + Log.v(TAG, "event type=" + event.getEventType()); + AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); + performAssistance(event, event.getSource()); + Log.v(TAG, "rootInActiveWindow = " + nodeInfo); + if (nodeInfo == null) + return; + Log.v(TAG, "state = " + state); + Action action = nextAction(); + if (action == null) { + reset(); + } else if (action.perform(nodeInfo)) { + state++; + } + } + + private void performAssistance(AccessibilityEvent event, AccessibilityNodeInfo nodeInfo) { + if (!assistModeEnable || nodeInfo == null) + return; + if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED || event.getEventType() == AccessibilityEvent.TYPE_VIEW_LONG_CLICKED) { + nodeInfo.refresh(); + Log.v(TAG, "click: " + nodeInfo); + Rect rect = new Rect(); + nodeInfo.getBoundsInScreen(rect); + String str = rect.toString().replace('-', ',').replace(" ", ""); + ClipboardManager manager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); + manager.setPrimaryClip(ClipData.newPlainText("", str)); + Toast.makeText(this, "id=" + nodeInfo.getViewIdResourceName() + " bounds=" + str, Toast.LENGTH_SHORT).show(); + } + } + + private int[] findAddress(AccessibilityNodeInfo nodeInfo) { + List address = new ArrayList<>(); + AccessibilityNodeInfo lastNodeInfo = null; + while (nodeInfo.getParent() != null) { + address.add(findPositionInParent(nodeInfo)); + if (lastNodeInfo != null) + lastNodeInfo.recycle(); + lastNodeInfo = nodeInfo; + nodeInfo = nodeInfo.getParent(); + } + int[] array = new int[address.size()]; + for (int i = 0; i < address.size(); i++) { + array[i] = address.get(address.size() - i - 1); + } + return array; + } + + + + private int findPositionInParent(AccessibilityNodeInfo nodeInfo) { + AccessibilityNodeInfo parent = nodeInfo.getParent(); + for (int i = 0; i < parent.getChildCount(); i++) { + AccessibilityNodeInfo child = parent.getChild(i); + if (child != null && child.equals(nodeInfo)) { + parent.recycle(); + child.recycle(); + return i; + } + if (child != null) { + child.recycle(); + } + } + parent.recycle(); + return -1; + } + + private void reset() { + state = STATE_WAIT; + synchronized (actions) { + actions.clear(); + } + } + + private Action nextAction() { + synchronized (actions) { + if (state >= actions.size()) { + return null; + } + return actions.get(state); + } + } + + @Override + public void onInterrupt() { + + } + + @Override + public void onServiceConnected() { + Log.v(TAG, "onServiceConnected"); + Action.setActionContext(this); + instance = this; + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/data/ScriptFile.java b/app/src/main/java/com/stardust/scriptdroid/data/ScriptFile.java new file mode 100644 index 00000000..ef49ddde --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/data/ScriptFile.java @@ -0,0 +1,52 @@ +package com.stardust.scriptdroid.data; + +import android.content.Context; +import android.os.Environment; + +import com.stardust.scriptdroid.action.Action; +import com.stardust.scriptdroid.action.ActionPerformService; +import com.stardust.scriptdroid.droid.Interpreter; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Stardust on 2017/1/23. + */ + +public class ScriptFile { + + public static final String DEFAULT_FOLDER = Environment.getExternalStorageDirectory() + "/脚本/"; + public String name; + + public String path; + + public ScriptFile(String name, String path) { + this.name = name; + this.path = path; + } + + public void run(Context context) { + Interpreter interpreter = new Interpreter(context); + + try (BufferedReader reader = new BufferedReader(new FileReader(path))) { + List actions = new ArrayList<>(); + String line = reader.readLine(); + while (line != null) { + actions.add(interpreter.interpreter(line)); + line = reader.readLine(); + } + ActionPerformService.setActions(actions); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public File toFile() { + return new File(path); + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/data/ScriptFileList.java b/app/src/main/java/com/stardust/scriptdroid/data/ScriptFileList.java new file mode 100644 index 00000000..6cc46d75 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/data/ScriptFileList.java @@ -0,0 +1,28 @@ +package com.stardust.scriptdroid.data; + +import java.io.File; + +/** + * Created by Stardust on 2017/1/23. + */ + +public abstract class ScriptFileList { + + public abstract void add(ScriptFile scriptFile); + + public abstract ScriptFile get(int i); + + public abstract void remove(int i); + + public abstract void rename(int position, String newName); + + public abstract int size(); + + public boolean deleteFromFileSystem(int i) { + File file = new File(get(i).path); + remove(i); + return file.delete(); + } + + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/data/SharedPrefScriptFileList.java b/app/src/main/java/com/stardust/scriptdroid/data/SharedPrefScriptFileList.java new file mode 100644 index 00000000..694b43eb --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/data/SharedPrefScriptFileList.java @@ -0,0 +1,86 @@ +package com.stardust.scriptdroid.data; + +import android.content.Context; +import android.content.SharedPreferences; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Stardust on 2017/1/23. + */ + +public class SharedPrefScriptFileList extends ScriptFileList { + + private static final Gson GSON = new Gson(); + + private static final String SP_KEY_SCRIPT_NAME = "script_name"; + private static final String SP_KEY_SCRIPT_PATH = "script_path"; + + private SharedPreferences mSharedPreferences; + private List mScriptPath; + private List mScriptName; + + + public SharedPrefScriptFileList(Context context) { + mSharedPreferences = context.getSharedPreferences("SharedPrefScriptFileList", Context.MODE_PRIVATE); + readFromSharedPref(); + } + + private void readFromSharedPref() { + Type type = new TypeToken>() { + }.getType(); + mScriptName = GSON.fromJson(mSharedPreferences.getString(SP_KEY_SCRIPT_NAME, ""), type); + mScriptPath = GSON.fromJson(mSharedPreferences.getString(SP_KEY_SCRIPT_PATH, ""), type); + if (mScriptName == null || mScriptPath == null || mScriptName.size() != mScriptPath.size()) { + reset(); + } + } + + private void reset() { + mScriptName = new ArrayList<>(); + mScriptPath = new ArrayList<>(); + syncWithSharedPref(); + } + + @Override + public void add(ScriptFile scriptFile) { + mScriptName.add(scriptFile.name); + mScriptPath.add(scriptFile.path); + syncWithSharedPref(); + } + + @Override + public ScriptFile get(int i) { + return new ScriptFile(mScriptName.get(i), mScriptPath.get(i)); + } + + @Override + public void remove(int i) { + mScriptName.remove(i); + mScriptPath.remove(i); + syncWithSharedPref(); + } + + @Override + public void rename(int position, String newName) { + mScriptName.set(position, newName); + syncWithSharedPref(); + } + + @Override + public int size() { + return mScriptPath.size(); + } + + protected void syncWithSharedPref() { + SharedPreferences.Editor editor = mSharedPreferences.edit(); + editor.putString(SP_KEY_SCRIPT_NAME, GSON.toJson(mScriptName)); + editor.putString(SP_KEY_SCRIPT_PATH, GSON.toJson(mScriptPath)); + editor.apply(); + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/droid/Droid.java b/app/src/main/java/com/stardust/scriptdroid/droid/Droid.java new file mode 100644 index 00000000..8b9dbfad --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/droid/Droid.java @@ -0,0 +1,29 @@ +package com.stardust.scriptdroid.droid; + +import android.content.Context; + +import com.stardust.scriptdroid.action.ActionPerformService; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * Created by Stardust on 2017/1/23. + */ + +public class Droid { + + public static void run(Context context, File file) { + Interpreter interpreter = new Interpreter(context); + try (FileInputStream fis = new FileInputStream(file)) { + byte[] bytes = new byte[fis.available()]; + fis.read(bytes); + fis.close(); + String str = new String(bytes); + ActionPerformService.setActions(interpreter.interpreterAll(str)); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/droid/Interpreter.java b/app/src/main/java/com/stardust/scriptdroid/droid/Interpreter.java new file mode 100644 index 00000000..09466c8f --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/droid/Interpreter.java @@ -0,0 +1,210 @@ +package com.stardust.scriptdroid.droid; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.graphics.Rect; +import android.os.Build; +import android.util.Pair; + +import com.stardust.scriptdroid.action.Action; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Stream; + +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_FOCUS; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_SCROLL_FORWARD; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_SELECT; + +/** + * Created by Stardust on 2017/1/21. + */ + +public class Interpreter { + + interface Filter { + boolean filter(String str); + } + + private static final Filter FILTER_STRING = new Filter() { + @Override + public boolean filter(String str) { + return str.startsWith("\"") && str.endsWith("\""); + } + }; + + + private static final Filter FILTER_ADDRESS = (str) -> str.startsWith("(") && str.endsWith(")"); + + private static final Filter FILTER_DESCRIPTION = new Filter() { + @Override + public boolean filter(String str) { + return str.startsWith("[") && str.endsWith("]"); + } + }; + + private static final Filter FILTER_ANY = new Filter() { + @Override + public boolean filter(String str) { + return true; + } + }; + + private static class StateTree { + + private List> mChildren = new LinkedList<>(); + + StateTree child(final String str, StateTree child) { + return child(new Filter() { + @Override + public boolean filter(String s) { + return str.equals(s); + } + }, child); + } + + StateTree child(Filter filter, StateTree child) { + mChildren.add(new Pair<>(filter, child)); + return this; + } + + StateLeaf match(String[] command, int startIndex) { + for (Pair child : mChildren) { + if (child.first.filter(command[startIndex])) { + return child.second.match(command, startIndex + 1); + } + } + return null; + } + + public StateTree child(String command, final int action) { + return child(command, new StateTree() + .child(FILTER_STRING, new StateLeaf() { + @Override + Action handle(String[] command) { + return Action.FindUpwardlyFilterAction.createActionByText(action, StringTool.removeDoubleQuotes(command[1])); + } + }) + .child(FILTER_DESCRIPTION, new StateLeaf() { + @Override + Action handle(String[] command) { + return Action.FindUpwardlyFilterAction.createActionByDescription(action, StringTool.removeDoubleQuotes(command[1])); + } + }) + .child(FILTER_ADDRESS, new StateLeaf() { + @Override + Action handle(String[] command) { + String[] intStrings = StringTool.removeDoubleQuotes(command[1]).split(","); + int[] bounds = Stream.of(intStrings).mapToInt(Integer::parseInt).toArray(); + Rect rect = new Rect(bounds[0], bounds[1], bounds[2], bounds[3]); + return Action.FindDownwardlyDfsFilterAction.createActionByBounds(action, rect); + } + }) + .child(FILTER_ANY, new StateLeaf() { + @Override + Action handle(String[] command) { + return Action.FindUpwardlyFilterAction.createActionById(action, StringTool.removeDoubleQuotes(command[1])); + } + })); + } + } + + private abstract static class StateLeaf extends StateTree { + + abstract Action handle(String[] command); + + StateLeaf match(String[] command, int startIndex) { + return this; + } + } + + private Context mContext; + + private StateTree stateTree = new StateTree() + .child("click", ACTION_CLICK) + .child("longclick", ACTION_LONG_CLICK) + .child("focus", ACTION_FOCUS) + .child("select", ACTION_SELECT) + .child("forward", ACTION_SCROLL_FORWARD) + .child("backward", ACTION_SCROLL_BACKWARD) + .child("scrollup", new StateLeaf() { + @Override + Action handle(String[] command) { + return new Action.ScrollAction(Action.ScrollAction.SCROLL_BACKWARD); + } + }).child("scrolldown", new StateLeaf() { + @Override + Action handle(String[] command) { + return new Action.ScrollAction(Action.ScrollAction.SCROLL_FORWARD); + } + }).child("input", new StateTree().child(FILTER_DESCRIPTION, new StateLeaf() { + @Override + Action handle(String[] command) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return new Action.InputAction(StringTool.removeDoubleQuotes(command[1]), command[2]); + } else { + return null; + } + } + })).child("open", new StateTree() + .child(FILTER_STRING, new StateLeaf() { + @Override + Action handle(String[] command) { + String appName = StringTool.removeDoubleQuotes(command[1]); + List installedApplications = mContext.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA); + for (ApplicationInfo applicationInfo : installedApplications) { + if (mContext.getPackageManager().getApplicationLabel(applicationInfo).toString().equals(appName)) { + return new Action.IntentAction(mContext.getPackageManager().getLaunchIntentForPackage(applicationInfo.packageName)); + } + } + return null; + } + }).child(FILTER_ANY, new StateLeaf() { + @Override + Action handle(String[] command) { + return new Action.IntentAction(mContext.getPackageManager().getLaunchIntentForPackage(command[1])); + } + })); + + + public Interpreter(Context context) { + mContext = context; + } + + public Action interpreterInner(String line) { + String[] words = line.split(" "); + return stateTree.match(words, 0).handle(words); + } + + public Action interpreter(String line) { + boolean independent = true; + String[] actions = line.split("\\|"); + if (actions.length == 1) { + actions = line.split("\\&"); + independent = false; + } + if (actions.length == 1) + return interpreterInner(line); + List list = new ArrayList<>(actions.length); + for (String action : actions) { + list.add(interpreterInner(action)); + } + return new Action.MultiAction(list, independent); + } + + + public List interpreterAll(String str) { + String[] lines = str.split("\n"); + List list = new ArrayList<>(lines.length); + for (String line : lines) { + list.add(interpreter(line)); + } + return list; + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/droid/StringTool.java b/app/src/main/java/com/stardust/scriptdroid/droid/StringTool.java new file mode 100644 index 00000000..06816efe --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/droid/StringTool.java @@ -0,0 +1,10 @@ +package com.stardust.scriptdroid.droid; + +/** + * Created by Stardust on 2017/1/22. + */ +public class StringTool { + public static String removeDoubleQuotes(String str) { + return str.substring(1, str.length() - 1); + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/droid/SyntaxDefinition.java b/app/src/main/java/com/stardust/scriptdroid/droid/SyntaxDefinition.java new file mode 100644 index 00000000..776012c8 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/droid/SyntaxDefinition.java @@ -0,0 +1,30 @@ +package com.stardust.scriptdroid.droid; + +/** + * Created by Stardust on 2017/1/21. + */ + +public class SyntaxDefinition { + + /** + * click 文本 + * 点击文本所在区域。e.g. click 朋友圈 + * click 编号 + * 点击编号对应区域 + * longclick 文本 + * + * longclick 编号 + * + * scrollup + * + * scrolldown + * + * scrollup 编号 [幅度] + * + * scrolldown 编号 [幅度] + * + * + * + */ + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/file/FileChooser.java b/app/src/main/java/com/stardust/scriptdroid/file/FileChooser.java new file mode 100644 index 00000000..87f2f570 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/file/FileChooser.java @@ -0,0 +1,65 @@ +package com.stardust.scriptdroid.file; + +import android.app.Activity; +import android.content.ActivityNotFoundException; +import android.content.ContentResolver; +import android.content.Intent; +import android.net.Uri; + +import java.io.FileNotFoundException; +import java.io.InputStream; + +import static android.app.Activity.RESULT_OK; + +/** + * Created by Stardust on 2017/1/23. + */ + +public class FileChooser { + + public interface FileManagerNotFoundHandler { + void handle(ActivityNotFoundException e, String mimeType); + } + + public interface OnFileChoseListener { + void onFileChose(InputStream inputStream); + } + + private static final int FILE_CHOOSE = 1209; + private Activity mActivity; + + private OnFileChoseListener mOnFileChoseListener; + + public FileChooser(Activity activity) { + mActivity = activity; + } + + public void setOnFileChoseListener(OnFileChoseListener onFileChoseListener) { + mOnFileChoseListener = onFileChoseListener; + } + + + public void startFileManagerToChoose(String mimeType, FileManagerNotFoundHandler handler) { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); + intent.setType(mimeType); + intent.addCategory(Intent.CATEGORY_OPENABLE); + try { + mActivity.startActivityForResult(Intent.createChooser(intent, "选择一个文件"), FILE_CHOOSE); + } catch (ActivityNotFoundException ex) { + handler.handle(ex, mimeType); + } + } + + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == FILE_CHOOSE && resultCode == RESULT_OK) { + Uri uri = data.getData(); + ContentResolver cr = mActivity.getContentResolver(); + try { + InputStream inputStream = cr.openInputStream(uri); + mOnFileChoseListener.onFileChose(inputStream); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/file/FileUtils.java b/app/src/main/java/com/stardust/scriptdroid/file/FileUtils.java new file mode 100644 index 00000000..eb396ec5 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/file/FileUtils.java @@ -0,0 +1,79 @@ +package com.stardust.scriptdroid.file; + +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.net.URISyntaxException; + +/** + * Created by Stardust on 2017/1/23. + */ + +public class FileUtils { + + public static String getPath(Context context, Uri uri) throws URISyntaxException { + if ("content".equalsIgnoreCase(uri.getScheme())) { + String[] projection = {"_data"}; + Cursor cursor = null; + + try { + cursor = context.getContentResolver().query(uri, projection, null, null, null); + int column_index = cursor.getColumnIndexOrThrow("_data"); + if (cursor.moveToFirst()) { + return cursor.getString(column_index); + } + } catch (Exception e) { + // Eat it + } + } else if ("file".equalsIgnoreCase(uri.getScheme())) { + return uri.getPath(); + } + + return null; + } + + public static String getPath(InputStream inputStream) { + if (inputStream instanceof FileInputStream) { + FileInputStream fis = (FileInputStream) inputStream; + try { + Field field = fis.getClass().getDeclaredField("path"); + field.setAccessible(true); + return (String) field.get(fis); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } + } + return null; + } + + public static boolean createFileIfNotExists(String path) { + ensureFolder(path); + File file = new File(path); + if (!file.exists()) { + try { + return file.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return false; + } + + private static boolean ensureFolder(String path) { + int i = path.lastIndexOf("\\"); + if (i < 0) + i = path.lastIndexOf("/"); + if (i >= 0) { + String folder = path.substring(i); + return new File(folder).mkdirs(); + } else { + return false; + } + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/runningservices/RunningPackageTool.java b/app/src/main/java/com/stardust/scriptdroid/runningservices/RunningPackageTool.java new file mode 100644 index 00000000..1e58da6f --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/runningservices/RunningPackageTool.java @@ -0,0 +1,78 @@ +package com.stardust.scriptdroid.runningservices; + +import android.annotation.TargetApi; +import android.app.ActivityManager; +import android.app.usage.UsageStats; +import android.app.usage.UsageStatsManager; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.provider.Settings; + +import java.util.Collections; +import java.util.List; + +/** + * Created by Stardust on 2017/1/20. + */ + +public class RunningPackageTool { + + + public static String getRunningPackage(Context context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return getRunningPackageLollipop(context); + } else { + return getRunningPackageBeforeLollipop(context); + } + + } + + private static String getRunningPackageBeforeLollipop(Context context) { + ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + @SuppressWarnings("deprecation") + ComponentName runningActivity = am.getRunningTasks(1).get(0).topActivity; + return runningActivity.getPackageName(); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + private static String getRunningPackageLollipop(Context context) { + List usageStats = getPastTwoSecondsUsageStats(context); + UsageStats latestStats = findLatestUsageStats(usageStats); + if (latestStats == null) + return null; + return latestStats.getPackageName(); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + private static void goToUsageAccessSettings(Context context) { + Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS); + context.startActivity(intent); + } + + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + private static UsageStats findLatestUsageStats(List usageStats) { + UsageStats latestStats = null; + for (UsageStats us : usageStats) { + if (latestStats == null || latestStats.getLastTimeUsed() < us.getLastTimeUsed()) { + latestStats = us; + } + } + return latestStats; + } + + + @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) + @SuppressWarnings("unchecked") + private static List getPastTwoSecondsUsageStats(Context context) { + long ts = System.currentTimeMillis(); + UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE); + List usageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, ts - 2000, ts); + if (usageStats == null) { + usageStats = Collections.EMPTY_LIST; + } + return usageStats; + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/shortcut/Shortcut.java b/app/src/main/java/com/stardust/scriptdroid/shortcut/Shortcut.java new file mode 100644 index 00000000..937cab59 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/shortcut/Shortcut.java @@ -0,0 +1,114 @@ +package com.stardust.scriptdroid.shortcut; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; + +/** + * Created by Stardust on 2017/1/20. + */ + +public class Shortcut { + + private Context mContext; + private String mName; + private String mTargetClass; + private String mTargetPackage; + private Intent.ShortcutIconResource mIcon; + private boolean mDuplicate = false; + private Intent mLaunchIntent = new Intent(); + + public Shortcut(Context context) { + mContext = context; + mTargetPackage = mContext.getPackageName(); + } + + public Shortcut(String name, Context context) { + this(context); + mName = name; + } + + public Shortcut name(String name) { + mName = name; + return this; + } + + public Shortcut targetPackage(String targetPackage) { + mTargetPackage = targetPackage; + return this; + } + + public Shortcut targetClass(String targetClass) { + mTargetClass = targetClass; + return this; + } + + public Shortcut targetClass(Class targetClass) { + mTargetClass = targetClass.getName(); + return this; + } + + + public Shortcut icon(Intent.ShortcutIconResource icon) { + mIcon = icon; + return this; + } + + public Shortcut icon(int resId) { + mIcon = Intent.ShortcutIconResource.fromContext(mContext, resId); + return this; + } + + public Shortcut duplicate(boolean duplicate) { + mDuplicate = duplicate; + return this; + } + + public String getName() { + return mName; + } + + public Intent.ShortcutIconResource getIcon() { + return mIcon; + } + + public boolean isDuplicate() { + return mDuplicate; + } + + private String getClassName() { + return mTargetClass; + } + + private String getPackageName() { + return mTargetPackage; + } + + public Intent getCreateIntent() { + return new Intent(Intent.ACTION_CREATE_SHORTCUT) + .putExtra(Intent.EXTRA_SHORTCUT_NAME, getName()) + .putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, getIcon()) + .putExtra(Intent.EXTRA_SHORTCUT_INTENT, getLaunchIntent()) + .putExtra("duplicate", isDuplicate()) + .setAction("com.android.launcher.action.INSTALL_SHORTCUT"); + } + + public Intent getLaunchIntent() { + mLaunchIntent.setClassName(getPackageName(), getClassName()); + return mLaunchIntent; + } + + public void send() { + mContext.sendBroadcast(getCreateIntent()); + } + + public Shortcut extras(Bundle bundle) { + mLaunchIntent.putExtras(bundle); + return this; + } + + public Shortcut extras(Intent intent) { + mLaunchIntent.putExtras(intent); + return this; + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/shortcut/ShortcutHelper.java b/app/src/main/java/com/stardust/scriptdroid/shortcut/ShortcutHelper.java new file mode 100644 index 00000000..e80ba7ff --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/shortcut/ShortcutHelper.java @@ -0,0 +1,418 @@ +package com.stardust.scriptdroid.shortcut; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.ProviderInfo; +import android.content.pm.ResolveInfo; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Build; +import android.os.Parcelable; +import android.text.TextUtils; +import android.util.Log; + +import com.stardust.scriptdroid.R; + +import java.util.ArrayList; +import java.util.List; + +public class ShortcutHelper { + public final static String TAG = ShortcutHelper.class.getSimpleName(); + public static final String ACTION_DESKTOP_LINK = "com.scu.zqc.action.SHORTCUT"; + public static final String READ_SETTINGS = "com.android.launcher.permission.READ_SETTINGS"; + public static final String ACTION_INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT"; + public static final String ACTION_UNINSTALL_SHORTCUT = "com.android.launcher.action.UNINSTALL_SHORTCUT"; + public static final String MAIN_ACTIVITY = "com.scu.shortcut.MainActivity"; + public static final String APP_STORE_URL = "http://m.app.so.com/?src=browser"; + public static final String EXTRA_DUPLICATE = "duplicate"; + + public static void addShortCut(final Context context, Bitmap src) { + String appStoreShortcutName = context.getString(R.string.app_name); + if (getIsAddShortCut(context, appStoreShortcutName)) { +// uninstallShortcut(context, appStoreShortcutName); + try { + int size = (int) context.getResources().getDimension(android.R.dimen.app_icon_size); + Bitmap scaledBitmap = Bitmap.createScaledBitmap(src, size, size, true); + createFavLinkShortCut(context, appStoreShortcutName, APP_STORE_URL, scaledBitmap, false, true); + } catch (Exception e) { + } + } + } + + public static boolean uninstallShortcut(Context context, String name, Intent shortCut) { + Intent intent = new Intent(ACTION_UNINSTALL_SHORTCUT); + intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortCut); + intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name); + context.sendBroadcast(intent); + return true; + } + + public static boolean createFavLinkShortCut(Context context, String name, String url, Parcelable icon, + boolean isSendToQihooDesktop, boolean skipCheckExist) { + if (context == null || TextUtils.isEmpty(url) || TextUtils.isEmpty(name) || icon == null) { + return false; + } + // 先查询launcher页面是否已经生成其快捷方式 + if (getIsAddShortCut(context, name) && !skipCheckExist) { + return false; + } + + Intent shortcutIntent = getShortCutIntent(context, url, MAIN_ACTIVITY); + shortcutIntent.setAction(ACTION_DESKTOP_LINK); + shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + Intent installIntent = getInstallIntent(shortcutIntent, name, icon); + + // 将创建快捷方式的intent指定到桌面应用程序包来处理. + String deskPackageName = getLauncherPackageName(context); + if (null != deskPackageName && !TextUtils.isEmpty(deskPackageName)) { + installIntent.setPackage(deskPackageName); + } + + if (isSendToQihooDesktop) { + installIntent.putExtra("from", context.getPackageName()); + } + + context.sendBroadcast(installIntent); + return true; + } + + /** + * 获取正在运行桌面包名(注:存在多个桌面时且未指定默认桌面时,该方法返回Null,使用时需处理这个情况) + */ + public static String getLauncherPackageName(Context context) { + try { + final Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_HOME); + final ResolveInfo res = context.getPackageManager().resolveActivity(intent, 0); + if (res != null && res.activityInfo == null) { + // should not happen. A home is always installed, isn't it? + return null; + } + + if (res != null && ("android").equals(res.activityInfo.packageName)) { + // 有多个桌面程序存在,且未指定默认项时; + return null; + } else { + return res.activityInfo.packageName; + } + } catch (Exception e) { + + } + + return null; + } + + private static Intent getInstallIntent(Context context, Intent shortcutIntent, int name, int res) { + Intent intent = getInstallIntent(shortcutIntent, context.getString(name), null); + Parcelable icon = Intent.ShortcutIconResource.fromContext(context, res); + intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); + return intent; + } + + private static Intent getInstallIntent(Intent shortcutIntent, String name, Parcelable iconResource) { + Intent intent = new Intent(ACTION_INSTALL_SHORTCUT); + intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); + + if (TextUtils.isEmpty(name)) { + if (Build.VERSION.SDK_INT < 11 || "SM-N9008V".equals(Build.MODEL)) { + intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "添加"); + } else { + intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "\t"); + } + } else { + intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name); + } + if (iconResource != null) { + intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconResource); + } + intent.putExtra(EXTRA_DUPLICATE, false); + return intent; + } + + //判断应用是否安装 + public static boolean isPkgInstalled(Context c, String pkgName) { + PackageManager mPm = c.getPackageManager(); + if (mPm == null) { + return false; + } + PackageInfo pkginfo = null; + try { + pkginfo = mPm.getPackageInfo(pkgName, 0); + } catch (PackageManager.NameNotFoundException e) { + //e.printStackTrace(); + } + return pkginfo == null ? false : true; + } + + public static Intent getShortCutIntent(Context context, String action, String className) { + Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); + if ("NX511J".equals(Build.MODEL)) { + shortcutIntent.setPackage(context.getPackageName()); + } else { + shortcutIntent.setClassName(context, className); + } + shortcutIntent.setData(Uri.parse(action)); + shortcutIntent.putExtra("value", "test"); + return shortcutIntent; + } + + public static boolean createShortCutWithIntentInSilence(Context context, String name, Intent shortCutIntent, Parcelable icon, boolean isSendToQihooDesktop) { + if (context == null || TextUtils.isEmpty(name) || icon == null) { + return false; + } + // 先查询launcher页面是否已经生成其快捷方式 + if (getIsAddShortCut(context, name)) { + return false; + } + Intent installIntent = getInstallIntent(shortCutIntent, name, icon); + // 将创建快捷方式的intent指定到桌面应用程序包来处理. + String deskPackageName = getLauncherPackageName(context); + if (null != deskPackageName && !TextUtils.isEmpty(deskPackageName)) { + installIntent.setPackage(deskPackageName); + } + if (isSendToQihooDesktop) { + installIntent.putExtra("from", context.getPackageName()); + } + context.sendBroadcast(installIntent); + return true; + } + + public static boolean createFavLinkShortCutWithShortcutIntent(Context context, String name, String url, Parcelable icon, + boolean isSendToQihooDesktop, boolean skipCheckExist, Intent shortcutIntent) { + + if (context == null || TextUtils.isEmpty(url) || TextUtils.isEmpty(name) || icon == null) { + return false; + } + + // 先查询launcher页面是否已经生成其快捷方式 + if (getIsAddShortCut(context, name) && !skipCheckExist) { + return false; + } + + Intent installIntent = getInstallIntent(shortcutIntent, name, icon); + + // 将创建快捷方式的intent指定到桌面应用程序包来处理. + String deskPackageName = getLauncherPackageName( + context); + + if (null != deskPackageName && !TextUtils.isEmpty(deskPackageName)) { + installIntent.setPackage(deskPackageName); + } + + if (isSendToQihooDesktop) { + installIntent.putExtra("from", context.getPackageName()); + } + + context.sendBroadcast(installIntent); + return true; + } + + public static boolean getIsAddShortCut(Context context, String name) { + // 如果只是按照title来比较是否存在的话可能存在重名应用,所以还需要根据intent这个字段一起判断。 + String intentTag = "com.scu.zqc"; + Cursor c = null; + try { + final ContentResolver cr = context.getContentResolver(); + String AUTHORITY = getAuthority(context); + Log.d(TAG, "AUTHORITY = " + AUTHORITY); + + if (null == AUTHORITY) { + AUTHORITY = getSuitableAuthority(context); + } + + final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); + c = cr.query(CONTENT_URI, new String[]{"title", "iconResource"}, + "title=? and intent like ?", new String[]{name, "%" + intentTag + "%"}, null); + + if (null != c && c.getCount() > 0) { + Log.d(TAG, "the shortCut of" + name + "has been created!"); + return true; + } else { + if (c != null) { + c.close(); + } + // 有的手机上需要用下面的方法才能获取到快捷方式是否存在 + AUTHORITY = getAuthorityFromPermission(context, READ_SETTINGS); + final Uri CONTENT_URI_AUTHORITY = Uri.parse("content://" + AUTHORITY + + "/favorites?notify=true"); + c = cr.query(CONTENT_URI_AUTHORITY, new String[]{"title", "iconResource"}, + "title=? and intent like ?", new String[]{name, "%" + intentTag + "%"}, null); + + if (null != c && c.getCount() > 0) { + Log.d(TAG, "the shortCut of" + name + "has been created!"); + return true; + } + } + } catch (Exception e) { + Log.e(TAG, "exception: " + e.getMessage()); + return getIsAddShortCutFromPermission(context, name); + } finally { + if (c != null) { + c.close(); + } + } + + return false; + } + + private static boolean getIsAddShortCutFromPermission(Context context, String name) { + Cursor c = null; + String intentTag = context.getPackageName(); + String AUTHORITY = getAuthorityFromPermission(context, READ_SETTINGS); + try { + final ContentResolver cr = context.getContentResolver(); + final Uri CONTENT_URI_AUTHORITY = Uri.parse("content://" + AUTHORITY + + "/favorites?notify=true"); + c = cr.query(CONTENT_URI_AUTHORITY, new String[]{"title", "iconResource"}, + "title=? and intent like ?", new String[]{name, "%" + intentTag + "%"}, null); + if (null != c && c.getCount() > 0) { + Log.d(TAG, "the shortCut of" + name + "has been created!"); + return true; + } + } catch (Exception e) { + // : handle exception + Log.e(TAG, "exception: " + e.getMessage()); + } finally { + if (null != c) { + c.close(); + } + } + + return false; + } + + /** + * 通过permission来找不同机型的Authority + * + * @return + */ + public static String getAuthority(Context context) { + String authority = ".launcher.settings"; + String authority2 = ".launcher2.settings"; + String authority3 = ".launcher3.settings"; + List packs = null; + try { + packs = context.getPackageManager().getInstalledPackages( + PackageManager.GET_PROVIDERS); + + for (PackageInfo pack : packs) { + ProviderInfo[] providers = pack.providers; + + if (null != providers) { + for (ProviderInfo provider : providers) { + if (!TextUtils.isEmpty(provider.authority) && (provider.authority.contains(authority) || + provider.authority.contains(authority2) || + provider.authority.contains(authority3))) { + return provider.authority; + } + } + } + } + } catch (OutOfMemoryError e) { + e.printStackTrace(); + packs = null; + } + return null; + } + + private static String getAuthorityFromPermission(Context context, + String permission) { + if (permission == null) { + return null; + } + try { + List packs = context.getPackageManager() + .getInstalledPackages(PackageManager.GET_PROVIDERS); + + if (packs != null) { + for (PackageInfo pack : packs) { + ProviderInfo[] providers = pack.providers; + + if (providers != null) { + for (ProviderInfo provider : providers) { + if (permission.equals(provider.readPermission)) { + return provider.authority; + } + + if (permission.equals(provider.writePermission)) { + return provider.authority; + } + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 获取合适的Authority访问launcher数据库
+ * 优先级:".launcher3.settings" > ".launcher2.settings" > ".launcher.settings" > ".settings" + */ + public static String getSuitableAuthority(Context context) { + String AUTHORITY = null; + String authority = ".launcher.settings"; + String authority2 = ".launcher2.settings"; + String authority3 = ".launcher3.settings"; + String authority4 = ".settings"; + + List packs = context.getPackageManager().getInstalledPackages( + PackageManager.GET_PROVIDERS); + + List authorityList = new ArrayList(); + for (PackageInfo pack : packs) { + ProviderInfo[] providers = pack.providers; + + if (null != providers) { + for (ProviderInfo provider : providers) { + if (!TextUtils.isEmpty(provider.authority) && (provider.authority.contains(authority) + || provider.authority.contains(authority2) || + provider.authority.contains(authority3))) { + authorityList.add(provider.authority); + } + } + } + } + String AUTHORITY_TEMP_1 = null; + String AUTHORITY_TEMP_2 = null; + String AUTHORITY_TEMP_3 = null; + + for (String item : authorityList) { + if (item.contains(authority3) && TextUtils.isEmpty(AUTHORITY_TEMP_3)) { + AUTHORITY_TEMP_3 = item; + } else if (item.contains(authority2) && TextUtils.isEmpty(AUTHORITY_TEMP_2)) { + AUTHORITY_TEMP_2 = item; + } else if (item.contains(authority) && TextUtils.isEmpty(AUTHORITY_TEMP_1)) { + AUTHORITY_TEMP_1 = item; + } + } + if (!TextUtils.isEmpty(AUTHORITY_TEMP_3)) { + AUTHORITY = AUTHORITY_TEMP_3;//优先适配launcher3 + } else if (!TextUtils.isEmpty(AUTHORITY_TEMP_2)) { + AUTHORITY = AUTHORITY_TEMP_2; + } else if (!TextUtils.isEmpty(AUTHORITY_TEMP_1)) { + AUTHORITY = AUTHORITY_TEMP_1; + } + if (TextUtils.isEmpty(AUTHORITY)) { + for (PackageInfo pack : packs) { + ProviderInfo[] providers = pack.providers; + + if (null != providers) { + for (ProviderInfo provider : providers) { + if (!TextUtils.isEmpty(provider.authority) && provider.authority.endsWith(authority4)) { + return provider.authority; + } + } + } + } + } + return AUTHORITY; + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/tile/TileService.java b/app/src/main/java/com/stardust/scriptdroid/tile/TileService.java new file mode 100644 index 00000000..ecb234b7 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/tile/TileService.java @@ -0,0 +1,14 @@ +package com.stardust.scriptdroid.tile; + +import com.stardust.scriptdroid.action.ActionPerformService; + +/** + * Created by Stardust on 2017/1/26. + */ + +public class TileService extends android.service.quicksettings.TileService { + + public void onClick(){ + ActionPerformService.assistModeEnable = !ActionPerformService.assistModeEnable; + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/ClassTool.java b/app/src/main/java/com/stardust/scriptdroid/tool/ClassTool.java new file mode 100644 index 00000000..b36e3619 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/tool/ClassTool.java @@ -0,0 +1,22 @@ +package com.stardust.scriptdroid.tool; + +/** + * Created by Stardust on 2017/1/23. + */ + +public class ClassTool { + + public static void loadClass(Class c) { + try { + Class.forName(c.getName()); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + public static void loadClasses(Class... classes) { + for (Class c : classes) { + loadClass(c); + } + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/ViewTool.java b/app/src/main/java/com/stardust/scriptdroid/tool/ViewTool.java new file mode 100644 index 00000000..972c5a52 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/tool/ViewTool.java @@ -0,0 +1,16 @@ +package com.stardust.scriptdroid.tool; + +import android.support.annotation.IdRes; +import android.view.View; + +/** + * Created by Stardust on 2017/1/24. + */ + +public class ViewTool { + + @SuppressWarnings("unchecked") + public static V $(View view, @IdRes int resId) { + return (V) view.findViewById(resId); + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/ScriptFileOperation.java b/app/src/main/java/com/stardust/scriptdroid/ui/ScriptFileOperation.java new file mode 100644 index 00000000..f6bdf138 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/ui/ScriptFileOperation.java @@ -0,0 +1,149 @@ +package com.stardust.scriptdroid.ui; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.support.design.widget.Snackbar; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.stardust.scriptdroid.R; +import com.stardust.scriptdroid.ShortcutActivity; +import com.stardust.scriptdroid.data.ScriptFile; +import com.stardust.scriptdroid.data.ScriptFileList; +import com.stardust.scriptdroid.shortcut.Shortcut; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Stardust on 2017/1/23. + */ + +public abstract class ScriptFileOperation { + + private static List operationNames = new ArrayList<>(); + private static List operations = new ArrayList<>(); + + public static ScriptFileOperation getOperation(int index) { + return operations.get(index); + } + + public static List getOperationNames() { + return operationNames; + } + + public abstract void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position); + + private static void addOperation(String name, int iconResId, ScriptFileOperation operation) { + operation.mName = name; + operation.mIconResId = iconResId; + operationNames.add(name); + operations.add(operation); + } + + private String mName; + private int mIconResId; + + public String getName() { + return mName; + } + + public int getIconResId() { + return mIconResId; + } + + public static class Run extends ScriptFileOperation { + + static { + addOperation("运行", R.drawable.ic_play_green, new Run()); + } + + @Override + public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) { + Snackbar.make(recyclerView, "开始运行", Snackbar.LENGTH_SHORT).show(); + ScriptFile scriptFile = scriptFileList.get(position); + scriptFile.run(recyclerView.getContext()); + } + } + + public static class Edit extends ScriptFileOperation { + + static { + addOperation("编辑", R.drawable.ic_edit_green_48dp, new Edit()); + } + + @Override + public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) { + Context context = recyclerView.getContext(); + ScriptFile scriptFile = scriptFileList.get(position); + Uri uri = Uri.parse("file://" + scriptFile.path); + context.startActivity(new Intent(Intent.ACTION_EDIT).setDataAndType(uri, "text/plain")); + } + } + + public static class Rename extends ScriptFileOperation { + + static { + addOperation("重命名", R.drawable.ic_rename_green, new Rename()); + } + + @Override + public void operate(final ScriptListRecyclerView recyclerView, final ScriptFileList scriptFileList, final int position) { + String oldName = scriptFileList.get(position).name; + new MaterialDialog.Builder(recyclerView.getContext()).title("重命名") + .input("输入新名称", oldName, (dialog, input) -> { + scriptFileList.rename(position, input.toString()); + recyclerView.getAdapter().notifyItemChanged(position); + }).show(); + } + } + + public static class CreateShortcut extends ScriptFileOperation { + + static { + addOperation("创建桌面快捷方式", R.drawable.ic_shortcut_green, new CreateShortcut()); + } + + + @Override + public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) { + Context context = recyclerView.getContext(); + ScriptFile scriptFile = scriptFileList.get(position); + new Shortcut(context).name(scriptFile.name) + .targetClass(ShortcutActivity.class) + .icon(R.drawable.script_droid) + .extras(new Intent().putExtra("path", scriptFile.path)) + .send(); + Snackbar.make(recyclerView, "已创建", Snackbar.LENGTH_SHORT).show(); + } + } + + public static class Remove extends ScriptFileOperation { + + static { + addOperation("删除", R.drawable.ic_delete_green_48dp, new Remove()); + } + + @Override + public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) { + scriptFileList.remove(position); + recyclerView.getAdapter().notifyItemRemoved(position); + } + } + + public static class Delete extends ScriptFileOperation { + + static { + addOperation("彻底删除", R.drawable.ic_delete_forever_green_48dp, new Delete()); + } + + @Override + public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) { + boolean succeed = scriptFileList.deleteFromFileSystem(position); + Snackbar.make(recyclerView, succeed ? "已删除" : "文件删除失败", Snackbar.LENGTH_SHORT).show(); + recyclerView.getAdapter().notifyItemRemoved(position); + } + } + + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/ScriptFileOperationPopupMenu.java b/app/src/main/java/com/stardust/scriptdroid/ui/ScriptFileOperationPopupMenu.java new file mode 100644 index 00000000..bffb9c3c --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/ui/ScriptFileOperationPopupMenu.java @@ -0,0 +1,135 @@ +package com.stardust.scriptdroid.ui; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.PopupWindow; +import android.widget.TextView; + +import com.stardust.scriptdroid.R; + +import static com.stardust.scriptdroid.tool.ViewTool.$; + +/** + * Created by Stardust on 2017/1/24. + */ + +public class ScriptFileOperationPopupMenu extends PopupWindow { + + + public interface OnItemClickListener { + void onClick(View view, int position); + } + + private Context mContext; + private ScriptFileOperationListRecyclerView mOperationListRecyclerView; + private OnItemClickListener mOnItemClickListener; + + private final View.OnClickListener mOnItemClickRealListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mOnItemClickListener != null) { + int position = mOperationListRecyclerView.getChildViewHolder(v).getAdapterPosition(); + mOnItemClickListener.onClick(v, position); + } + } + }; + + public ScriptFileOperationPopupMenu(Context context) { + super(); + mContext = context; + init(); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + mOnItemClickListener = onItemClickListener; + } + + public void show(View anchor) { + super.showAsDropDown(anchor, 0, -anchor.getWidth()); + } + + private void init() { + setWidth(WindowManager.LayoutParams.WRAP_CONTENT); + setHeight(WindowManager.LayoutParams.WRAP_CONTENT); + setOutsideTouchable(true); + setAnimationStyle(-1); + initContentView(); + } + + private void initContentView() { + View contentView = View.inflate(mContext, R.layout.script_file_operation_popup_menu_content, null); + setContentView(contentView); + mOperationListRecyclerView = $(contentView, R.id.operation_list); + mOperationListRecyclerView.setOnItemClickListener(mOnItemClickRealListener); + } + + + public static class ScriptFileOperationListRecyclerView extends RecyclerView { + + private OnClickListener mOnItemClickListener; + + public ScriptFileOperationListRecyclerView(Context context) { + super(context); + init(); + } + + public ScriptFileOperationListRecyclerView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + init(); + } + + public ScriptFileOperationListRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(); + } + + private void init() { + setLayoutManager(new LinearLayoutManager(getContext())); + setAdapter(new Adapter() { + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(getContext()).inflate(R.layout.script_file_operation_popup_menu_item, parent, false); + return new ViewHolder(itemView); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + ScriptFileOperation operation = ScriptFileOperation.getOperation(position); + holder.operationName.setText(operation.getName()); + holder.icon.setImageResource(operation.getIconResId()); + } + + @Override + public int getItemCount() { + return ScriptFileOperation.getOperationNames().size(); + } + }); + } + + public void setOnItemClickListener(OnClickListener onItemClickListener) { + mOnItemClickListener = onItemClickListener; + } + + private class ViewHolder extends RecyclerView.ViewHolder { + + TextView operationName; + ImageView icon; + + ViewHolder(View itemView) { + super(itemView); + itemView.setOnClickListener(mOnItemClickListener); + operationName = $(itemView, R.id.name); + icon = $(itemView, R.id.icon); + } + } + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/ScriptListRecyclerView.java b/app/src/main/java/com/stardust/scriptdroid/ui/ScriptListRecyclerView.java new file mode 100644 index 00000000..449ecb01 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/ui/ScriptListRecyclerView.java @@ -0,0 +1,165 @@ +package com.stardust.scriptdroid.ui; + +import android.content.Context; +import android.os.Environment; +import android.support.annotation.Nullable; +import android.support.v7.widget.DividerItemDecoration; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.stardust.scriptdroid.R; +import com.stardust.scriptdroid.data.ScriptFile; +import com.stardust.scriptdroid.data.ScriptFileList; +import com.stardust.scriptdroid.tool.ClassTool; + +import static com.stardust.scriptdroid.tool.ViewTool.$; + +import static com.stardust.scriptdroid.ui.ScriptFileOperation.*; + +/** + * Created by Stardust on 2017/1/23. + */ + +public class ScriptListRecyclerView extends RecyclerView { + + private ScriptFileList mScriptFileList; + + private final OnClickListener mOnItemClickListener = new OnClickListener() { + @Override + public void onClick(View v) { + int position = getChildViewHolder(v).getAdapterPosition(); + new ScriptFileOperation.Run().operate(ScriptListRecyclerView.this, mScriptFileList, position); + } + }; + + + private final OnClickListener mOnEditIconClickListener = new OnClickListener() { + @Override + public void onClick(View v) { + int position = getChildViewHolder((View) v.getParent()).getAdapterPosition(); + new ScriptFileOperation.Edit().operate(ScriptListRecyclerView.this, mScriptFileList, position); + } + }; + + private final OnClickListener mOnMoreIconClickListener = new OnClickListener() { + @Override + public void onClick(View v) { + mOperateFileIndex = getChildViewHolder((View) v.getParent()).getAdapterPosition(); + //showOperationDialog(position); + showOrDismissOperationPopupMenu(v); + } + + }; + + private ScriptFileOperationPopupMenu mScriptFileOperationPopupMenu; + private int mOperateFileIndex; + + + public ScriptListRecyclerView(Context context) { + super(context); + init(); + } + + + public ScriptListRecyclerView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + init(); + } + + public ScriptListRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(); + } + + private void init() { + setAdapter(new Adapter()); + setLayoutManager(new LinearLayoutManager(getContext())); + addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + initScriptFileOperationPopupMenu(); + } + + private void initScriptFileOperationPopupMenu() { + mScriptFileOperationPopupMenu = new ScriptFileOperationPopupMenu(getContext()); + mScriptFileOperationPopupMenu.setOnItemClickListener((view, position) -> { + ScriptFileOperation.getOperation(position).operate(ScriptListRecyclerView.this, mScriptFileList, mOperateFileIndex); + mScriptFileOperationPopupMenu.dismiss(); + }); + } + + public void setScriptFileList(ScriptFileList scriptFileList) { + mScriptFileList = scriptFileList; + getAdapter().notifyDataSetChanged(); + } + + private void showOperationDialog(final int position) { + new MaterialDialog.Builder(getContext()).items(ScriptFileOperation.getOperationNames()) + .itemsCallback((dialog, itemView, operation, text) -> ScriptFileOperation.getOperation(operation).operate(ScriptListRecyclerView.this, mScriptFileList, position)).show(); + } + + private void showOrDismissOperationPopupMenu(View v) { + if (mScriptFileOperationPopupMenu.isShowing()) { + mScriptFileOperationPopupMenu.dismiss(); + } else { + mScriptFileOperationPopupMenu.show(v); + } + } + + private class Adapter extends RecyclerView.Adapter { + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(getContext()).inflate(R.layout.script_list_recycler_view_item, parent, false); + return new ViewHolder(itemView); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + ScriptFile scriptFile = mScriptFileList.get(position); + holder.name.setText(scriptFile.name); + holder.path.setText(trimFilePath(scriptFile.path)); + } + + private final String SD_CARD_PATH = Environment.getExternalStorageDirectory().toString(); + + private String trimFilePath(String path) { + if (path.startsWith(SD_CARD_PATH)) { + path = path.substring(SD_CARD_PATH.length()); + } + return path; + } + + @Override + public int getItemCount() { + return mScriptFileList.size(); + } + } + + private class ViewHolder extends RecyclerView.ViewHolder { + + TextView name, path; + + ViewHolder(View itemView) { + super(itemView); + name = (TextView) itemView.findViewById(R.id.name); + path = (TextView) itemView.findViewById(R.id.path); + $(itemView, R.id.edit).setOnClickListener(mOnEditIconClickListener); + $(itemView, R.id.more).setOnClickListener(mOnMoreIconClickListener); + itemView.setOnClickListener(mOnItemClickListener); + } + } + + static { + loadScriptFileOperations(); + } + + private static void loadScriptFileOperations() { + ClassTool.loadClasses(Run.class, Edit.class, Rename.class, CreateShortcut.class, Remove.class, Delete.class); + } + +} diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/SlidingUpPanel.java b/app/src/main/java/com/stardust/scriptdroid/ui/SlidingUpPanel.java new file mode 100644 index 00000000..5da55754 --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/ui/SlidingUpPanel.java @@ -0,0 +1,108 @@ +package com.stardust.scriptdroid.ui; + +import android.annotation.TargetApi; +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.FrameLayout; + +import com.stardust.scriptdroid.R; + +/** + * Created by Stardust on 2017/1/24. + */ + +public class SlidingUpPanel extends FrameLayout { + + private static final long DEFAULT_ANIMATION_DURATION = 300; + + private Animation mSlideUpAnimation, mSlideDownAnimation; + private View mShadow; + private boolean mShowing = false; + private FrameLayout mContentContainer; + + public SlidingUpPanel(Context context) { + super(context); + init(); + } + + public SlidingUpPanel(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public SlidingUpPanel(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public SlidingUpPanel(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + init(); + } + + public void show() { + setVisibility(VISIBLE); + mContentContainer.startAnimation(mSlideUpAnimation); + mShowing = true; + } + + public void dismiss() { + mContentContainer.startAnimation(mSlideDownAnimation); + postDelayed(() -> setVisibility(GONE), mSlideDownAnimation.getDuration()); + mShowing = false; + } + + public void setAnimationDuration(long animationDuration) { + mSlideUpAnimation.setDuration(animationDuration); + mSlideDownAnimation.setDuration(animationDuration / 2); + } + + public boolean isShowing() { + return mShowing; + } + + private void init() { + LayoutInflater.from(getContext()).inflate(R.layout.sliding_up_panel, this, true); + initShadow(); + initAnimation(); + setVisibility(GONE); + mContentContainer = (FrameLayout) findViewById(R.id.content_container); + } + + private void initAnimation() { + mSlideUpAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.slide_up); + mSlideDownAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.slide_down); + setAnimationDuration(DEFAULT_ANIMATION_DURATION); + } + + private void initShadow() { + mShadow = findViewById(R.id.shadow); + mShadow.setOnClickListener(v -> dismiss()); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + if (ev.getAction() == MotionEvent.ACTION_UP && isShowing()) { + dismiss(); + } + return super.onInterceptTouchEvent(ev); + } + + @Override + public void addView(View child, int index, ViewGroup.LayoutParams params) { + if (mContentContainer != null) + mContentContainer.addView(child, index, params); + else + super.addView(child, index, params); + } + + +} diff --git a/app/src/main/java/com/stardust/util/MapEntries.java b/app/src/main/java/com/stardust/util/MapEntries.java new file mode 100644 index 00000000..23c618fb --- /dev/null +++ b/app/src/main/java/com/stardust/util/MapEntries.java @@ -0,0 +1,37 @@ +package com.stardust.util; + +import java.util.Map; +import java.util.TreeMap; + +/** + * Created by Stardust on 2017/1/26. + */ + +public class MapEntries { + + private Map mMap; + + public MapEntries() { + this(new TreeMap<>()); + } + + public MapEntries(Map map) { + mMap = map; + } + + public MapEntries entry(K key, V value) { + mMap.put(key, value); + return this; + } + + public Map map() { + return mMap; + } + + public Map putIn(Map map) { + map.putAll(mMap); + return map; + } + + +} diff --git a/app/src/main/java/com/stardust/util/SparseArrayEntries.java b/app/src/main/java/com/stardust/util/SparseArrayEntries.java new file mode 100644 index 00000000..0efb3514 --- /dev/null +++ b/app/src/main/java/com/stardust/util/SparseArrayEntries.java @@ -0,0 +1,22 @@ +package com.stardust.util; + +import android.util.SparseArray; + +/** + * Created by Stardust on 2017/1/26. + */ + +public class SparseArrayEntries { + + private SparseArray mSparseArray = new SparseArray<>(); + + public SparseArrayEntries entry(int key, E value) { + mSparseArray.put(key, value); + return this; + } + + public SparseArray sparseArray() { + return mSparseArray; + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/stardust/util/function/ArrayOptional.java b/app/src/main/java/com/stardust/util/function/ArrayOptional.java new file mode 100644 index 00000000..f0d74de6 --- /dev/null +++ b/app/src/main/java/com/stardust/util/function/ArrayOptional.java @@ -0,0 +1,8 @@ +package com.stardust.util.function; + +/** + * Created by Stardust on 2017/1/24. + */ + +public class ArrayOptional { +} diff --git a/app/src/main/java/com/stardust/util/function/Domino.java b/app/src/main/java/com/stardust/util/function/Domino.java new file mode 100644 index 00000000..a19c0c16 --- /dev/null +++ b/app/src/main/java/com/stardust/util/function/Domino.java @@ -0,0 +1,8 @@ +package com.stardust.util.function; + +/** + * Created by Stardust on 2017/1/26. + */ + +public class Domino { +} diff --git a/app/src/main/java/com/stardust/util/function/FunctionTool.java b/app/src/main/java/com/stardust/util/function/FunctionTool.java new file mode 100644 index 00000000..914f3002 --- /dev/null +++ b/app/src/main/java/com/stardust/util/function/FunctionTool.java @@ -0,0 +1,15 @@ +package com.stardust.util.function; + +import android.support.annotation.RequiresApi; + +import java.util.Optional; +import java.util.function.Consumer; + +/** + * Created by Stardust on 2017/1/24. + */ + +public class FunctionTool { + + +} diff --git a/app/src/main/java/com/stardust/util/function/ListTool.java b/app/src/main/java/com/stardust/util/function/ListTool.java new file mode 100644 index 00000000..6e311d04 --- /dev/null +++ b/app/src/main/java/com/stardust/util/function/ListTool.java @@ -0,0 +1,24 @@ +package com.stardust.util.function; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Stardust on 2017/1/26. + */ + +public class ListTool { + + @FunctionalInterface + public interface ChildSupplier { + T getChild(int i); + } + + public static List toList(ChildSupplier supplier, int size) { + ArrayList arrayList = new ArrayList(size); + for (int i = 0; i < size - 1; i++) { + arrayList.add(supplier.getChild(i)); + } + return arrayList; + } +} diff --git a/app/src/main/java/com/stardust/view/accessibility/AccessibilityNodeInfoReflect.java b/app/src/main/java/com/stardust/view/accessibility/AccessibilityNodeInfoReflect.java new file mode 100644 index 00000000..bc9cfb6a --- /dev/null +++ b/app/src/main/java/com/stardust/view/accessibility/AccessibilityNodeInfoReflect.java @@ -0,0 +1,40 @@ +package com.stardust.view.accessibility; + +import android.view.accessibility.AccessibilityNodeInfo; + +import java.lang.reflect.Field; + +/** + * Created by Stardust on 2017/1/26. + */ + +public class AccessibilityNodeInfoReflect { + + private final AccessibilityNodeInfo mAccessibilityNodeInfo; + + public AccessibilityNodeInfoReflect(AccessibilityNodeInfo accessibilityNodeInfo) { + mAccessibilityNodeInfo = accessibilityNodeInfo; + } + + public void getChildNodeIds() { + try { + Field mChildNodeIdsField = AccessibilityNodeInfo.class.getDeclaredField("mChildNodeIds"); + mChildNodeIdsField.setAccessible(true); + Object o = mChildNodeIdsField.get(mAccessibilityNodeInfo); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + public long getSourceNodeId() { + try { + Field mSourceNodeIdField = AccessibilityNodeInfo.class.getDeclaredField("mSourceNodeId"); + mSourceNodeIdField.setAccessible(true); + return (long) mSourceNodeIdField.get(mSourceNodeIdField); + } catch (IllegalAccessException | NoSuchFieldException e) { + e.printStackTrace(); + } + return -1; + } + +} diff --git a/app/src/main/res/anim/slide_down.xml b/app/src/main/res/anim/slide_down.xml new file mode 100644 index 00000000..0ed5bbec --- /dev/null +++ b/app/src/main/res/anim/slide_down.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_up.xml b/app/src/main/res/anim/slide_up.xml new file mode 100644 index 00000000..3bd7fba8 --- /dev/null +++ b/app/src/main/res/anim/slide_up.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_accessibility_service.png b/app/src/main/res/drawable/ic_accessibility_service.png new file mode 100644 index 0000000000000000000000000000000000000000..21e8d3a1131e6ca1e0d42ae68cc739f0da86b112 GIT binary patch literal 18349 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_delete_black_48dp.png b/app/src/main/res/drawable/ic_delete_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..796ccd22559a9b362e6cbb0c804a443bf1b3c113 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DXipc%kP61P7Y=eZ7znUlT&Wh3 zX2lgXgX5!|^oI$(N1D&Q`D-6>CQj>eo}T~gdcQ3PU;8~!-+H4~OaKZjoIg)3i005} qiMH7Fyj-Y9Kzr+B%hn@D&gi|3kyH5eQnCbS4TGnvpUXO@geCyhvNFd2 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_delete_forever_black_48dp.png b/app/src/main/res/drawable/ic_delete_forever_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a7468f276b79729b0aca215414a016c18f85654a GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DRh}-6Ar*{orydn;4iI2?zITda zR;QVp;l@+{dT-Br-1hpB_5Y@G4=xC{JuLQ?tc$K{J+k(hMlb6#NABs%uQssiD7@L} zGA-tYauj1CuZ~ma>14iZ9exStXS+XIU%&A>r%lU$ml8j90biG|R*fD?tHQZmgad1T zH-6I({B6GT@9`~v#n=Azcl|GK{rh3avCvD_TE(kGEP`gLI%d{3u$KzC$8>fVA6e|m b^O!HoW}VWqFD-09S2K9J`njxgN@xNAI80ms literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_delete_forever_green_48dp.png b/app/src/main/res/drawable/ic_delete_forever_green_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..710737e2867571718bd8c5265f33fd434a129f78 GIT binary patch literal 965 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_edit_green_48dp.png b/app/src/main/res/drawable/ic_edit_green_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..8819a59b98ccd16992526e5fcc1bca40ca4d84e9 GIT binary patch literal 767 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 VbaGe#E2woq_f#~LOK({`|39+_!eIaa literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_shortcut_green.png b/app/src/main/res/drawable/ic_shortcut_green.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0e2bea69376fc76881e14314a2174dd724362c GIT binary patch literal 4236 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%0Dgw2Z}3( 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 Z#oupXZFGEJ3;fpwaCLHbd}2>Z{4bc#ZFK+u literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/popup_menu_background.xml b/app/src/main/res/drawable/popup_menu_background.xml new file mode 100644 index 00000000..97499ebe --- /dev/null +++ b/app/src/main/res/drawable/popup_menu_background.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/rename.png b/app/src/main/res/drawable/rename.png new file mode 100644 index 0000000000000000000000000000000000000000..6002c9d33660538dfe5f61335a310bd853e749e0 GIT binary patch literal 4797 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/robot_head_green.png b/app/src/main/res/drawable/robot_head_green.png new file mode 100644 index 0000000000000000000000000000000000000000..56c82ee4408029812308ccf4c78b3ca2d7f55798 GIT binary patch literal 32853 zcmcG#i$Bx-8$UiN>XxYPQsh()6*&|MGb&;s=|IGYqJK&L1%tsv zk!HphU@$>B7;MArW+CuDHWRn@fFB#(PgYBO=2eS!af{~?~+7$g9T^84E@ z-AvD}+knD{V-j)oHF-M~hAq1_3FioJuXaBq#7pya;&8ZY!}t@ZZhuzf+%}|>({lI$ zWK|r0d4@2XwBUw}rqtt7@=D_PgSLvpdTWc%wfW%_qnyImj&oOGMj;+Xu=k}o79mJd zN#3fto@Fhih>!@ z{yA!3VwpJaj1+sk&^d2dkE9+JdJvGCXLXizt{eA=&qX5X6Lvx6tnV;6AuTyr=i?j; ztCR&Qp(7zF9``hxA+xoASrHknaG8KmV&)PMPuzRm9VLWd^4S6cQG0i}g^3~E<8V)3 z_1+k}POr$8sCw;r_Aruu)}9b3ni3#jqz?uyjRS)wFZg<;#~F;_5XM6(+iM=Dw^cn+ zklx4VjIs+!T|w7i&eEcrVUNIwI>^z(%y~kcW4CM1(B^H^J?@IUg1lw0zZ10ACDm$w z!BoNI;?L*xkIB4vF%Vjq{$R|S5L{g>dQvxsfg&s;SKj}kQ!rIqqEdkoVoq7Vi1nJK zhq8as6MM+|f_uJD32Xk;5^qkSeX!%-u&wunHX0=~ss9Xrn|{W%`)1}iNzHj@6>`NL zIrn(MihyVo*(GrA5qL=BpQF4R$WiUJpvt_On&K@U-wFsLN0@Vpya?iD*#JjzSl~mU zjZsxiRxkBT3oM0o9vv{Io0IIjYZM%xy7yWZi)@I(bVk8`HvK}xQ_NQoNGn^8nM0Fi zW1bDCc{JqgiWG8gY;8NN?pvei`?on3bFW?u{5pxWN(@w|YYRLW%3)k6s!v*|!q`N# z1f7K4)B@IRKh(N#n?THd!3-sYYN?g(H0>E`T(c#t!D+9ps?|2bj-M9X@cv$og{&IW zjzBD8P{&{l&NU?NFjE?gGZdr=(>Mv9NXxOHUHW_zZr**skuJD#I+rja&$QwclKQ|C z-_Hnca6WI6MwDk#6nLe1(eH|dV>*KfBTCF8V2~c@5irfO5R){7Q8)gzC%hxjQ7mc~ z{cKolo?&bG)Uo1N0dZkTaaira)&;4a!dt&z<|+R(FH~CiWC4Z5DKLG(FkN6zA3oiK z8M*&+bodA}T+zU(d)e&E3`q%gOkb5br%;RR9v!y}>W7{?1yl-mldV-Ku@@|tCyu!0|#h-rvcbS!2>KE4V*e(wZ64lX?S*|>Xv zfI7%bBg6+e?u=>}KE$Lc)N0aRht#MEMd3iy?z?RLBHwJqUptQS(Sa`b{t+HYy3{Sp zunWpyxxjwi7TWm!$v;OU3iDE4VbXj3i&+BBeKTG%ldDbe0>lr}9#|!C!_*5&%rdXp znb5R%Rf6xQ5eJz&w3q)GVuFvCfJ-DO0MD02s>|?6Rje>r=$wd`8jYkydrgB@A+056 zG!ATXfEkrH`7onZAaL#+5~s?{ffuY%f$fKK1qAkAN@Cv0lfCdc6q^r5Fdj1?s1X(< zFg9_}W<@2%<@S%Q>K{dx5EjnU7hy4dK?GDTgK0OUyutW^(8d@e>lezetEiJy}{$MJ&VdKk# zpM}q^=xVErjq{{oSpWRIHbveI;$=P^EN}&Q*v35Y1af7Q_A+KV7!2?>@XCclOdP{* z@eutJ?8k1=&Eiox7WGKWu`(+y8Q2H^E8V-iBp+Lm)P#(5z%k%=xve-C9ha#AX8<$M z-OoIWtOrMp1E0Ugg3rak=P+cws-zgqUpME5$#@E*ub7e6J)(2GXzXS0@FYMtpTjC2|0;exs1%ODHevo=XH_w3QRV< z;0!d1uB7<;R1jxRE}4B9BkhL$>^X@v1ju0cPHp4+GhmACCTTASk*3|t?}|6UHq4(x zmb90@zU8<%>N5Dy6~y0urmaHldH4kh7%AAedkz^EM7*p64hRNzU}61&Vis1N=adxq z2JArYX4To1AfyDq_Y{`PIu>sG+ihi-fKp~|FZLFQYQ{QrtFQ~h@>!>%t^gMm1eeQg zFFy_33zj`h?iTI^V=Vz7$i^689*wB^Rd}RLH_c3M1VkDP*-clhJ=2Y5uZcUK0Nx31 z8lF5-!aOVrybH@%d6XxJvEfyNk@o=aHULp5K!~*M7K8RxdH|=$%x6P~b1EtUOf0R^ z8kmyD^O7kF4*{+TyTQJUEO`>>PrMAp@x2(KjX%y?zrb5_$lP)V`UY5P8zD~u_{~ZB zeONZQ3-rz>F&`2lExX$kjsReSbv}HYr(?GA30~kA;J8)%FG+Fdb0%qP&(e4HFu}%Q z3*XBLs7&`>ez4j9Ufn(5qj21{G=n?n*gIZ20vc!|k@TWJ%b*9aLeM z(aJSsbkn2|?3nYWjVJyAFFn7}J7x;)MuX`~Kz*o{f8PNtH3%m2B#fvMZ*GG1kGLxu z7=pRL8I;BgZR|G&A!@ebi&Wo*vx33&FBaHo^3%X3Lmam{@7k&2{B(Y>y(D4bCcOd% zBQN+P?LhQRk;LEc2L=E@2fS5|nW8WQMeloWQw3gno>N=7*FcbFlp=7iJa9$GfuORw zNTv(ge4Y>@asXvD*^$qQt7!8Wj)oA=F2#h>O_I2~j^Wnl7nt?vE+qqWm5vM(urIG5k!u% zgTw~t0`JHS=oonT!tm~5uWfzJtX|2%&y#1v67zPtQw!;r5(9r$-G{TA58&bK%^PwQ}_C!Iu~9pC85B3k|%P5TA;J{!KAMI zV^bN-_+!(NZRB&^G;j}vvZYREs!z5Ee);N4+tc&wYKlqGD#PSLK?AygJU0^lIYOb< zv3m?Gf#q+q6Dh2G;NK-Q>yvEF!m!paXxt3;TbgGS$88YqEK?ZetTEPrPC33U()5ce z&o6n|VAT)nK==XprG^@gGlTQ#qG}?S^G<5m}0Xe*Kcn1zuw@7biHlplcPwbI1z@4 z;2qRca9$#W_|HuZbMXZwk;^Y*$)<*jec@SQD~@i2A6v>9y^G@+1)d_YK?SU+7U<-f z50pfcm(Paz0mz%yDv9Qxb8hT!w!vwv?wXY^tv+M;{kHb| zVmtM8WD1o=$rg1HuM{JK;u&MJWBXNA zzGT7IU9JGT@){bIyW0hbnkB8px$eh;G)aU_7X5 zDQ{99B?oq6hvrU(>`Or~3Q9&Jrhin+{NK?=$W>-xk;Ka(X0=+fB3|iYuRP&i+En2= z(S{)pqt3J-{7Ob4)~tKRQA^exKC6;HGIu)!Rl!Q_auw9YB>ZuAIA$(!;Zgk|s~Wpu z9a)O!SS#i6K-KR4m~f-chrXy=JxI=ce}G>^BTpuf(yJx=$4FJ*2U+%WxS`K}5syf| zi1<+je6m;|pc;;84!5+ez3ZepY}4_|k^Cd>S=iQZAv0ebak;k}h<|)rb;96BW4LrA zeP=!YNx5=;5jP#bvr+1E*D;w_52_*eNmTY#u$O*2JDtP*)!~kv$52Ln7Z{(07q>hR z3jgDU#}ZS_D6@zck$pJK59us!JwNips{RT7x!3!Uq*#WaqwA)P0ehXoDr}14)A9N6 z)mUyB1+Qi|bXnHbw^aGx(15#QDEn~B6Xx|gHS_N7)Io;OQXkqvxbpLNSFu7#G5d!$ z83Q(LZ@q=(=xBTcR3fHr`7YPW)(~RC|82QEX?ZJ>pMUT(x_{cxFJRzuLB8#V@~=Bo+b00Vo%@24 zB?bS~=WKDRo2#9}(X*6A7C#!uO#cZnn*9hx!Qcq(HA}g^YtdZfwp~}$`-c^GM{~2n z2Jg;cz#%)q1b=1pYH_)Fv&tJwsm_=AivQRvuyf)F&9{Z#v$e z_^%@opOe*9Ws!Bub8A0(SjHRy$~)nWckKtUSjuuFa~^uZ=`;3^*P-Sx%f+TE(R05> z)FW2EjP9li@B3h$XsCSrd{~Els!RmtWFlNRb z;r|==4?{5i=9b+;WtH4ewphe`8b#VLEO&>rtKUtfKe+dkGi!gP2hU%?M33l&@7FL? zYdAI6cU*Rq`$&DQ*`II1KpE`2W&@b_9Tki~f zc^3Cm0A4pZ@bQi#VH#jjs0GaGvYIb0&D^Dt}TW!%lTWdE@;xmS!g zN7`eBHrDRdkySRchp(nN!TG7KruTO!5=A@4A4|B6tks&^JM>`TmPk0 zWr;3TTxejeYQpo-sS#alJ8CGKim1LzN9dm)7Z8RV_-HT)34ar__!N%25u`tR-U z-_AP+W#)~)qOE;z3z?DO*~9K0!;EiA4r!=6UCuAnEpoKBlaXEu<3BbxES3Acc*XX)oRB-anS-F2d@kE5 zf$~42K4=bXUD3K)4KIlF#wvc)92=E-g_LoOSgc8LFWHuQM(|EYA@{}gZ}n?GslvfC zuW_ddyLUeodjYH!MC@&Ht(}p4oDeUJ8OJ0nf5wG>@=WmvnsCi~!98&_T(WdKK+iIU zWY?#F$Z5w*UO$4Q-#X=>n3lK90wo&DMS#K4La(Qh+*Ot&c;a&RM&t^5m#WL0J} z;1(HeC7oMxLhNGLv<9 zK>eDn)!{Xty5J=5scGktGS>UmLIxwmR-&2?rfgdA%C~B_Z=;NXGwNVBi8hnkUZyC{ zP|K(A?))w9&m75*H5y}vqgO`m-(R_<2wep_mr#Y&XsuP=5rm8ryE!1O3dxbzMxRuV zJ<1~v;QlJzt|I4AbntUI%N}=xdGEMj*7zher5eY@57GCf0@Q~?+Hx$aS<-Yee+k0FDRTXMOnP2s1T573Y!z62uR_Z8**>(5RK-bn-8 z^(GP!+Mde2O+pueRi5g2!WGi-i^siBVfE|AA5UHzu_V+T0H}AP1oljz;n6=wYwPot zktE#U*4(>?Fym?MuDxSF&MdxBBe5-zYtmpVoD*}$2*d>U-o z0|Acw9lQ&>k9z9OLFAYEkd}JLVnhZqEGn;FmL?jN25?^*Bt;vMd^x7S@3BJ2ecg}X zd+`GnwWa5e;;=0TXmoNALXP65h*^$%m*XH=w5Q#@`rvm2|ePYVdtZAuhr5Spx z{UVqWOE4LsnR!)@CjWXL-x=ksj8bO`53XHfL94fG%jJ5YpKsBfdo}>Aq>kY`CfwV; zD@r#xJzVe$V6 zZM=H8HLxVl3B5YWvX?wEC~W~2>_Rl=bZr_*JtuwFMcC*xeE5g*{7o5r`W?`JrZ2~^82326&A=&CV z!{n}V1@#J|8~b+3p8CwqLqib{kHsW1T>H?oWwkRSPt>@p7t@)(L^xgi)lLc z#I?H*?Qz!Z6G)r}(G{lRVWcr{POvwu&MAH#HoPkW3L#2sw00j}9W!3tadi}HcH!u# zkAF!XA7Q)U&PS$LB4q}ZtxF7jjubp9voUd#{`!H_To+yUwB>$0tTsBvn*_N}81?hi za~otgHm(1*eRmzapm=Kk)-~5n3b#NY*>umn`gkKL833Q_#K+ga$#)C*E527!JD~BiFOvmTelF>6u#r6674f)S5sb@sI`u_cc-x2(_ zaPGg36Xu6dVCwg@pG5VutZsW2Mi~PoN8)T)E=vz9o!N4rqyX-{bK&W6nR34p+Tg&A z@RkGWmEt#3Nr+?gB7{c{jOtEXj;42|Ngrf{$)o6P5)y7J zjVE#Y+kcMt#HayUheOH|0?{c!S7br>pkv@F1sn9MX}Pg8$$9Jd^!2VqCG+%|qsK&` z5GhZk-&QvZ3nX5q>vNemAM8pndxX~GyLLg>*8n-&G4#{kyV_txV7IUeNf#dH6ojLC zx6nu&oR}-OUrTQO*AZ=VgX2(5#NXqx*sc7ePt;y5GD0lij9dH)4E0o94caiAU2f*dzKI4!v2-MY{$ z=FsQ-XAZRm%t!7yc3$tY{}tCiOA1?hF`v0<`!j(pS0G6v3{+bjd;j;sJ3qt|yaF|& z*{x(t*%~+>u+qf#3U#^J{)dFM>+q11UpGtsu+L6XCUv>D8_JH)ku#B|5izSRRucIU_~8Caxiw00ZLegFJe5;kCD9zocVYsUR}i;3{(sd%VJ{ z+G>8iF3G6i<1G0cZ(t|;Abyr{;+Cv_AuH2#O7m)wT->B(dn)=k=S4e z>;j1HNsBz4&8H!TRm|xt!7AKZ3R(U%RxP>#99#?}|3uHNzVx%rlWN6<#$!aI;?8QT4?ha|-f9rrUMi(@_7{ye-=`mQv5 zMQ5w;-1y1eQeImBxw&qjp>}|L=s!Y@#{iUDb&J&$=N?&)*y?tvd)YG+qVpg+&_n@4 zIB{pgX|NJNJhUL7GQHXdUBv-ukW=Wlw9)i`gq3V1K?^@clrNE`#eLli?D1P2ng32L zNA$ljKLAe$SAt)%de$7|-lOp|H=S{f1HMjC-QMv6ba&T9bl9Ynryo_!w9 zAGz%B*jPCAKL+AP6p@(LANL8TPugAOmHr1F79VGG zZxnB|>Wtb097)Vfj~*mlo~|WZ(e($Z-zF+uPv9x*FGpVC1G)o(8~NJw%g<%{vj9qf zQfQP=BdFY3CFRqqWsa0cO>7li2ONCL?126MX6gRb)~G#aaD44~o8nmY&PTZdWixbz zr?aFOyY*=5!|e8{`0MC(&bP2d*GuZ&{1HVC1nYnjf5ZBXG6`$>to=6wwdBqKy1ECc z9^^cb!vS`VvPQ27mB+$tL z5?7iEx&X<%MxoZaJBMX|!y5npkdX0RDKlvX&y>NQW0GO!REk$N4+?K?W>w_GfycJX zHAl{p0^uoltoQB9STcWe%zWTB2yX2hAY^04ebd~VH?3}i7Bdky{>d#oEc{FID~9V4 z);f*TK$o`_@8H)Jk3hvLI!SF~250WTF6dg2W7;~YhRjMT# zgvM3Cb^?6ot}D9vzA$ktSuop=Cu^|#eq-<%Vz1K7Yf;@|U@=l<8(hr5ZIv+Id#o_O z{?My+Bz{1)u7!t((soM(v+hJhFWhl=91aUtR*~7Afluxg6N4^rohw8#8le>V?BHj2 zlG+BTuBbiMNz5&TzkuUDd0T&`r>!9k&em(L`O$jJoi89*O&OjYj0}%c0Ss)Nsyt{m zCoH8{OD&S-_lZ2{jOw2cAjpi9Vk+(H9eY1QFF$B4@1QVFzX^cYzYEHl8m(YpL|uP) z4=8cmRj6$ZlJ-^D0v!W2(Vcl?L9LShre(qwu^xghL}8RR(Ys-@q`1^yNJ_Pui`ja7 zv-Ib{rfed)O%$o==e^+@j2Wo~6X8F@~ z#rIV$zwBAc4ER?Z#e-{D!hkC2J{BxbLg!9Sf6%I3i$qr z?d8agxGkCMB=1HU0Ps8wTm9qZaJ``^nHX_fqvHW@O%Gn>!+`*lVeyJLwk&G*WT6OS zLtTp7pttk)#{QS1HXB##il2AA8HV5o8smai9Odsi-Qn)MF3H|DsSz(Uj{}lm-=l(W zUNR5~bGIDL3g2z?b_P`}Tjb~*DZb7!9slJAbc^U~V{A>6s1$oG*{k+uyYokwZ*HX# z8)$$?S6JhAt&dpGcE4gl#XB@<#mEMS#ef(CL_S%hpzY#FdYrJ>+ zJrHNwSZ9<^Ly3oUTnSovPEg9y@}uQ2BcGC zioEE&&yMu&{H|Nwk0QK<-rqM_PhET&!1`YDcA30rAwNvu6$wX-O+j0qhHv?*aiuGB zP8j3QC@RK!klEX(CAMc>=3E&msZmoqr zV@R3(pLXWUueX7ggdSN*#v3;rm%VUIXY~-W#NW}(;sfu*Ucj7?1jHdGs@R)p?r0t~ zyfrFumpB-%kkJ)7-QFd0tR~GPYj@v=8>{pWqhjpu9T{GTCKWl6*l)wP>pG4Q>Oj&t z=peB}WL98rlgh48PFe8JjIB27`DR9FLwWHF?hk8cJac*&pr~bS|4shL^Ji;yk0;$x zwJluuhGoLSVY*4G zWq{yhC*bMH9xwd<#(;_rU0IHU(>R1)b9IRjlP;_U){=U-Ij&gbp@51UZxwTY1p7$w zHGsWiDUg7tC2KIa5bAtG#fqxOf5zsBg>jeT$VTkHsjU?Ikc-FMKf*kW!a#3<&e^as zmY&dKGh~}pVhYI97@W||Sq%>asbXoq7Qu@+pq@!q@Wky6f}!BVnrwG1IbK*ro~xsT z=Dj|&?c&XwN;K5Smu1z?(5=yoTtlERxUcP7U0F_nU&UpXz)G60k% zLm|RJOD^LLz!P_UbwmEwR@_*|Qe;Jh)h5wv^?foDqibsf2^-Y=c(brjki`Z%n!QYw zTOOPIR5zRip}`=KBfFX3}Dg1u(xFc<0H}NrmA#!x&51f@GUq@vU+yUxE_ZHs4wg$;( ze;cD`=UAvGFYKoWU2%cdaAPEo`)s~{WM#`F0CvKMdgZ7W*TeOFjSGRo=L6EN=Sy>I z?4G#^yH7*K0I%;s?h~QN%g-Bgq`R0nn&(a!FM3eXl9CoJlRAE~=e=M6+^zbGB#6y0u(ReHxA|a8hXM4Yk;(3}{JKfTNk& z_umJDfMS=Zz;i+>*A##HXW{_Ww4k_m>zxN6UGkZjw_JK_U0WDi3=g32aV!emZRB=9 zN$;sQCsxI_Y@HL8M-v&YZ!^u-^`^a(?ejKBG0^E`L%)CT&aMPMvYD2w%Kw0|5>im7 z<0$MO8dmC4^5}>I60F(-fUD+#DZ+kh2me^!{Fv^DGWe%_u)ndzixE~o0o>(hOZr8i zlAK*h%3CEBf4cMk#mZndFhtfB6ON`2s$J#4MRj$pTkz)cv?>xid%o3l!K#CFl3FVV zdKDBliWG}%Hd0C#L#EdaU>`B=lBtbDSWp8f`AzUZ42{RVh(Bqegqs8aaM*C}+2gU3 z#0v7F?NNn)>bME%)hGrj=KN3p^wZWaL4Wxu7A9oc5^``}5`J zQqC!~acGMoMg=n_lsDtn^Y~XEXk_S+-KnnD;5E0aSVY5(s-slS1}Yd@smyYyP*#ln zWx_H(;APfi5z4`1F*JehBtxadlTUTyYt%ltW64lgNu3u89{Px7?~qX#1=8TEwDZc| zJJ6}|n(9wdZk$65_ThywmF)ciDS5)6+3YUs6!z0!X8P*8sL^@ckr*!!i|9J?`3!uK z+U2rHcyoqf$vZ5q^>ewB*q+U0+pC>Nvzg2HE%xZkj1RQLc4~St?$nQy#GU3fGpvDA zAy;sObN-I8G$=`sAj`#3@w*;$) zI7Y3{Q$d3?7r;~8)ju4Ru{?{)Ab0xNWI4DrnTxc1e1Y2kP$+K`;?^->oh|}sp4;YR z2edKoEQ!|Z=3ltRZR~kD+BwuCoQ^^bn9+}|F`)?>2b+Vo*LiaL9(dID2MN?c2u??+ zH*I+`0o=HVd|XA?W@cfI1pYPh8`J+)u~_8icG+5KkdR+Tg8s}5mOU0y#7ZJi2dToN z(*(LLDh5A0aeM1L#L3u-*?&=1*`3(QraPdRnSDTx$l1da}1>YEbVo} z=lZ0WM(6uYE%n;qmLpEcj8o~@o(h{0{{3CbFVhaVfCgLr<^A+czh3;|e&i)gww7#p zDHa56maRi&J_aB2;hm~CZ_n4kdASltrOJixITm&o(*^Xsg#n3slLz|3J}M_Na*HeU zU=VzIXHAB48a`v2%abHNjOGLV$p+OO`gUgcVM085Gbj_{Z36PRs8jn&%Q=NE#qUlR zMon+k$)b4x9V-x`eZWrlTDl8Wfy4f$)qw42y-soGpFCsHbPuHX`d>zJ{UhMbgC1`) zU!ph>+EmJuRF#e>e3vy)FRhSSiGi8Gcx7+c*}aNaRR95;;b4J!XBv%pCBo|+u>Pr zqG|ANDu#2;8k7S|kj@2^Tu?s5lhi&)Xvvv|)Uh^T%WlQ}ko;HT`tF5Lvf2kUUs^s{ zq~yfML1niiYSWClt8y5YdhWSK*YJ=S-LY-p=FL6$*%Y~Q9JukbV(p-~m&Tm!r-(F= zZz-J~$D}E@3@Tmk)BG4cw*BhJgYXlIitW2YrUn7|-%U696@~9v`f)wPc?xOk<)@m% z{b@*}FkENCcLPu0Xw#OLAN*_ztY6PvQ?~?Aq@7Rtih$0+Tn2SAA7D5MDR`k^@8-d6 zHg#J&G{?DLK;ZzAv$0V5)b>B3gW-k{bY6s~S20ldPoO*F$dCea4OD_ANaAf*1O~n= zKV*!(e6gOtZfNHC=bYx8M7_i$Cc|aX=O^QsGLsLJ@w%C>Z)|($+Zp8(r})-RVWwpJ z;;oz8v}jdewTg#9W#K+C+Y z_4)ieAN(sw0#xIGIS6m{8mi*MD?hY;tn^yHls|)Y#q3Imi@c;ITU&-mZ35LZc~HXB z1A&WIz@Z#YcqSG8yQ-v@X%}5~YRO5JUGLk;y6fqK(UJvHf*iZA?p>#_uZ=fWPeyb6 z8YT6j-)*7mptb!X5`W9lGzNe|*+dsM2F||Ino)S~*Da@JRo4VO<-j<+ecak4?P$r+ zM$u+1yBpeIRtbx7<-eoPgw5OGyJm4uU%6Z&$tik@=HQ zzr)kz+G*jpbz92b@|&gH-i4&+2W^SJLv76>*BZ`M(pTn7iB)UZ;(NV#T}`^fU7@^&3XJqiQz;z! zT33g&IHQg^WI4HnK_ck7l0<|4EIApv-jyMo=D2V0z~vo0pR%2!dc=TJT5^O1L2%PJI(mEk zG&kmaJ8A`0qkuZz0VJaGK#TUgks-l-$^wUs~ZgxurVG63kxIU%>_C}(;zgsDrSS)*3ksW zX0%v=tfNoKBGfj37mEG}^#I9J9z+)f=Q%Gw2HzQZQ zjcfO19$~cL8F!bVqEZnAqpnM`S_!$@^1GLuJTS=awX;I|di}HmXg@xUMBU_GHvLz= z8gM~@Y=40NGYUF;S}<`!DGxuRh-Sgl@gthcNq^6n0}Ndav3ro> zbzj%(82+c!=(MLVZfujRNR<+Q@_rxmR1(zlAky-ET3+xOWO6|~jp2TSx#?ld!v@;P>MoGZS z1NM&uD+7F}o3I4(_qrFW%QgsT#0{3x%R)J;D)?VyDizUc)^IG~sY?lgMC> zP1yOJTIolzD`^mD?3OY%kccZ50O*;a$djN4H9q^7h4fJ11t}=Vmr?zg-5CjpsuVKy zSl6pn3Ac1`&nEwn6!+)$%7OI7H&A0y+v-i#zX9VvZs&a}c%|D|WtB!>m&;3c;LjP? z{I$bXkgY}E)ad-DR<@E3D*fjroPzqMZ?B&R`2?r1ypCTui5yekS+Np*`gi6DW5FGu zlR5;cHy9+Hoy+}E!tH13M4nD7jJz@m?H{FsK@{BqVOBTcdm<~>dsLU0aYp&Ika2ge z;_z_Lc6sl*Lw3n~q%0z+0VK!(QVK+mx13v#~ z?2Cf81PRC&{9iCYjY6KQK0=1Pq%N}*vCGg#f4W};C(@AG8 z<#2x-rG1%-UhfVoW7uJl->yGexW>1mK~*w^%7O2t9!95Zl9)Mp%I}H~7zY)-YEa)! zjV>U|ThwvimVz=1)OF-tAP4Gz%=gviBh!Wjm_?<@fQ6|oW4d0Kay*R`o*rUe2Wn6h zBXe=E?!1C4&SE+ z7jzVZSPiXh4Fl}@7T;fhqZ)ZMb8L;!QKJa;`SEm^_X+112#B+vcCsNRBq#huC|oxh>z zIe@N#n_I>-8hCNWyRawb8|NLgC9MG%$|y1arkmV52th3b)s?ZPq&9}TWaOD zRq9m2+h_jP4(Ro0?2f|Lur_E=SDd{J&}P1M18?j2VD02tPGQlVh1%NjY*%aQWmiul znK=@y5YT=5=JGdx2BZ?)pKlpp?(y>FbDuajAIHO9f>5@X7q^3G56;JCriMyeH@3>iEb6v zD%7heg(v|uM?v2*2E9u28c`@O9^~0gn`s5~?U76Xa=)C-A0E)hE-Z}P3K#>3n|GK* zrN%oVOVZsyt3k~edSenT7Sz&py*oug9V8z~%3|rcXswsTUoFCIgTbc%wa_d_K_5Sn zoCnf?T0itlD3<_tf87uo9wLhB6pc~PcWN-c@h8UZ+rxpfN#qIZyZEo0Yzcy^!U4hX zql>|TR!dp;|GoU9U#u)VPtVUut?7<>765Xe$>A}-<)^&p5Fh2yOZLN1s1t{Qr^_K` z4O1{u9g}-b{T*Nn`t4qWmcPrO^QI!x{potK7s%2&N$X`udh~h;9Bf(PpK2A*-*@r9 zYFCdJ@qPvkza;v6V%^XKwDQuw-n=WV>2V_u8Z>}^@5S{j1(Y9-Ke756N5k*{d|g}Vm8jvx9x81(OOgD zWhbCIXKmQ0CJFRT>uy6p<%EKccy>oU5^lKO(BbT*OIw+WUgXhDM^u(9b+(GMxD@b6 zX%*BFRrT-%Pd+z6XHiSR(^PcgoaIPFgU(DwIf4;XTZ>|NE?y{5@T{|F{0jQuE_Vj> zJKGxl-Lm6}3810>w!xIKj>*y@bjFu7p_H^TSaq*vTRU~e#@S7JTC2R zc}u-NBqk*+tbJvTrH!U$<#TV|z;EF1Fc=paw=NcmY51~?Re0SS968bZb?789nc-Tn zg#fLW(`Ea)EV)Ie0UlAvCs*J`SG?fI%a;ZtZ6s}%@7}+hkX=b11RZiGcK_aYe7s;~ zXmoyeVjfRB2e6j_2J+*%dk*N52{Le7Niz2epHr2QU^j~E1JWP`^zG#1Ce`{wJU;S_ z5YzSI_1JH7gG-piw&GI`18lP?QdAx2f8AL$T0Hgb>rk(DWwGy4T%pdY`m^wxeSL2t zZ-L$kJ6Z-@pC6DkbmQ z88c~h5Ul?gLXK7Yl-}_%`n#b!c@Bhj#AG#bPmvSvr!ODW^2+A>UpLtjanz~YsJLlx z3aUD?-j-hNpu5kDFZy^gY}fUf6JN*H%9El;HX5Wn7ijnj#yCCv)%||Ts`^)ktBbsy zL$%ICGOfO;ag8GnRs6^v2ql~JgqV>|M+ZOmU5yl;`ysK~zrxf&i||PRanV?2nu@or zA$AbQ8Rzz33$;B@IY1tOHE7bT%U=Cn&~a-mcma5Oy6Lg-cYM|H?2wbA!lwl9Gyvuk zZO<)b&lG~$-!NRidsmH~;AE9y;VaD?-X5BL{o>fSkJm#!Uh(k=FPgk2ev;;P+SlmL ztYpOX2o34Ow2GFDcM-!l&Eue5312fD@`93LkC2HNzklUL4y1U0`kTx0sW@SzEFyJ~+PMfyI33 zEv(e*=)*_j6Ng(SDIb>XY5#T}#M;O(fOp;NkAef8$)l%2%f3=S)t<)s((0-n=Z8+g zsE79T8qAn1r)C~M1=iG8uRRQwp-fvmY~~{dOU>uL|5^uVM?^OG-pRj=s)9&Qd6g2i z_sd8zXV$-Jb*VzcGKLq&%+`_Zp88BvSfzYSnJ-c4TXs^XQp|41D$2f#ey8?KUH-V7 z!yUKxf6}j@WcMk8oY?Z{xwJ1d13P_gWhDIFWNs}8pns;`AZ>5#Jq9{uz?Y6abggR{ zhYr{6qZ@71&lfEdxVEWLGhHlPdGuA)HYsQkeNL4--az*S5WBS_zh4nsCQjV@7NM`y_tXN*Gs#9>*j(WJt&k3?TQ;jGwzcIBR>r7mn?t&igF5;#A- z7pEBrMgsZF1*`C`;#W7?`sZUj-P!=G6mU~XQ-`lDeiX1V!U821NjMkeXj(Yc)iiqb z%G+b9_8m|Ui`zu5)J4&h?6Iz^#P3&mshfG$Wly-J{1p_}?E0^v-IW)c0tUZs?2S73 z_4#4ef8gz1O;*2li%1RGVR-qDMHh#Yg92wg~%U`<8; zy_V~ePwaHRXSG_=Mh;8l=w|+P%TLN)knQ9k0ZSK)RrNt2z75Vl9Y-D~ zKA2#w<#IRMBm@k0N+ztce@0$bR6x@`a%Kfbn8cPp*qznk_#pk$m5j6S+r=2$+%nRm=` z|8}%czDnmFeBp3&wXX(5J7Nj5lca6aj}{xWDjNn?*2XgCxxd1&r+KS=+EDC|c|)j? z9kMJ%^S`^pLNMnAw||1PdEe8;hPQ2SSyX~MhA(}jg!(zlWsEcLb~G>$idKrwLJDFf z82-%hub(1Ios!~v+#@t*^k^%*Eq%+f%56^vr_ThkD6aV!HQ8}zyMq)u;UH?|N7wxO ze^yCq&%EWe5KwT1U; zY>juTAQqt)K_vlpwH%SU^w>R3Y!#pA77oOFN(iD4Z|Xy#udKz+gl?PySyAATJfVBL z#B-qwpe}oGKY9r)%m&m8;^(j~;a2wnOK|d`9B^)+`k(ePx+0+2yyE=D7D}y&OFyvK z0h~T{Y$VE4xTE&?%dyzF-2{_z%7Mx;?+E^)KYZ%T+F!V5cQVEv^h9l>ORp6Fo8i5k zgWID0WP009PS;~NIc^J~H?cLEi_3$Z^P8D6q^I!O&ho9hLO+GS{cTyy4D2LKl)Dt$VJv{~vV_GWBSv9GI?C&tC3(_|?Yf zRG9zht6~wO11pS=onNO}Yp%ESgiizG4~nT!?y3ib^`l%di!t>t&y;R(0d))!!t4ZT zo5i2>FS^y6vyWTMCG%4=E8Qo+jH|BSLOZbwrL|4#T~ehh-#QPCRr_h28c0oal!%(w z&S9yle%WhrWHN}lvSdGsL!=L7`g{uwd^$OWg2lRoA&I-{X6rE-VwRsYk4xQr!`eVH z7QAz==RX|?DguOB88sdchc$FvF|31Q+!2Uw7-yq2o)w&G)dEmXaZL zD0+)>joLGFEx8~2sL^8**)6Cs@msx-M_ z$bl7ds_n_jovrh61HoCoEJ|)H+*ZX&6Q8ef=-*c!La#s?k4&bnUDKq8Wy<1MmlFO= zK=S=DO=F_Eij&QDZm-0_s$8WqL6XrQZz_cjqv&2;(}8e?oGMABUeT9{ zm;?!B4=sK=W|2n;m3;J!LCV&WQwCk`5aQf=lZg&5n)sxl8^ zKo_J3;?DNTcw){shR_V+{W4a|P@+;BG0~fmNxNNqzdLIBmLtrj3;S+6tL12(&I>espWPr1 zF>dF39MkfQHy>DWJ_F!@;AKEDwoIAa%eEMr0}S?xCFr77vGd6q8~)nf(!EM&+Mqll_*O+@is+OsG zx8>?;_lNtH(t+ms+~ARw|5MzT212>F|KBKdN~m*E$k?@63W*p~6hrE05iuy8h@u+% zI;BOMWmF1LOp7pxEMqN1M;fLyS}di8Nf9%anJoY7o>8asJm);Wm;YY$W^Uj6{w~+@ zy_U}ht{!OgbeJ>W#K*FD{WB=EZVHLkE2^~kpn?CkatY}=^loW+Vdt$bs>FV%9KG+C z;LV0h%YppO`|l*ph7%k9B&DKA&%FAeB^p8K++F4P>XVV5%<1BwyP!1Y0on@jnrA%3 zk6HVd9O(4vn$X^^S~(1NbIn+YqXi6K!PI7`%Y(d^Px=rWr z0wv<^00QK;aO`++J>UIPfA^t3!XjWhjrQ*=AEV{?ZCxAI&*z)^ys>rlC}-`BAg(F9 zWV=0kY|63SHJx*M|6cS;qX%UbH*8@Xz^EWy2SMbUu5)hhyef#(!j15CR#!?6#qn-j z1rNwl9;Cya2H@&?iw)f)4?w z&}RKVQzn^vIrhv^IuRX2GRb|(PA0?a)qpz)dFB^rB7v}!DqTi*%uS+MBK4O~k|!CY zBXh2-h8*=;6Bz6BUg22$KlSUHCXM_!tI4l=WD@{WMzD4pDpNIPWqu6EOuhN=QsN)d zg67Wz=I%5VP%XwOajnNP_GCw04YNv}<4slgGYoek)cE|M7xwelV}dZ#hukNHkC-5= zu4Zfe5gAm|{T2_^ccjf6yC?VR+Tk-9Q_$WDpXr>!WNBm*I3d#ynw_JtyHUyB&>R5A z`NXGRB6j%=FCz&m5VdU0(fkv{p>A2#@9FA<5+u8NkmrQC@C7zv3tj{q#oiP2NYuXy zcU*iU*AGgkA<*U)LMW`NgnByirITx%xz4Cjz;54Qwxq`Bd*pZJ%M$1pgD!!*3M#1d z{h?vs{>(NqPOm*FROuVEZF#Y*+KZ0ct_U`$ay6~e!tD1`tlCTH1E#ajkCE1`nY6>_ z?k|Xl4MNY1pv}EkAYlfW)?Wmlcr3eLG$W}f%H*`bYX9`ej1abDLpejst>1MX(%J$< z3Nm?mb!aOIL?TBn3t9noDm9;RDgmF^_GS(#94@Q{$ulB{hldh+*ZM7UC}xH#i64bm z(dvGYOob|3zR5c0SFY&WDyoLR3(1CvS6d-ofEr$=(^XfHJwnj}tQ|(kIQn^KP^gkJlhnV9N-36Cdd^`5OeeMY2- zgE0%iRR>&{8x}Bl)wwKQ_i3Ww<&m76cHau=5wk5LjV&TE&cYAvrdePN(F^*5gJ|ND zwpLi)=o~g&>fWVt=Ue_tZ0cJyJ1`u3B?uCe#!HesdDomLqjW3Y&+Gk`cevBbIDu?v z<_k`MEfXLEj3jtIIna9r?g?2@x;k$> zyr**wFguP;Vdm01`u>_PMPMWMXY=B(6p4JIv_*{U*>+#l6!$VWf^L;T8*y*5;>gLXu_g$Nf+}04cEDu7@=38efFvtW#PILqKQ(0u77hljEiw*DVq5)MdHsC&oJF z)5;BMSSILZ>6?bi8v@U&+~oDeT~2bG*-p9g%bFi5q7~yx!(T%XOEOo4M*&GOOqO=e z*|t_NC%wZ*_m-U1P0_on+*`cCP#H>AG})TW0QXF6a@;BCXFL$n#NRJKWbxZKyxpnD zg7fY{N&^IMz?H#CQxpB~^{eLJ%S*IpjMl3qycyWv$x1Oq_tI1@q<{ve7433d&!1+5 z2M?ON$h9POVLxJcEP@f_oeL@+7x4{6){I)MY6Sy0w;sLazbAKVP=Eezv$V@=4W5lq2K{f`UGjpSM@Ga4h+w+jcHu>g&KlfWk3Tq$YWmFzVxO%@!viy%%|x2ZIliy`%^B$5X0k1cuE6)k!ZwQ zqElSoTE)46TNU2^Vx6`N;JLCP=h7Cw)^vLO*Hz2EMjv?bmpmxBYRXpUf)^WpH zWseO(u`i1v%U1wA7D6n8Cdva-`p(y*4hlo>$HX4};V5R!3f5VNK2X~;;p6(1*dDJC zABV1l`@b)c#+bg!M*`U(KubaTA*+I3ZGU+4Kl7wUqodxt|EWfA?2gHZAkgeA9IpBbf_?fGGM2LESD! zQjLJ+uzGwn!{`B;|Kp$Q-^l;<^M~;8?kO}T{jtB>ll@^cDs5J2?@Tkp&89bhqP3(* zFYgxLziM1#mD{-K_%#!uT1@aXr^}?%s}uGdBh<(M4A1&>iE16pVK4rEfptZ5-KWRH zr!G1QGGE*k#SiIC0>cOvy5qwVMgy;en&Q^iR$Zp!E(!4fJE*AsBU$?Sj5jcB(o~p{ z#}bQnM8`kji-UZnJ)_r!DVqtUK0yZKhsW+(&J8zn5?Fk+=s2Y*u>7Sh>Y80ns|nWu z$iGsZeUclDlszy<2)GOA)vU}|BCIJKJM%ZaI(a@3FO1OB@6=h4e_iDKfoJj-V#AT3 zjBod|)NWfT2nUz5a%J+{JEb6}t(|O)=H`UQJ~ZE`j{iisH&BaCK*McGERRpzlzjeb zk{2sywSh8Z2I>N2R}0H^zN0vSSIX>x${de3^0(EzSvmHSRU%IcKLz5MkYe|T^X+4) zAxJ|DJX05GNVq+uFR~l&3w|bl$`QN0)&G(XL~g`;EteW$PK$^1YZ(cY3)HPkWki3; z1#iqlru8jJr~Wy~l4y5*Ho*vU6Z<+|c#75yi?@!9o@05qL;e}euehm?Q*-KZIl6-b$U;kw?T#%?r~=ijU=OiFGU;q zI$n5A{&kFA))!YQ#Xz=xhuCl&T05^#MRxIHsA=#e)a#V?|)3- zVW~lpKiI;;>6;=UAyZOahrL;M?a$tZrS^7Wgb|ps>wg~UGh8G-@{HzBLznqxjb!ot z7n<@FhXcMA{uu2@ntfGTl$z|vx0l3cMSl(Xsvq$EMUiPL*mS{92F2nZEXY-#Xff>| zE&)6*iyudt_C&v~m*b~iwSrwsJ%2>yo;Uzgs*yXt&|@LK?EFRb>+36hhP1EjG0bpzk#amb15P+7AwSOLp5Bq zP(V2guld5VN{{Bw%m zbKHy(cfXjCLxQR24p^#^^`oU*prJauLrXueID4$PJ=;eBz6*6n6AAn- z=n&Wh#cD^kzBtO+>lI%T`F)EHbSj&)ccM1JWNa&QcIhIb*f0~G-os8ST{mk4Im$jcTI70|1U(pBBAY`?cVNnK1ZY?md?HhE+OjEtr?cw z4?^buLWSbQyz4?|7+NVj35VYJJT;FMmdY*hSboUeb$;aOt-it)fAthJ*TGS917%%$ z_1?2n?A=f~%5Z~P49&ki)?E0siQ^Xx^?jSVV6G#}@zY=)7mu5aJN>W<>*&ke=+(!0 zB}1tTGeoWhpMgrFUQV~?r|*Vk($pdxJ1u^?j3sZNe9`9}G zr-ih|<7|!?DBIO$e<@qq%Z5>3sP?*O9w4Z9ect(=hI9!oGBl;nQU!kT%&5wcVTmZ0CWvfy9zwQz`P$--Vde2Q@mMcN&$C5V=QQ`YdOX^IZ-nTWY z`1hH@F0@P&^%@?I9C@|t(V+ru)+Og|wFj-v`vX7u>;M^w)A&@%(=%xNS>4MlJ>&-+ ze2Td*-ZQ4OTS+re9le(as1GlD&kdJ-)QmuM872e_5fK|fGbe*j>!L6I^$`tI|Y?l4vG%?Np*|7 zaBBg#wwc_?rp-?W59?ozi2wV+$3*-gsAKj?D$}Wvz%TIS6zuUb8gVlJ>#zhA9L^Ja zsuFhso&ty_O(^1miZXi3U*;P%GxMQ9JqnbqiF~{^Kw~DA9=|L1Hxc+*Ql@yBLy8OD zKKx_F8{$p$t58#4sld-+=PB#qN&SCzwnkd6d$TUIi@<}>?6L?S1*N`j_5Wg7 z6#0cisj};FV)ym^{0XGEe>N-ai-`40T1cO9X}bm!c0zLz+PE>`_4WLh?$j9HyBe1Fl?#+i zGzru46hR#`Dj=OBrNar0?ZvMjz0IF3AHM`tn+hItjBsYtKe}R17nKa(1exrkNn(Z) zk~{hda_(?z`JX1I*#9had2A9}Q(l6ny$X=M63`KTlKV z_y$lvXG%N$>Sq$^e0RUe?;5nZ;$}@vm6a*BD zJ|6dX<5U7SoX>zz?wS_$CFDAo3!K=R^lGyIb=c_lAGC@d06ZL9u4sHFJUhu%sP!34Q2KdYspcICro;#)}m%Jdc3t0{MV4i;_U?EP^m z@(gj{wuM`Mz6i&6=E2^5_*Kmpp%b2#`B1m`yO-SS_O}a-$dRlFX)l}!+4DCet=!dn zT#f#0Hg0!jah{L`O5QXGge0>HBF&-A!?CBnD7Ir_dxQIAq^wIKZ5ex+n@V2>aAcon zN(mi@^J;MQIW!3U?BTK2d^=EvG2#>usR)~dyc2@#(*H0`_SDErJ!MNxHbe9Bbk=Q; z*sYaMvO^XvLP02m{%epKHC%m7ac=Fpj00QGD8Xv1dbun9FZ2z8^^&5VX`+(Xd7j@5 z@`i^`Sn(`w=XA!N+2H6&Jv(dSi=8Jm{Bqk5A4S1Z;*B$;kmF>sF=m+}?1!ZuRg8e8 zRR8~$q-?JgX*_KW{T>86EE~OW{Dt)^8vjj_{7<*ViL{Wo;EVUG6W-BcAENjDf4ShO z$n1{oJ<=yDWnCS)sae4wn)$Epn?eW&;N#r_36}Gq_Z+;KI~s5{VzK{v$I&039C|B- zPOZz&nxEXSnlp6l=etZA*s#HQRhn#2k+O5;n@0xLCm#MfSbcP-8fCk{A(hslu;450G<+o==dHxIc;iQN=g@@&wC zpVP1EGW6e9AcRR!;R;_K%)k95M;uY(O3oBP-Qd19H8G z;RaAbe*fEQdCs2(G>Gb>1j`&R+}q&G6d)_wO1%9TkQ>L}+;sMn zVbl6W#f4%`WLGvV1{gZl!O{V#L{+~DpYhLOn2zXeC3(3!8C%jd*@J*`6GyvZ za1i&{&f*)jNZI<)vaagg7is;O@gW0c3~G?&z)@CQTHPxrZXQMH zsPsbNi~w2*1V4|gbCh5ur>Y1XM@MuRoWWZ?#=p)((VFDcBVGo`a{5BQf*!yFo)Fb& zE`r>N4cvsoG+Pmjs^@*np`-^9X2k;XS3WoqtJoUUey?mOvpNMq@YY{%t4_t=mW=_W%Ctw8UTA~o0{kTQrQBzp(lyK zs*4b1tn>A6G+(TPPUdKBQv*>W_)*HXMbK#1rNcI+_P1~4*qyx%U@P^$DRCpwY;?~$ z4*_qKQ7|Xrg4VgSm(&lWr;ccaIG8a5WUorCRE`X}MoA&a6n$YDAf&lcvQdYEW0fO9o^V!Ad#UH!RcD#BIAEFlg_<;HO z!+>qI7JuN1LjN8HMP!Nei6@V~uEe;Un~g}e{@&a$oWPRaIu%YfaMP3@83hDjxbb*3 z_-;G@rNWURMLpksF1v~9I7b9Id7y>mLCD)%$}8Q_>>>$w{h^j|yfi)O_?=^U-xD)! z?lucW5$G*!U}@NfVz*TeD@erv@kHnyimeN?Kow2MFr(Rk$)LMp782YK-Kt9~OJ_zSuz#^ZwRS> zqn>#=M*lN_f>f)rt3f$0qKfZGy96v5AH2qN7~whNZKm0-Uucs4wdH=z1zB#F0s3g0 zKcR7Jsp1wbF|&&h#lM^v{zV+^)>Issw&E1Luk>b_NS^!>r+^~T`d#w>9q{>>_m^fz zFPEBw+}Ku#z18}O$2bnicc|PE?!@^3S46Mf7@lngJ#tw@sv_<)K$#p^t~U2ya}emrt}?y z%?$)^Uz0n$81RetLjuGT|E>H_=WqKmEQJkbfLTy%A%wYnqD|{Y^$yfq+1AZ)Mhy#^;LYExwp$^m}ZaXlc^o`u9F?GPH0xwW++uKW# z4K3zx1n`N%qZROJKAwJ)M}ls{O1OsJVA-)NyABJGb%YTg0C3v{+ZX&y1VH1VE2nA? zLl^c(Q`dM;6o+pbH}GRSPdBHu=D`LwRZjmJ?2*(j>i#&-CiE_)GGdbSz|WDezP))p zplZz=>e`RZeJk+QjBneH?{*Y<2>dT`iCkZNT)#=!m+le=ITSieC?7^!Ixhg~^KuZ5 z%CYoWc>v{X1ASUH{M~rz&ufB;Qgf<5_*0Vb#ro?MV}WgAJ|>SY-k&`&9wq@rGQAHH}r>K z()V_*^GL}N;tYFFKbH{$5a{e>&(jmR3WZZ;p^3kBmPr8mrtl5)gPr#Gr<~JvRll0L zqXKy5>+XTM0-~wHiEB%)cz@qy(`k+lglTVarY-A8V<^J44%;7ZUi#d;Wh8TQW~?~V z!jPz}161U*1o%Ylyw@z1!z%@{IP>YE3tH#j0G z8kIW@U@gX}SGW)bnW_m;k(7p?E_=4!BI_I>K%(_()9fCiNecj>`hzk%uU-i^MFhEV zd3P-RBTjb_luYYQcBFT3s|F)kSwS`?4e0W@H=z3mAZoK7U4iWEUTCJ=B?vGeNcUY= z7=5r*NAz8$$c8~MkY$wfb-hvua$d+dP}#pxMnd!CVqiDYP2g77dCo@=TW`EBtmXpd zDP^TC;;Vr(D{3P{p}x`zK^*gQSY{YgZ@K6Uk%s{4+o8o?(+Z52-HiK`-d?9&unt3j zYTgZK9kTda6c3bQ33qaU%Sr5c*T9X}hj=mhIqU>!^HY~URsni5sZGQ;Vg8KMs-Ol9s zNKN2;+t3YZyKVs&S0(_LhX9~$62&~hA7DcfM6Yk9w@w*93?{H1DBN@bZQyir$!+sS zbki3PFUOn1!V=zhziOW%7lfeb!xGP3@~3|0u>O$z38p<{M#aQJ-geT z+e{CPZH7N8%n&)g8;p+y!xcYGXnv0RmUwM;8#(e&_|{n!FpIAafYq7ke~r?E&bktLheio`vW>LZfJG7|k2CJFn;(9?DUUfoWDIcTFoy<2xQbulo z;9e+xn*-4pq#Il6$VhDH)l+tKIdQ5R9AOu{A6dB0?R7~SmC7K+SPrmn;o%j53x$`yyu(dL2bt z6GdWBk~UTPicYsv%UVgwHsIiGXE@hsI3c9H5jz=i;HlZeHc-(K4V1<)E6>WAiXf+t zWlVJlE~bS^N44PNGYfZ2Ks zzy9WOVz#w>`eKx?PGjj&lyEG}>P6~~XSaFC?E+EJ99YYq7pC$HoPp+)+c&zn%B~3kVDlnyQfKK$&O^yKF)3RAxt_KXTs_$*$m9>dvKuU=7-0VH@&GsOcG>|VU>JN~8T6c||%os3JQkf!|3v`d2{WKY6 zgB;+@lTW`}Wyhe~0{37j+_}HeC~omwD6qqsJBo;eLfb09#kw*C!U%a&?SoMQ$U;e( zHNba=;w#!RPLY+mVOwi%W7XIvVCZ)+G+}S(zG>Cn@wYl$P;WbaDZw)c`{xz*3&R*o7HBW@xk(D0s~f_ZQk^ z2>kYkq)WJCW_Tg5054=-ygy1#NRoBi#j)lv0gx>lNFP6gVeJMtV^Evjt5NC5SPfr} zSPhWV*|g%4a}B_QzKKibF4eI0dpftkxPQPN5sGe`cu6u zk&`}@+e72v8DQT5J17Uvrzo7y=r#k@Z6u=7DEZ>Bi#X2t`KjyhWo zo&dNeF+|%==K;D~*a7(ajtuyF17AxZZwx^xPNk90E!W95KxPWT7qJ@{AaATe86Du` zsw^32(UsQ@cWT~|>x!yLSos!R;0_f9IHTMdiw6Es zXzK%IFQtf51eJ zpo2g_sq5ZtS)T0CS`*R$=-;?DXbty+ujp0+dSLuYqnzrUjPvT(Ss*T*<@O8(jY=R$ zro%d-B&o>l3xf-JtMTR4@)DJAfa-Jt<-xs-5M%4_)l1?;>7%xv(x+%+bL%G>-y=Z{UdmC8#8>^r{TfM*y_Z-=D_--L5{Y zhN-%>fab2v zb|NdWX-dlO7@%OpM}gYvin zfVVR!D1ow}-4myMiWV;3cw2Jka<-p(r7j9hyh)^H)w-i%sP}Nk#>9#dbTO)dR`Q)Y9~-5OH@WKBCg&n2j=Vf7I$OZpok8)le|{-7i^a(GTVzyr z1`1#>iClX;^WMR=RJdq0QRj*wm{y<>hp3hrfw6?l7|PQJs_`*@fs$x6aV?EW0JQ}^=~n?q5%fZc z903ED*k+(Ey?8pbWjuWh1Kh`y+01~@ed_GF-kpk(l@z))|HXKEdIC3HkoB`hVo;Xw z#ZbKIiyyOpej!zp?GI-l;_4x&HrJw`C+)h?QEof41UAE1)UdB@N1pFfo%|i@NYtYFpR;-Wdu2wKsu&vb)j!! z<>E_ga_Z`;);*33&-F%*nwi{+-Ys`Y*a|PJWRdN0?CsvOTa0NA_lxPdrXM3BFS;*B zWXm|X#-8n!^?K}*{q^dG9Wr-z@p(}AjLdO@e6O{s?97t5VaaouygUa-$IE-pIUN2~ zDXQKUTsX?DF}gA^skm;9xc`6uqip?4AtMMeV!58RE7yKOf1V?L%Dk$r;o;IgT0ckqNPWtlN%Tr-p9Cv~)u=n) zS1y$Nq9*MBEy)^=d8MjmR*=H18HzNf zk)2}hKT2Kg*Qzi5%$=C@oA8pE?st(G49!I2a|>na?!EY7k=teA`sNz8Ql8z~TFeW+ z&p#4y$jBBhPQ>{$k4Y5C-C&0jE11L~oto#7EL`G#g`R{jh@ZJk|4vJrAMh^#Wojkx z@gil!DvyKF(aj<>?u6A4ceb}dqX6kKeG4t^q}B1G(d!U3NfjE_s5*1 zBQ5Tpx*@krmtjGQiYv=s{-)cxVcw31gHraGg2)}#^7j&c=lZZ9$94U^nT@*oAF&1H z_KZ?mqMU-PDar0j)tNTJcElzFo)y#bUnCJs85*?fiVEW51woI6&dV!E-Ii94pSe1E zot>|PA<|&|fdz+O1Z30AX&u&9ghl&NtU%ETbCFOBMg*yIj}aEvi9XXL_|QfA4mJ1^ zeR|6lfdeCq{h?}0}J6L^@ zmKHaYPUpcZ|Jc0=@oZ2JMsk6_Cw1TC9Vy5Oo+<0#9I2PlJv$;u`w`~*{2f6EF(V@P z|8Tfd=mF7&Eeo_hTX$^WxR0*vxfN}Ocjtza_B>d#<1pQ=DGv7{`XAbE>)`%_h-jx_ zwJAgCKnaJzCN555_rfJrD+Z@-mPY@Dz_5B-5#vv?y495T1 z_ZNg(vwt6kVUjL8MV2}(vO!!5iM@)&ein-S++|pOoS|i~L%Q|^;!%5%_QNP;C(E~U zgJ=N<#$X%w7G&rWrv#@{5U!JH6Mw^Xo4$zw zCj!sK(VgT7y0>jNrq|2ih}sL6g7WBv28%TMFW`f4vuJdp`{0kNFGj!z{9P}!NtShnw7Qd3r=iU+C%`R9#Kccd{H4(gjdq+)=*^K$flZI z#DC^Qir6&As4!_bUX5fS3$yzRAKEe~A6Pni{V50{M}Uu)suTG+hBiXlA?qv8L)Dx# zNKtNsEnQ3Aj{Jc=rC~la9B_+1X+Y>F2qKLm@+2)%LJ2||8x7GJZ;f#6hpb1pER>sx8?7zA_0!{@38vj zzn4B5G03!9ncN4UMte%E8J)sDHh$>+1-P#VT5_2lWu?Y8KL?Am$T0t~fxY^x>dQIc zj+i(Xr-26Sc?AWDd%AxRN`q&7@C&+RsPFS3V0}X-1(E;GW1^)iYv-WMvVrAOH~Nj$ z>?-MiyE?#}_&*$@$7)UjKPeCRC_cZM$*;)tm-I_ZSAV=?9O=9Xg5juadsGU>YH6*C?=@q*vO58ffJ0=?1X; z%ggmu$3DpVJ+X7gAOwuPg4rA|8xYgT;!`>!$WR zn5kGS)+$c&;EME$8DsdimLEbrzl2{o!3fb*KXp!=yH%0<7;y`*p7h~Ipy`040Al+w z=VxQSBp8T~g!NQ)kepuRXR*wm*jKBM=$rGW5k#Rxn^9-5cy09hq|FV?)MYHT5nRtS ze&q)JG1C^}4Lb#vXqxDeGvb`B9DKZHJGJ~x%z{h0t-p2(BO~2MNFj!c`kfn`N(DGv zMXpGvCoI={%ChWq-xLsl`v~6o30=~lx+$ok61Zav+_8Hl_;4>Rau;hoTM0oncN(RD zDU>X@g4pW7&3eIyku=}L;9T-ngs3ne%OZ4c=&|L&lmKCBIt#&1{S2zLl`65w%V7c1 za8mHo(d*$buqSNz*w=y&&(I=wvXo$8idDEB2X=|;5Xrm92#u|egt>V(L6Y$)tikY_L&hW9BZ0fK$Ecn zQH{K=iH>g7gIjiDF5-v*zn1?I6?x(B9Ei}Pb+i-lbuEaHDvko1LyEob1 z`!nEQLl&wB`+DsMPY0e2d#%WtCd=wc6a59;vq`6$bxEDKrZ7m+v^=RZ!Tsx{qi47|uYKV$G1cA1=jfcug-|$_lQKS0 zjhWgMycyAqH}Z3Y9jO0o1*j5n^8v%flF{o?MFLnWQ7+CZ&{KDkI;px3mW{mge?ez! zstIuAN8-#^MVkHmmNA-J>>fig}FTM+E7zEBF zrc-d1;DwAC7oC|L2qJGsBj=7@SFz*4q}-OaXGvSJE*H=N`bZwO(C4sBTAq%C;gJcyJE=`k3g114kM5EdG8UKZFc`D&81!oPL zNrmN3t93=!Ep~q=>uH*3?OAco-n-b#UB5Y=6lO@B|1=4&MQk-p`CRpdz{XJ;H!0Dt zN*){~h1mg1kgw-sGcvgu~3+VP@dLuzA^+hpRs*!lL`V^EwWOUM4Wl$4=}I z+5hYP^toT%%hKw0b(+YHN>j%CVfE$5WT6qsE814p3-qTCq%RH<_$dwOi`Umb%t=W} z$`AxvMF6n6`C4Q-jeokX2fA=wrcK6>)mQR1upVpOjU_bxfEvfpn+o-@UGjh-( z(GA0z3n!ht;M?mV&ba{3S_6}HKDY(>I&fKx_bI03j^(#}*&~Xj4;>{vg1ue}B!Gu1 z2Jfyzlb{8sfGmtfk6b9x6R7DRT;HlxV|zQvv@#Zx?x|u}-5b=fpQ%k%@yX}FIkmTp zAK8`L0YqnKWkncRtZwf3aA-2V?AaF;ra2;(cZ2>$i%ja&U%jxJJ6msyT z3GJU*Z6|-ub}r5>K(Hi!P&qdh#<`)+Dvhd$^|#r-e}8r0xEOmoB2bu0A6~pPeU^=D zJu*j0-vvTV2)->>O3ZUO9GGGUB9bXN4>m&m0n(`c}ARz_%SwaCfU@15!53& zIov2|Rkq`bUReq#us-8%lcyJPEH!d!JDc}iATyoB+=z&M;=!-<3O-ytC(ik)seYp} znA*KG--O^hK$E_DO`PW2)l2l#kX-a$qdec*x9nN%*~bj%CfgQR7Yb}}dOF6bKl z#TysSbXz%`N8;4B#Bltb$_{M$!q{SLQS5t#i?Nc<;uzxeouptDY0h`Lm{;Ztmn;=o z^J^~ReMAF~=?P=w11I%@*^D;?EG2OvhCZCsvc7(!Inn1P*b4!$8A z)!i)?a0TX74vM3H`d-Z8ZzC)umMD2J75^@7h6EeU?wNk2Wr38{$lqtN=yUVyNI~r` zyy+xiA+9 zV>bPtfGVbFu7?aglPp9B4V|=ftRyWU`+Wa?ZUf$*rqfs5OnC+LFt1*;%br|LvN_M? z>bP`1KLVlhZM*rg*k6c`7hebB5;G{mX{eX^Wf6Qy2%)#5n^hnDtf^5oxTXrG_UYSLi_?*x%i?B4N#6=e zk(=8%LJ;}=j*P-LE<(b>T=ZVwxS3G45Q3ze9Vzr!fB7;D3Fc^3hV_)GfmoU5T9w3_ z#W~zL1lpXFR+!kbOAg0pfPnA*Nc%TP;GvB5m-u9nuSR?K&z1nQyXU2}{A<0%v2BZhF5p`P9~wyyD&M-}MASZ> z{QNcH=u_hd8m+)j*YSkls?qE7wmjPV?qlS6wfyyr7ER5MP>!~Z9f`jFZWj28e{zSu zs&v=d3=yVce{+mxM*C`vPD!Spb_|^$v3Uzh&Nm!p^CGlv6Gjx!{hGj=cNa?w0#CGy zrA=}Gt{4nm;m@|w_t^4lFNQC-l+M%cvTbBL7rq57dTvex*cQ12^Z zUv|9~gGBcwJ-lgBks|dR43d?lrHlAChb#+H^1^@wf) zuYwMy?fKM3vZ>+XP4t1F@4Xsh-I=@pj6NHFZV}Qc?zb|BaqSF>Hf;4}<2*DEJa+HJ zv`knWLCV@wgPO-aZJRWmN$#w@p!J=Dc^PRswFHbVvUvh`8h=B;@yKBK*k zcfX%N@zt{5*%=z;T(FSsnd*`hboc?$cBdY1HNh zfO7_M8>5>IT6y^l&;+i4u3|fiUVW^R&|=t%@ELH!)k}0ypb-s^jKA;QY!Qp41+E1~ z62&Yr1o>>xXITB@@cEY}RjEQ0CRCjSKP@&V2 zFyq1&ItV+?5cFG{L57`+Ap3qki2QuYO&n{SNug6E4{}JaXt7~*L}c#G)O|jA9SlhX zv{$Y#c&G^tScuojalw9}-q(a5L*&wlzt~IQgsTGU6N4X+d0$F$;Q^GWvSVz^M=2j^ zJ*MR^V}GMQTn;Dyg{K2Y(kku%5~(^L+g+6D2p67fxjr``I0?^`10ov>uVgG~dlg)v zU};-xd*|UvGvh15cdAauV4dH>_QyN8q(YRLjyyw^mV7fKld^q^vt+DfS(Z3GCha?!E zB5h+0IY$(!lQf1VD+r=rro%W58J-KdmkoqtLuN#0;ExJP5ijlsQAQ+6mF9~LAO5tY(w>%lIAvd{?$IAh?kgjU zs7fPwp10|$kR%le&}5ZfMGqHbL?Aam<(#qXp8q@D^|Xa@EXgd(x^j0-SAmgA_pE4M zDYtQ0NaEF_Se#pn{EmJHH*vh_eatOD6u#kChQO6YY!7)AJp1!}UNxC@R$Mx$!q@Np z^`0cwD=y3YOr-TjXPEE7e!?+FpcAxJ79ikzpjNHfU#`fqbuOw{3=eS>WR4i-T3M_t z>ZYvxbY;sSCG0Jv*wO2U3a*S`rvLs~SOr~qe>6UJ>}hW92g*OG{b#@Okt|lKvr_g? zDzI&klJ9uZ>aMm@0UFO+N+aL_k7;SNF33A5-rKbnV?*v{T-)HLhm^f{BsBo+;Vh14 z%i*@be!4@yM(cnm2{*V~Lc>@#)!%ogX@TL3f_~Am^9|V81ulOzQzJr4P(uw1 zCSfTBBp>^EYHz8Hb3)*UT)U*7QcoOSZ&F6|0~0ffhn3OiM5ugV7fnAjPw$45o&E;c zOKxu4e1D>~2wb$?i!%}}i`av`0=gkr@_}aSw-l=%Pe2d{>zkyWux9SH*t8JWht1|# z7E0VxbNzg*!0ympsf(EL9@`Jwe_OC|woU5|6v4FVF(kok8t@!Q*wz5<*y0#6J}=+7 zVbtzM>n=V6MWEpXfa4|*R@QHA%DmqzizPDnX-5D%f&A09VN*VHAzMz8_}Kh#biuP> zGvnmvmv>=>`&rS=SJiEK+IF}R?OFvN9-*Cxu8}0}G(Y@a7_yUVvr2%QWsZi8xyV#T4 ziGAJAbv{mNwt#~k8NU~NY4rMZ!4+374wjq3@P&V6^qs&s{I~YvpsuI-spR#pU5j@V z$>83Zdl9@#GQITq&YIBJVgc&TRa`rd8Sgj!;m7iuPnsPui>s~S@oI0}vIDddG%3&T zCSAq;Mk}8iF$F-R-89Geu71#qF%dLDiulXU%RLh=_O+=*DP8CQi2#_>1XG(4D?FYRRu#(5HE;-mYuEV zz9EJFrsZu(EEX3zA-(c~e6!4jdxRJ81|x>^A2#PmJ6MJNfj`Nx{scp5<*;8TlpQsa?LF*Gvjm$ztNR&PDgO8mdMY0t{+~{ z*Lntw%`N&}@WVoDQ2~gay}f=X_l#sN>Cs9l1VVo_OgC-Ah;zToUk9MKf!$7)8Z1pA zRBU-jqQK!fX_RNrfoJVJ`@ZLE-?O1{jWpzb z4SX%Lmm^RJ4G!(3S)Axts-drslJh6L#W_3@V7sY(o0mjW)P05W)erqE$yBv7+#_bg z0F$+rfu%SH5{(yhwFAQxJh7$I1I-}Jk+Pw6G(a|X`P|2707x+?T@csx4us3Bx-g=) zmgsFK=BHi!6RBBplRxoNOrH$PwR1zI4G)RmjW{&f4?;*LFWk3{7aU>eo4mMsaVPOS z*;=jnn20LwERkww!g5>3$399+^P?ZUqo7gYyNg2H^T5yGq zQN>LzIH3cg^no7o)`WF=PF=kQ0xLVEPg->q-=%yX6E}il(4~?S5M_JRq6=%hQTHq* zWd~c1m|>Vj^Q~eZht${ZhqA7$bB&jH;|^6^++;MQm;a{#@q)q@#>N|DT``|NIx^<- zb?Dk(+==a_l26f!6J(j=Dv}7D%gB%U^}Dwj&%Uodq$l9KnS`6tZbbSdnyEH}J(8EK z#{fPMn=FJo)OX94>fA{Ib8+&+xPAee`L>8l)_>W%8SC2IPcxYwC>kQ%Ovvb@EN6mx z$(S9XNV&*xw#J-~KJi)j#2I%Y=zr!Uo@WG<*nOvV?om4{blk`T{)kl(s zyi~jL=w|x0LtCEutKuMkrp-jJA+Bn7rapvaF(iCGRXFyCJnI%cbTTW$wT!vYkewI) z#Ih^PGD^IsywJ<5&rZLc?y1THd5r%Bd+BZ{Jq!{IXwe5b0`CCZ^30E<_^~VQgk5Cc zPF4{$_8eOoSCMWBIb=LoJy#KXe_fB`pP2v2KZR+`I0?W6yw10u1Kj2zQdB}$52$vw zLwJ*FUatICcd2)!@PKHGz`NK8sTUhO>)rQ@J+J{J5{X>1%HaH{5| z?_-GzY=jT2@oqfEy*-THs43fA1rDQracvdjfO~D#o-L-}KhxV(q1M}JJl-hRN z%AH-4618s$db`c_hNfSqRE7D!5=Oxwax$d7b~g-;in0;XLYK5=lr-xY#P36XT}8Qz zt@Z1ed*7;gKkLamDZz9Qj5JYX4!DTRRx;I^=Q)t|mfAlSE1yw_a3q)gLs4HP^Jl<94lwo`Kcv-CZ zg-1&xn%7dde7WF=OE?16r&XI9ITbGX9Qdo>oGHT9bJ2-|MX5ZUg`ox?-2^fs=#8+R zsmsmlXN){xX|?zZ9c#p6GD!D>v|QC@3bQ_}sJaVcZZ5`_dfatlp+x zC-QBOJX|HDo~l*%W9M%Ex0f>B-Yk;jG)PFLnM@7%KP6MW+Lqqd9|PlV)fT>BW3A=1 zwziSRe|DOLdY-e&I1ldn|8eZS3f(vSd&6vZHI{vrrwG?9h9ujZRp zO`h-(&s69Y#M0Xpbi=g+L-(FZb0;2AZs(!y*cSVIXVQ0<)gyxK`g`Br*R(S&xPJzo zUYwK2F>lDWgHnlxF2g-v$I2*;zqKcy1G&%%hP#n)bbPEw<%4p_h7aG2e9K}lb86O( z=mBP8z&>!5Y3>~IAKLeF6oU6|+8b#bu^N8*n~`<=-Qd&7F*cgz&fHBLgedUbsioRW z%!v&tf0pjr!*t?p;VHoCf-8;6g&Z@5KmOKWlK1_(%&Jn5-0*K~19qf^#e;mUMVJ+RJN=vQKo6V?c~aC|<~$1W9{Gt& z9SA+OZ=Gvb65t~4;=6pS6mhhFjus(+LS@6g4es-F?kI0{6b3i7&3_fU_gVLGv1`d`MVDX4ltA$dw4n?U;6R z{J{@nw#doWi4YUdk~0-VJL1ZelBjD!Mxr~E?_N|@p7tX$uF)3lZy?d*U`O+%$_!T) zrQ-$fU+{P}n_MG{e^Z)D6qq@wHutXVurL*hNl5gwlXnShUS(!cm1C(yvWGYa*Lg6% zebqjhzQcfiTX1T|=f$^v|Z2w1oL%e=AU@p_DuR;2X!8MUm{ijxaF5;O@ zC4WaHTI1@V00r@+p=&k8VDTZ{Zf#uwbKgL^AgZB+rd5g3wFh0KA-T)gWUGRU@)Jko zN|Yk`7Q3QFm>VfNhfAjaQf9!AW0 z=&Pj1;Pv+ez1yx6omx~?sQg2j^w_zx6%@IYmDa#W+{cnR)+iV|Z-Rc_%C9eP_Ek!b ztZ5UXOODz1a+BN}j=#rEH8HkH<)&Iu0h3igMW)@~fdb}6J37>H;Onk8<2DEHae*1T zL_6Y@$|0AR|1L5g-B1{h#3zZv&rrkUQpP)f8F2%c>YL3Ck2}Y=3Y~ra2NO!o`gC{j zPX8?EpiK)jq%fs6tCkDj4%bF3lf^b$5|J_k=8=h0Q?CmF=2fl;K3nnc;eWV&dd@R| zR5_SC?G%F0xxdg%0Ot|5PK3w7cdczVOj$2*!U}d0d;7cdhN~Zd+6;m%gO@F&oKS_` z<$0Nmr00~($&XG-bj)ZP%RN6d8dDzo-WzHk0L$c&*Qe*~Q$Nt*jH&7(AZAvwsnpba z^faewDw#9g*|v{5R3})9qs0ATV(b(wQ7RrsXQv?Bf1;TC(NfK_&tYs{VpBxBQ1$SX!0%KceGW!QyDCE6dV3J*y;8h4;Y+jB2uo zqI(AFcZm!@K`6W08H19xi}Bk%a+L=8X<26Y!BM=@tsc~0XM-xU5^>^lY1I+v6TP|w;>lDqDv zS~{TC7FxFcTjSI%P*kuf2FDW}k;)9m42@gb}K zvX!6WNf1M4wj>RCtQcKZSZKT%Wt|i&89y^Lx!Uhnm+N!LDItD*a`lH#r~B8}b*PQj zN2164q&0oTzxp3JE&kbHx!zW0H;!}D|4VFR+>#FjnOQqU4YXvlugJ!lJvi`g^`+b7 z5X~`?9OtHW;L~Cf&lazV$<^DlQF)8EtSx0^PSz@#PiSQ#DKq(_*K@^no>ZXuhCSn) zX9w>{H@J9Q^3J`wpqMHx-H6MnUUO76*hr=7a6}#0Pp>XUJK}AkpLrJZ4y&u7B5(TtZqoMBKEyf|M`O3EBjk6 zdRIgGzOjEQ(NS|u4G^R|OE%|!S;?3D$#idCTypC1yN{;#rZInedP{vHR|no zMKMHo2BYi3vN8<9EYR0BZ{V_TgJ@^tV%WXr6`nQcnIozt^#m8~56=Us1Gq z1+~NR2`;K3>b`d;%4-)E-0jNRo^SH$>oPlP;WqM~y>DsBNnwJ756N092x85SU0kUb z@fOdJ&sD-X&vESeSZ?G5rI@Maijyv(srWZ7k@3`-qQ4hCK4$AVCI5C+Dl8A`No<_1 zR9j`c=NAuKBymFQb2qna+wQ!~9Se_)&3-mq6g{ukcu|OhGEkL%xWXi%Yl{#`3QsN*zzCbq zcRaDx_oy&bPk*F&P<)$mwzU3-hXGT%%#C=Gj%nfeyjI7R?RgUrFt2SU?GL>KYlaQ+ zh#P8EI>b%OVyQQ8>kYYz@9Ykp+8vu^8o)B^&)QRZx_lxW-5m;K#oO?_#r$nf;idqG z(ty9GvSd%Eo=AFjZ{5c!&j@oX_OrXp9crH$u#o(RSINr(Pr%i}doFCNE#S5L3<;eC z9y2T3DvCekx^^p*0+NS6d4K!!A@K2HUVv0+mO@R`$b=?9^I+Bj>$#{pqlqoOxp8?A z8)Zf_^DqWBi3ifvYs;&;SAX5A(X(ywW87GbY$qJuIrHm}Ih)sb$9yrX;9rP(O>sNn z2ql<}lebR#LocAveWQ8hqD{&_*+fc{!so`lX6yP@v)&NHBp-F03jK(JZC7Qsd{2u} zy7(S5ay+lO*HaPaP2`Dj^}O;^^pO4PEx)Wc4tdgd-n^zhG>qkZMyJXaxL58(y@+A= zOq3TIY5Cyqlz~&+B6@71Sdd;l71n1ZeeJMkd5eTQ#7}u(QYWkoj4^S++4N`3osoI_N4~u;hPKZ=3|)p0TWBdOmqPdQ;w6TiWlim;w*-h(dz4BK zg@r!=W3Kp`N1Pa)>L-4>PHhV{2vP#wCWfT2wy|*m`Dz{-_d;mts^it%2VJaQ!?9Uf zt##Mc)4*T{Y}$HSZa5#K-LI^HIAUhZf%q(dv=1>c6wbJh5N7j;EdzCmNb!M9!e$(=PElRUv+D z1g!tf!8>m|Fb2mIe2o5ASNKea z?hv7FZ20KE^KmG6D;wzXga~#E%ln^}@}fJNH@Q7QT~HaiA&=f;)M~9G`UYF5%^gU% zjt#7UhV~|ly4?R-!MsX4nYe#X$_7uqwSDD;>K?PYKBLpK*l(FvwQ zgBtGnNTXR2cCx^Ov!qL1yVPiYD)U@z`6HSEy00a~a zb5p$K&tv5ME-w_#s$k7rZC`S&EN}O`j0inD#u%#Wj*+a_&aMuaIDrQ1n$46pu5HQ5^~i0pe8%+Coe z#y@7pB!=I<`uhFjW)%+p#G$vvPv!qS(OrG`SKcaM^uud1XI(&0}82A{6H z;lM>jYoIVt6e+@+BfY7wyr7`(T<86j0L}6Uz5K$3t|^iDyD@*8YDSx@Ra`^9oky>C zx8I=W3Ckc=A*Vu>d|wB0H!knEfPAvD{8*7!xcZkNI*b0?+PIo`FYM89o=99l|Be}k z;%WgJEX=;SdSdZoMileW)|FBehA{cLH{ZH$6_Q@-)xN`#s~GyH)1-6C65h5%u?BaJ z*5{=>P6ZInICi^>UC?ik)mwgA9lV?#Cb3O4-QuiS zu-}`%Ai}YqYzC%;mB5dlU^CjhSqju0-3O@{;+gd&VS7NJGP7gmU~l%ca0eq>4mJor z6tp?qOQ*z#42D!(IDjCb{-{n$A*~f1G?S7GMcwOpOC=G7x#YWpZt&VPz*bjUu)-W>AV&If&zbt+wmd zr^zDL)W1yL+t}Ct1d-xzmS==9;c1AK_SdKPY%X)*)Q`-!g~Qv{s-6RA`^QwS5Z6^{ z8ze8oNm3tBKQD2Pn}a{UXqi<$t0{0nTAyG@T2#0n_Beo9Kkf4yA9re`(I$tXnH zf>8Y=slm=P!Q<8IXH5TwB7Av}@EY>&yEBEsY0FA46w&z&GW-OH#pXw;*3fscE|Y=~ zPXW5@1FN;au0xJ)SufmS=iSSaO%RWCuA*39PK$w2Ry=0oQF&24?^8{>zRdNJ{r=R zTg>B!#SpP~BC<|&Rg+o+*fC@jKMkO|xC_?WJ(;aL2BiU8eGKJ_IP}azA9RTHpCY_F z(Zt}lE%JUBS~mdDQ6XXO=XWyyT8gTF)MQUT1}9}gEmOF~BW+6zlliNJcq9OS30c1J z5Vh_k*+KTn?myuHxwnnJj$Vw!KaN!YWq&sU;%aRAy@)bHg3*O;M_v@0Wq(7tL84Xo z_UHJ#VCH_g<37Xe@1NMxLb-TLWD;fYa!l`d#QCr|X6uA$SMNP>ZPewr(WmGHR~ zNmoGG%-qGmbU__i6DVk={P@4xDUsm_&~JQ z#>V|q^=fwKgFdIMmhu>v#NL-*4#QAxH8zit9FMiG=Y^I4s>!W)6ud3bMhqG^5c+0S z9Q;By-RpIQx(xa;5O{_Mp25F&Nxe3jZCHl#E3}0KsxZDJO}RLTqD{7ud}v{o=reZo zJJ1<-?}C|yDsFIdm;hX&FiEa&)2uM8#P?{w2Lfk)pt}MgI#)~ofmj~BbPEf84hT+r zkamH0?Is0U*Wn5^-IsKjF7sGD$ops~=KXO%Ikh2^>jG33DwKR~t@XFY!k0tsRu?y? z)Q#w|4|Df4-CbQdfPswlho^V!P$PkYm7kg3 zgf;~+KTtB*w6#|!&{t(n{U0!oL5!jQ$OM#&1@-ETS<#bYzpB0!NMUpnTJxk6Ph&Lp zL;O8EshaW?gR?~OR&+P~U#UyLOzqb39e8WvrsNKcQ1Z+tt^O)nCnz&g?8DB^R&J=);vxUZ+Ore8{?W6nmlYG8mDZwn8{$$ub%Yo#LJ1O^1 zp|}QQVW)G z*X6>c`2MEiGWSxH+PgJz&{ekl^H5iD zBF6}lz8_Q|D`1rS|+`%LUm3jvFaFuuFE zK_#o?a{*q0W`!Y*yhChz(DZ;4Y0df%CNN8c>#hWz)_rbTNP6{O0zaL@sE87OdX59h zyIojHB!I>Y6-Q{q2@KF zViDnXs8ND%z6Mi#@>$WlR5lj0ECie~lUrGesfb1B)-Ia_zifA`w}Fx{xF_P{qVX*U z^G^+OfSFET2hw;2s}N>D3Jt?}#y>UwdF%KnVjC235?!9K#UlxKSRO+z?!}VVrZ82d zSJ;&IPg@XhWisRP6Xp$UmE1D*#lugtjSIrWqw@NgWd&nF!@U*e{UNoBzgB-SSjWhd zeTR}J%RRz^4|Nl;RJ~g&bcSP#`1(p-MRr_Cz4x~ z_b;y3@oD6sQ_4!G1gq?6qDLG1rPZp9_vGw%vT5_2o$kj9p8{ZyPlXI>kjWm#z4Taml~L6J zpHO+`{BOWl9?W(&6?b{p9gG@8gol`TiKE~sa577NDm;{!zLZ92poAVldiDk*MT~17 z+(&nytG*_Jd(j~gLG~^rN2;paXNL~t7T4bR9Z^=1ehQd95vG=Px1qHL!aLjomy=V^F1Ee6V*w3-6cs)Pj z&-sLTQK_P5tf$3uPAmLFsCv`X+r*b9MpNR(59@ppKA&?If`%oOmuV0QAR=hkr4V^1 zaci_H_bFkcxx`u%u_oDACly4l|6$h^ni5WQbHr8zccnw@f^Adbhm@m#s!WG0Kd9PI zPqvsxeEmC%rIet)d@J=j=OZqpH3u|Q=}%OpljM_b)lJ({LoA;rS=qiki5!f9$KFy9 z#3IYb*dEM!hVB#RR4wm36t%0^?_<9*03^^ATRJ>H)S(TxTi&^jM-?h-w2eX3cyieh zlfF)r7G_2}xmT3~4#`zOkZ8oQ$=o@;oh{g7EVDf&?Q9Ux-$o`-Fa5ch7$qvY=i+YO&7H{0$H&?#_|?F2*MwmU~?`O`Qp z3uw3fblxDW>FcW#s<=&WiYPY5b@O5cjxXv7+=x{ZwBwDjwx~jy5jyp9^!k#L#BmHJ z&~+~J9$GWr@BOSY7K;?;K!}942CTK)W2TzDl^iV_)i;a`LOIot2Ci5iO%+-&l&$vv zul!GS2O#TDztgeiyR|yxmFsqJJJYV_{3SOn!Y2Z^8K>KgqqbYA->-La^POeBgaQB> zZ(a;r?{b2Zn1{AV^lg|{L;HTsDZBQH-hQw}2%2dZFO}L_2tHj;{BRiJ$jN^Z&{Z+^ z$%j`}3fXj0A)(CoTToc}m%aZ*NM^_E+n+E}iXLL(=x1rW)jGh@{xjWSo5qFnd~>41 zwSuFlyld)9;*-cQ-}uu}Hhf2j9a&#> zR?CE`Px4VELNxR-8pxW86UmyM0O*l0aHb9Z%E4NPI-)Tf82Z*{_ZBXC%$ho-6D(Aj z*%b86g`||?^C^6--~J=!q2W85L&jXL$@B?0#sJhk{PfHtKb0?69{1hI+~VWgwQDxi z>-@a)M#dQV2T*l|f33+a`5a<$K3pT_|D%uY6_Z+lohqXb{%@RKWtIwar$Brj$|Z@c zk?VT!9*!q%2KE#tNxGB1J;_?rbst*LL8D|ugS4`3R321pl)vMBHBIP@t3FV&VmK1F8hRB8U`7W2cMeDBj-LgQqR_9z zBC&<^X=5no4mpc#H6v%$ynvuZ?xxQRM~Ev&1|<)x51bSKYGC0&Y`4(7#yRpz^pIm2 z9CpH;AGbRvj%j@Xb-YqD;txY8vSV9Se_=7y_@*~c?Ddf;@4FTet1XeaD!^3Vdo$1B zPzquuVp5OI`}Jq4SEJj)iP#FV-1KC$N^ZO0M6FF7qgYeCI4;WEb)e3Z4_o1 zNc2$zxrp4Ug_8VWN21v_-c@lR9tHD>pj6WiTvd621?J3o=U zI~#ryt&|U8c#(-oQB+0wyoF|Sn9pjXdIm>M;)X(%Qds(@ z+iQP=Vy%vQ_U&cFdd9241*N5H%|0PhN|r7o`CF)O^L;oXPW}Qt|hlf==mhDz4@8JW zl&A9YmM>N=<=cY!1ZqSoy_8FHiCdJX2lkW+eAtn!ggYBz4{Y@YyA8r)CwuQnlH=d<@+SonMiinHk!k)H?TS<^7pj~!Zz0#I_aOXzv_U*f%GiEWZr zWCm?8Czq1Ai2~zZ1CLqrX`7eWj{l(oPYr);W4=AxaJXcoGELO+4BGth2u!*YEIGvm z8~_ABx_~0%(Q^Qhv3m?~eRR3#0JcKyrW z*Wc&ZNJ6^~CiEBs8cyotP91Se1gt{7cofo9i+e|w;2e_QKbq(#e(dKQ(3Y04I2N>H z?N48AZJc@p-P3R+R#Q&4n*(ZJlPkg%|}VQE;lSp64(9904QIQ_MAf|-?sMt@(f ze5>lb0`^!x2%xs&mmO%gG*o!+Wj(qWF4zSlZ;smi{ zn0U_1>v&L%SeS#7v?~x)4hP3r;TWo8z~E8mWz)&+IX2QLXjD_6i9R; zX~@GC|7Xp}1lDudMsa8!G!m0`ZJvY@#0i9MB{m?WV%L5x+;QF8WIW{z<4S5fDl`yoI`i z_o)=Xpgmvjk{rZM#D)!?2E0|FjKgWSlogNfs`;LZl1qRK73~%GEOPi@qrNTB67+jO znq|TkldA~WcKjroC%cH9I5lkW$nn)xDN1X`sBgjF{b;_w=p$wh$1upS-h7wz-d}Qe z$w52S!J2PlV$8fr65Br60UPr#Xtlyoyyl88!o>64h4y((ZxmmIpdz=f`6jj7^V5UN zudCk?h-iZtoPyJ1?1HJY%c3rar0;wZmHV~lrb~nT8p*{4s}?4yW+PZ}7Jw zp!3b7N&yFUr~cU1Bd_`k;jEgC@A6sst!AeJlxnJ>qnlm%VHX*g*P_J(vAM1ojC6&mOktL;4 zs!K_VT}WXV!OO6Zh|R+&Nz=@e<=q$6>NJfC|yzw^AF z*Xwybe?I-EnfZS2{kpH~zCQ1pDV9^*Oi}e#m6nU}bod-3`2?rVt(Wc9?;kt76~|3C zuLVu}4Kfm>)pu7&F=j#jb7$8lXZ6y{s;6blZ$|+`Q9xX!TQ!RdjcF778Lm+*Ldn9in6r!B40LRcjtdE+IoG(EXQ3Yryhq$gtLYE-OBY9h0&8! z-g#Ot_}+Nm|HX#j(NnZL+eh!EAd5En#l}nP5=tTLh?v={8nQ4EO_PH6S?($$i zkfcnCRxxh+zaA_*X*U$HY~b1puaM#Dt{sb1c~THo?s+nO#`o^se+pZMi<}E1x^Uvo zxVc-uOQ-TfCD~CsFCSBs)^93VH6pV*-u7PhVcJV){gh>Yd>-fjD)jP6?nt`*%-Rnw z#R{C4>!xUU%ibwgE2W3uek)U-tvE2DJ`Ez)mJJUhCG@_>h0!{mUH!8g2bphh8dr{PKwJ(HyREM3 zP7>

yXTQPMI{$SYp{z7QN4BonJ-R;Wchm`&khd++^gNBhwK@8M?=?Ys7Nj!|_XM(l$sWW>30; z#pc^Y3GcdNY9 zmT@FKHN>06lZ5!wrSrFh^Y?3eZjERg6tWAWGP;h@C%BxJbWr8&d(4vV^M;*4*A759 zc4o!kljYvukXGFstf^aw)xW7Q+%;`Q1hH@Jro1_qsNoY~u}nBWuwhr3?Wnx=!-sK& zgWfByZIZ9+mz0~EV(ospf7{Ayo8rTgAGyOV36t)4Sk^bKe1W_(b~m&93c|*9)IkA; z9E|d?8JVRgv#>h~fI?OMp&WBl_ke8Mu9md?)76jr7(c!Rp2N@UTr9nxS?Fyb8|@fD z=K3yn)RrN~)dihX*QQ1FE+@`S*my?8MmHl@qo}c+-P3x9yN6>inbMnt&K<%A5J-YF zX8RqPi)oWWtmjbTUBxE9jGd<;C!0S{db5ju%HqHeST?W zH=ZurAy2jft$C8Rd(Q1MuuaT=4$cG8@dTr(s(ou`=52t^EWf7RyXjRpvJVZ`8r9WT zjdc;hfwC%o`rwD>ql1iJ*1I=U73{S7l)%ftVlvNdUx>bsKey~P(K&5XvL4+u1VP-Q zB?`CcTCt6<^`G87M4!7I75=h>s_;OCTUYL>LOO%Zu&|`ry=s4DPJ4t>-8ad3U(i`; zLq_u{I96rI5%e<*txxs>2;^eexVcBLmoVe^=a3dJHGC7S@kid3zvYN}+ZXMf_DG3& zA*xO2^!eMe^dXy|M|Z~eLAB#%#g6K+Kj34=6iGEp6avI?Oc3mbBK&(;&?q3f?Qi!# z{vjA@nZ|Li{V=@d^D2`U<*qBv6Rpa$wHLiAl3z}^Bih}ds1P|rM}`U58k9Y5-3Iju zWl>sZk!l=v*v)>m-Ij2@nRF6J2|K)Md)ph{#rMY&!-H+qK3@OhVY9ixlt{T#*oNtd z#?a|Ctz=-lc1x?9QP-Pc*v4ZdoOQBDDp3y8E-Dkv~Nhk{joE;CCBEeccWX!s{N{C?@NVa0xeAc@XQ{DkdBm`c`ca^kYP zw(7a&8I7ggllXO=ft({_Us`!3Il7Eqs0u3tO?;NSkNFR`{fiowKCQo|kW*0H8|(CF zwZ!8R%z5Lg8iSDB_0EUxnqJC&w0PFe8`_GxpD-fMbJZbUj85wJ#B9$c@}PQ=m-QCo z4ulfq2jl!gj^Ef+iEwjD+C+iUh4)_w)4_DtD{bd!+l{tztNlmoLss28y;X%r2t=Mj zFYU1MCkID}?SvZY^u;RU%+@9CN3?>T{^hCh?bAZ;%Zbb&_*8+fYc^gAR`@9`y?@yM zF|!wY#imOmaqV=cXU3EcxGi@f-LhjVA=zw@IjV``-9#d2mg&l)&Q(?1b++#plH;Qu z;kMik`()M-Hn} zyzL#m{|R3gIqMtNY%!+jAAF0vKQyZ@^9V-Bl!RU&GN3VMfD+n1ft>@i-g}6d7r{xZZRNG)i;hN34RfOpHp4I zjI3j=er3--c{`-GoS!3>(X&6b!7=jhRtC(9~A6&61{Bfp#yDmKr$!i`|3gWYk7 zgMAsD8%m%sNT%7WA+<1~`_DhgGDD~b1I}Op%r#zhB8)qJ=z<`CsR#fOqgqz+nnhb> z|CN&mPGbV{LBQjjqAJ^1t6eTj7o=guoGUu>&TS*j>T+NmGS>4BuDs9&Z&A=3y6_V*i?}|4&Ro6y_R!Ja$_)x2)C7`c;sIB%38Zz?^6&gT0O~ z93NJoYv|4;?p#Ts1)OPKzaf!x-`54+fxP2pa@|p133*QUh?7tOVG+SI2tXG6~enlysdq<13F=>PAcdGL@=; zT9+lyIr5-lW0d8j3NOjMnc{SCuKa>yGH)3X+G{`D`})A1y&0&cNjt~S;Lh2>3^qn0 zca~g5a^3zsWf`XFn1^sKdGy1!kU9@5_S^;ECEhZ?5%lR+4mX#Giz5+H&j2*RaMk6b zNou8JJ;9+FCo|xo_sTn5$w^ubiqVFmjid!SVW-Lp5+~m%&H6QD<={2ivKNt^3ukV& zkcevsrL;szg5e3{1V+qaDLS3DtX|d9+vHBHyzp-;%_6>3L=s~e}Df%?~Z%ej<>F!@YeTUcu>7Ykle4bO!LmM%h7)5)Jn3U zf<*?WXnx_w8{9sLx4u!-5Jy#p8Scm|B0bgy<()MwW1&O-77gtr!V@@nVQIj?`NBNf zj@1DwCm!<{r#4OhBIP3hjW@#XsC=qkGvw8eEBsi|V18>i8ZeH<#{LxSil zPb3&7*Ni&qn}avx-{?9C5ii5!M?%-p_6jBY)jhk)zDiM3tvByn#NGBXde2?4Sv_@Q z?cjR{b6U}5yGFP1vZo~$fR2*!H!hL4ZCE5)80n7SBy@SE;*J$?Dug#?>N zyjj2jpcD}&PfUyZH^)GVz1y=B%cBa5Z~$OU*+d>}wfrK6*{dso+83nQt!mmQFyxna zGqSjXc+F+5Ht7&hu%k#qK;*uR3p3knml!hPBzasddWL9UdHCzE?o}Cv(X@*n)G!}^ z)sV#E@&M4F8B{SMiFb*K4eQ;X4%g@@=nk`~lFwQ%vA^W^11#acKOkwhaq%-TpDYkx zeg@m>qQ`H$du!;MGgZq}ys9LbHSMH}Eb=dgKR1{(4LAmV|1D<3==JXE!ivG|fdc`O zYzr4o!CY~hU(NEn2HKq){nmF4Pz+-b*S!E?JqZBUUp90! z6~;;O9e$hfMoW}S)@jgIauFYS!jew^MS`jbw%I2X!$^)AI4wSEVO>IJc0vb13B8!# z3c+YYOgJb>kgyMNvoK}#nMMpf*B?@$X@ZrQm?S)$AZV~R6@pSEfk=VAXrI`w>KVh7 zkCiALIPWdz0)@}lxl|G+A&!I|jc-uAxkW?raqW1{)eTyHiCDa8T$T0A`7<7=Y!l;b zCQtEn*n1FCXBy2LlJo6foPpsn#b-Gq^d1K)*n=boE$F{0kV{VJImg|?gH5&`t|S3n z+A6QXRwUmm`z{C520L*ZYN^;5FWBK2Zg6;fHh0VGJk7wRz0lY$-O~)GX=fk(!@4`Pgm8#l73e^ zlc$bF1xP^1q!9VHFhltRnrA5+Ze#a}+;^@pL?>QFK^NCg-^Skc0DCe12TBdhGJN@n zDy4>f3caTThK2y3^h9!0E&*H8d~=-nPY}{d`pI?bLXTS7%ZdER@80Sf>*;GkqMEf2 z6D*|D?Dx!xdk&))LSN4l86_u-oad^rhgy4XCiRQif!sM&^F+PZy3d2cC-cYkKWc&c zErZ}0=XDYT)|D4mxR^`WvE>E(;~JK{yNW{~p3-+_BnCi4;UUIy72ZL3QmOnJ*f<j57vEOI`3~Nh7(dkYeBm5Cpr3L%hRx&ts1(|cz zj%9JL(FMN~M3rBTU@mE4?(M&eve$O0A9u9FdkD@k+fbUo!)V;r8(zXrpg6H#GEq?m zD`Pi*8#U}f`ioKV1O3&Ycs;f7tuBMtA0#(aEjT8AUTZi<=%c5}(`76JwV<32r|&Q+ z7jH(igOllQ54t(aj{U`ykSG^h31!H5VSiYu?`O~{MbG9E4smF5zZIn=F2W;shG;f& z2;J%Cl{+SkQ$pL#r@SHGA-%9gC~0Y=nLL5;+2+8@@dPV6#}-|e-ffQ$UKbr=oJA=L z`*Kyirv%PK+bv7Cy7P#B65rR-4_2Fz`|z9qxqm$jIT-`_ z{d7yKKaKJBVSDydgU(}z=IB-~#6i}ko9p@WJNf2|r^-k_cKLC8*L6X=7}}Ko#e<4o zH$?PiPiKSu$@J6~8Iuc89&e<)lKO*5190Ost%u#i*U-ww zEj@Q0D8T(5!h}1~Hoz0z!hRFIUk9q8=Xf=H7>b%gU$v`*;77At5}{2-390F8T}JE? z&1I=nyLcxrD$Lh9gZtaYB$nCr+=I*qONXHx%4SPN3nx=qS)sKr46+ksFVXkUtdp^AxY zo^HMnuu;&!j@k?xQaa+Ed&Lly{x>mmC+eUplA!*><5WpWC~r2mGuUon^$x*YXQ8g8 zHs%PkSAqfq;xb#}fE)&$b>(UyA%oCV9xbL)lW$Iyit`2)6g;S{RE4!aS`8#wuf~@=-{w6{x{$kvZs4FmmLp0i{4Xls8d9`>f>=f z5S;5CDt`{X-DNIN12T3x@L_XAsr*XPd<@IooMAcu%$WL%=`zx3aEwLq14qV-p}Fz~ zu4V1-Wx)ImDUnu4bNC@?V&SlfbhNjT_KB?hjDXV;=G#EZd^BVpHiT91?$cOOnd$3YyR%hic93G<>R=8hS`j z4dgh@_d<1iP3ov(r&M_D`2P#&ix*Zr@VXXb4UZ73^kcxb&w--?a*8heYSSX$L;Hfs z$XNXA`Ro%Pe&U1i+2Ova{S#~|!HA^M=tG8-X3qXBT{Ol|Q1Mb5G2_e5_w|%EU(;IF zI381eoP7TN4ZWdMCNND{qs^?-AIZ7u&c^=(u1WFtQ*C5W$p2cvTqneyuGL3F7Q@s0 z4=~JJg@JriZ!|kEU;=0OBBA~tqMZUu8*v_2{Z})DwI~L|)!3%;Nl2{;28JI=Bm*%& z7^AoHIr(tv=cN8HI5xoi3JFdc450?=N=qR{+A$4?kbsp-N5E-j1YV;{`&tamII1Pm z;aiiYOtW_=%V;^bpSIRpR(hE{CLc9?L{Lgf>+q)^)q)7?RP;{zLMcggptNn6XSGBu z%7g&69eiT4dna}Qv~nK5^_4*9>7~2-B(Z4hc;hs$y2eWOSLAuRV556Hdvul$8Ih;= znhPsHqy=n~5rB+;;`oMWD<&>>7TOYg^_`yN{y@sd!IayKiIWEco(^Yt59Jzf=1AkY zerLAni8KMKe+=gL*72vfr=i7lXl$FcicFBryeVHv53yr>VRs;MdH)kLJI>S@s|P`ZMPmt$+FJ>2WnM48P#DAg0p1 zVN{(%-B0P{CxJa*pMRF0Lsi}nsSRxYl{@=9@@xq(n;K(^3UEh4mjpLsuLmK(Yhq~p zB)~fW+BsQ!)Q}oul+|eGUqab9^#KH? zZj8(*55W0%;ozayBFE6dn;QF@MWr+R_yYTP0W#bVuXX%t1k?GSae+%Nxk%!6mgMgf@ep?7!Wu8$^PhJ~ z6nq@l)(+?S74948M|XqyE9ZWGN}#)@VSY1fGA$$+S86oo^o3_^k;z()q(66HAV2d> zbwu)(Hf7fWHFQtzQJGg#X(L>Th)Ri)G{Xa5(udih`14)Mc1Fgc!JJFiG#>4{foXgf zuj#>SVj*Pk;S5)0r%epnK)(_UG;DHzCTwmnnjF3a%?VqgE>7i|#;C*z==rDH4QJCZ)%SV|5AlC6L`Tx=6TfDu(8^RH zG%H3Vq%eC_YbuB3Wxrgs<*b75fwN%4_Fv0(EKr40n}c%2VoS>|2Etj(FBaFIY#g#O z>)!CYL^HK7d*uC2>fwr|2J2%ax&G&V-d$tsQ0COV0SExKIr)de=BwNeqHLHeFZiDF zPV71wQ1s8`HS(8M*ev4MPoJ(YI?p#Xu$I#=^$>>ef6VsF&lZ*(e5pvY#PYzMliWLd z`P#<5qJ&dpEGOa4=9fHc50#YTTjS;H7Ey+~5XMuFM>ZuOeYVk-rP_zI&ldaUbc9l8 zi%MrrG+`o^y6wFT2$S=Crce2KZx6W(=&ZmEY(Hs$e^>%w1?roy*St z3ptP9ns3n<;4A{nkHyu&X|-))XrF|cnWZr9UH9dbNdCr@vWp|$VMBHLQ~|=tej3WO zzWCt%G;)v8z<=LkRFIdEp_^Y2_T>1hoV-m{`hL}da{i|Ye|OInFHe(b@v$ho9(v1) z(&2n^{?V8lmpN!KR(?j{U1;Qb--LhF+MidJKhmPud2{B-*A~2MtHw0i)5S<3?0{U^ zbIO!NspwF%w_SC(Xz7>69%~ayV~WP|){PFSePg+OW6?X#i45{TWZiUiC|mxW-K(2^ zgeR!xU$xn1)7V&cgIVqQBSPEq?z_i*UKQ5+-g7g9Q_5gl0!b+T|No!eim~YJElU<$ T7HxP;-cDKCt}eFNbnw3bgYoRZ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/run.png b/app/src/main/res/drawable/run.png new file mode 100644 index 0000000000000000000000000000000000000000..f9910c1d5f90eb715b57d818aeea137f9a4bfbb8 GIT binary patch literal 15483 zcmch8c_5VAANLswm8}#ah8ww+sH`{4hNLxVs}tzz4OS? z%)5Ns8v|knlX?b|1M;QK46b!FMzd>3GmN@>VjBRKi(6J%<*g0#y^>11Gc0Qm5)|uh zi*s@cam}pv%;jg-lI_iQ?2`!`&88S_de7j>Xof`{as}Xk-Sk^V=(ez1*zxza36TeT z&wt$GQ&K$LQ7hii(9q|G*O%2iZu=Pky4FF)8%|?|0$|;Jc(S{hnVB0yC~=7l?wBXBr9?2*k)4^Drl@V9AI8&O3VECm7EgT3 zNIHu*D6FnhHZpm~MMVg|5GKbfIn|{dS^}fL5RnMav|kBI!g7xfZQZd+dJBop#u~Gd zgabJ_mFTV6Bqgi7D_11}_|&M~n&jRTz;biYf0u4;t-HpTA60GQdvii5&C0>qI6F7% z6C~F>t;@5EuC7Smf8*GiM+zxVM*m1ptKgnhGLhLI$&cb}j1G-h32O-SbJ-(!{2TAk-}8_D`#13xo3=6~Ho{?BI}dGc^ztJ3 z=U}h=(YX9Uc&sl5{U5d_n$dZjXQkZ$FTDJm`pz!g{2@RmnW zfzJ&9_ufh^fs>*f0PU705-vvuc>U5AMw^vV@cvVgmRXg9>1Zg1zs2eCx>Y6lkJ#8i zPgi+>518mCJ^8|p+7}8hSz#%~P6(x8odnwRVa*4hY~SMff#Fj64N}q~ZfFnEmKJ^{GDAnR zpHy?*bY-D_9(r;2XjGo^^z);ctE~QWSP1}m>&u@f`MJlQ$EKRR(tvM1UPNvz5bbcs zH)e^R@RsYB39S^x0Z29g!^TZb3lE8Q9CmT&|n`z+px3RCOAP5|Fz`QR!YY-|t=yDvEso zvX>qNlqYBQ@@2vLaMBG=(Gl-UkQX&C&ULH1bR*$6gp#Q=a%O4KJ7>Ty!zqttQpoc* zF-xeD=#(GfVqgq;5V!R)THKvNKQIQ5y9; zbe>|su!skbCCLU$B82R3-K2lxQ1GmL8PK6VoigqK&r1FvW@%JLK|XiD5u|(1@M6O< zP(MrFZxS3fo?-ro6zFI(AtQU+&A|=g%wB>dd1V=PM~+Bh`^7CU_g-$^;<;_dK4{Va ztPzPmT=b41BJ=FU2;+eda$8E&!Hd=?atQLEXc75Os+7y`U!;NgV)*}dEoAotWxvzE z0|rl710FR7+&azISCkf`d(8@D4ScDLlmQj%N3QhD<^4o#)ProinmsG|1aQljk5*p_ z9-NDq(}i1}e7WP-%_c-VsDW+-Dw^;45o~!C8Gd|9f_z?1_?e&!&uZz8N={(g!lxiz z7aTU3SH$jF@&!b&VOE`j7m?5Rt6Cy^ebqq)W@c}RxaGfWbjnxJ#nVt4Z~fo)DjTV# zJQ3-NtT>`8)}nV*zzP{*lNcgbaxQY)8LOjPAgeA=_V$bPS9(c+BxHy03S{^G8`}(5 z0(_t}RQDOJQd%Z~ay6b6h^$Cq4nu_*a+*7@h>c2+jirudENiei`)V}$Dm_9DjUmX4 z#W(G(M`;Xj)E1FHzA0mcfMkaOc3FfRZYc%we{e`o$zEvZ&06gH0$9HK1{csJhcS|< z_PyVjg|9Q2Zu9$hQ?kK<>VY9e@cU5$pT{nX`^xzp91fU*;{A6O{1%^gmwj;scxn;q zA_mI;MLy5}F!;w3P_K@aLy=FGi%#S|VQ#+o!1zFBsP&?r1J4jb5!AgnHF0`g6s{Ac z!OXFmJ;qj|-!kBap58A;KR@?@u1q_yYs-||;byz}gRL(qSVUe_NreJ%tGg37e~lV~ zpUB{Dq=AH9VZMa$|N>%Pc0pnQTPa%^c6C1uk+z zpl`tRTfN1D(>ceUe}$Jui!QBJ$Jqk3CW>ZN+iUvjw)wTlGR`Js?Kn1tT{Jw5E%$fKN^S z{1CahSN0%`KNQ;5`K?>nf}zecJA)uAMvs3-2{>aB7*UB$%2lpV1To8U_6{kxbAvo)^gaz{qi>&2zt|y040)l=QMZg~U zIm0pWrbH0I3R2s4@Dm2YV#zrkKjuMeS&!|%aDIg3O=+AL*#BdL?B;E2|6a)~YX-BN zvVTIoiE?eJqz-~xoMQ_nQm~l(N{*z1YB!xT@8SCOAXRyK%hTTVbIL?riE|dSyxh@v z^I$CmPJ8C<^i0V%k$bPO0}k^vG5S8@2pUo3OMz&=S21O#jKZFalSk`!5K; zqI2ky971r`v67tUwY;KhXmF)vDYFnpWW|pv)6l2PAB0(k0oSno8sO3!wdpqTIj47s ze}57A4kaKzZvvakJUh>T4U{XucijNT`D;CN8FRMxmARR5@8W|zis~ejlJFJjSF$_lfQ7A>#Qq}Y=(=3C@5o&GXfHz6ps`F%YhD2 z2)Z(1j@W6gLW(T(#qrg&18MVX=lMm85tEz6pM?v;?-&d!kVFV>fN)`aQyEQfo?#us zK|xD3*c@jF8z9sYZdd_8((6TB##}J0;Xp8PajIxO7(O2TV=1Ut!`jXhbVu|83T+`oWg(x)sbpHu>qvab zwjx>6@qrHdX)xpW5IhAcSpa{D-NtDT=C z0=a`L=FV%MK$R8Q*T71!K$BV34ECr)OotI8pHiFueviLj-B|?Sa@^`#4uI2zB(=@6 zs#(zs7fUL^t)D}B5Xq2_X4XG-2FZL8#$atHitM!c+QEo$F*@T1E**yL*)>xFf~uK? z4iL*^Z+YsxApG;==B?rg!Br5`OvSQs3k*9yQDnaO7H>#TZZU!fNow;pQqeo~QqJ-l z(@YA1g|xAG!&r%dNW7EdtoLG?**l~%$AGvG91U>aW-2JoA8{FTw%2tLCKG>zw$0N$ zG`VImx%(ys>faojXN9)l*&N{~lD~Fv<^weXXj~-kPw|5SRW;^}c({HGxG~8;q7DX+ zZ=5#~`&_Vjl-;id)}+ltk!_1-Ah^Z6GTr@_xd-g>o%$+5;z9FRVPmy@gvh>N7P3H- z(|L}pEeC-o8fBR!JO6#Z!fo9~2nrwC;_3Z6c-=~qy*KLtI!56l%MI)r4pLfbEN%(w zD)oBcz?2A{^(SLQcG`;+AW*LOA^ke&?Pu0})?j=@Hawf?yjT!^9wDg@1qsG2h4?kJ zibtJi7|WFCk|ef^9~2iM0Wuyqg~c^DKWTe z_|Z@sG%PdeciCx%C2F;L;sd-dYWk(6>MN2swb7V$T|U-QjbZYkwTx-3K}dco$K7$X z)iKs$eHia|1GCa#!^Ro^{W1^=BheBUa_(GjqSk}h;r?o_j+K;sVp9ZzyR05ZI2XE# zcs-SNYgjefMZ0U#N~+kLNxL@kpk1V09s>|*+k3DkCMJsFEw)u<^~Vl-8cbT)m;|pL zlx(k%FGcU3SpPmLhBKbh*x1O)h?|g`2?!465U|#ldMK)EbuG0KmNVLDt&M{*yQSE& zHl$N{{bia{+1|M!n2|#paj*%SIa3pE!w?_X6n~n_uGhl(`-7L+&k)S zDf-5t$^A*@LBEIbRvJvY8<>^7-2d@8ezZZiD#@_BI;?KUfv{|GA}YDwGsja2{4N1+ zt@h5I3j*Tfi~p*5F5USdSO_IrjepbDKbDrkIaTt%Sdk1E!LgI z7=NY1ng=POeTCzCC46?RV{9jWbbol~DWSP5-bYUJSx(=8#GfCd&JnB1>xKD57jbYM z$p{}1YP#9FReEv59@3Q+18JIJZTXi0Cqfn`k7kq5?i3LW%^9@G+^H23or-mrH%=O} z+4?bxH~|CV>|$q-e@47u%N4o4fy>0?GYmG-YacPq~|O@rqY zZ4o+Z;Tx0Mza@M1N0T(f0g6Zj$dN)krP%$-CpWK~-hC);sQLtgiazPWNY&Ug z0*k@4kMzrbP7!jOEht0P_Asnwzl)%LE_suh$>8F{S8Dyp#*aRD9>PU`dWU5H5S~H8 zCE??+l&t=HSHSAM2L_8h`qvZ%z5JWwGj9m^YjU_N1XWd4JNzh`!Ic(Yvf z>fT>?6eRkdj^*==DwW)d^z8-hKby&{KL6|p!&7sZShQTGWEJ>tJn`mR@sCz?k8It- z3#Ac4!i@w~2r*dVFPnSFXG)-vvfxb=wTrKv5dRp|`#wfTZeRQOuORuybvaxyK{IS; zd=qQy@#J+ZiK)nV3&Q1(tQl4AYg5jEczI@9^t6vnu7N``UbFp1YX3d*(65LK*+L`; zLP;MPq5qx`GvXZ4*?<4u^RDqr06tq z@X9!M$IaQy&8DuUp)2^Q@eiIgjW0yowWQZg1yV+GkQ=#}#6KS#2{OZ49aelJy4H^~z zXBIcQutU_ufhEo)o8}B#5|*1L|Awd>IkI{QtY!ZZ#)~oxC2zt?9;diB{gu-riG&Sg zSrIphz3efC`dDlaOS4Wrb#fczK+ua-3Hlg92~jhwa#un84!M_WO%j^cp4~F_U=g_k z`DBZnP`{=Hwd30mezdnO0@gAi+CvuBg!VG;V(D$PCAYX+_D^n~S3!73N}1|3zZ&hz z8e2ptXs*`xH=Xh@UrZK#Yg&Dz!<$4FzgQga+zv}rGpQKDwfyGqoMQE^1MN-Mz37GTn*a4ttS^t0A$CRSv`ru z%iKEEP+ZHvZ}=%WQ!Z%{2$2L0e^U;(71zuNy}3i?)}2OJHut|KaQy|~BOA6+Qk81% zqjtv!VGkU_I{bq1MXR`2cV_Yy@jKhbCbWmIbUp+xeH(aGh^*r~%HlpMSvkZEyC-b5 z%&?Vcxy>1OQy9B4pME2U>>_Nbm<*TqPSzAZTv}OOdS%7v6`z-Fet4U(t+}^*>Q8~|Oku^KGD82kZOz#;bfEr{lKu=GxC|IxB=BosIKb6hLLEQv zt}UQL?17wxz{eh{=`}nK>|0c<_zg9a*CD`o8YZ7iph#0i-tdR>)(|mn>Q{+wqGjA z$;t6qs@d}A#l`81DO>v$j6AweErV;e7s#$7e{mn9=w7ZGfXr* zOg`2o#}jIG>(A6TVKoSO+if(y=_=ko9ADt`!XVq;J^sbkWe{sv$98RfpR~5iFB-$x zayg78*0RE_h;*5aMKZ-ti~+W4Ayv()JyR$ckc&?8uRj9a`8kU$-O03Q7k50aJ#YJE zA5p1jvoZOF73x~ZVEpP_!rg2A1}kM^wDqrBGSRJ=tyS>TQof${>E zx>8YOHd&7K5o0iUB;iLA$w%-r!!GTkYGZJie9~`Sc59rJ6@RRGGe zd|ofNYKXfup|fP-z?!k(UH*G(m=_2q_8JuwL``QcBsO$kdW4S$<+cCb6(NHDjtAWJ zjrLhpTFzCk!o@@PjJ%DEjLfj8WBpPJl$Ip${l{!Z%~d+5UCI-JiPa5#o4VX#L-axs z8w?G`hosXMRNU3Hy)3to+FXtPy=%zueK9ROr?ICk^Vx`uruhfP^!*Om$tlJ5aD;`+ zdwk~eT;$THp;jr#T)-7&az~7^R~t-jx5>RYbpmZLK;EHIL0~~S_wAw9%HJ{ZY4&C##Q989_-5Qe-=n= zc8n#OU|Dqa@tjw6lw2U<$R%8Cmti%}((HE9h2alBa$l*xjA$DFPrMNU1qjQ0FgE>< zSF4{&JQDJfy6=8ztu`?s=kMiwwB!q<79tWg0ngr=(Ec|KjbZUkk!%v4Y6(QSbE$nK0an$ekc)1BLs@}8@+#8;76MtASaM#dM{?I2t5o>;od3?tJoG z=kvR0N%Bwzt=f?;VHLA8S8>K$IkG^}U5VJ(jV}TR#YO_g(8lr!rfuIb$aUDwZzRP*ww9H<+5;gey` zkg&=L`imFx?_BU;pDK;$S1s{2A!$&jpJTuQX3FFj%XCE(v9@@3|IlBN^B;c<7`@kN zqCGlsL=~iSi2Y7)C9GapTLyOf0_D`)V~fH5{e&1|ZcgC1?NxYs%su_8tescor!RlK z@ZMGt7DV_xiLe=n?COgdUaoS)2t}SyZDcxZ!(}P$DtMrBv0M@&Rixgmqf=rtHWJ)Q zvWj`S4jdqLjKQqvRlES>_amGNgVy7aHaZ&ve7CaCUS=`^Cvl4*sXg6i6Ppa0EdQ&n z1&+@l5rvW`d@X@T!r}b;5XlC0Q|}PP`_^{ZXXJn2^e%(FZPR!jyiym@FeA&+Y=_`3 zCuaDRvHa6J0gbVhqY1dE_Jwk3|t%5Av?ho{B;kYzYn9Hfi6Hx=4lPE zw20$E!}9#;Unu9NDkA(j&b`Ut^!~exL3jRdlv8RpR9Eqbhdlc3>WPbv1~Jbn!?X{5 zsN|%Lqn$yci;U$rM8@SU1NZmx6CkcIGkoHiB$hl);1@Wn8D*pITvE-6zr*rf1%3}D zw5UC|t-bewgJ^0UMIVAX8137viR%*c8w-{oErL+OzEQ-T)!u_0{&Y?a!As-LExWY+ z4>-Sx>Z8cIO?SMrKMTdRbCK)eV* zuf&$@my$4(rj1QVSL9Cw^D)&wwW&s=F zo9iYST;`cw(_&zR8^i)?al^Zf<-eMczW;`F7~%U(9(YQM=J-yD-Sjpu_ZR6Ho@A} z>D#gxKhinZgz=l=E-8$JHgJi5_aHU-#7mS^%H!2XcEZkE-9?2_ng7(QRZW=R>b+q@ zB#OEOW6%-s!Bd<*UU$&|;s*=kFyCc-tv-W# z0Z7@dQHzpFd$b&uOVc?L<5~j494a+J{>6EyCPxYThOWwEb{jmMQinp`jxjJ>VU>3+ z5%gMnBZXV)HH;0~L*9OJB^YTjhXIo814?%uM@s%UJD6FiD!&VTBlaXI5lQV#eOA=@ z>4{2tXP-uG+S9WNe(?Q(&BT@P#%Z06qLfVZ9z?v`k4HiA*tYn;)%Oe(uzqTasY@|U!oTZ~mv+Gz3Ry;Uj2%!QN2G~vJ#toXAi(bQQ14@lf)fC>|&Rq+o zUOiwlda@gbele>qwlz71kGjPn@3e5!z@|w0zuGD?WO{YciqEXg|76NQHO?kP7ytb= zfRFTZaJ8_cfPJ$1NM%gYrE%SnmNgLAWz-3NaEWQNDgxuaXTm|h`xv#TL(IthL6WpS z>nm)k!8$H9ABb}H89v$|ZaJnrVm=O?HqD_%Cu4k5(Fb=#fsM*N@YwxpFCgZ=WF-Eo zk&U@`h%qw&7U`g|586zGsvPV@nBT&hqPXL85B4+MW#WkYa8X?~7v0;iQMGP8FrOtEp_gUNx29vrY#Xa1+*AZ5oead90?>876 zH@57~cY&vyJZcc4OHm{Q5+P?zi6Br zF?xF0tncCn7q>l%FRo#f?C4d$rxY^hzO;yPGVgJScjGg3cNg4DP*Y`I67|)mpvzvS zdCE`=2N^udF8m(7=cdhsqo-esQrozV(o7j(|2l#Uf8S7>p*9lT{n=+d97jpHI1I820}%7md^P|fYF^Vo{nHZ|#XP88T|MrnC9Ph_~raS-0mz%25J9MeG*76#mAhb+ zeRqH(8t?RJ_xlPnF>q?! z>V_qt4z~@hI>DciaIHQk`tm7CyxQ$cN|8_Z9+k5rz3(2Mj&9o?na{4$u}w1nz7=6( zS)-@TH={J|3j^hHlqb^_J#NN&-5c5SFVo+MqC|;KJmjP@#1(g8g(9FoXb>q`Vb>gG?2o6}e-t z9@=io6Fg%Hkt!67l<|r?&?a> zTx7gI!xVnc31Kwu#o3%=y(j0YRY*p4ZX~`*za|gP9o7xCVvL6~1RW&o5ozH#oWX?+ zb(*AWZX@dAg>PqJJk07(4mtvDmFB~LQP92G06)40zF@Is$0lSPOUV|+H3GhH>*fC8 zu066><-H#U-G$%~Zf9^$m`841ZZD*C`TM!d3~Pn=n?m2&{{3B}7TUxK*@#t(ZMbO@ zj8dK0yB7r7!J*uxvrSI=`)kxQurR3i_}X1~0IZtvvXj=7_rF!W#;io9-jE3rh$Qz7 zk4y^wuraCquLg=qpGHk>eD#p|ZlJ3+t%LpB+(3ybgsu=tZ%F2IBD$@*zyvkPzTI8! zB+6O>YFH+fOQ4ai0%AyilyImw4n$xEg+$(*lDecbKVkwi1v-p4eyhduU#nV zda}nhYv-N`yM}^;Q-lBg^-X&wk=X*wuT{iqfxV}SkDo7(QPL_7lOd|ulH*%<#AL1mfiL2q>Q?@hxKD~5iy%zctM$D6d1hNDGRU$c=^SKb^tA%e0Z|Eba;$A^j^|YU-=r$giC+gjH&^bx&6J z(S+t-$|kZP#oL8Q0kN=-wJ3W*ZQ7H>bqwr?}*Ig*aSjkcXE5+6Ynv z&c#yVEv`%CQ+8$yGY?VqRVV28esl)h%%LG&2Uvg|?MG@Tnqk6yDJ=%H+ZTvK<|JLX zOBvre>13^HANiPuv>@P4*}keQ-A}q>BU|tKpvQvYv2F~#qOmuTDjRU-vjyAY!YSe7 z6MaG05xLPxLH_yYlE?=+-_J%5E6MqYry`YB3=8RD%a_U+ezX{39UBWYp}RDuH1@PM zGujxh!nVi?qaJMY>n>U;czi@)?{n{3 zH)rUqTP+&k6xEH#a;&B7Yc0oCiA|e_@%RTD)>dUnCNy0STBNX|{+pAX4AO9x2Yqld zXbReOHsc4w3r{^2Uk!&7jsbH2g&_ux;ugV)t}%I7INr6wb}^{? z{(|)Wrnd6jBn6z6UL{H1>aD?m<=~rtkSE!~9Qn)IKP8cdGW|UUfNB}wji%Xw5G~09_mYjt zdFy@O!-Dq+N_it>VPA(QGSd#Hzq2BQ7V2_S*k{Y>4j+eT(WTh)qQP&BxaE;D5>H2@ zQaR5Q=zo74p!JLt$c>u9A!GQ{hITmBWib^oDwTHt{-9zbnK}&JFkzT_wdk5QA!c=n6d&Cm(Z!-o)RVmvRevyDiB^#Fsy>Ugfc!A7W zsbp$m6E1{MN9Aq$UnT1{nWC|soSmJQXcBJug@q6Ojbu%=Lvtgpa4esk2o5B&vHV(5 zxA{s=SonpU%3fjw;eV9P(*!aFDJi8=PFXxWQB=`-o%nH7MpSl%>X>d0>iqdEw??{9 zqf4)0)w-#%X{ya=O9J6yE-bd%4(I_uK_!otkxo;|X}by{bFSK0;D*e58h?5eK6Zv7 zQ$O;WK{GOSaS@_2gBU~xS-NJ+t@4uoMkyFiQDeA=AM`ghjX$@XB&B>hY=L$!Mdsdd zxrw;nyT(?p*{oS)#`N2+@DZ1w3P&6ZKYhJ}{7iP+0*+lz4cg{3^x^>q1| za=CqSIaZMV+W*Gv(mj~ecWQ=_PPLP>*}_-ymyNn+=ut1>Ae_L4@r)(pOxa4>W(}{| z*uh$op$VLEh-`xG?My9V5^B*Zi)NA?{0*E>`*<@Pvt26~v-Vl_NOaO?7=uD;D$7-4 z`+M9t%^iBb#}CU$_*AfY7{hiKUG&g+)?QnaY+Hl-$ziMs%9l?=&(%`!%lu_QIj(P| zy|7C3xyK`&V{ya5601_b)KxMr2n*8>kmUUfMktiB5bnarfoEV+EA17e0 zTyg^Tvkccl{v7Fbg8ld8c)`{(8UN6rsL&H|QVMn7C(*Wl6FkEBgK*)c+p<5xL-mta zL+Z>(edf^4T?GjzB*)tAVR%*MG%Jc=#FySDG&b0b9n{;t#tRa@3%h&_1~+##A(F-5 zbVFeGW9mx-0w&ZrLGXuUau#d<wh~R9_xUXxy>POU!nvF7*TorUQY-uJ<(#<&cQClUS}(#(2t znf}cag|3h_?93Ke^Tfm96-=0~g?NaU{X}CzQ;(I@_(ZVJwTU5ia}TynJ$NVm;lsFP zuaW6epHjj(gGtDn7pbiE-uvB>qbho%+cqJCZ*pgHj-Bgf#`(0jRADjL;hW^E;@(O( zkQt?%0a$%^i+*uySjAw{zy^2X6RUW8R4VrNFs|B5@cn&EL^^h?r0bx`5>L6}wXSq7 zN_bv$yyyK{u&Q(CRCMT{HHB7ExrV3PS!-YzGMIcQU;5QT5;O9x&BWjkP@bsDwr1R5 zqmg;^l4}Eq#$T0JhrMdMYVKdr(;-sq6a`*zD@{(bXkX0^*bl>xwjZQ0(_D^E?pO+H z$5Q>sSY+%H)<5Gn*#zH@cXr3?8)us&Hce^~i()2`S_6sr*R>xnBN1vT$H| literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/script_droid.png b/app/src/main/res/drawable/script_droid.png new file mode 100644 index 0000000000000000000000000000000000000000..c8507872011b579d409e8a1c944a889d6a84d1fc GIT binary patch literal 15875 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/script_droid_50.png b/app/src/main/res/drawable/script_droid_50.png new file mode 100644 index 0000000000000000000000000000000000000000..0f991ebe9f7297f1ec888a5ac627d654efff0c45 GIT binary patch literal 1896 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 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 00000000..0c0fa597 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml new file mode 100644 index 00000000..f187b807 --- /dev/null +++ b/app/src/main/res/layout/content_main.xml @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/script_file_operation_popup_menu_content.xml b/app/src/main/res/layout/script_file_operation_popup_menu_content.xml new file mode 100644 index 00000000..b7dff679 --- /dev/null +++ b/app/src/main/res/layout/script_file_operation_popup_menu_content.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/script_file_operation_popup_menu_item.xml b/app/src/main/res/layout/script_file_operation_popup_menu_item.xml new file mode 100644 index 00000000..db543162 --- /dev/null +++ b/app/src/main/res/layout/script_file_operation_popup_menu_item.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/script_list_recycler_view_item.xml b/app/src/main/res/layout/script_list_recycler_view_item.xml new file mode 100644 index 00000000..cf5dcf14 --- /dev/null +++ b/app/src/main/res/layout/script_list_recycler_view_item.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/sliding_up_panel.xml b/app/src/main/res/layout/sliding_up_panel.xml new file mode 100644 index 00000000..efc63fb9 --- /dev/null +++ b/app/src/main/res/layout/sliding_up_panel.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml new file mode 100644 index 00000000..ca351e53 --- /dev/null +++ b/app/src/main/res/menu/menu_main.xml @@ -0,0 +1,22 @@ +

+ + + + + + 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..cde69bcccec65160d92116f20ffce4fce0b5245c GIT binary patch literal 3418 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa42f0e7b91d006d22352c9ff2f134e504e3c1d GIT binary patch literal 4842 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..324e72cdd7480cb983fa1bcc7ce686e51ef87fe7 GIT binary patch literal 7718 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 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..aee44e138434630332d88b1680f33c4b24c70ab3 GIT binary patch literal 10486 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 + + + diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 00000000..63fc8164 --- /dev/null +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 00000000..55344e51 --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,3 @@ + + + \ 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 00000000..cad427a3 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,7 @@ + + + #8ea22a + #5e6b1e + #8ea22a + #99444444 + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 00000000..812cb7be --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,6 @@ + + + 16dp + 16dp + 16dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..21079a73 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,20 @@ + + 免Root脚本精灵 + 设置 + 关闭服务 + 略略略 + 新建文件 + 从文件导入 + 退出 + 服务已关闭 + 找不到文件管理器T.T + 文件创建失败 + 请输入名称 + 名称 + 去设置 + 软件需要权限才能运行 ~ 请在随后的设置中选择”脚本执行机器人\"并开启权限 + 取消 + 路径为空 + 文件不存在 + 无文件读写权限 + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..177cefc8 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,20 @@ + + + + + + + +