From a2be64d1cbba1ec17bf76b7bffd24d26927d9432 Mon Sep 17 00:00:00 2001 From: Philipp Crocoll Date: Thu, 28 Jan 2016 06:50:37 +0100 Subject: [PATCH] updated InputStick plugin (and migrated to Android Studio) cleaned up java directory --- .../2.2.1/taskArtifacts/cache.properties | 1 + .../2.2.1/taskArtifacts/cache.properties.lock | Bin 0 -> 17 bytes .../2.2.1/taskArtifacts/fileHashes.bin | Bin 0 -> 148385 bytes .../2.2.1/taskArtifacts/fileSnapshots.bin | Bin 0 -> 547993 bytes .../2.2.1/taskArtifacts/outputFileStates.bin | Bin 0 -> 19712 bytes .../2.2.1/taskArtifacts/taskArtifacts.bin | Bin 0 -> 31700 bytes src/java/InputStickAPI/app/build.gradle | 23 + .../app/src/main/AndroidManifest.xml | 18 + .../src/main/java/com/inputstick/api/AES.java | 57 + .../inputstick/api/BTConnectionManager.java | 159 + .../com/inputstick/api/ConnectionManager.java | 99 + .../com/inputstick/api/DownloadDialog.java | 53 + .../main/java/com/inputstick/api/HIDInfo.java | 149 + .../inputstick/api/IPCConnectionManager.java | 180 + .../api/InputStickDataListener.java | 7 + .../com/inputstick/api/InputStickError.java | 144 + .../api/InputStickKeyboardListener.java | 7 + .../api/InputStickStateListener.java | 7 + .../inputstick/api/OnEmptyBufferListener.java | 8 + .../main/java/com/inputstick/api/Packet.java | 144 + .../com/inputstick/api/PacketManager.java | 185 + .../main/java/com/inputstick/api/Util.java | 121 + .../api/basic/InputStickConsumer.java | 89 + .../api/basic/InputStickGamepad.java | 38 + .../inputstick/api/basic/InputStickHID.java | 602 +++ .../api/basic/InputStickKeyboard.java | 263 ++ .../inputstick/api/basic/InputStickMouse.java | 131 + .../api/bluetooth/BT20Connection.java | 198 + .../api/bluetooth/BT40Connection.java | 286 ++ .../api/bluetooth/BTConnection.java | 26 + .../inputstick/api/bluetooth/BTService.java | 231 ++ .../api/bluetooth/PacketReader.java | 88 + .../api/broadcast/InputStickBroadcast.java | 430 ++ .../inputstick/api/hid/ConsumerReport.java | 43 + .../com/inputstick/api/hid/GamepadReport.java | 32 + .../com/inputstick/api/hid/HIDKeycodes.java | 436 +++ .../com/inputstick/api/hid/HIDReport.java | 8 + .../inputstick/api/hid/HIDTransaction.java | 56 + .../api/hid/HIDTransactionQueue.java | 324 ++ .../inputstick/api/hid/KeyboardReport.java | 36 + .../com/inputstick/api/hid/MouseReport.java | 29 + .../inputstick/api/init/BasicInitManager.java | 97 + .../com/inputstick/api/init/DeviceInfo.java | 93 + .../com/inputstick/api/init/InitManager.java | 112 + .../api/init/InitManagerListener.java | 9 + .../inputstick/api/layout/DanishLayout.java | 390 ++ .../inputstick/api/layout/DvorakLayout.java | 269 ++ .../inputstick/api/layout/FinnishLayout.java | 388 ++ .../inputstick/api/layout/FrenchLayout.java | 362 ++ .../inputstick/api/layout/GermanLayout.java | 355 ++ .../api/layout/GermanMacLayout.java | 353 ++ .../inputstick/api/layout/HebrewLayout.java | 275 ++ .../inputstick/api/layout/ItalianLayout.java | 279 ++ .../inputstick/api/layout/KeyboardLayout.java | 432 ++ .../api/layout/NorwegianLayout.java | 392 ++ .../inputstick/api/layout/PolishLayout.java | 312 ++ .../api/layout/PortugueseBrazilianLayout.java | 399 ++ .../inputstick/api/layout/RussianLayout.java | 269 ++ .../inputstick/api/layout/SlovakLayout.java | 505 +++ .../inputstick/api/layout/SpanishLayout.java | 392 ++ .../inputstick/api/layout/SwedishLayout.java | 386 ++ .../api/layout/SwissFrenchLayout.java | 353 ++ .../api/layout/SwissGermanLayout.java | 388 ++ .../api/layout/UnitedKingdomLayout.java | 283 ++ .../api/layout/UnitedStatesLayout.java | 268 ++ .../com/inputstick/init/BasicInitManager.java | 78 + .../init/BootloaderInitManager.java | 28 + .../java/com/inputstick/init/DeviceInfo.java | 89 + .../java/com/inputstick/init/InitManager.java | 107 + .../inputstick/init/InitManagerListener.java | 9 + .../main/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../app/src/main/res/menu/install_utility.xml | 9 + .../src/main/res/values-sw600dp/dimens.xml | 8 + .../main/res/values-sw720dp-land/dimens.xml | 9 + .../app/src/main}/res/values-v11/styles.xml | 0 .../app/src/main}/res/values-v14/styles.xml | 0 .../app/src/main}/res/values/dimens.xml | 0 .../app/src/main/res/values/strings.xml | 9 + .../app/src/main}/res/values/styles.xml | 0 src/java/InputStickAPI/build.gradle | 15 + .../gradle_project_sync_data.bin | Bin 0 -> 588 bytes .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + src/java/InputStickAPI/gradlew | 164 + src/java/InputStickAPI/gradlew.bat | 90 + src/java/InputStickAPI/import-summary.txt | 60 + src/java/InputStickAPI/settings.gradle | 1 + src/java/KP2ASoftKeyboard/.classpath | 9 - src/java/KP2ASoftKeyboard/.project | 33 - .../org.eclipse.core.resources.prefs | 2 - src/java/KP2ASoftKeyboard/AndroidManifest.xml | 21 - src/java/KP2ASoftKeyboard/lint.xml | 4 - src/java/KP2ASoftKeyboard/project.properties | 15 - .../res/drawable-hdpi/sym_keyboard.png | Bin 1486 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_delete.png | Bin 885 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_done.png | Bin 1593 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_kp2a.png | Bin 1663 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_return.png | Bin 536 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_search.png | Bin 1623 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_shift.png | Bin 1247 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_space.png | Bin 859 -> 0 bytes .../res/drawable-mdpi/sym_keyboard.png | Bin 726 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_delete.png | Bin 465 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_done.png | Bin 771 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_kp2a.png | Bin 578 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_return.png | Bin 337 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_search.png | Bin 1029 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_shift.png | Bin 1029 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_space.png | Bin 436 -> 0 bytes .../KP2ASoftKeyboard/res/layout/input.xml | 27 - .../res/values-ar/strings.xml | 10 - .../res/values-bg-rBG/strings.xml | 3 - .../res/values-ca/strings.xml | 3 - .../res/values-cs/strings.xml | 11 - .../res/values-da/strings.xml | 3 - .../res/values-de/strings.xml | 13 - .../res/values-el/strings.xml | 3 - .../res/values-es/strings.xml | 11 - .../res/values-fi/strings.xml | 11 - .../res/values-fr/strings.xml | 11 - .../res/values-hu/strings.xml | 11 - .../res/values-in/strings.xml | 3 - .../res/values-it/strings.xml | 11 - .../res/values-iw/strings.xml | 3 - .../res/values-ja/strings.xml | 11 - .../res/values-ko/strings.xml | 3 - .../res/values-land/dimens.xml | 23 - .../res/values-nb/strings.xml | 11 - .../res/values-nl/strings.xml | 11 - .../res/values-nn/strings.xml | 3 - .../res/values-pl/strings.xml | 11 - .../res/values-pt-rBR/strings.xml | 11 - .../res/values-pt-rPT/strings.xml | 11 - .../res/values-ro/strings.xml | 11 - .../res/values-ru/strings.xml | 11 - .../res/values-sk/strings.xml | 3 - .../res/values-sl/strings.xml | 3 - .../res/values-sr/strings.xml | 3 - .../res/values-sv/strings.xml | 11 - .../res/values-tr/strings.xml | 11 - .../res/values-uk/strings.xml | 11 - .../res/values-vi/strings.xml | 11 - .../res/values-zh-rCN/strings.xml | 11 - .../res/values-zh-rTW/strings.xml | 3 - .../KP2ASoftKeyboard/res/values/colors.xml | 25 - .../KP2ASoftKeyboard/res/values/dimens.xml | 25 - .../KP2ASoftKeyboard/res/values/strings.xml | 20 - src/java/KP2ASoftKeyboard/res/xml/method.xml | 25 - src/java/KP2ASoftKeyboard/res/xml/qwerty.xml | 84 - src/java/KP2ASoftKeyboard/res/xml/symbols.xml | 81 - .../res/xml/symbols_shift.xml | 80 - .../InputMethodSettingsFragment.java | 101 - .../InputMethodSettingsImpl.java | 198 - .../InputMethodSettingsInterface.java | 69 - .../kbbridge/KeyboardData.java | 17 - .../kbbridge/KeyboardDataBuilder.java | 19 - .../kbbridge/StringForTyping.java | 20 - .../softkeyboard/CandidateView.java | 323 -- .../softkeyboard/KP2AKeyboard.java | 835 ---- .../softkeyboard/LatinKeyboard.java | 112 - .../softkeyboard/LatinKeyboardView.java | 55 - src/java/KP2ASoftKeyboard2/.gitignore | 5 - src/java/KP2ASoftKeyboard2/java/.classpath | 9 - src/java/KP2ASoftKeyboard2/java/.project | 33 - .../java/.settings/org.eclipse.jdt.core.prefs | 4 - src/java/KP2ASoftKeyboard2/java/Android.mk | 22 - .../java/AndroidManifest.xml | 11 - .../java/MODULE_LICENSE_APACHE2 | 0 src/java/KP2ASoftKeyboard2/java/NOTICE | 190 - .../java/createProjectZip.bat | 11 - .../softkeyboard/BuildConfig.java | 8 - .../java/libs/armeabi-v7a/libjni_latinime.so | Bin 21688 -> 0 bytes .../java/libs/armeabi/libjni_latinime.so | Bin 21684 -> 0 bytes .../java/libs/x86/libjni_latinime.so | Bin 21724 -> 0 bytes .../KP2ASoftKeyboard2/java/proguard.flags | 8 - .../KP2ASoftKeyboard2/java/project.properties | 15 - .../java/res/anim/key_preview_fadein.xml | 29 - .../java/res/anim/key_preview_fadeout.xml | 29 - .../java/res/anim/mini_keyboard_fadein.xml | 29 - .../java/res/anim/mini_keyboard_fadeout.xml | 29 - .../btn_keyboard_key_dark_normal.9.png | Bin 511 -> 0 bytes .../btn_keyboard_key_dark_normal_off.9.png | Bin 760 -> 0 bytes .../btn_keyboard_key_dark_normal_on.9.png | Bin 1088 -> 0 bytes .../btn_keyboard_key_dark_pressed.9.png | Bin 730 -> 0 bytes .../btn_keyboard_key_dark_pressed_off.9.png | Bin 940 -> 0 bytes .../btn_keyboard_key_dark_pressed_on.9.png | Bin 1260 -> 0 bytes .../btn_keyboard_key_fulltrans_normal.9.png | Bin 1649 -> 0 bytes .../btn_keyboard_key_fulltrans_pressed.9.png | Bin 1696 -> 0 bytes .../btn_keyboard_key_light_normal.9.png | Bin 461 -> 0 bytes .../btn_keyboard_key_light_popup_normal.9.png | Bin 332 -> 0 bytes ...tn_keyboard_key_light_popup_selected.9.png | Bin 498 -> 0 bytes .../btn_keyboard_key_light_pressed.9.png | Bin 811 -> 0 bytes .../btn_keyboard_key_normal.9.png | Bin 715 -> 0 bytes .../btn_keyboard_key_normal_off.9.png | Bin 1001 -> 0 bytes .../btn_keyboard_key_normal_off_stone.9.png | Bin 2389 -> 0 bytes .../btn_keyboard_key_normal_on.9.png | Bin 1077 -> 0 bytes .../btn_keyboard_key_normal_on_stone.9.png | Bin 2408 -> 0 bytes .../btn_keyboard_key_normal_stone.9.png | Bin 2213 -> 0 bytes .../btn_keyboard_key_pressed.9.png | Bin 745 -> 0 bytes .../btn_keyboard_key_pressed_off.9.png | Bin 1042 -> 0 bytes .../btn_keyboard_key_pressed_on.9.png | Bin 1105 -> 0 bytes .../java/res/drawable-hdpi/cancel.png | Bin 3992 -> 0 bytes .../candidate_feedback_background.9.png | Bin 833 -> 0 bytes .../java/res/drawable-hdpi/caution.png | Bin 1641 -> 0 bytes .../drawable-hdpi/dialog_bubble_step02.9.png | Bin 1475 -> 0 bytes .../drawable-hdpi/dialog_bubble_step07.9.png | Bin 6012 -> 0 bytes .../res/drawable-hdpi/highlight_pressed.png | Bin 4110 -> 0 bytes .../java/res/drawable-hdpi/hint_popup.9.png | Bin 226 -> 0 bytes .../res/drawable-hdpi/ic_dialog_keyboard.png | Bin 807 -> 0 bytes .../java/res/drawable-hdpi/ic_mic_dialog.png | Bin 3634 -> 0 bytes .../res/drawable-hdpi/ic_subtype_keyboard.png | Bin 1068 -> 0 bytes .../java/res/drawable-hdpi/ic_subtype_mic.png | Bin 681 -> 0 bytes .../ic_suggest_strip_microphone.png | Bin 548 -> 0 bytes .../ic_suggest_strip_microphone_swipe.png | Bin 438 -> 0 bytes .../drawable-hdpi/keyboard_background.9.png | Bin 200 -> 0 bytes .../keyboard_dark_background.9.png | Bin 1041 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_0.9.png | Bin 379 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_1.9.png | Bin 301 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_2.9.png | Bin 404 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_3.9.png | Bin 413 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_4.9.png | Bin 341 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_5.9.png | Bin 388 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_6.9.png | Bin 413 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_7.9.png | Bin 367 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_8.9.png | Bin 417 -> 0 bytes .../res/drawable-hdpi/keyboard_hint_9.9.png | Bin 417 -> 0 bytes .../keyboard_key_feedback_background.9.png | Bin 1099 -> 0 bytes ...eyboard_key_feedback_more_background.9.png | Bin 1310 -> 0 bytes .../keyboard_popup_panel_background.9.png | Bin 1494 -> 0 bytes .../keyboard_suggest_strip.9.png | Bin 215 -> 0 bytes .../keyboard_suggest_strip_divider.png | Bin 1012 -> 0 bytes .../list_selector_background_pressed.9.png | Bin 4203 -> 0 bytes .../java/res/drawable-hdpi/mic_slash.png | Bin 6995 -> 0 bytes .../java/res/drawable-hdpi/ok_cancel.png | Bin 774 -> 0 bytes .../res/drawable-hdpi/speak_now_level0.png | Bin 6017 -> 0 bytes .../res/drawable-hdpi/speak_now_level1.png | Bin 6267 -> 0 bytes .../res/drawable-hdpi/speak_now_level2.png | Bin 6359 -> 0 bytes .../res/drawable-hdpi/speak_now_level3.png | Bin 6506 -> 0 bytes .../res/drawable-hdpi/speak_now_level4.png | Bin 6542 -> 0 bytes .../res/drawable-hdpi/speak_now_level5.png | Bin 6463 -> 0 bytes .../res/drawable-hdpi/speak_now_level6.png | Bin 6782 -> 0 bytes .../drawable-hdpi/sym_bkeyboard_123_mic.png | Bin 2576 -> 0 bytes .../drawable-hdpi/sym_bkeyboard_delete.png | Bin 2314 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_done.png | Bin 1588 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_kp2a.png | Bin 697 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_mic.png | Bin 1410 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num0.png | Bin 1903 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num1.png | Bin 792 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num2.png | Bin 3241 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num3.png | Bin 2829 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num4.png | Bin 2638 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num5.png | Bin 2532 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num6.png | Bin 3568 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num7.png | Bin 3687 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num8.png | Bin 2952 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_num9.png | Bin 3887 -> 0 bytes .../drawable-hdpi/sym_bkeyboard_numalt.png | Bin 2971 -> 0 bytes .../drawable-hdpi/sym_bkeyboard_numpound.png | Bin 1577 -> 0 bytes .../drawable-hdpi/sym_bkeyboard_numstar.png | Bin 1742 -> 0 bytes .../drawable-hdpi/sym_bkeyboard_return.png | Bin 1111 -> 0 bytes .../drawable-hdpi/sym_bkeyboard_search.png | Bin 1612 -> 0 bytes .../drawable-hdpi/sym_bkeyboard_settings.png | Bin 729 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_shift.png | Bin 1474 -> 0 bytes .../sym_bkeyboard_shift_locked.png | Bin 1115 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_space.png | Bin 358 -> 0 bytes .../res/drawable-hdpi/sym_bkeyboard_tab.png | Bin 1008 -> 0 bytes .../java/res/drawable-hdpi/sym_keyboard.png | Bin 1486 -> 0 bytes .../drawable-hdpi/sym_keyboard_123_mic.png | Bin 2575 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_delete.png | Bin 599 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_done.png | Bin 1593 -> 0 bytes .../sym_keyboard_feedback_123_mic.png | Bin 3541 -> 0 bytes .../sym_keyboard_feedback_delete.png | Bin 681 -> 0 bytes .../sym_keyboard_feedback_done.png | Bin 1068 -> 0 bytes .../sym_keyboard_feedback_kp2a.png | Bin 1034 -> 0 bytes ...keyboard_feedback_language_arrows_left.png | Bin 1275 -> 0 bytes ...eyboard_feedback_language_arrows_right.png | Bin 1329 -> 0 bytes .../sym_keyboard_feedback_mic.png | Bin 2494 -> 0 bytes .../sym_keyboard_feedback_numalt.png | Bin 3797 -> 0 bytes .../sym_keyboard_feedback_return.png | Bin 2018 -> 0 bytes .../sym_keyboard_feedback_search.png | Bin 2335 -> 0 bytes .../sym_keyboard_feedback_settings.png | Bin 1558 -> 0 bytes .../sym_keyboard_feedback_shift.png | Bin 677 -> 0 bytes .../sym_keyboard_feedback_shift_locked.png | Bin 652 -> 0 bytes .../sym_keyboard_feedback_space.png | Bin 1336 -> 0 bytes .../sym_keyboard_feedback_tab.png | Bin 1707 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_kp2a.png | Bin 3218 -> 0 bytes .../sym_keyboard_language_arrows_left.png | Bin 1253 -> 0 bytes .../sym_keyboard_language_arrows_right.png | Bin 1372 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_mic.png | Bin 886 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num0.png | Bin 1931 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num1.png | Bin 809 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num2.png | Bin 3214 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num3.png | Bin 2805 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num4.png | Bin 2647 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num5.png | Bin 2536 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num6.png | Bin 3573 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num7.png | Bin 3684 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num8.png | Bin 2904 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_num9.png | Bin 3860 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_numalt.png | Bin 2919 -> 0 bytes .../drawable-hdpi/sym_keyboard_numpound.png | Bin 1600 -> 0 bytes .../drawable-hdpi/sym_keyboard_numstar.png | Bin 1749 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_return.png | Bin 1719 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_search.png | Bin 1260 -> 0 bytes .../drawable-hdpi/sym_keyboard_settings.png | Bin 1094 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_shift.png | Bin 640 -> 0 bytes .../sym_keyboard_shift_locked.png | Bin 593 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_space.png | Bin 326 -> 0 bytes .../sym_keyboard_space_led.9.png | Bin 3249 -> 0 bytes .../res/drawable-hdpi/sym_keyboard_tab.png | Bin 1434 -> 0 bytes .../drawable-hdpi/voice_ime_background.9.png | Bin 1271 -> 0 bytes .../res/drawable-hdpi/voice_swipe_hint.png | Bin 5965 -> 0 bytes .../java/res/drawable-hdpi/working.png | Bin 1180 -> 0 bytes .../res/drawable-land/btn_keyboard_key.xml | 38 - .../btn_keyboard_key_dark_normal.9.png | Bin 377 -> 0 bytes .../btn_keyboard_key_dark_normal_off.9.png | Bin 545 -> 0 bytes .../btn_keyboard_key_dark_normal_on.9.png | Bin 806 -> 0 bytes .../btn_keyboard_key_dark_pressed.9.png | Bin 514 -> 0 bytes .../btn_keyboard_key_dark_pressed_off.9.png | Bin 687 -> 0 bytes .../btn_keyboard_key_dark_pressed_on.9.png | Bin 940 -> 0 bytes .../btn_keyboard_key_fulltrans_normal.9.png | Bin 1068 -> 0 bytes .../btn_keyboard_key_fulltrans_pressed.9.png | Bin 1021 -> 0 bytes .../btn_keyboard_key_light_normal.9.png | Bin 355 -> 0 bytes .../btn_keyboard_key_light_popup_normal.9.png | Bin 252 -> 0 bytes ...tn_keyboard_key_light_popup_selected.9.png | Bin 389 -> 0 bytes .../btn_keyboard_key_light_pressed.9.png | Bin 526 -> 0 bytes .../btn_keyboard_key_normal.9.png | Bin 726 -> 0 bytes .../btn_keyboard_key_normal_off.9.png | Bin 860 -> 0 bytes .../btn_keyboard_key_normal_off_stone.9.png | Bin 2389 -> 0 bytes .../btn_keyboard_key_normal_on.9.png | Bin 926 -> 0 bytes .../btn_keyboard_key_normal_on_stone.9.png | Bin 2408 -> 0 bytes .../btn_keyboard_key_normal_stone.9.png | Bin 2213 -> 0 bytes .../btn_keyboard_key_pressed.9.png | Bin 664 -> 0 bytes .../btn_keyboard_key_pressed_off.9.png | Bin 836 -> 0 bytes .../btn_keyboard_key_pressed_on.9.png | Bin 886 -> 0 bytes .../java/res/drawable-mdpi/cancel.png | Bin 5792 -> 0 bytes .../candidate_feedback_background.9.png | Bin 1182 -> 0 bytes .../java/res/drawable-mdpi/caution.png | Bin 1100 -> 0 bytes .../drawable-mdpi/dialog_bubble_step02.9.png | Bin 1036 -> 0 bytes .../drawable-mdpi/dialog_bubble_step07.9.png | Bin 4646 -> 0 bytes .../res/drawable-mdpi/highlight_pressed.png | Bin 593 -> 0 bytes .../java/res/drawable-mdpi/hint_popup.9.png | Bin 202 -> 0 bytes .../res/drawable-mdpi/ic_dialog_keyboard.png | Bin 528 -> 0 bytes .../java/res/drawable-mdpi/ic_mic_dialog.png | Bin 3312 -> 0 bytes .../res/drawable-mdpi/ic_subtype_keyboard.png | Bin 498 -> 0 bytes .../java/res/drawable-mdpi/ic_subtype_mic.png | Bin 483 -> 0 bytes .../ic_suggest_strip_microphone.png | Bin 398 -> 0 bytes .../ic_suggest_strip_microphone_swipe.png | Bin 309 -> 0 bytes .../drawable-mdpi/keyboard_background.9.png | Bin 214 -> 0 bytes .../keyboard_dark_background.9.png | Bin 196 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_0.9.png | Bin 307 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_1.9.png | Bin 302 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_2.9.png | Bin 334 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_3.9.png | Bin 327 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_4.9.png | Bin 329 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_5.9.png | Bin 334 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_6.9.png | Bin 329 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_7.9.png | Bin 334 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_8.9.png | Bin 332 -> 0 bytes .../res/drawable-mdpi/keyboard_hint_9.9.png | Bin 339 -> 0 bytes .../keyboard_key_feedback_background.9.png | Bin 764 -> 0 bytes ...eyboard_key_feedback_more_background.9.png | Bin 850 -> 0 bytes .../keyboard_popup_panel_background.9.png | Bin 1726 -> 0 bytes .../keyboard_suggest_strip.9.png | Bin 205 -> 0 bytes .../keyboard_suggest_strip_divider.png | Bin 2812 -> 0 bytes .../list_selector_background_pressed.9.png | Bin 11006 -> 0 bytes .../java/res/drawable-mdpi/mic_slash.png | Bin 7595 -> 0 bytes .../java/res/drawable-mdpi/ok_cancel.png | Bin 3330 -> 0 bytes .../res/drawable-mdpi/speak_now_level0.png | Bin 6738 -> 0 bytes .../res/drawable-mdpi/speak_now_level1.png | Bin 6804 -> 0 bytes .../res/drawable-mdpi/speak_now_level2.png | Bin 6897 -> 0 bytes .../res/drawable-mdpi/speak_now_level3.png | Bin 7077 -> 0 bytes .../res/drawable-mdpi/speak_now_level4.png | Bin 7109 -> 0 bytes .../res/drawable-mdpi/speak_now_level5.png | Bin 6933 -> 0 bytes .../res/drawable-mdpi/speak_now_level6.png | Bin 7050 -> 0 bytes .../drawable-mdpi/sym_bkeyboard_123_mic.png | Bin 1520 -> 0 bytes .../drawable-mdpi/sym_bkeyboard_delete.png | Bin 800 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_done.png | Bin 775 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_kp2a.png | Bin 3165 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_mic.png | Bin 838 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num0.png | Bin 1148 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num1.png | Bin 493 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num2.png | Bin 1785 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num3.png | Bin 1675 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num4.png | Bin 1530 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num5.png | Bin 1411 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num6.png | Bin 1943 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num7.png | Bin 2040 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num8.png | Bin 1618 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_num9.png | Bin 2167 -> 0 bytes .../drawable-mdpi/sym_bkeyboard_numalt.png | Bin 1670 -> 0 bytes .../drawable-mdpi/sym_bkeyboard_numpound.png | Bin 910 -> 0 bytes .../drawable-mdpi/sym_bkeyboard_numstar.png | Bin 943 -> 0 bytes .../drawable-mdpi/sym_bkeyboard_return.png | Bin 834 -> 0 bytes .../drawable-mdpi/sym_bkeyboard_search.png | Bin 1042 -> 0 bytes .../drawable-mdpi/sym_bkeyboard_settings.png | Bin 729 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_shift.png | Bin 998 -> 0 bytes .../sym_bkeyboard_shift_locked.png | Bin 787 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_space.png | Bin 411 -> 0 bytes .../res/drawable-mdpi/sym_bkeyboard_tab.png | Bin 627 -> 0 bytes .../java/res/drawable-mdpi/sym_keyboard.png | Bin 726 -> 0 bytes .../drawable-mdpi/sym_keyboard_123_mic.png | Bin 1540 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_delete.png | Bin 3432 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_done.png | Bin 771 -> 0 bytes .../sym_keyboard_feedback_123_mic.png | Bin 4640 -> 0 bytes .../sym_keyboard_feedback_delete.png | Bin 3414 -> 0 bytes .../sym_keyboard_feedback_done.png | Bin 498 -> 0 bytes .../sym_keyboard_feedback_kp2a.png | Bin 3336 -> 0 bytes ...keyboard_feedback_language_arrows_left.png | Bin 3126 -> 0 bytes ...eyboard_feedback_language_arrows_right.png | Bin 3121 -> 0 bytes .../sym_keyboard_feedback_mic.png | Bin 3803 -> 0 bytes .../sym_keyboard_feedback_numalt.png | Bin 4679 -> 0 bytes .../sym_keyboard_feedback_return.png | Bin 3613 -> 0 bytes .../sym_keyboard_feedback_search.png | Bin 3793 -> 0 bytes .../sym_keyboard_feedback_settings.png | Bin 3839 -> 0 bytes .../sym_keyboard_feedback_shift.png | Bin 3320 -> 0 bytes .../sym_keyboard_feedback_shift_locked.png | Bin 3268 -> 0 bytes .../sym_keyboard_feedback_space.png | Bin 3222 -> 0 bytes .../sym_keyboard_feedback_tab.png | Bin 3529 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_kp2a.png | Bin 3206 -> 0 bytes .../sym_keyboard_language_arrows_left.png | Bin 3001 -> 0 bytes .../sym_keyboard_language_arrows_right.png | Bin 3032 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_mic.png | Bin 3439 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num0.png | Bin 1160 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num1.png | Bin 506 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num2.png | Bin 1778 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num3.png | Bin 1676 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num4.png | Bin 1540 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num5.png | Bin 1417 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num6.png | Bin 1952 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num7.png | Bin 2051 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num8.png | Bin 1605 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_num9.png | Bin 2173 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_numalt.png | Bin 1673 -> 0 bytes .../drawable-mdpi/sym_keyboard_numpound.png | Bin 963 -> 0 bytes .../drawable-mdpi/sym_keyboard_numstar.png | Bin 954 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_return.png | Bin 3380 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_search.png | Bin 3535 -> 0 bytes .../drawable-mdpi/sym_keyboard_settings.png | Bin 3448 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_shift.png | Bin 3217 -> 0 bytes .../drawable-mdpi/sym_keyboard_shift_lock.png | Bin 3188 -> 0 bytes .../sym_keyboard_shift_locked.png | Bin 3188 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_space.png | Bin 3063 -> 0 bytes .../sym_keyboard_space_led.9.png | Bin 365 -> 0 bytes .../res/drawable-mdpi/sym_keyboard_tab.png | Bin 3269 -> 0 bytes .../drawable-mdpi/voice_ime_background.9.png | Bin 828 -> 0 bytes .../res/drawable-mdpi/voice_swipe_hint.png | Bin 3111 -> 0 bytes .../java/res/drawable-mdpi/working.png | Bin 3367 -> 0 bytes .../java/res/drawable/btn_keyboard_key.xml | 38 - .../java/res/drawable/btn_keyboard_key2.xml | 36 - .../java/res/drawable/btn_keyboard_key3.xml | 36 - .../drawable/btn_keyboard_key_fulltrans.xml | 26 - .../drawable/btn_keyboard_key_gingerbread.xml | 42 - .../btn_keyboard_key_gingerbread_popup.xml | 21 - .../res/drawable/btn_keyboard_key_stone.xml | 36 - .../drawable/ic_suggest_scroll_background.xml | 25 - .../res/drawable/keyboard_key_feedback.xml | 22 - .../java/res/layout/bubble_text.xml | 30 - .../java/res/layout/candidate_preview.xml | 29 - .../java/res/layout/candidates.xml | 38 - .../java/res/layout/input_basic.xml | 31 - .../res/layout/input_basic_highcontrast.xml | 32 - .../java/res/layout/input_gingerbread.xml | 36 - .../java/res/layout/input_stone_bold.xml | 37 - .../java/res/layout/input_stone_normal.xml | 35 - .../java/res/layout/input_stone_popup.xml | 41 - .../java/res/layout/key_preview.xml | 29 - .../java/res/layout/keyboard_popup.xml | 41 - .../java/res/layout/recognition_status.xml | 98 - .../res/layout/voice_punctuation_hint.xml | 49 - .../java/res/layout/voice_swipe_hint.xml | 56 - .../KP2ASoftKeyboard2/java/res/raw/main.dict | Bin 841005 -> 0 bytes .../KP2ASoftKeyboard2/java/res/raw/type3.ogg | Bin 4126 -> 0 bytes .../java/res/values-ar/strings.xml | 140 - .../java/res/values-ar/strings_kp2a.xml | 20 - .../java/res/values-bg-rBG/strings_kp2a.xml | 20 - .../java/res/values-bg/strings.xml | 140 - .../java/res/values-ca/strings.xml | 140 - .../java/res/values-ca/strings_kp2a.xml | 20 - .../java/res/values-cs/bools.xml | 22 - .../res/values-cs/donottranslate-altchars.xml | 34 - .../java/res/values-cs/strings.xml | 140 - .../java/res/values-cs/strings_kp2a.xml | 20 - .../res/values-da/donottranslate-altchars.xml | 38 - .../java/res/values-da/strings.xml | 140 - .../java/res/values-da/strings_kp2a.xml | 20 - .../java/res/values-de/bools.xml | 22 - .../res/values-de/donottranslate-altchars.xml | 31 - .../java/res/values-de/strings.xml | 140 - .../java/res/values-de/strings_kp2a.xml | 20 - .../res/values-el/donottranslate-altchars.xml | 30 - .../java/res/values-el/strings.xml | 140 - .../java/res/values-el/strings_kp2a.xml | 10 - .../java/res/values-en-rGB/strings.xml | 140 - .../java/res/values-en/bools.xml | 22 - .../res/values-en/donottranslate-altchars.xml | 27 - .../values-es-rUS/donottranslate-altchars.xml | 30 - .../java/res/values-es-rUS/strings.xml | 140 - .../java/res/values-es/bools.xml | 22 - .../res/values-es/donottranslate-altchars.xml | 30 - .../java/res/values-es/strings.xml | 140 - .../java/res/values-es/strings_kp2a.xml | 20 - .../java/res/values-fa/strings.xml | 140 - .../java/res/values-fi/strings.xml | 140 - .../java/res/values-fi/strings_kp2a.xml | 20 - .../java/res/values-fr-rCA/strings.xml | 19 - .../java/res/values-fr/bools.xml | 22 - .../res/values-fr/donottranslate-altchars.xml | 33 - .../java/res/values-fr/donottranslate.xml | 25 - .../java/res/values-fr/strings.xml | 140 - .../java/res/values-fr/strings_kp2a.xml | 20 - .../java/res/values-hr/strings.xml | 140 - .../java/res/values-hu/strings.xml | 140 - .../java/res/values-hu/strings_kp2a.xml | 20 - .../java/res/values-in/strings.xml | 140 - .../java/res/values-in/strings_kp2a.xml | 7 - .../java/res/values-it/bools.xml | 22 - .../res/values-it/donottranslate-altchars.xml | 30 - .../java/res/values-it/donottranslate.xml | 23 - .../java/res/values-it/strings.xml | 140 - .../java/res/values-it/strings_kp2a.xml | 20 - .../java/res/values-iw/strings.xml | 140 - .../java/res/values-iw/strings_kp2a.xml | 15 - .../res/values-ja/donottranslate-altchars.xml | 30 - .../java/res/values-ja/strings.xml | 140 - .../java/res/values-ja/strings_kp2a.xml | 20 - .../res/values-ko/donottranslate-altchars.xml | 30 - .../java/res/values-ko/strings.xml | 140 - .../java/res/values-ko/strings_kp2a.xml | 20 - .../java/res/values-land/dimens.xml | 31 - .../java/res/values-lt/strings.xml | 140 - .../java/res/values-lv/strings.xml | 140 - .../res/values-nb/donottranslate-altchars.xml | 37 - .../java/res/values-nb/strings.xml | 140 - .../java/res/values-nb/strings_kp2a.xml | 20 - .../java/res/values-nl/bools.xml | 22 - .../res/values-nl/donottranslate-altchars.xml | 30 - .../java/res/values-nl/strings.xml | 140 - .../java/res/values-nl/strings_kp2a.xml | 20 - .../java/res/values-nn/strings_kp2a.xml | 3 - .../java/res/values-pl/bools.xml | 22 - .../res/values-pl/donottranslate-altchars.xml | 32 - .../java/res/values-pl/strings.xml | 140 - .../java/res/values-pl/strings_kp2a.xml | 20 - .../java/res/values-pt-rBR/strings_kp2a.xml | 20 - .../values-pt-rPT/donottranslate-altchars.xml | 30 - .../java/res/values-pt-rPT/strings.xml | 140 - .../java/res/values-pt-rPT/strings_kp2a.xml | 20 - .../res/values-pt/donottranslate-altchars.xml | 30 - .../java/res/values-pt/strings.xml | 140 - .../res/values-rm/donottranslate-altchars.xml | 30 - .../java/res/values-rm/strings.xml | 148 - .../java/res/values-ro/strings.xml | 140 - .../java/res/values-ro/strings_kp2a.xml | 20 - .../res/values-ru/donottranslate-altchars.xml | 32 - .../java/res/values-ru/strings.xml | 140 - .../java/res/values-ru/strings_kp2a.xml | 21 - .../java/res/values-sk/strings.xml | 140 - .../java/res/values-sk/strings_kp2a.xml | 20 - .../java/res/values-sl/strings.xml | 140 - .../java/res/values-sl/strings_kp2a.xml | 20 - .../java/res/values-sr/strings.xml | 140 - .../java/res/values-sr/strings_kp2a.xml | 3 - .../res/values-sv/donottranslate-altchars.xml | 38 - .../java/res/values-sv/strings.xml | 140 - .../java/res/values-sv/strings_kp2a.xml | 13 - .../java/res/values-th/strings.xml | 140 - .../java/res/values-tl/strings.xml | 140 - .../res/values-tr/donottranslate-altchars.xml | 31 - .../java/res/values-tr/strings.xml | 140 - .../java/res/values-tr/strings_kp2a.xml | 14 - .../java/res/values-uk/strings.xml | 140 - .../java/res/values-uk/strings_kp2a.xml | 20 - .../java/res/values-vi/strings.xml | 140 - .../java/res/values-vi/strings_kp2a.xml | 20 - .../values-zh-rCN/donottranslate-altchars.xml | 30 - .../java/res/values-zh-rCN/strings.xml | 140 - .../java/res/values-zh-rCN/strings_kp2a.xml | 20 - .../values-zh-rTW/donottranslate-altchars.xml | 30 - .../java/res/values-zh-rTW/strings.xml | 140 - .../java/res/values-zh-rTW/strings_kp2a.xml | 20 - .../java/res/values/attrs.xml | 72 - .../java/res/values/bools.xml | 33 - .../java/res/values/colors.xml | 32 - .../java/res/values/config.xml | 32 - .../java/res/values/dimens.xml | 41 - .../res/values/donottranslate-altchars.xml | 46 - .../java/res/values/donottranslate.xml | 35 - .../java/res/values/durations.xml | 25 - .../java/res/values/keycodes.xml | 40 - .../java/res/values/strings.xml | 379 -- .../java/res/values/strings_kp2a.xml | 23 - .../java/res/values/styles.xml | 44 - .../java/res/xml-da/kbd_qwerty.xml | 541 --- .../java/res/xml-da/kbd_qwerty_black.xml | 478 --- .../java/res/xml-de/kbd_qwerty.xml | 520 --- .../java/res/xml-de/kbd_qwerty_black.xml | 457 --- .../java/res/xml-fr/kbd_qwerty.xml | 521 --- .../java/res/xml-fr/kbd_qwerty_black.xml | 458 --- .../java/res/xml-iw/kbd_qwerty.xml | 479 --- .../java/res/xml-iw/kbd_qwerty_black.xml | 416 -- .../java/res/xml-nb/kbd_qwerty.xml | 541 --- .../java/res/xml-nb/kbd_qwerty_black.xml | 478 --- .../java/res/xml-pl/kbd_kp2a.xml | 59 - .../java/res/xml-ru/kbd_qwerty.xml | 519 --- .../java/res/xml-ru/kbd_qwerty_black.xml | 456 --- .../java/res/xml-sr/kbd_qwerty.xml | 512 --- .../java/res/xml-sr/kbd_qwerty_black.xml | 449 --- .../java/res/xml-sv/kbd_qwerty.xml | 542 --- .../java/res/xml-sv/kbd_qwerty_black.xml | 480 --- .../java/res/xml/dictionary.xml | 23 - .../java/res/xml/kbd_kp2a.xml | 59 - .../java/res/xml/kbd_kp2a_black.xml | 58 - .../java/res/xml/kbd_phone.xml | 115 - .../java/res/xml/kbd_phone_black.xml | 111 - .../java/res/xml/kbd_phone_symbols.xml | 102 - .../java/res/xml/kbd_phone_symbols_black.xml | 98 - .../res/xml/kbd_popup_narrow_template.xml | 27 - .../java/res/xml/kbd_popup_template.xml | 27 - .../java/res/xml/kbd_qwerty.xml | 515 --- .../java/res/xml/kbd_qwerty_black.xml | 452 --- .../java/res/xml/kbd_symbols.xml | 215 - .../java/res/xml/kbd_symbols_black.xml | 203 - .../java/res/xml/kbd_symbols_shift.xml | 191 - .../java/res/xml/kbd_symbols_shift_black.xml | 178 - .../java/res/xml/language_prefs.xml | 19 - .../KP2ASoftKeyboard2/java/res/xml/method.xml | 26 - .../java/res/xml/popup_at.xml | 39 - .../java/res/xml/popup_comma.xml | 39 - .../java/res/xml/popup_domains.xml | 46 - .../java/res/xml/popup_kp2a.xml | 20 - .../java/res/xml/popup_mic.xml | 40 - .../java/res/xml/popup_punctuation.xml | 68 - .../java/res/xml/popup_slash.xml | 39 - .../java/res/xml/popup_smileys.xml | 89 - .../KP2ASoftKeyboard2/java/res/xml/prefs.xml | 134 - .../java/res/xml/prefs_for_debug.xml | 45 - .../keepass2android/kbbridge/ImeSwitcher.java | 110 - .../kbbridge/KeyboardData.java | 24 - .../kbbridge/KeyboardDataBuilder.java | 20 - .../kbbridge/StringForTyping.java | 20 - .../softkeyboard/AutoDictionary.java | 259 -- .../softkeyboard/BinaryDictionary.java | 300 -- .../softkeyboard/CandidateView.java | 491 --- .../softkeyboard/ContactsDictionary.java | 152 - .../keepass2android/softkeyboard/Design.java | 38 - .../softkeyboard/Dictionary.java | 120 - .../softkeyboard/EditingUtil.java | 337 -- .../softkeyboard/ExpandableDictionary.java | 691 ---- .../keepass2android/softkeyboard/Hints.java | 164 - .../softkeyboard/InputLanguageSelection.java | 250 -- .../softkeyboard/KP2AKeyboard.java | 2598 ------------- .../softkeyboard/KeyDetector.java | 113 - .../softkeyboard/KeyboardSwitcher.java | 591 --- .../softkeyboard/LanguageSwitcher.java | 201 - .../softkeyboard/LatinIMEBackupAgent.java | 32 - .../softkeyboard/LatinIMEDebugSettings.java | 75 - .../softkeyboard/LatinIMESettings.java | 111 - .../softkeyboard/LatinIMEUtil.java | 171 - .../softkeyboard/LatinImeLogger.java | 71 - .../softkeyboard/LatinKeyboard.java | 1013 ----- .../softkeyboard/LatinKeyboardBaseView.java | 1517 -------- .../softkeyboard/LatinKeyboardView.java | 385 -- .../softkeyboard/MiniKeyboardKeyDetector.java | 59 - .../softkeyboard/ModifierKeyState.java | 42 - .../softkeyboard/PluginManager.java | 259 -- .../softkeyboard/PointerTracker.java | 581 --- .../softkeyboard/ProximityKeyDetector.java | 86 - .../softkeyboard/SharedPreferencesCompat.java | 53 - .../keepass2android/softkeyboard/Suggest.java | 552 --- .../softkeyboard/SwipeTracker.java | 157 - .../softkeyboard/TextEntryState.java | 278 -- .../softkeyboard/UserBigramDictionary.java | 401 -- .../softkeyboard/UserDictionary.java | 138 - .../softkeyboard/WordComposer.java | 200 - .../KP2ASoftKeyboard2/native/howtobuild.txt | 4 - .../KP2ASoftKeyboard2/native/jni/Android.mk | 20 - .../native/jni/Application.mk | 3 - .../KP2ASoftKeyboard2/native/jni/basechars.h | 172 - .../native/jni/char_utils.cpp | 899 ----- .../KP2ASoftKeyboard2/native/jni/char_utils.h | 26 - .../native/jni/dictionary.cpp | 596 --- .../KP2ASoftKeyboard2/native/jni/dictionary.h | 106 - ...2android_softkeyboard_BinaryDictionary.cpp | 191 - .../libs/armeabi-v7a/libjni_latinime.so | Bin 21688 -> 0 bytes .../native/libs/armeabi/libjni_latinime.so | Bin 21684 -> 0 bytes .../native/libs/x86/libjni_latinime.so | Bin 21724 -> 0 bytes .../KP2ASoftkeyboard_AS/.idea/workspace.xml | 2 +- src/java/PluginInputStick/.classpath | 9 - src/java/PluginInputStick/.project | 33 - .../.settings/org.eclipse.jdt.core.prefs | 4 - .../plugin/inputstick/BuildConfig.java | 6 - src/java/PluginInputStick/ic_launcher-web.png | Bin 17439 -> 0 bytes .../PluginInputStick/proguard-project.txt | 20 - src/java/PluginInputStick/project.properties | 16 - .../res/layout/activity_quick_settings.xml | 34 - .../res/values-pl/strings.xml | 39 - .../values-pl/strings_activity_settings.xml | 105 - .../PluginInputStick/res/values/strings.xml | 39 - .../plugin/inputstick/ActionReceiver.java | 327 -- .../plugin/inputstick/Const.java | 13 - .../plugin/inputstick/InputStickService.java | 222 -- .../plugin/inputstick/PluginUtils.java | 28 - .../inputstick/QuickSettingsActivity.java | 61 - .../plugin/inputstick/SettingsActivity.java | 394 -- src/java/PluginInputStick3/.idea/.name | 1 + src/java/PluginInputStick3/.idea/compiler.xml | 22 + .../.idea/copyright/profiles_settings.xml | 3 + .../PluginInputStick3/.idea/encodings.xml | 6 + src/java/PluginInputStick3/.idea/gradle.xml | 21 + .../inspectionProfiles/Project_Default.xml | 6 + .../inspectionProfiles/profiles_settings.xml | 7 + .../.idea/libraries/appcompat_v7_19_1_0.xml | 10 + .../.idea/libraries/support_v4_19_1_0.xml | 11 + src/java/PluginInputStick3/.idea/misc.xml | 38 + src/java/PluginInputStick3/.idea/modules.xml | 11 + src/java/PluginInputStick3/.idea/vcs.xml | 6 + .../PluginInputStick3/.idea/workspace.xml | 3460 +++++++++++++++++ .../PluginInputStick3/PluginInputStick3.iml | 19 + src/java/PluginInputStick3/build.gradle | 15 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + src/java/PluginInputStick3/gradlew | 164 + src/java/PluginInputStick3/gradlew.bat | 90 + src/java/PluginInputStick3/import-summary.txt | 1926 +++++++++ .../inputStickAPI/build.gradle | 23 + .../inputStickAPI/inputStickAPI.iml | 93 + .../src/main/AndroidManifest.xml | 18 + .../src/main/java/com/inputstick/api/AES.java | 57 + .../inputstick/api/BTConnectionManager.java | 159 + .../com/inputstick/api/ConnectionManager.java | 99 + .../com/inputstick/api/DownloadDialog.java | 53 + .../main/java/com/inputstick/api/HIDInfo.java | 149 + .../inputstick/api/IPCConnectionManager.java | 180 + .../api/InputStickDataListener.java | 7 + .../com/inputstick/api/InputStickError.java | 144 + .../api/InputStickKeyboardListener.java | 7 + .../api/InputStickStateListener.java | 7 + .../inputstick/api/OnEmptyBufferListener.java | 8 + .../main/java/com/inputstick/api/Packet.java | 144 + .../com/inputstick/api/PacketManager.java | 185 + .../main/java/com/inputstick/api/Util.java | 121 + .../api/basic/InputStickConsumer.java | 89 + .../api/basic/InputStickGamepad.java | 38 + .../inputstick/api/basic/InputStickHID.java | 602 +++ .../api/basic/InputStickKeyboard.java | 263 ++ .../inputstick/api/basic/InputStickMouse.java | 131 + .../api/bluetooth/BT20Connection.java | 198 + .../api/bluetooth/BT40Connection.java | 286 ++ .../api/bluetooth/BTConnection.java | 26 + .../inputstick/api/bluetooth/BTService.java | 231 ++ .../api/bluetooth/PacketReader.java | 88 + .../api/broadcast/InputStickBroadcast.java | 430 ++ .../inputstick/api/hid/ConsumerReport.java | 43 + .../com/inputstick/api/hid/GamepadReport.java | 32 + .../com/inputstick/api/hid/HIDKeycodes.java | 436 +++ .../com/inputstick/api/hid/HIDReport.java | 8 + .../inputstick/api/hid/HIDTransaction.java | 56 + .../api/hid/HIDTransactionQueue.java | 324 ++ .../inputstick/api/hid/KeyboardReport.java | 36 + .../com/inputstick/api/hid/MouseReport.java | 29 + .../inputstick/api/init/BasicInitManager.java | 97 + .../com/inputstick/api/init/DeviceInfo.java | 93 + .../com/inputstick/api/init/InitManager.java | 112 + .../api/init/InitManagerListener.java | 9 + .../inputstick/api/layout/DanishLayout.java | 390 ++ .../inputstick/api/layout/DvorakLayout.java | 269 ++ .../inputstick/api/layout/FinnishLayout.java | 388 ++ .../inputstick/api/layout/FrenchLayout.java | 362 ++ .../inputstick/api/layout/GermanLayout.java | 355 ++ .../api/layout/GermanMacLayout.java | 353 ++ .../inputstick/api/layout/HebrewLayout.java | 275 ++ .../inputstick/api/layout/ItalianLayout.java | 279 ++ .../inputstick/api/layout/KeyboardLayout.java | 432 ++ .../api/layout/NorwegianLayout.java | 392 ++ .../inputstick/api/layout/PolishLayout.java | 312 ++ .../api/layout/PortugueseBrazilianLayout.java | 399 ++ .../inputstick/api/layout/RussianLayout.java | 269 ++ .../inputstick/api/layout/SlovakLayout.java | 505 +++ .../inputstick/api/layout/SpanishLayout.java | 392 ++ .../inputstick/api/layout/SwedishLayout.java | 386 ++ .../api/layout/SwissFrenchLayout.java | 353 ++ .../api/layout/SwissGermanLayout.java | 388 ++ .../api/layout/UnitedKingdomLayout.java | 283 ++ .../api/layout/UnitedStatesLayout.java | 268 ++ .../com/inputstick/init/BasicInitManager.java | 78 + .../init/BootloaderInitManager.java | 28 + .../java/com/inputstick/init/DeviceInfo.java | 89 + .../java/com/inputstick/init/InitManager.java | 107 + .../inputstick/init/InitManagerListener.java | 9 + .../main/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../src/main/res/menu/install_utility.xml | 9 + .../src/main/res/values-sw600dp/dimens.xml | 8 + .../main/res/values-sw720dp-land/dimens.xml | 9 + .../src/main/res/values-v11/styles.xml | 11 + .../src/main/res/values-v14/styles.xml | 12 + .../src/main/res/values/dimens.xml | 7 + .../src/main/res/values/strings.xml | 9 + .../src/main/res/values/styles.xml | 20 + .../keepass2AndroidPluginSDK/build.gradle | 18 + .../keepass2AndroidPluginSDK.iml | 91 + .../keepass2AndroidPluginSDK/lint.xml | 3 + .../src/main/AndroidManifest.xml | 18 + .../pluginsdk/AccessManager.java | 201 + .../pluginsdk/KeepassDefs.java | 48 + .../pluginsdk/Kp2aControl.java | 111 + .../PluginAccessBroadcastReceiver.java | 101 + .../pluginsdk/PluginAccessException.java | 21 + .../PluginActionBroadcastReceiver.java | 303 ++ .../keepass2android/pluginsdk/Strings.java | 190 + .../main/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../src/main/res/values-v11/styles.xml | 11 + .../src/main/res/values-v14/styles.xml | 12 + .../src/main}/res/values-w820dp/dimens.xml | 0 .../src/main/res/values/dimens.xml | 7 + .../src/main/res/values/strings.xml | 6 + .../src/main/res/values/styles.xml | 20 + src/java/PluginInputStick3/local.properties | 7 + .../pluginInputStick/build.gradle | 29 + .../pluginInputStick/pluginInputStick.iml | 93 + .../src/main}/AndroidManifest.xml | 33 +- .../plugin/inputstick/AccessReceiver.java | 0 .../plugin/inputstick/ActionManager.java | 265 ++ .../plugin/inputstick/ActionReceiver.java | 288 ++ .../plugin/inputstick/AllActionsActivity.java | 130 + .../plugin/inputstick/ClipboardService.java | 77 + .../plugin/inputstick/Const.java | 49 + .../plugin/inputstick/InputStickService.java | 188 + .../plugin/inputstick/MacSetupActivity.java | 29 +- .../plugin/inputstick/MacroActivity.java | 452 +++ .../inputstick/MacroExecuteActivity.java | 131 + .../plugin/inputstick/MacroHelper.java | 243 ++ .../plugin/inputstick/MainActivity.java | 39 +- .../inputstick/MaskedPasswordActivity.java | 91 +- .../inputstick/MigrationMessageActivity.java | 78 + .../inputstick/MultiSelectListPreference.java | 133 + .../OnUpgradeBroadcastReceiver.java | 14 + .../plugin/inputstick/SettingsActivity.java | 362 ++ .../plugin/inputstick/UserPreferences.java | 273 ++ .../sheetrock/panda/changelog/ChangeLog.java | 4 +- .../main}/res/drawable-hdpi/ic_launcher.png | Bin .../res/drawable-hdpi/ic_notification.png | Bin .../main}/res/drawable-mdpi/ic_launcher.png | Bin .../res/drawable-mdpi/ic_notification.png | Bin .../main}/res/drawable-xhdpi/ic_launcher.png | Bin .../res/drawable-xhdpi/ic_notification.png | Bin .../main}/res/drawable-xxhdpi/ic_launcher.png | Bin .../res/drawable-xxhdpi/ic_notification.png | Bin .../main/res/layout/activity_all_actions.xml | 15 + .../main}/res/layout/activity_mac_setup.xml | 5 +- .../src/main/res/layout/activity_macro.xml | 263 ++ .../res/layout/activity_macro_execute.xml | 51 + .../src/main}/res/layout/activity_main.xml | 0 .../res/layout/activity_masked_password.xml | 37 +- .../res/layout/activity_migration_message.xml | 28 + .../main/res/layout/activity_settings.xml} | 354 +- .../src/main}/res/layout/fragment_main.xml | 2 +- .../src/main/res/layout/row.xml | 7 + .../src/main}/res/menu/main.xml | 0 .../src/main}/res/raw/changelog.txt | 12 + .../src/main/res/values-pl/strings.xml | 57 + .../values-pl/strings_activity_mac_setup.xml | 9 + .../res/values-pl/strings_activity_macro.xml | 53 + .../strings_activity_masked_password.xml | 8 + .../values-pl/strings_activity_settings.xml | 126 + .../src/main/res/values-v11/styles.xml | 11 + .../src/main/res/values-v14/styles.xml | 12 + .../src/main/res/values-w820dp/dimens.xml | 10 + .../src/main/res/values/dimens.xml | 7 + .../src/main/res/values/strings.xml | 55 + .../res/values/strings_activity_mac_setup.xml | 12 + .../res/values/strings_activity_macro.xml | 61 + .../strings_activity_masked_password.xml | 12 + .../res/values/strings_activity_settings.xml | 113 +- .../src/main/res/values/styles.xml | 20 + src/java/PluginInputStick3/settings.gradle | 3 + 882 files changed, 36282 insertions(+), 39201 deletions(-) create mode 100644 src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/cache.properties create mode 100644 src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/cache.properties.lock create mode 100644 src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/fileHashes.bin create mode 100644 src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin create mode 100644 src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/outputFileStates.bin create mode 100644 src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin create mode 100644 src/java/InputStickAPI/app/build.gradle create mode 100644 src/java/InputStickAPI/app/src/main/AndroidManifest.xml create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/AES.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/BTConnectionManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/ConnectionManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/DownloadDialog.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/HIDInfo.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/IPCConnectionManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickDataListener.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickError.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickKeyboardListener.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickStateListener.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/OnEmptyBufferListener.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/Packet.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/PacketManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/Util.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickConsumer.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickGamepad.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickHID.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickKeyboard.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickMouse.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BT20Connection.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BT40Connection.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BTConnection.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BTService.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/PacketReader.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/broadcast/InputStickBroadcast.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/ConsumerReport.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/GamepadReport.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDKeycodes.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDReport.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDTransaction.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDTransactionQueue.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/KeyboardReport.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/MouseReport.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/BasicInitManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/DeviceInfo.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/InitManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/InitManagerListener.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/DanishLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/DvorakLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/FinnishLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/FrenchLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/GermanLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/GermanMacLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/HebrewLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/ItalianLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/KeyboardLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/NorwegianLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/PolishLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/PortugueseBrazilianLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/RussianLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SlovakLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SpanishLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwedishLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwissFrenchLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwissGermanLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/UnitedKingdomLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/UnitedStatesLayout.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/init/BasicInitManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/init/BootloaderInitManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/init/DeviceInfo.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/init/InitManager.java create mode 100644 src/java/InputStickAPI/app/src/main/java/com/inputstick/init/InitManagerListener.java create mode 100644 src/java/InputStickAPI/app/src/main/res/drawable-hdpi/ic_launcher.png create mode 100644 src/java/InputStickAPI/app/src/main/res/drawable-mdpi/ic_launcher.png create mode 100644 src/java/InputStickAPI/app/src/main/res/drawable-xhdpi/ic_launcher.png create mode 100644 src/java/InputStickAPI/app/src/main/res/menu/install_utility.xml create mode 100644 src/java/InputStickAPI/app/src/main/res/values-sw600dp/dimens.xml create mode 100644 src/java/InputStickAPI/app/src/main/res/values-sw720dp-land/dimens.xml rename src/java/{PluginInputStick => InputStickAPI/app/src/main}/res/values-v11/styles.xml (100%) rename src/java/{PluginInputStick => InputStickAPI/app/src/main}/res/values-v14/styles.xml (100%) rename src/java/{PluginInputStick => InputStickAPI/app/src/main}/res/values/dimens.xml (100%) create mode 100644 src/java/InputStickAPI/app/src/main/res/values/strings.xml rename src/java/{PluginInputStick => InputStickAPI/app/src/main}/res/values/styles.xml (100%) create mode 100644 src/java/InputStickAPI/build.gradle create mode 100644 src/java/InputStickAPI/build/intermediates/gradle_project_sync_data.bin create mode 100644 src/java/InputStickAPI/gradle/wrapper/gradle-wrapper.jar create mode 100644 src/java/InputStickAPI/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/java/InputStickAPI/gradlew create mode 100644 src/java/InputStickAPI/gradlew.bat create mode 100644 src/java/InputStickAPI/import-summary.txt create mode 100644 src/java/InputStickAPI/settings.gradle delete mode 100644 src/java/KP2ASoftKeyboard/.classpath delete mode 100644 src/java/KP2ASoftKeyboard/.project delete mode 100644 src/java/KP2ASoftKeyboard/.settings/org.eclipse.core.resources.prefs delete mode 100644 src/java/KP2ASoftKeyboard/AndroidManifest.xml delete mode 100644 src/java/KP2ASoftKeyboard/lint.xml delete mode 100644 src/java/KP2ASoftKeyboard/project.properties delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_delete.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_done.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_kp2a.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_return.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_search.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_shift.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_space.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_delete.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_done.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_kp2a.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_return.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_search.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_shift.png delete mode 100644 src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_space.png delete mode 100644 src/java/KP2ASoftKeyboard/res/layout/input.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-ar/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-bg-rBG/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-ca/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-cs/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-da/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-de/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-el/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-es/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-fi/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-fr/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-hu/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-in/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-it/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-iw/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-ja/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-ko/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-land/dimens.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-nb/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-nl/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-nn/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-pl/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-pt-rBR/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-pt-rPT/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-ro/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-ru/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-sk/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-sl/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-sr/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-sv/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-tr/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-uk/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-vi/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-zh-rCN/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values-zh-rTW/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values/colors.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values/dimens.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/values/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/xml/method.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/xml/qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/xml/symbols.xml delete mode 100644 src/java/KP2ASoftKeyboard/res/xml/symbols_shift.xml delete mode 100644 src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java delete mode 100644 src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java delete mode 100644 src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsInterface.java delete mode 100644 src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/KeyboardData.java delete mode 100644 src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/KeyboardDataBuilder.java delete mode 100644 src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/StringForTyping.java delete mode 100644 src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/CandidateView.java delete mode 100644 src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/KP2AKeyboard.java delete mode 100644 src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/LatinKeyboard.java delete mode 100644 src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/LatinKeyboardView.java delete mode 100644 src/java/KP2ASoftKeyboard2/.gitignore delete mode 100644 src/java/KP2ASoftKeyboard2/java/.classpath delete mode 100644 src/java/KP2ASoftKeyboard2/java/.project delete mode 100644 src/java/KP2ASoftKeyboard2/java/.settings/org.eclipse.jdt.core.prefs delete mode 100644 src/java/KP2ASoftKeyboard2/java/Android.mk delete mode 100644 src/java/KP2ASoftKeyboard2/java/AndroidManifest.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/MODULE_LICENSE_APACHE2 delete mode 100644 src/java/KP2ASoftKeyboard2/java/NOTICE delete mode 100644 src/java/KP2ASoftKeyboard2/java/createProjectZip.bat delete mode 100644 src/java/KP2ASoftKeyboard2/java/gen/keepass2android/softkeyboard/BuildConfig.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/libs/armeabi-v7a/libjni_latinime.so delete mode 100644 src/java/KP2ASoftKeyboard2/java/libs/armeabi/libjni_latinime.so delete mode 100644 src/java/KP2ASoftKeyboard2/java/libs/x86/libjni_latinime.so delete mode 100644 src/java/KP2ASoftKeyboard2/java/proguard.flags delete mode 100644 src/java/KP2ASoftKeyboard2/java/project.properties delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/anim/key_preview_fadein.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/anim/key_preview_fadeout.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/anim/mini_keyboard_fadein.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/anim/mini_keyboard_fadeout.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/cancel.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/candidate_feedback_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/caution.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/dialog_bubble_step02.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/dialog_bubble_step07.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/highlight_pressed.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/hint_popup.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_dialog_keyboard.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_mic_dialog.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_subtype_keyboard.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_subtype_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_suggest_strip_microphone.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_dark_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_0.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_1.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_2.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_3.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_4.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_5.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_6.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_7.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_8.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_9.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_popup_panel_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_suggest_strip.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/list_selector_background_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/mic_slash.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ok_cancel.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level0.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level1.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level2.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level3.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level4.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level5.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level6.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_delete.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_done.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_kp2a.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num0.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num1.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num2.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num3.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num4.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num5.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num6.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num7.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num8.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_numalt.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_numpound.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_numstar.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_return.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_search.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_settings.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_shift.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_space.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_tab.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_123_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_delete.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_done.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_123_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_delete.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_done.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_kp2a.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_return.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_search.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_settings.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_space.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_kp2a.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num0.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num1.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num2.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num3.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num4.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num5.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num6.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num7.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num8.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_numalt.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_numpound.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_numstar.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_return.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_search.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_settings.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_shift.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_shift_locked.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_space.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_space_led.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_tab.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/voice_ime_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/voice_swipe_hint.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/working.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-land/btn_keyboard_key.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_popup_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_off_stone.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_on_stone.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/cancel.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/candidate_feedback_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/caution.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/dialog_bubble_step02.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/dialog_bubble_step07.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/highlight_pressed.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/hint_popup.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_dialog_keyboard.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_mic_dialog.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_subtype_keyboard.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_subtype_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_suggest_strip_microphone.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_dark_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_0.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_1.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_2.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_3.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_4.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_5.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_6.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_7.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_8.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_9.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_key_feedback_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_key_feedback_more_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_popup_panel_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_suggest_strip.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_suggest_strip_divider.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/list_selector_background_pressed.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/mic_slash.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ok_cancel.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level0.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level1.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level2.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level3.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level4.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level5.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level6.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_123_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_delete.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_done.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_kp2a.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num0.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num1.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num2.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num3.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num4.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num5.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num6.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num7.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num8.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_numalt.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_numpound.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_numstar.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_return.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_search.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_settings.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_shift.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_shift_locked.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_space.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_tab.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_123_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_delete.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_done.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_delete.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_done.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_kp2a.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_return.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_search.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_settings.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_shift.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_space.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_kp2a.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_mic.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num0.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num1.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num2.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num3.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num4.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num5.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num6.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num7.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num8.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_numalt.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_numpound.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_numstar.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_return.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_search.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_settings.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_shift.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_shift_lock.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_shift_locked.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_space.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_space_led.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_tab.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/voice_ime_background.9.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/voice_swipe_hint.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/working.png delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key2.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key3.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_fulltrans.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_gingerbread.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_gingerbread_popup.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_stone.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/ic_suggest_scroll_background.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/drawable/keyboard_key_feedback.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/bubble_text.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/candidate_preview.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/candidates.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/input_basic.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/input_basic_highcontrast.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/input_gingerbread.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_bold.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_normal.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_popup.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/key_preview.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/keyboard_popup.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/recognition_status.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/voice_punctuation_hint.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/layout/voice_swipe_hint.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/raw/main.dict delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/raw/type3.ogg delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ar/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ar/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-bg-rBG/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-bg/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ca/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ca/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-cs/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-cs/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-cs/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-cs/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-da/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-da/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-da/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-de/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-de/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-de/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-de/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-el/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-el/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-el/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-en-rGB/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-en/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-en/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-es-rUS/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-es-rUS/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-es/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-es/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-es/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-es/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fa/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fi/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fi/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fr-rCA/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fr/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fr/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fr/donottranslate.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fr/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-fr/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-hr/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-hu/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-hu/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-in/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-in/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-it/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-it/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-it/donottranslate.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-it/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-it/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-iw/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-iw/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ja/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ja/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ja/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ko/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ko/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ko/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-land/dimens.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-lt/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-lv/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-nb/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-nb/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-nb/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-nl/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-nl/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-nl/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-nl/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-nn/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pl/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pl/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pl/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pl/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pt-rBR/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pt-rPT/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pt-rPT/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pt-rPT/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pt/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-pt/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-rm/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-rm/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ro/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ro/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ru/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ru/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-ru/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sk/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sk/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sl/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sl/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sr/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sr/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sv/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sv/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-sv/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-th/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-tl/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-tr/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-tr/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-tr/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-uk/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-uk/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-vi/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-vi/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-zh-rCN/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-zh-rCN/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-zh-rCN/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-zh-rTW/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-zh-rTW/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values-zh-rTW/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/attrs.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/bools.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/colors.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/config.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/dimens.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/donottranslate-altchars.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/donottranslate.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/durations.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/keycodes.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/strings.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/strings_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/values/styles.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-da/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-da/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-de/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-de/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-fr/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-fr/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-iw/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-iw/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-nb/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-nb/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-pl/kbd_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-ru/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-ru/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-sr/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-sr/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-sv/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml-sv/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/dictionary.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_kp2a_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_phone.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_phone_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_phone_symbols.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_phone_symbols_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_popup_narrow_template.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_popup_template.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_qwerty.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_qwerty_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_symbols.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_symbols_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_symbols_shift.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/kbd_symbols_shift_black.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/language_prefs.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/method.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/popup_at.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/popup_comma.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/popup_domains.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/popup_kp2a.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/popup_mic.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/popup_punctuation.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/popup_slash.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/popup_smileys.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/prefs.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/res/xml/prefs_for_debug.xml delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/kbbridge/ImeSwitcher.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/kbbridge/KeyboardData.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/kbbridge/KeyboardDataBuilder.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/kbbridge/StringForTyping.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/AutoDictionary.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/BinaryDictionary.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/CandidateView.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/ContactsDictionary.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/Design.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/Dictionary.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/EditingUtil.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/ExpandableDictionary.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/Hints.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/InputLanguageSelection.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/KP2AKeyboard.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/KeyDetector.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/KeyboardSwitcher.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LanguageSwitcher.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LatinIMEBackupAgent.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LatinIMEDebugSettings.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LatinIMESettings.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LatinIMEUtil.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LatinImeLogger.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LatinKeyboard.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LatinKeyboardBaseView.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/LatinKeyboardView.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/MiniKeyboardKeyDetector.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/ModifierKeyState.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/PluginManager.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/PointerTracker.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/ProximityKeyDetector.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/SharedPreferencesCompat.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/Suggest.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/SwipeTracker.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/TextEntryState.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/UserBigramDictionary.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/UserDictionary.java delete mode 100644 src/java/KP2ASoftKeyboard2/java/src/keepass2android/softkeyboard/WordComposer.java delete mode 100644 src/java/KP2ASoftKeyboard2/native/howtobuild.txt delete mode 100644 src/java/KP2ASoftKeyboard2/native/jni/Android.mk delete mode 100644 src/java/KP2ASoftKeyboard2/native/jni/Application.mk delete mode 100644 src/java/KP2ASoftKeyboard2/native/jni/basechars.h delete mode 100644 src/java/KP2ASoftKeyboard2/native/jni/char_utils.cpp delete mode 100644 src/java/KP2ASoftKeyboard2/native/jni/char_utils.h delete mode 100644 src/java/KP2ASoftKeyboard2/native/jni/dictionary.cpp delete mode 100644 src/java/KP2ASoftKeyboard2/native/jni/dictionary.h delete mode 100644 src/java/KP2ASoftKeyboard2/native/jni/keepass2android_softkeyboard_BinaryDictionary.cpp delete mode 100644 src/java/KP2ASoftKeyboard2/native/libs/armeabi-v7a/libjni_latinime.so delete mode 100644 src/java/KP2ASoftKeyboard2/native/libs/armeabi/libjni_latinime.so delete mode 100644 src/java/KP2ASoftKeyboard2/native/libs/x86/libjni_latinime.so delete mode 100644 src/java/PluginInputStick/.classpath delete mode 100644 src/java/PluginInputStick/.project delete mode 100644 src/java/PluginInputStick/.settings/org.eclipse.jdt.core.prefs delete mode 100644 src/java/PluginInputStick/gen/keepass2android/plugin/inputstick/BuildConfig.java delete mode 100644 src/java/PluginInputStick/ic_launcher-web.png delete mode 100644 src/java/PluginInputStick/proguard-project.txt delete mode 100644 src/java/PluginInputStick/project.properties delete mode 100644 src/java/PluginInputStick/res/layout/activity_quick_settings.xml delete mode 100644 src/java/PluginInputStick/res/values-pl/strings.xml delete mode 100644 src/java/PluginInputStick/res/values-pl/strings_activity_settings.xml delete mode 100644 src/java/PluginInputStick/res/values/strings.xml delete mode 100644 src/java/PluginInputStick/src/keepass2android/plugin/inputstick/ActionReceiver.java delete mode 100644 src/java/PluginInputStick/src/keepass2android/plugin/inputstick/Const.java delete mode 100644 src/java/PluginInputStick/src/keepass2android/plugin/inputstick/InputStickService.java delete mode 100644 src/java/PluginInputStick/src/keepass2android/plugin/inputstick/PluginUtils.java delete mode 100644 src/java/PluginInputStick/src/keepass2android/plugin/inputstick/QuickSettingsActivity.java delete mode 100644 src/java/PluginInputStick/src/keepass2android/plugin/inputstick/SettingsActivity.java create mode 100644 src/java/PluginInputStick3/.idea/.name create mode 100644 src/java/PluginInputStick3/.idea/compiler.xml create mode 100644 src/java/PluginInputStick3/.idea/copyright/profiles_settings.xml create mode 100644 src/java/PluginInputStick3/.idea/encodings.xml create mode 100644 src/java/PluginInputStick3/.idea/gradle.xml create mode 100644 src/java/PluginInputStick3/.idea/inspectionProfiles/Project_Default.xml create mode 100644 src/java/PluginInputStick3/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 src/java/PluginInputStick3/.idea/libraries/appcompat_v7_19_1_0.xml create mode 100644 src/java/PluginInputStick3/.idea/libraries/support_v4_19_1_0.xml create mode 100644 src/java/PluginInputStick3/.idea/misc.xml create mode 100644 src/java/PluginInputStick3/.idea/modules.xml create mode 100644 src/java/PluginInputStick3/.idea/vcs.xml create mode 100644 src/java/PluginInputStick3/.idea/workspace.xml create mode 100644 src/java/PluginInputStick3/PluginInputStick3.iml create mode 100644 src/java/PluginInputStick3/build.gradle create mode 100644 src/java/PluginInputStick3/gradle/wrapper/gradle-wrapper.jar create mode 100644 src/java/PluginInputStick3/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/java/PluginInputStick3/gradlew create mode 100644 src/java/PluginInputStick3/gradlew.bat create mode 100644 src/java/PluginInputStick3/import-summary.txt create mode 100644 src/java/PluginInputStick3/inputStickAPI/build.gradle create mode 100644 src/java/PluginInputStick3/inputStickAPI/inputStickAPI.iml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/AndroidManifest.xml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/AES.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/BTConnectionManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/ConnectionManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/DownloadDialog.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/HIDInfo.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/IPCConnectionManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/InputStickDataListener.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/InputStickError.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/InputStickKeyboardListener.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/InputStickStateListener.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/OnEmptyBufferListener.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/Packet.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/PacketManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/Util.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/basic/InputStickConsumer.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/basic/InputStickGamepad.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/basic/InputStickHID.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/basic/InputStickKeyboard.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/basic/InputStickMouse.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/bluetooth/BT20Connection.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/bluetooth/BT40Connection.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/bluetooth/BTConnection.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/bluetooth/BTService.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/bluetooth/PacketReader.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/broadcast/InputStickBroadcast.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/hid/ConsumerReport.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/hid/GamepadReport.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/hid/HIDKeycodes.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/hid/HIDReport.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/hid/HIDTransaction.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/hid/HIDTransactionQueue.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/hid/KeyboardReport.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/hid/MouseReport.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/init/BasicInitManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/init/DeviceInfo.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/init/InitManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/init/InitManagerListener.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/DanishLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/DvorakLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/FinnishLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/FrenchLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/GermanLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/GermanMacLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/HebrewLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/ItalianLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/KeyboardLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/NorwegianLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/PolishLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/PortugueseBrazilianLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/RussianLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/SlovakLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/SpanishLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/SwedishLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/SwissFrenchLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/SwissGermanLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/UnitedKingdomLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/api/layout/UnitedStatesLayout.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/init/BasicInitManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/init/BootloaderInitManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/init/DeviceInfo.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/init/InitManager.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/java/com/inputstick/init/InitManagerListener.java create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/drawable-hdpi/ic_launcher.png create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/drawable-mdpi/ic_launcher.png create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/drawable-xhdpi/ic_launcher.png create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/menu/install_utility.xml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/values-sw600dp/dimens.xml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/values-sw720dp-land/dimens.xml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/values-v11/styles.xml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/values-v14/styles.xml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/values/dimens.xml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/values/strings.xml create mode 100644 src/java/PluginInputStick3/inputStickAPI/src/main/res/values/styles.xml create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/build.gradle create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/keepass2AndroidPluginSDK.iml create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/lint.xml create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/AndroidManifest.xml create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/java/keepass2android/pluginsdk/AccessManager.java create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/java/keepass2android/pluginsdk/KeepassDefs.java create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/java/keepass2android/pluginsdk/Kp2aControl.java create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/java/keepass2android/pluginsdk/PluginAccessBroadcastReceiver.java create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/java/keepass2android/pluginsdk/PluginAccessException.java create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/java/keepass2android/pluginsdk/PluginActionBroadcastReceiver.java create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/java/keepass2android/pluginsdk/Strings.java create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/res/drawable-hdpi/ic_launcher.png create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/res/drawable-mdpi/ic_launcher.png create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/res/drawable-xhdpi/ic_launcher.png create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/res/values-v11/styles.xml create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/res/values-v14/styles.xml rename src/java/{PluginInputStick => PluginInputStick3/keepass2AndroidPluginSDK/src/main}/res/values-w820dp/dimens.xml (100%) create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/res/values/dimens.xml create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/res/values/strings.xml create mode 100644 src/java/PluginInputStick3/keepass2AndroidPluginSDK/src/main/res/values/styles.xml create mode 100644 src/java/PluginInputStick3/local.properties create mode 100644 src/java/PluginInputStick3/pluginInputStick/build.gradle create mode 100644 src/java/PluginInputStick3/pluginInputStick/pluginInputStick.iml rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/AndroidManifest.xml (67%) rename src/java/{PluginInputStick/src => PluginInputStick3/pluginInputStick/src/main/java}/keepass2android/plugin/inputstick/AccessReceiver.java (100%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/ActionManager.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/ActionReceiver.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/AllActionsActivity.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/ClipboardService.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/Const.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/InputStickService.java rename src/java/{PluginInputStick/src => PluginInputStick3/pluginInputStick/src/main/java}/keepass2android/plugin/inputstick/MacSetupActivity.java (68%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/MacroActivity.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/MacroExecuteActivity.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/MacroHelper.java rename src/java/{PluginInputStick/src => PluginInputStick3/pluginInputStick/src/main/java}/keepass2android/plugin/inputstick/MainActivity.java (59%) rename src/java/{PluginInputStick/src => PluginInputStick3/pluginInputStick/src/main/java}/keepass2android/plugin/inputstick/MaskedPasswordActivity.java (71%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/MigrationMessageActivity.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/MultiSelectListPreference.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/OnUpgradeBroadcastReceiver.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/SettingsActivity.java create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/java/keepass2android/plugin/inputstick/UserPreferences.java rename src/java/{PluginInputStick/src => PluginInputStick3/pluginInputStick/src/main/java}/sheetrock/panda/changelog/ChangeLog.java (99%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/drawable-hdpi/ic_launcher.png (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/drawable-hdpi/ic_notification.png (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/drawable-mdpi/ic_launcher.png (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/drawable-mdpi/ic_notification.png (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/drawable-xhdpi/ic_launcher.png (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/drawable-xhdpi/ic_notification.png (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/drawable-xxhdpi/ic_launcher.png (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/drawable-xxhdpi/ic_notification.png (100%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/layout/activity_all_actions.xml rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/layout/activity_mac_setup.xml (92%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/layout/activity_macro.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/layout/activity_macro_execute.xml rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/layout/activity_main.xml (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/layout/activity_masked_password.xml (84%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/layout/activity_migration_message.xml rename src/java/{PluginInputStick/res/xml/pref_general.xml => PluginInputStick3/pluginInputStick/src/main/res/layout/activity_settings.xml} (50%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/layout/fragment_main.xml (96%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/layout/row.xml rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/menu/main.xml (100%) rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/raw/changelog.txt (64%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values-pl/strings.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values-pl/strings_activity_mac_setup.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values-pl/strings_activity_macro.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values-pl/strings_activity_masked_password.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values-pl/strings_activity_settings.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values-v11/styles.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values-v14/styles.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values-w820dp/dimens.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values/dimens.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values/strings.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values/strings_activity_mac_setup.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values/strings_activity_macro.xml create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values/strings_activity_masked_password.xml rename src/java/{PluginInputStick => PluginInputStick3/pluginInputStick/src/main}/res/values/strings_activity_settings.xml (50%) create mode 100644 src/java/PluginInputStick3/pluginInputStick/src/main/res/values/styles.xml create mode 100644 src/java/PluginInputStick3/settings.gradle diff --git a/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/cache.properties b/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/cache.properties new file mode 100644 index 00000000..c77eabac --- /dev/null +++ b/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/cache.properties @@ -0,0 +1 @@ +#Wed Jan 27 05:35:46 CET 2016 diff --git a/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/cache.properties.lock b/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/cache.properties.lock new file mode 100644 index 0000000000000000000000000000000000000000..e858d1c1814d8e7d1e730a967d3de356b3b4abed GIT binary patch literal 17 VcmZSH7g06EgXu;o0~oNa001yE1Z@BS literal 0 HcmV?d00001 diff --git a/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/fileHashes.bin b/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..07c092646d2b7dcd4475ce4d84382f030414a03e GIT binary patch literal 148385 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¨5I z!dr~mN}m*IzSPcpE0-(MUqmDi;CntX1~-5>J_g|+zb?`T&*oFcVEUV&d&Pk~p73>n z{{>xj@H1-froRb#zzWFYiQpYb?}0(U6n)d*1U=9PY49fK&1TpCdO$M$P0)Q@BySfe z_cD)9P^>xqP0+pMQ*(F|bc6J|^VIH5e-m^+ImfuvfV!*IQD>;U>2HGWu>kUT!dDc2 zXX~NFzYc2C-vr&S59INLdtdx3oz9vrO82I}3A&FDh~tS+$6sgufp-q1ibT1x65NR*SW4i}Ds79IoCg|SzkOps=dSIyQL*-3>6LeoS$vXkcz`MO1 zRNnMALHCle7&PV{6|M)A?oEFabngdJ-CZ^{8X|o1lkHArIaJtyRtgpEpfevD4oK-ABgl zbo`MC{^!xBV)Q6xnf@l|zRje%2cW$D-vjvAeA2m3e-m^sc~ql+1hlI{8h^EN`kSD8 zzX5rCFX;jK0_Sn+ADT^n6Ldcl5XYbY5T}gjKdOJ7fu_F+x*wPgPb?om-t?21y1`C= z6Z8NXM#Gz+yAG{|>L!gc{Y}vQIY0}3NU#HWiDt<~>QtHjCg}cJAdmAlf!z7n&A$$m z)87O=@D#}7y-Nmp>Fpq6s=n!Of*u+M@{BKTL-%(*|BE;6P0+*UkOwytE{BsDRNnMA zK@a4UJR&OFal+^q!J9Ov!n8L*50mF?S|gx)O9%aRc$)quXku#N40sdtyuip46m`?z z1l{`^wi4b19ldf@F12^l-vm8y9rEB!&?+N-*;L;2H$e~JXEu=7ML^D~|M@aAg*N@IRznQ;w;GV&hMT>mwsQJgt@=iQJf4Uh^WxxL_|R{PJDUC` z=>BB{3;)3xD0O~Bj#2eZe-m^!WAriskA=S({%yw;ebe9Q+`A3P7vO2HD_elwM}?_By#YAdI|33`|~-QoV|7vNipwTn=B)87Q$dzsWX0m`;d zuN0}g>2HD_4kLMYK`C74?n32Fe-m_1?^GVAuCg$dH~me}1GbO{f3N#J$LOzbOQydG zx~G%m5!=GH;$rw1Xv$Kb{wC;Q(s4q4ZG~4>Q`Nka{&l0A;33@P% zY-S)RJ3=l|PutVq1l`ZDiZ7rII$dz0wsQKLp!>^!Jf8ePrrj_8*Ei_X-vr$q3gq$R z1G0g=O2t%t)87Q$OB}Ot3UQF-&+u|2c#}(g`kSB!ihvqC5t}rJ&?o50CTY{(1Ut(^WQ=;6;KZwn~HrH_<7iome>-1tA3DtS{*O4>ZtA|z6r%-`8$kOt`2XXJL3wPakOJ}Vf7w3^{IkG6 z3;eUdKMVY`z&{K8v%o(K{IkG63;eUdKMVY`z&{K8v%o(K{IkG63;eUdKMVY`z&{K8 zv%o(K{IkG63;eUdKMVY`z&{K8v%o(K{IkG63;eUdKMVY`z&{K8v%o(K{IkG63;eUd zKMVY`!2cHuFn$?8+c6sK9&hQLaGOv=>u>%;rqL|*(lAG_0jR!I4&k+5A_Cm(oS=MV z2EsocJD9d&1M%x^jJ}kH@D8{82i|7H6Y_K(B?kUeEcK;oO!;$I|Nd%(M=4y@dSQDD z*5A7X;UAZ2cBr;kLcE)wfsdKSudv~-fbF643nJY4%}tYa!T41Kc%pUpGVovAK0Ot? zPQ%|-)90do{hGB~C$lE#J0VY(@ImrBpR^b@nub7}#R1_7KMxcxI|qOGLaRXi`jsTz z*ZVy31tCuhI)UW#tkN@&FDHINhhgWf5ng)3mVP1n1R;+lW+S{kFlZw0`UY5!c>n|d zP200C%=t+Pl;3NMa6>M!ymm`=h-cnLcxJ7uw=iiR?5s1w3m&9j=rfgq@;k3E@NuDK z2jz!@ydi%14#HO_Dd^0(kq7a^HVEH4>sgbD;Yk9gt+&LmyCi`hyWsYhS&8tk zhd%mmb0dG1hQGRuOygbgug$tHkiV0U+{?fxG9=qM&0I2IJt1g(Cywh_I9>Y<=LucC z6v_YhBzL~PG4WGOjILOP@Zw;5%QQ>GQwSU?#;d;L*koD5FT_Ybbs0d;y2(J7CFYiG5$RkI#)Ns zU*upuNH1o(`aI2B1O9B8w)8(FZ}Z^QRs(b5C!ZK?cogB$H`dR-xD(owK2r?ghux3Q zov*zgwlmlh;WbsuEIutNhjtL-Liiin_kvA-YM{KG1j0LSIaXNnllAMNbwQiQneHjJ zjr=81Oc+C+wqV0J4_mGmQ4gKx8N!$5MT^hphQGj~v#TKd#52xp_oLfkdz?5CUVGD& z9(l46)?>7efz#>3#fL8lbisCpX(Bv6VQ#3#81dUDjHZAgJZJyuq1FE6JapNK@Cw(o z-LHmKVLg^T2=5ihkTURJ4Dqe25k9dmN>-U|34!A;)nnjHqF4RCw9gHI^09UZUt959 zcg@N35RbZsaQ8EXJv`&#upaAJgnLDb20g45A#l3UEQD__Jj>_kO#X6f<~Rdq7LH36 zp=Hm2_2?mcGGB61FYYj14)q@FL-J1zC$ewKeu47R+ZZ^Dg)hrUgP=N;FMWvcLxG>Z z8JF2YJm>(z3)e6!{OmM>^%$Ua%~G{JiPbse1C&4Fi{u}8ec5$xHVc8%6-N->G((bO zX)71RjWrPdzH&>N^*gwZXp2rVa8|*kVaYrW3t;`O$ZxQUH};peUWUKWqc6xs^2y@z z@!`&^2zlD_#RxxAx8hyF5@o1Y7Wo0z+(oRa8?(+pT=WT&zkIz^ntN{+tjER);jPvo zFV)&K2^>Ri`w#2*J^rh``Lz%~lEaW^(+OKQ-nJI*FW9>I2sd)nw1_)N{xo}YIKr)8 zIvvhGOk8(>(YACT{EBEmquhBozBI$L2>;5`m!Ygej_*JP17~L`bXqc$Mf|Q7qit+N zIA;%AhPoYGcUa0Yg!^CYSub^b2=;gN7ldcmEpa=RUjh4NaT?)w*Uq!CDRhVO=2{5< z>3X`^V!b$l(^YRVa1L5SZcjaVvi_|IUwL(GiK_KO0;g+9A$+URMd8TQ z5GcPX4B@eN#^Qqy!}icF1tL6av(U!S&7n|!u?fN(bY&zXJmLDKFJ6K0X3j4c$9JrO zdL>Z&%sWup;-PNh0_$-yV#xDpT)FW>ejAKWutYC}>vZX-MIMsh9R@SL|l%4RKw z`vT1o#glybANLL``H|x;rjO)DW%Q5ja1Dcc{U0#!8Derjxr$U0VEwX_xB_3H*{O2q z&oPTvNM1>Z*(rC~4Oq|41ca+ERdCw2kAU%OI??_+!&x^hHDp^Xl$Ym0@>?d(&U+^A z4RK@SC}+gQG!C*Jl!g_hT}AR)7492Seisrr-2l!18BhI>yw&;90qe0-Wyte$c8NcH zYXkRjnj1611st#6`tJ4`%Kt&_;g`rcA;(ld0rlFW{g;11u#_w3U2@+EK<5{Jz5hG} zI=@3dOqW6N62J3}x&GmqW3V2FNxe4<2ULG;-vjmPoME&_fY;HrV#}Nh5dV$lp@4B& zJKNj2a37&L`y=_d2e-O%{Rg4^5Ssr2H=p!<3t7hw^}1Ie`Sp$G`=d zM$G5TN)m?h1!#QmLuqV5w0&RsvqHc z9sFy)9h$x+}~caZJS6B#AT5`5lpzplJMaNtcSMp5|V$u@^;a>Q!u`w>op<# zn{s!l=CQLxJ+yeVKML8@?9hLhxenH^g5oiu9aqJ8-8J7sTnPCYp?F>Xee2DMU-08^ zL`42msMTEdh)=R8l%I#nw1jddelSyL}XxX`L)-k za6Z#)s~CDkv!rf>?bJo~6kT`4^)$zN_mMQciu8Hj#k0uyxeUe6;!Kx6CJwwL{c7lahP*gyk+5#Td^=c=H;U`T=O3Tr zf2)PGL&Q-eul4Db_wlo^Uvx?2$HXJLwdZ+!=OpT(>53rv%oom^SN`^c^;;r4i+3%i z`wFjz{-4%+4$1eO^Ka94g#M7OiTsjyU&mPky)wA3(FW0akyv^+=;HFTi=f^f)J};l z61`FbgK&M(x$+qGOWayEN9@oIa=h03M)-U{e9Xe#Jj zAgPr0)<_^P70QdD{Zw+z##xW$coblN?JuKx%AVT4E8Ct6<+Xk=a4Bgc<|_R}a-NS> zBHZayUQ>N&1FXjl?Nd@kQSZ&gnw1HhzUzu+j&yetv!N0`f5g#WOYFT4H%?$_8V z^jt!E&6%pe*$U9l)0b{x$V+d~;Ez8KuBm#pR%#1u=PcxZW+u-liYUmv2yrGgB!6r{$SjK#*^L!nlZxUK8U9Ug$~QI7hVnAK40#z1b>DjNPtc#!1~(wwK>psIyA9<2p3#8t_xLfrZ#Ltd8mSi#R@HMa?zF5H4}S%(kbgJcQ`oTk%?@Xa(Q zPLHD*1dfF)L-?+_V*xShFixN;OCkKA-{MNgs90D(hW2sUOM8sG+SCLg&KiW|E4F8> zGKw6B^`Aid_-t`+9!KdR7#Cp<$p6f)RIE?d^k#wbv8yS$EbI+Le%_eM&x9BFE6J9`28H!8Rlx zxpe0mO@4Tu#e!839$h=uzS;)*Nh}YYN92zbG>?R`K);8bNAZ<>L+g%lz1J6r_Rtq! zLG`?oIyD?F=#JAEr0FDxDHvvULKTNKn)QeZu*yO4Z%;YNji_r z*F6k*g-9;_5BL8g=TE?Ugzpy_b5!6a<&)5QQ8?(OSoV2?5Y#(61j%1wSC%qqf%d^J zAiF8lwTUIvx*mb@j*6V@+> z{Fq{B{H~`_^PwGR*N~r4Ok%w*aP23Q$ATW9dJ0Z{GG_Xu1M3+}KzQR}4e#XUg#=EQ zH$`~6pZ1QH+vM}QpYIs>JYENfw7o;{JWl7yM7XHRI_-N>_h3B&PY^EKlG*jc1Agy7 z^G5sfJhg!ODv6B-usw4mk^Fo!>kSq)rwJS@JcaND1>xⓈP2>W`W|Rd4_2;Q&Sx| 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,(LUqL4z~1$*e3dlue5yNbs*dLFcN2oBIro8y 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�bePPZqth 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 EUm=^(-v9sr literal 0 HcmV?d00001 diff --git a/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/outputFileStates.bin b/src/java/InputStickAPI/.gradle/2.2.1/taskArtifacts/outputFileStates.bin new file mode 100644 index 0000000000000000000000000000000000000000..c153f9166a249f8217a3a8e8c88f389a286012fa GIT binary patch literal 19712 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 CahW^- literal 0 HcmV?d00001 diff --git a/src/java/InputStickAPI/app/build.gradle b/src/java/InputStickAPI/app/build.gradle new file mode 100644 index 00000000..d8f9011c --- /dev/null +++ b/src/java/InputStickAPI/app/build.gradle @@ -0,0 +1,23 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 19 + buildToolsVersion "23.0.0" + + defaultConfig { + minSdkVersion 9 + targetSdkVersion 19 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} + +dependencies { + compile 'com.android.support:support-v4:19.1.0' + compile 'com.android.support:appcompat-v7:19.1.0' +} diff --git a/src/java/InputStickAPI/app/src/main/AndroidManifest.xml b/src/java/InputStickAPI/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..1f241d8d --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/AndroidManifest.xml @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/AES.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/AES.java new file mode 100644 index 00000000..e07cadb2 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/AES.java @@ -0,0 +1,57 @@ +package com.inputstick.api; + +import java.security.MessageDigest; +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +public class AES { + + private Cipher mCipherEncr; + private Cipher mCipherDecr; + private SecretKeySpec mKey; + private boolean ready; + + public AES() { + ready = false; + } + + public static byte[] getMD5(String s) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + return md.digest(s.getBytes("UTF-8")); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public byte[] init(byte[] key) { + byte[] iv = null; + try { + mKey = new SecretKeySpec(key, "AES"); + mCipherEncr = Cipher.getInstance("AES/CBC/NoPadding"); + mCipherEncr.init(Cipher.ENCRYPT_MODE, mKey); + iv = mCipherEncr.getIV(); + Util.printHex(iv, "AES IV: "); + mCipherDecr = Cipher.getInstance("AES/CBC/NoPadding"); + mCipherDecr.init(Cipher.DECRYPT_MODE, mKey, new IvParameterSpec(iv)); + ready = true; + } catch (Exception e) { + e.printStackTrace(); + } + return iv; + } + + public byte[] encrypt(byte[] data) { + return mCipherEncr.update(data); + } + + public byte[] decrypt(byte[] data) { + return mCipherDecr.update(data); + } + + public boolean isReady() { + return ready; + } +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/BTConnectionManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/BTConnectionManager.java new file mode 100644 index 00000000..9c818ec8 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/BTConnectionManager.java @@ -0,0 +1,159 @@ +package com.inputstick.api; + +import java.lang.ref.WeakReference; + +import android.app.Application; +import android.os.Handler; +import android.os.Message; + +import com.inputstick.api.bluetooth.BTService; +import com.inputstick.api.init.InitManager; +import com.inputstick.api.init.InitManagerListener; + +public class BTConnectionManager extends ConnectionManager implements InitManagerListener { + + //private static final String mTag = "BTConnectionManager"; + + private String mMac; + private byte[] mKey; + private boolean mIsBT40; + + private InitManager mInitManager; + private Application mApp; + protected BTService mBTService; + private PacketManager mPacketManager; + private final BTHandler mBTHandler = new BTHandler(this); + + + + private static class BTHandler extends Handler { + private final WeakReference ref; + + BTHandler(BTConnectionManager manager) { + ref = new WeakReference(manager); + } + + @Override + public void handleMessage(Message msg) { + BTConnectionManager manager = ref.get(); + switch (msg.what) { + case BTService.EVENT_DATA: + manager.onData((byte[])msg.obj); + break; + case BTService.EVENT_CONNECTED: + manager.onConnected(); + break; + case BTService.EVENT_CANCELLED: + manager.onDisconnected(); + break; + case BTService.EVENT_ERROR: + manager.onFailure(msg.arg1); + break; + default: + manager.onFailure(InputStickError.ERROR_BLUETOOTH); + } + } + } + + private void onConnecting() { + stateNotify(ConnectionManager.STATE_CONNECTING); + } + + private void onConnected() { + stateNotify(ConnectionManager.STATE_CONNECTED); + //mInitManager.startTimeoutCountdown(InitManager.DEFAULT_INIT_TIMEOUT); + mInitManager.onConnected(); + } + + private void onDisconnected() { + stateNotify(ConnectionManager.STATE_DISCONNECTED); + mInitManager.onDisconnected(); + } + + private void onFailure(int code) { + mErrorCode = code; + stateNotify(ConnectionManager.STATE_FAILURE); + disconnect(); + } + + @Override + protected void onData(byte[] rawData) { + byte[] data; + data = mPacketManager.bytesToPacket(rawData); + if (data == null) { + //TODO failure? + return; + } + + mInitManager.onData(data); + super.onData(data); + } + + public BTConnectionManager(InitManager initManager, Application app, String mac, byte[] key, boolean isBT40) { + mInitManager = initManager; + mMac = mac; + mKey = key; + mApp = app; + mIsBT40 = isBT40; + } + + public BTConnectionManager(InitManager initManager, Application app, String mac, byte[] key) { + this(initManager, app, mac, key, false); + } + + @Override + public void connect() { + connect(false, BTService.DEFAULT_CONNECT_TIMEOUT); + } + + public void connect(boolean reflection, int timeout, boolean doNotAsk) { + mErrorCode = InputStickError.ERROR_NONE; + if (mBTService == null) { + mBTService = new BTService(mApp, mBTHandler); + mPacketManager = new PacketManager(mBTService, mKey); + mInitManager.init(this, mPacketManager); + } + mBTService.setConnectTimeout(timeout); + mBTService.enableReflection(reflection); + mBTService.connect(mMac, doNotAsk, mIsBT40); + onConnecting(); + } + + public void connect(boolean reflection, int timeout) { + connect(reflection, timeout, false); + } + + @Override + public void disconnect() { + if (mBTService != null) { + mBTService.disconnect(); + } + } + + public void disconnect(int failureCode) { + onFailure(failureCode); + } + + + @Override + public void sendPacket(Packet p) { + mPacketManager.sendPacket(p); + } + + + @Override + public void onInitReady() { + stateNotify(ConnectionManager.STATE_READY); + } + + @Override + public void onInitNotReady() { + stateNotify(ConnectionManager.STATE_CONNECTED); + } + + @Override + public void onInitFailure(int code) { + onFailure(code); + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/ConnectionManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/ConnectionManager.java new file mode 100644 index 00000000..82f7cc67 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/ConnectionManager.java @@ -0,0 +1,99 @@ +package com.inputstick.api; + +import java.util.Vector; + +public abstract class ConnectionManager { + + public static final int STATE_DISCONNECTED = 0; + public static final int STATE_FAILURE = 1; + public static final int STATE_CONNECTING = 2; + public static final int STATE_CONNECTED = 3; + public static final int STATE_READY = 4; + + + protected Vector mStateListeners = new Vector(); + protected Vector mDataListeners = new Vector(); + + protected int mState; + protected int mErrorCode; + + public abstract void connect(); + public abstract void disconnect(); + public abstract void sendPacket(Packet p); + + protected void stateNotify(int state) { + stateNotify(state, false); + } + + protected void stateNotify(int state, boolean forceNotification) { + if (( !forceNotification) && (mState == state )) { + //do nothing + } else { + //notify all listeners + mState = state; + for (InputStickStateListener listener : mStateListeners) { + listener.onStateChanged(state); + } + } + } + + public int getState() { + return mState; + } + + public boolean isReady() { + if (mState == STATE_READY) { + return true; + } else { + return false; + } + } + + public boolean isConnected() { + if ((mState == STATE_READY) || (mState == STATE_CONNECTED)) { + return true; + } else { + return false; + } + } + + public int getErrorCode() { + return mErrorCode; + } + + + protected void onData(byte[] data) { + for (InputStickDataListener listener : mDataListeners) { + listener.onInputStickData(data); + } + } + + public void addStateListener(InputStickStateListener listener) { + if (listener != null) { + if ( !mStateListeners.contains(listener)) { + mStateListeners.add(listener); + } + } + } + + public void removeStateListener(InputStickStateListener listener) { + if (listener != null) { + mStateListeners.remove(listener); + } + } + + public void addDataListener(InputStickDataListener listener) { + if (listener != null) { + if ( !mDataListeners.contains(listener)) { + mDataListeners.add(listener); + } + } + } + + public void removeDataListener(InputStickDataListener listener) { + if (listener != null) { + mDataListeners.remove(listener); + } + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/DownloadDialog.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/DownloadDialog.java new file mode 100644 index 00000000..423d205b --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/DownloadDialog.java @@ -0,0 +1,53 @@ +package com.inputstick.api; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; + +public class DownloadDialog { + + public static final int NOT_INSTALLED = 0; + public static final int NOT_UPDATED = 1; + + + public static AlertDialog getDialog(final Context ctx, final int messageCode) { + AlertDialog.Builder downloadDialog = new AlertDialog.Builder(ctx); + + if (messageCode == NOT_UPDATED) { + downloadDialog.setTitle("InputStickUtility app must be updated"); + downloadDialog.setMessage("It appears that you are using older version of InputStickUtility application. Update now (GoolePlay)?"); + } else { + downloadDialog.setTitle("InputStickUtility app NOT installed"); + downloadDialog.setMessage("InputStickUtility is required to complete this action. Download now (GoolePlay)?\nNote: InputStick USB receiver (HARDWARE!) is also required."); + } + downloadDialog.setPositiveButton("Yes", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + final String appPackageName = "com.inputstick.apps.inputstickutility"; + try { + ctx.startActivity(new Intent(Intent.ACTION_VIEW, + Uri.parse("market://details?id=" + + appPackageName))); + } catch (android.content.ActivityNotFoundException anfe) { + ctx.startActivity(new Intent( + Intent.ACTION_VIEW, + Uri.parse("http://play.google.com/store/apps/details?id=" + + appPackageName))); + } + } + }); + downloadDialog.setNegativeButton("No", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } + }); + return downloadDialog.show(); + } + + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/HIDInfo.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/HIDInfo.java new file mode 100644 index 00000000..908e4e11 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/HIDInfo.java @@ -0,0 +1,149 @@ +package com.inputstick.api; + +public class HIDInfo { + + private int state; + + private boolean numLock; + private boolean capsLock; + private boolean scrollLock; + + private boolean keyboardReportProtocol; + private boolean mouseReportProtocol; + + private boolean keyboardReady; + private boolean mouseReady; + private boolean consumerReady; + + // >= 0.93 + private boolean sentToHostInfo; + private int keyboardReportsSentToHost; + private int mouseReportsSentToHost; + private int consumerReportsSentToHost; + + public HIDInfo() { + keyboardReportProtocol = true; + mouseReportProtocol = true; + sentToHostInfo = false; + } + + public void update(byte[] data) { + state = data[1]; + + int leds = data[2]; + if ((leds & 0x01) != 0) { + numLock = true; + } else { + numLock = false; + } + if ((leds & 0x02) != 0) { + capsLock = true; + } else { + capsLock = false; + } + if ((leds & 0x04) != 0) { + scrollLock = true; + } else { + scrollLock = false; + } + + if (data[3] == 0) { + keyboardReportProtocol = true; + } else { + keyboardReportProtocol = false; + } + + if (data[4] == 0) { + keyboardReady = false; + } else { + keyboardReady = true; + } + + if (data[5] == 0) { + mouseReportProtocol = true; + } else { + mouseReportProtocol = false; + } + + if (data[6] == 0) { + mouseReady = false; + } else { + mouseReady = true; + } + + if (data[7] == 0) { + consumerReady = false; + } else { + consumerReady = true; + } + if (data.length >= 12) { + if (data[11] == (byte)0xFF) { + sentToHostInfo = true; + keyboardReportsSentToHost = data[8] & 0xFF; + mouseReportsSentToHost = data[9] & 0xFF; + consumerReportsSentToHost = data[10] & 0xFF; + } + } + } + + public void setKeyboardBusy() { + keyboardReady = false; + } + + public int getState() { + return state; + } + + public boolean getNumLock() { + return numLock; + } + + public boolean getCapsLock() { + return capsLock; + } + + public boolean getScrollLock() { + return scrollLock; + } + + public boolean isKeyboardReportProtocol() { + return keyboardReportProtocol; + } + + public boolean isMouseReportProtocol() { + return mouseReportProtocol; + } + + public boolean isKeyboardReady() { + return keyboardReady; + } + + public boolean isMouseReady() { + return mouseReady; + } + + public boolean isConsumerReady() { + return consumerReady; + } + + + + // > v0.93 firmware only + + public boolean isSentToHostInfoAvailable() { + return sentToHostInfo; + } + + public int getKeyboardReportsSentToHost() { + return keyboardReportsSentToHost; + } + + public int getMouseReportsSentToHost() { + return mouseReportsSentToHost; + } + + public int getConsumerReportsSentToHost() { + return consumerReportsSentToHost; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/IPCConnectionManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/IPCConnectionManager.java new file mode 100644 index 00000000..1d459727 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/IPCConnectionManager.java @@ -0,0 +1,180 @@ +package com.inputstick.api; + +import java.lang.ref.WeakReference; + +import android.app.Application; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Bundle; +import android.os.Handler; +import android.os.IBinder; +import android.os.Message; +import android.os.Messenger; + +public class IPCConnectionManager extends ConnectionManager { + + //private static final String mTag = "IPCConnectionManager"; + + public static final int SERVICE_CMD_CONNECT = 1; + public static final int SERVICE_CMD_DISCONNECT = 2; + public static final int SERVICE_CMD_DATA = 3; + public static final int SERVICE_CMD_STATE = 4; + + Context mCtx; + Messenger mService = null; + boolean mBound; + boolean initSent; + final Messenger mMessenger = new Messenger(new IncomingHandler(this)); + + private static class IncomingHandler extends Handler { + private final WeakReference ref; + + IncomingHandler(IPCConnectionManager manager) { + ref = new WeakReference(manager); + } + + @Override + public void handleMessage(Message msg) { + if (ref == null) return; + IPCConnectionManager manager = ref.get(); + if (manager != null) { + switch (msg.what) { + case SERVICE_CMD_DATA: + byte[] data = null; + Bundle b = msg.getData(); + if (b != null) { + data = b.getByteArray("data"); + manager.onData(data); + } + break; + case SERVICE_CMD_STATE: + manager.stateNotify(msg.arg1); + break; + } + } + } + } + + private ServiceConnection mConnection = new ServiceConnection() { + public void onServiceConnected(ComponentName className, IBinder service) { + mService = new Messenger(service); + mBound = true; + sendConnectMessage(); + } + + public void onServiceDisconnected(ComponentName className) { + // unexpectedly disconnected from service + mService = null; + mBound = false; + mErrorCode = InputStickError.ERROR_ANDROID_SERVICE_DISCONNECTED; + stateNotify(STATE_FAILURE); + stateNotify(STATE_DISCONNECTED); + } + }; + //SERVICE========================================================= + + + + + + private void sendConnectMessage() { + Bundle b = new Bundle(); + b.putLong("TIME", System.currentTimeMillis()); + sendMessage(SERVICE_CMD_CONNECT, 0, 0, b); + } + + + private void sendMessage(int what, int arg1, int arg2, Bundle b) { + Message msg; + try { + msg = Message.obtain(null, what, arg1, 0, null); + msg.replyTo = mMessenger; + msg.setData(b); + mService.send(msg); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void sendMessage(int what, int arg1, int arg2, byte[] data) { + Bundle b; + b = new Bundle(); + b.putByteArray("data", data); + sendMessage(what, arg1, arg2, b); + } + + private void sendMessage(int what, int arg1, int arg2) { + sendMessage(what, arg1, arg2, (Bundle)null); + } + + @Override + protected void onData(byte[] data) { + super.onData(data); + } + + + public IPCConnectionManager(Application app) { + mCtx = app.getApplicationContext(); + } + + @Override + public void connect() { + PackageManager pm = mCtx.getPackageManager(); + boolean exists = true; + try { + pm.getPackageInfo("com.inputstick.apps.inputstickutility", PackageManager.GET_META_DATA); + } catch (NameNotFoundException e) { + exists = false; + } + + if (exists) { + mErrorCode = InputStickError.ERROR_NONE; + Intent intent = new Intent(); + intent.setComponent(new ComponentName("com.inputstick.apps.inputstickutility","com.inputstick.apps.inputstickutility.service.InputStickService")); + intent.putExtra("TIME", System.currentTimeMillis()); + mCtx.startService(intent); + mCtx.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); + if (mBound) { + //already bound + sendConnectMessage(); + } + } else { + mErrorCode = InputStickError.ERROR_ANDROID_NO_UTILITY_APP; + stateNotify(STATE_FAILURE); + stateNotify(STATE_DISCONNECTED); + } + } + + @Override + public void disconnect() { + if (mBound) { + sendMessage(SERVICE_CMD_DISCONNECT, 0, 0); + Intent intent = new Intent(); + intent.setComponent(new ComponentName("com.inputstick.apps.inputstickutility","com.inputstick.apps.inputstickutility.service.InputStickService")); + mCtx.unbindService(mConnection); + mCtx.stopService(intent); + mBound = false; + //service will pass notification message (disconnected) + } else { + //just set state, there is nothing else to do + stateNotify(STATE_DISCONNECTED); + } + } + + @Override + public void sendPacket(Packet p) { + if ((mState == ConnectionManager.STATE_READY) || (mState == ConnectionManager.STATE_CONNECTED)) { + if (p.getRespond()) { + sendMessage(IPCConnectionManager.SERVICE_CMD_DATA, 1, 0, p.getBytes()); + } else { + sendMessage(IPCConnectionManager.SERVICE_CMD_DATA, 0, 0, p.getBytes()); + } + } + } + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickDataListener.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickDataListener.java new file mode 100644 index 00000000..1496db85 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickDataListener.java @@ -0,0 +1,7 @@ +package com.inputstick.api; + +public interface InputStickDataListener { + + public void onInputStickData(byte[] data); + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickError.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickError.java new file mode 100644 index 00000000..d9bbbc6f --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickError.java @@ -0,0 +1,144 @@ +package com.inputstick.api; + +import android.util.SparseArray; + +public class InputStickError { + + public static String ERROR_UNKNOWN_MSG = "Unknown"; + + public static final int ERROR_NONE = 0; + public static final int ERROR_UNKNOWN = 1; + + //Bluetooth comm errors: + public static final int ERROR_BLUETOOTH = 0x0100; + public static final int ERROR_BLUETOOTH_CONNECTION_FAILED = ERROR_BLUETOOTH | 0x01; + public static final int ERROR_BLUETOOTH_CONNECTION_LOST = ERROR_BLUETOOTH | 0x02; + public static final int ERROR_BLUETOOTH_NOT_SUPPORTED = ERROR_BLUETOOTH | 0x03; + public static final int ERROR_BLUETOOTH_INVALID_MAC = ERROR_BLUETOOTH | 0x04; + public static final int ERROR_BLUETOOTH_ECHO_TIMEDOUT = ERROR_BLUETOOTH | 0x05; + public static final int ERROR_BLUETOOTH_NO_REMOTE_DEVICE = ERROR_BLUETOOTH | 0x06; + public static final int ERROR_BLUETOOTH_BT40_NOT_SUPPRTED = ERROR_BLUETOOTH | 0x07; + public static final int ERROR_BLUETOOTH_BT40_NO_SPP_SERVICE = ERROR_BLUETOOTH | 0x08; + + //Hardware-related errors: + public static final int ERROR_HARDWARE = 0x0200; + public static final int ERROR_HARDWARE_WDG_RESET = ERROR_HARDWARE | 0x01; + + //Packet + public static final int ERROR_PACKET = 0x0300; + public static final int ERROR_PACKET_INVALID_CRC = ERROR_PACKET | 0x01; + public static final int ERROR_PACKET_INVALID_LENGTH = ERROR_PACKET | 0x02; + public static final int ERROR_PACKET_INVALID_HEADER = ERROR_PACKET | 0x03; + + //Init + public static final int ERROR_INIT = 0x0400; + public static final int ERROR_INIT_UNSUPPORTED_CMD = ERROR_INIT | 0x01; + public static final int ERROR_INIT_TIMEDOUT = ERROR_INIT | 0x02; + public static final int ERROR_INIT_FW_TYPE_NOT_SUPPORTED = ERROR_INIT | 0x03; + public static final int ERROR_INIT_FW_VERSION_NOT_SUPPORTED = ERROR_INIT | 0x04; + + //Security + public static final int ERROR_SECURITY = 0x0500; + public static final int ERROR_SECURITY_NOT_SUPPORTED = ERROR_SECURITY | 0x01; + public static final int ERROR_SECURITY_NO_KEY = ERROR_SECURITY | 0x02; + public static final int ERROR_SECURITY_INVALID_KEY = ERROR_SECURITY | 0x03; + public static final int ERROR_SECURITY_CHALLENGE = ERROR_SECURITY | 0x04; + public static final int ERROR_SECURITY_NOT_PROTECTED = ERROR_SECURITY | 0x05; + + //Android + public static final int ERROR_ANDROID = 0x1000; + public static final int ERROR_ANDROID_NO_UTILITY_APP = ERROR_ANDROID | 0x01; + public static final int ERROR_ANDROID_SERVICE_DISCONNECTED = ERROR_ANDROID | 0x02; + public static final int ERROR_ANDROID_UTIL_FORCE_DISC = ERROR_ANDROID | 0x03; + public static final int ERROR_ANDROID_UTIL_IDLE_DISC = ERROR_ANDROID | 0x04; + + // 0000 - ERROR_NONE + // xx00 - Category / Unknown + // xxyy - Category / Details + + private static final SparseArray errorCodeMap; + static + { + errorCodeMap = new SparseArray(); + errorCodeMap.put(ERROR_NONE, "None"); + errorCodeMap.put(ERROR_UNKNOWN, "Unknown"); + //Bluetooth + errorCodeMap.put(ERROR_BLUETOOTH, "Bluetooth"); + errorCodeMap.put(ERROR_BLUETOOTH_CONNECTION_FAILED, "Failed to connect"); + errorCodeMap.put(ERROR_BLUETOOTH_CONNECTION_LOST, "Connection lost"); + errorCodeMap.put(ERROR_BLUETOOTH_NOT_SUPPORTED, "Not supported"); + errorCodeMap.put(ERROR_BLUETOOTH_INVALID_MAC, "Invalid MAC"); + errorCodeMap.put(ERROR_BLUETOOTH_ECHO_TIMEDOUT, "Echo timedout"); + errorCodeMap.put(ERROR_BLUETOOTH_NO_REMOTE_DEVICE, "Can't find remote device"); + errorCodeMap.put(ERROR_BLUETOOTH_BT40_NOT_SUPPRTED, "BT 4.0 is not supported"); + errorCodeMap.put(ERROR_BLUETOOTH_BT40_NO_SPP_SERVICE, "BT 4.0 RXTX not found"); + + //Hardware + errorCodeMap.put(ERROR_HARDWARE, "Hardware"); + errorCodeMap.put(ERROR_HARDWARE_WDG_RESET, "WDG reset"); + + //Packet + errorCodeMap.put(ERROR_PACKET, "Invalid packet"); + errorCodeMap.put(ERROR_PACKET_INVALID_CRC, "Invalid CRC"); + errorCodeMap.put(ERROR_PACKET_INVALID_LENGTH, "Invalid length"); + errorCodeMap.put(ERROR_PACKET_INVALID_HEADER, "Invalid header"); + + //Init + errorCodeMap.put(ERROR_INIT, "Init"); + errorCodeMap.put(ERROR_INIT_UNSUPPORTED_CMD, "Command not supported"); + errorCodeMap.put(ERROR_INIT_TIMEDOUT, "Timedout"); + errorCodeMap.put(ERROR_INIT_FW_TYPE_NOT_SUPPORTED, "FW type not supported"); + errorCodeMap.put(ERROR_INIT_FW_VERSION_NOT_SUPPORTED, "FW version not supported"); + + //Security + errorCodeMap.put(ERROR_SECURITY, "Security"); + errorCodeMap.put(ERROR_SECURITY_NOT_SUPPORTED, "Not supported"); + errorCodeMap.put(ERROR_SECURITY_NO_KEY, "No key provided"); + errorCodeMap.put(ERROR_SECURITY_INVALID_KEY, "Invalid key"); + errorCodeMap.put(ERROR_SECURITY_CHALLENGE, "Challenge failed"); + errorCodeMap.put(ERROR_SECURITY_NOT_PROTECTED, "Key was provided, but device is not password protected"); + + //Android + errorCodeMap.put(ERROR_ANDROID, "Android"); + errorCodeMap.put(ERROR_ANDROID_NO_UTILITY_APP, "InputStickUtility app not installed"); + errorCodeMap.put(ERROR_ANDROID_SERVICE_DISCONNECTED, "Service connection lost"); + errorCodeMap.put(ERROR_ANDROID_UTIL_FORCE_DISC, "Connection closed by InputStickUtility"); + errorCodeMap.put(ERROR_ANDROID_UTIL_IDLE_DISC, "Connection closed due to inactivity"); + + } + + public static String getErrorType(int errorCode) { + String result; + errorCode &= 0xFF00; + result = errorCodeMap.get(errorCode); + if (result != null) { + return result; + } else { + return ERROR_UNKNOWN_MSG; + } + } + + public static String getErrorMessage(int errorCode) { + String result; + if (errorCode == ERROR_NONE) { + return errorCodeMap.get(ERROR_NONE); + } + + //handle case: "Bluetooth: Unknown" etc + if ((errorCode & 0x00FF) == 0) { + return ERROR_UNKNOWN_MSG; + } + + result = errorCodeMap.get(errorCode); + if (result != null) { + return result; + } else { + return ERROR_UNKNOWN_MSG; + } + } + + public static String getFullErrorMessage(int errorCode) { + return getErrorType(errorCode) + " - " + getErrorMessage(errorCode); + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickKeyboardListener.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickKeyboardListener.java new file mode 100644 index 00000000..c0508417 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickKeyboardListener.java @@ -0,0 +1,7 @@ +package com.inputstick.api; + +public interface InputStickKeyboardListener { + + public void onLEDsChanged(boolean numLock, boolean capsLock, boolean scrollLock); + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickStateListener.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickStateListener.java new file mode 100644 index 00000000..16a7df8e --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/InputStickStateListener.java @@ -0,0 +1,7 @@ +package com.inputstick.api; + +public interface InputStickStateListener { + + public void onStateChanged(int state); + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/OnEmptyBufferListener.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/OnEmptyBufferListener.java new file mode 100644 index 00000000..9b84b954 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/OnEmptyBufferListener.java @@ -0,0 +1,8 @@ +package com.inputstick.api; + +public interface OnEmptyBufferListener { + + public void onLocalBufferEmpty(int interfaceId); + public void onRemoteBufferEmpty(int interfaceId); + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/Packet.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/Packet.java new file mode 100644 index 00000000..7b4c2fff --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/Packet.java @@ -0,0 +1,144 @@ +package com.inputstick.api; + +public class Packet { + + public static final byte NONE = 0x00; + + public static final byte START_TAG = 0x55; + public static final byte FLAG_RESPOND = (byte)0x80; + public static final byte FLAG_ENCRYPTED = 0x40; + + public static final int MAX_SUBPACKETS = 17; + public static final int MAX_LENGTH = MAX_SUBPACKETS * 16; + + public static final byte CMD_IDENTIFY = 0x01; + public static final byte CMD_LED = 0x02; + public static final byte CMD_RUN_BL = 0x03; + public static final byte CMD_RUN_FW = 0x04; + public static final byte CMD_GET_INFO = 0x05; + public static final byte CMD_BL_ERASE = 0x06; + public static final byte CMD_ADD_DATA = 0x07; + public static final byte CMD_BL_WRITE = 0x08; + + public static final byte CMD_FW_INFO = 0x10; + public static final byte CMD_INIT = 0x11; + public static final byte CMD_INIT_AUTH = 0x12; + public static final byte CMD_INIT_CON = 0x13; + public static final byte CMD_SET_VALUE = 0x14; + public static final byte CMD_RESTORE_DEFAULTS = 0x15; + public static final byte CMD_RESTORE_STATUS = 0x16; + public static final byte CMD_GET_VALUE = 0x17; + public static final byte CMD_SET_PIN = 0x18; + public static final byte CMD_USB_RESUME = 0x19; + public static final byte CMD_USB_POWER = 0x1A; + + public static final byte CMD_SYSTEM_NOTIFICATION = 0x1F; + + + + public static final byte CMD_HID_STATUS_REPORT = 0x20; + public static final byte CMD_HID_DATA_KEYB = 0x21; + public static final byte CMD_HID_DATA_CONSUMER = 0x22; + public static final byte CMD_HID_DATA_MOUSE = 0x23; + public static final byte CMD_HID_DATA_GAMEPAD = 0x24; + + public static final byte CMD_HID_DATA_ENDP = 0x2B; + public static final byte CMD_HID_DATA_KEYB_FAST = 0x2C; + public static final byte CMD_HID_DATA_KEYB_FASTEST = 0x2D; + //out + public static final byte CMD_HID_STATUS = 0x2F; + + + + public static final byte CMD_DUMMY = (byte)0xFF; + + + public static final byte RESP_OK = 0x01; + public static final byte RESP_UNKNOWN_CMD = (byte)0xFF; + + + public static final byte[] RAW_OLD_BOOTLOADER = new byte[] {START_TAG, (byte)0x00, (byte)0x02, (byte)0x83, (byte)0x00, (byte)0xDA}; + public static final byte[] RAW_DELAY_1_MS = new byte[] {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}; + + private byte[] mData; + private int mPos; + private boolean mRespond; + + //do not modify + public Packet(boolean respond, byte[] data) { + mRespond = respond; + mData = data; + mPos = data.length; + } + + public Packet(boolean respond, byte cmd, byte param, byte[] data) { + mRespond = respond; + mData = new byte[MAX_LENGTH]; + mData[0] = cmd; + mData[1] = param; + mPos = 2; + if (data != null) { + addBytes(data); + } + } + + public Packet(boolean respond, byte cmd, byte param) { + this(respond, cmd, param, null); + } + + public Packet(boolean respond, byte cmd) { + mRespond = respond; + mData = new byte[MAX_LENGTH]; + mData[0] = cmd; + mPos = 1; + } + + public void modifyByte(int pos, byte b) { + mData[pos] = b; + } + + public void addBytes(byte[] data) { + //TODO check null pointer / available size (MAX_PAYLOAD - mPos) + System.arraycopy(data, 0, mData, mPos, data.length); + mPos += data.length; + } + + public void addByte(byte b) { + mData[mPos++] = b; + } + + public void addInt16(int val) { + mData[mPos + 0] = Util.getMSB(val); + mData[mPos + 1] = Util.getLSB(val); + mPos += 2; + } + + public void addInt32(long val) { + mData[mPos + 3] = (byte)val; + val >>= 8; + mData[mPos + 2] = (byte)val; + val >>= 8; + mData[mPos + 1] = (byte)val; + val >>= 8; + mData[mPos + 0] = (byte)val; + val >>= 8; + mPos += 4; + } + + + public byte[] getBytes() { + byte[] result; + result = new byte[mPos]; + System.arraycopy(mData, 0, result, 0, mPos); + return result; + } + + public boolean getRespond() { + return mRespond; + } + + public void print() { + Util.printHex(mData, "PACKET DATA:"); + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/PacketManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/PacketManager.java new file mode 100644 index 00000000..eea81f04 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/PacketManager.java @@ -0,0 +1,185 @@ +package com.inputstick.api; + +import java.util.Arrays; +import java.util.Random; +import java.util.zip.CRC32; + +import com.inputstick.api.bluetooth.BTService; + +public class PacketManager { + + public static final int MAX_PAYLAOD = 64; + public static final int HEADER_OFFSET = 2; + public static final int CRC_OFFSET = 4; + public static final int PACKET_SIZE = 16; + + private final BTService mBTService; + private final AES mAes; + private final byte[] mKey; + private byte[] cmpData; + private final CRC32 mCrc; + private boolean mEncryption; + + public PacketManager(BTService btService, byte[] key) { + mBTService = btService; + mCrc = new CRC32(); + mAes = new AES(); + mKey = key; + mEncryption = false; + } + + public boolean setEncryption(byte[] cmp, boolean encryptOut) { + byte[] cmpDec = mAes.decrypt(cmp); + if (Arrays.equals(cmpDec, cmpData)) { + mEncryption = encryptOut; + return true; + } else { + mEncryption = false; + return false; + } + } + + public boolean isEncrypted() { + return mEncryption; + } + + public Packet encPacket(boolean enable) { + Random r = new Random(); + Packet p = new Packet(true, Packet.CMD_INIT_AUTH); + if (enable) { + p.addByte((byte)1); + } else { + p.addByte((byte)0); + } + + byte[] iv = mAes.init(mKey); + p.addBytes(iv); + + //Util.printHex(mKey, "key: "); // TODO prnt + + //Util.printHex(iv, "IV: "); + + byte[] initData = new byte[16]; + r.nextBytes(initData); + mCrc.reset(); + mCrc.update(initData, 4, 12); //only 12 bytes! + long crcValue = mCrc.getValue(); + initData[3] = (byte)crcValue; + crcValue >>= 8; + initData[2] = (byte)crcValue; + crcValue >>= 8; + initData[1] = (byte)crcValue; + crcValue >>= 8; + initData[0] = (byte)crcValue; + initData = mAes.encrypt(initData); + p.addBytes(initData); + + //Util.printHex(initData, "InitData: "); + + cmpData = new byte[16]; + r.nextBytes(cmpData); + p.addBytes(cmpData); + + //Util.printHex(cmpData, "CmpData: "); + return p; + } + + + + public byte[] bytesToPacket(byte[] data) { + byte[] payload; + //boolean decrypt = false; + long crcValue, crcCompare; + + //Util.printHex(data, "RX DATA: "); // TODO prnt + + payload = Arrays.copyOfRange(data, 2, data.length); //remove TAG, info + if ((data[1] & Packet.FLAG_ENCRYPTED) != 0) { + //Util.log("DECRYPT"); + if (mAes.isReady()) { + payload = mAes.decrypt(payload); + //Util.printHex(payload, "RX DECR: "); // TODO prnt + } else { + return null; + } + } + + //Util.printHex(payload, "DATA IN: "); + + //check CRC + crcCompare = Util.getLong(payload[0], payload[1], payload[2], payload[3]); + mCrc.reset(); + mCrc.update(payload, CRC_OFFSET, payload.length - CRC_OFFSET); + crcValue = mCrc.getValue(); + //System.out.println("CMP: " + crcCompare + " VAL: " + crcValue); + + if (crcValue == crcCompare) { + payload = Arrays.copyOfRange(payload, 4, payload.length); //remove CRC + //Util.printHex(payload, "RX PAYLOAD FINAL: "); // TODO prnt + return payload; + } else { + return null; //TODO + } + + } + + public void sendRAW(byte[] data) { + mBTService.write(data); + } + + public void sendPacket(Packet p) { + if (p != null) { + sendPacket(p, mEncryption); + } + } + + public void sendPacket(Packet p, boolean encrypt) { + byte[] result, header, data; + int length; + int packets; + long crcValue; + + //if data > MAX_PAYLAOD -> error + + data = p.getBytes(); + + length = data.length + CRC_OFFSET; //include 4bytes for CRC32 + packets = ((length - 1) >> 4) + 1; //how many 16 bytes data sub-packets are necessary + + result = new byte[packets * PACKET_SIZE]; + System.arraycopy(data, 0, result, CRC_OFFSET, data.length); + + //add CRC32 + mCrc.reset(); + mCrc.update(result, CRC_OFFSET, result.length - CRC_OFFSET); + crcValue = mCrc.getValue(); + //Util.log("CRC: "+crcValue); + result[3] = (byte)crcValue; + crcValue >>= 8; + result[2] = (byte)crcValue; + crcValue >>= 8; + result[1] = (byte)crcValue; + crcValue >>= 8; + result[0] = (byte)crcValue; + + //Util.printHex(result, "TX DATA: "); // TODO prnt + if (encrypt) { + result = mAes.encrypt(result); + //Util.printHex(result, "ENC DATA: "); // TODO prnt + } + + header = new byte[2]; + header[0] = Packet.START_TAG; + header[1] = (byte)packets; + if (encrypt) { + header[1] |= Packet.FLAG_ENCRYPTED; + } + if (p.getRespond()) { + header[1] |= Packet.FLAG_RESPOND; + } + //Util.printHex(header, "TX HEADER: "); // TODO prnt + mBTService.write(header); + mBTService.write(result); + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/Util.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/Util.java new file mode 100644 index 00000000..155448bb --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/Util.java @@ -0,0 +1,121 @@ +package com.inputstick.api; + +import android.annotation.SuppressLint; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + + +public abstract class Util { + + public static boolean debug = false; + public static boolean flashingToolMode = false; + + public static void log(String msg) { + log(msg, false); + } + + public static void log(String msg, boolean displayTime) { + if (debug) { + System.out.print("LOG: " + msg); + if (displayTime) { + System.out.print(" @ " + System.currentTimeMillis()); + } + System.out.println(); + } + } + + public static void printHex(byte[] toPrint, String info) { + if (debug) { + System.out.println(info); + printHex(toPrint); + } + } + + @SuppressLint("DefaultLocale") + public static String byteToHexString(byte b) { + String s; + //0x0..0xF = 0x00..0x0F + if ((b < 0x10) && (b >= 0)) { + s = Integer.toHexString((int)b); + s = "0" + s; + } else { + s = Integer.toHexString((int)b); + if (s.length() > 2) { + s = s.substring(s.length() - 2); + } + } + s = s.toUpperCase(); + return s; + } + + public static void printHex(byte[] toPrint) { + if (debug) { + if (toPrint != null) { + int cnt = 0; + byte b; + for (int i = 0; i < toPrint.length; i++) { + b = toPrint[i]; + + System.out.print("0x" + byteToHexString(b) + " "); + cnt++; + if (cnt == 8) { + System.out.println(""); + cnt = 0; + } + } + + } else { + System.out.println("null"); + } + System.out.println("\n#####"); + } + } + + + public static byte getLSB(int n) { + return (byte)(n & 0x00FF); + } + + public static byte getMSB(int n) { + return (byte)((n & 0xFF00) >> 8); + } + + public static int getInt(byte b) { + int bInt = b & 0xFF; + return bInt; + } + + public static int getInt(byte msb, byte lsb) { + int msbInt = msb & 0xFF; + int lsbInt = lsb & 0xFF; + return (msbInt << 8) + lsbInt; + } + + public static long getLong(byte b0, byte b1, byte b2, byte b3) { + long result; + result = (b0) & 0xFF; + result <<= 8; + result += (b1) & 0xFF; + result <<= 8; + result += (b2) & 0xFF; + result <<= 8; + result += (b3) & 0xFF; + return result; + } + + + public static byte[] getPasswordBytes(String plainText) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + return md.digest(plainText.getBytes("UTF-8")); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickConsumer.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickConsumer.java new file mode 100644 index 00000000..5274592c --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickConsumer.java @@ -0,0 +1,89 @@ +package com.inputstick.api.basic; + +import com.inputstick.api.hid.ConsumerReport; +import com.inputstick.api.hid.HIDTransaction; + +public class InputStickConsumer { + + //CONSUMER PAGE (consumerAction) + public static final int VOL_UP = 0x00E9; + public static final int VOL_DOWN = 0x00EA; + public static final int VOL_MUTE = 0x00E2; + public static final int TRACK_NEXT = 0x00B5; + public static final int TRACK_PREV = 0x00B6; + public static final int STOP = 0x00B7; + public static final int PLAY_PAUSE = 0x00CD; + + public static final int LAUNCH_BROWSER = 0x0196; + public static final int LAUNCH_EMAIL = 0x018A; + public static final int LAUNCH_CALC = 0x0192; + + //Android OS (consumer): + public static final int HOME = 0x0223; + public static final int BACK = 0x0224; + public static final int SEARCH = 0x0221; + + + //SYSTEM PAGE (systemAction) + public static final byte SYSTEM_POWER_DOWN = 0x01; + public static final byte SYSTEM_SLEEP = 0x02; + public static final byte SYSTEM_WAKEUP = 0x03; + + private InputStickConsumer() { + + } + + + /* + * Use only for system actions SYSTEM_POWER_DOWN, SYSTEM_SLEEP and SYSTEM_WAKEUP + * + * @param action code of system action + */ + public static void systemAction(byte action) { + HIDTransaction t = new HIDTransaction(); + t.addReport(new ConsumerReport(ConsumerReport.SYSTEM_REPORT_ID, action, (byte)0)); + t.addReport(new ConsumerReport(ConsumerReport.SYSTEM_REPORT_ID, (byte)0, (byte)0)); + InputStickHID.addConsumerTransaction(t); + } + + + /* + * Requests USB host to power down. Must be supported and enabled by USB host. + */ + public static void systemPowerDown() { + systemAction(SYSTEM_POWER_DOWN); + } + + + /* + * Requests USB host to go into sleep/standby mode. Must be supported and enabled by USB host. + */ + public static void systemSleep() { + systemAction(SYSTEM_SLEEP); + } + + + /* + * Requests USB host to resume from sleep/standby mode. Must be supported and enabled by USB host. + * Note: USB host must supply USB power when suspended. Otherwise InputStick will not work. + */ + public static void systemWakeUp() { + systemAction(SYSTEM_WAKEUP); + } + + + /* + * Consumer control action: media playback, volume etc. + * See http://www.usb.org/developers/hidpage/Hut1_12v2.pdf (consumer page). + * USB host may not support certain action codes + * + * @param action code of consumer control action + */ + public static void consumerAction(int action) { + HIDTransaction t = new HIDTransaction(); + t.addReport(new ConsumerReport(action)); + t.addReport(new ConsumerReport()); + InputStickHID.addConsumerTransaction(t); + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickGamepad.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickGamepad.java new file mode 100644 index 00000000..c042a610 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickGamepad.java @@ -0,0 +1,38 @@ +package com.inputstick.api.basic; + +import com.inputstick.api.Packet; + + +public class InputStickGamepad { + + private InputStickGamepad() { + + } + + + /* + * Sends custom HID gamepad report + * + * @param buttons1 state (on/off) of buttons0..7 + * @param buttons2 state (on/off) of buttons8..15 + * @param x value of X axis + * @param y value of Y axis + * @param z value of Z axis + * @param rx value of rX axis + */ + public static void customReport(byte buttons1, byte buttons2, byte x, byte y, byte z, byte rX) { + if (InputStickHID.isReady()) { + Packet p = new Packet(false, (byte)0x2B, (byte)0x03); //write directly to endp3in, no buffering + p.addByte((byte)0x07); //report bytes cnt + p.addByte((byte)0x03); //report ID + p.addByte(buttons1); + p.addByte(buttons2); + p.addByte(x); + p.addByte(y); + p.addByte(z); + p.addByte(rX); + InputStickHID.sendPacket(p); + } + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickHID.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickHID.java new file mode 100644 index 00000000..659debd0 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickHID.java @@ -0,0 +1,602 @@ +package com.inputstick.api.basic; + +import java.util.Timer; +import java.util.TimerTask; +import java.util.Vector; + +import android.app.AlertDialog; +import android.app.Application; +import android.content.Context; + +import com.inputstick.api.BTConnectionManager; +import com.inputstick.api.ConnectionManager; +import com.inputstick.api.DownloadDialog; +import com.inputstick.api.HIDInfo; +import com.inputstick.api.IPCConnectionManager; +import com.inputstick.api.InputStickDataListener; +import com.inputstick.api.InputStickError; +import com.inputstick.api.InputStickStateListener; +import com.inputstick.api.OnEmptyBufferListener; +import com.inputstick.api.Packet; +import com.inputstick.api.hid.HIDReport; +import com.inputstick.api.hid.HIDTransaction; +import com.inputstick.api.hid.HIDTransactionQueue; +import com.inputstick.api.init.BasicInitManager; +import com.inputstick.api.init.DeviceInfo; +import com.inputstick.api.init.InitManager; + +public class InputStickHID implements InputStickStateListener, InputStickDataListener { + + public static final int INTERFACE_KEYBOARD = 0; + public static final int INTERFACE_CONSUMER = 1; + public static final int INTERFACE_MOUSE = 2; + + private static ConnectionManager mConnectionManager; + + private static Vector mStateListeners = new Vector(); + protected static Vector mBufferEmptyListeners = new Vector(); + + private static InputStickHID instance = new InputStickHID(); + private static HIDInfo mHIDInfo; + private static DeviceInfo mDeviceInfo; + + private static HIDTransactionQueue keyboardQueue; + private static HIDTransactionQueue mouseQueue; + private static HIDTransactionQueue consumerQueue; + + + //FW 0.93 - 0.95 + private static Timer updateQueueTimer; + + + private static int mKeyboardReportMultiplier; //enables "slow" typing by multiplying HID reports + + private InputStickHID() { + } + + public static InputStickHID getInstance() { + return instance; + } + + private static void init() { + mHIDInfo = new HIDInfo(); + keyboardQueue = new HIDTransactionQueue(INTERFACE_KEYBOARD, mConnectionManager); + mouseQueue = new HIDTransactionQueue(INTERFACE_MOUSE, mConnectionManager); + consumerQueue = new HIDTransactionQueue(INTERFACE_CONSUMER, mConnectionManager); + + mConnectionManager.addStateListener(instance); + mConnectionManager.addDataListener(instance); + mConnectionManager.connect(); + } + + /* + * Returns download InputStickUtility AlertDialog if InputStickUtility is not installed. Returns null is InputStickUtility application is installed. + * Should be called when your application is started or before InputStick functionality is about to be used. + * + * @return download InputStickUtility AlertDialog or null + */ + public static AlertDialog getDownloadDialog(final Context ctx) { + if (mConnectionManager.getErrorCode() == InputStickError.ERROR_ANDROID_NO_UTILITY_APP) { + return DownloadDialog.getDialog(ctx, DownloadDialog.NOT_INSTALLED); + } else { + return null; + } + } + + + /* + * Connect using InputStickUtility application. + * IN MOST CASES THIS METHOD SHOULD BE USED TO INITIATE CONNECTION! + * + * @param app Application + */ + public static void connect(Application app) { + mConnectionManager = new IPCConnectionManager(app); + init(); + } + + + /* + * Close connection + */ + public static void disconnect() { + if (mConnectionManager != null) { + mConnectionManager.disconnect(); + } + } + + + /* + * Direct connection to InputStick (BT2.1 only!). InputStickUtility application is not required in this case. + * TIP: use Util.getPasswordBytes(plainText) to get key. + * + * @param app Application + * @param mac Bluetooth MAC address + * @param key MD5(password) - must be provided if InputStick is password protected. Use null otherwise + * @param initManager custom init manager + */ + public static void connect(Application app, String mac, byte[] key, InitManager initManager) { + connect(app, mac, key, initManager, false); + } + + + /* + * Direct connection to InputStick. InputStickUtility application is not required in this case. + * TIP: use Util.getPasswordBytes(plainText) to get key. + * + * @param app Application + * @param mac Bluetooth MAC address + * @param key MD5(password) - must be provided if InputStick is password protected. Use null otherwise + * @param initManager custom init manager + * @param isBT40 specify Bluetooth version. Must match your hardware (InputStick BT2.1 or BT4.0)! + */ + public static void connect(Application app, String mac, byte[] key, InitManager initManager, boolean isBT40) { + mConnectionManager = new BTConnectionManager(initManager, app, mac, key, isBT40); + init(); + } + + + /* + * Direct connection to InputStick. InputStickUtility application is not required in this case. + * TIP: use Util.getPasswordBytes(plainText) to get key. + * + * @param app Application + * @param mac Bluetooth MAC address + * @param key MD5(password) - must be provided if InputStick is password protected. Use null otherwise + * @param initManager custom init manager + * @param isBT40 specify Bluetooth version. Must match your hardware (InputStick BT2.1 or BT4.0)! + */ + public static void connect(Application app, String mac, byte[] key, boolean isBT40) { + mConnectionManager = new BTConnectionManager(new BasicInitManager(key), app, mac, key, isBT40); + init(); + } + + + /* + * Direct connection to InputStick (BT2.1 only!). InputStickUtility application is not required in this case. + * TIP: use Util.getPasswordBytes(plainText) to get key. + * + * @param app Application + * @param mac Bluetooth MAC address + * @param key MD5(password) - must be provided if InputStick is password protected. Use null otherwise + */ + public static void connect(Application app, String mac, byte[] key) { + connect(app, mac, key, false); + } + + + /* + * When keyboard transactions are queued, each individual HID keyboard report is duplicated by reportMultiplier. + * Allows to control typing speed. Can help with missing characters (for example in BIOS). + * Important! Value of multiplier should be manually restored back to 1, when slow typing is no longer needed! + * + * Example: press and release "a" key: + * 1) Multiplier = 1 + * "a" key presses, all keys released + * 2 HID reports, fastest typing speed + * 2) Multiplier = 2 + * "a" key presses, "a" key presses, all keys released, all keys released + * 4 HID reports, 50% slower typing speed + * + * + * @param reportMultiplier number by which each HID report will be duplicated + */ + public static void setKeyboardReportMultiplier(int reportMultiplier) { + mKeyboardReportMultiplier = reportMultiplier; + } + + + /* + * Returns value of keyboard report multiplier + * + * @return keyboard report multiplier + */ + public static int getKeyboardReportMultiplier(int reportMultiplier) { + return mKeyboardReportMultiplier; + } + + + /* + * Requests USB host to resume from sleep / suspended state. Feature must be supported and enabled by USB host. + * Note 1: when USB host is suspended, device state will be STATE_CONNECTED. + * Note 2: some USB hosts may cut off USB power when suspended. + */ + public static void wakeUpUSBHost() { + if (isConnected()) { + Packet p = new Packet(false, Packet.CMD_USB_RESUME); + InputStickHID.sendPacket(p); + mConnectionManager.sendPacket(p); + } + } + + + /* + * Get device info of connected device + * + * @return Device info of connected device. Null if info is not available + */ + public static DeviceInfo getDeviceInfo() { + if ((isReady()) && (mDeviceInfo != null)) { + return mDeviceInfo; + } else { + return null; + } + } + + + /* + * Get latest status update received from InputStick. + * + * @return latest status update + */ + public static HIDInfo getHIDInfo() { + return mHIDInfo; + } + + + /* + * Returns current state of the connection. + * + * @return state of the connection + */ + public static int getState() { + if (mConnectionManager != null) { + return mConnectionManager.getState(); + } else { + return ConnectionManager.STATE_DISCONNECTED; + } + } + + + /* + * Returns last error code. See class InputStickError. + * + * @return last error code + */ + public static int getErrorCode() { + if (mConnectionManager != null) { + return mConnectionManager.getErrorCode(); + } else { + return InputStickError.ERROR_UNKNOWN; + } + } + + + /* + * Checks if Bluetooth connection between Android device and InputStick is established. + * Note - InputStick may be not ready yet to accept keyboard/mouse data. + * + * @return true if Bluetooth connection is established + */ + public static boolean isConnected() { + if ((getState() == ConnectionManager.STATE_READY) || (getState() == ConnectionManager.STATE_CONNECTED)) { + return true; + } else { + return false; + } + } + + + /* + * Checks if InputStick is ready to accept keyboard/mouse/etc. data. + * + * @return true if InputStick is ready to accept data + */ + public static boolean isReady() { + if (getState() == ConnectionManager.STATE_READY) { + return true; + } else { + return false; + } + } + + + /* + * Adds InputStickStateListener. Listener will be notified when connection state changes. + * + * @param listener listener to add + */ + public static void addStateListener(InputStickStateListener listener) { + if (listener != null) { + if ( !mStateListeners.contains(listener)) { + mStateListeners.add(listener); + } + } + } + + + /* + * Removes InputStickStateListener. Listener will no longer be notified when connection state changes. + * + * @param listener listener to remove + */ + public static void removeStateListener(InputStickStateListener listener) { + if (listener != null) { + mStateListeners.remove(listener); + } + } + + + /* + * Adds OnEmptyBufferListener. Listeners will be notified when local (application) or remote (InputStick) HID report buffer is empty. + * + * @param listener listener to add + */ + public static void addBufferEmptyListener(OnEmptyBufferListener listener) { + if (listener != null) { + if ( !mBufferEmptyListeners.contains(listener)) { + mBufferEmptyListeners.add(listener); + } + } + } + + + /* + * Removes OnEmptyBufferListener. + * + * @param listener listener to remove + */ + public static void removeBufferEmptyListener(OnEmptyBufferListener listener) { + if (listener != null) { + mBufferEmptyListeners.remove(listener); + } + } + + + /* + * Returns vector with registered OnEmptyBuffer listeners. + * + * @return vector with OnEmptyBuffer listeners + */ + public static Vector getBufferEmptyListeners() { + return mBufferEmptyListeners; + } + + + /* + * Adds transaction to keyboard queue. + * If possible, all reports form a single transactions will be sent in a single packet. + * This should prevent from key being stuck in pressed position when connection is suddenly lost. + * + * @param transaction transaction to be queued + */ + public static void addKeyboardTransaction(HIDTransaction transaction) { + if ((transaction != null) && (keyboardQueue != null)) { + //keyboardQueue.addTransaction(transaction); + + if (mKeyboardReportMultiplier > 1) { + HIDTransaction multipliedTransaction = new HIDTransaction(); + HIDReport r; + for (int i = 0; i < transaction.getReportsCount(); i++) { + r = transaction.getHIDReportAt(i); + for (int j = 0; j < mKeyboardReportMultiplier; j++) { + multipliedTransaction.addReport(r); + } + } + keyboardQueue.addTransaction(multipliedTransaction); + } else { + keyboardQueue.addTransaction(transaction); + } + } + } + + + /* + * Adds transaction to mouse queue. + * If possible, all reports form a single transactions will be sent in a single packet. + * + * @param transaction transaction to be queued + */ + public static void addMouseTransaction(HIDTransaction transaction) { + if ((transaction != null) && (mouseQueue != null)) { + mouseQueue.addTransaction(transaction); + } + } + + + /* + * Adds transaction to consumer control queue. + * If possible, all reports form a single transactions will be sent in a single packet. + * + * @param transaction transaction to be queued + */ + public static void addConsumerTransaction(HIDTransaction transaction) { + if ((transaction != null) && (consumerQueue != null)) { + consumerQueue.addTransaction(transaction); + } + } + + + /* + * Removes all reports from keyboard buffer. + */ + public static void clearKeyboardBuffer() { + if (keyboardQueue != null) { + keyboardQueue.clearBuffer(); + } + } + + + /* + * Removes all reports from mouse buffer. + */ + public static void clearMouseBuffer() { + if (mouseQueue != null) { + mouseQueue.clearBuffer(); + } + } + + + /* + * Removes all reports from consumer control buffer. + */ + public static void clearConsumerBuffer() { + if (consumerQueue != null) { + consumerQueue.clearBuffer(); + } + } + + + /* + * Sends custom packet to InputStick. + * + * @param p packet to send. + */ + public static boolean sendPacket(Packet p) { + if (mConnectionManager != null) { + mConnectionManager.sendPacket(p); + return true; + } else { + return false; + } + } + + + /* + * Checks if local (Android device) keyboard report buffer is empty. It is possible that there are reports queued in InputStick's buffer. + * + * @return true if local keyboard buffer is empty, false otherwise + */ + public static boolean isKeyboardLocalBufferEmpty() { + if (keyboardQueue != null) { + return keyboardQueue.isLocalBufferEmpty(); + } else { + return true; + } + } + + + /* + * Checks if local (Android device) mouse report buffer is empty. It is possible that there are reports queued in InputStick's buffer. + * + * @return true if local mouse buffer is empty, false otherwise + */ + public static boolean isMouseLocalBufferEmpty() { + if (mouseQueue != null) { + return mouseQueue.isLocalBufferEmpty(); + } else { + return true; + } + } + + + /* + * Checks if local (Android device) consumer control report buffer is empty. It is possible that there are reports queued in InputStick's buffer. + * + * @return true if local consumer control buffer is empty, false otherwise + */ + public static boolean isConsumerLocalBufferEmpty() { + if (consumerQueue != null) { + return consumerQueue.isLocalBufferEmpty(); + } else { + return true; + } + } + + + /* + * Checks if local (Android device) AND remote (InputStick) keyboard report buffers are empty. + * + * @return true if local and remote keyboard buffers are empty, false otherwise + */ + public static boolean isKeyboardRemoteBufferEmpty() { + if (keyboardQueue != null) { + return keyboardQueue.isRemoteBufferEmpty(); + } else { + return true; + } + } + + + /* + * Checks if local (Android device) AND remote (InputStick) mouse report buffers are empty. + * + * @return true if local and remote mouse buffers are empty, false otherwise + */ + public static boolean isMouseRemoteBufferEmpty() { + if (mouseQueue != null) { + return mouseQueue.isRemoteBufferEmpty(); + } else { + return true; + } + } + + + /* + * Checks if local (Android device) AND remote (InputStick) consumer control report buffers are empty. + * + * @return true if local and remote consumer control buffers are empty, false otherwise + */ + public static boolean isConsumerRemoteBufferEmpty() { + if (consumerQueue != null) { + return consumerQueue.isRemoteBufferEmpty(); + } else { + return true; + } + } + + + + + + + @Override + public void onStateChanged(int state) { + if ((state == ConnectionManager.STATE_DISCONNECTED) && (updateQueueTimer != null)) { + updateQueueTimer.cancel(); + updateQueueTimer = null; + } + for (InputStickStateListener listener : mStateListeners) { + listener.onStateChanged(state); + } + } + + @Override + public void onInputStickData(byte[] data) { + byte cmd = data[0]; + if (cmd == Packet.CMD_FW_INFO) { + mDeviceInfo = new DeviceInfo(data); + } + + if (cmd == Packet.CMD_HID_STATUS) { + mHIDInfo.update(data); + + if (mHIDInfo.isSentToHostInfoAvailable()) { + // >= FW 0.93 + keyboardQueue.deviceReady(mHIDInfo, mHIDInfo.getKeyboardReportsSentToHost()); + mouseQueue.deviceReady(mHIDInfo, mHIDInfo.getMouseReportsSentToHost()); + consumerQueue.deviceReady(mHIDInfo, mHIDInfo.getConsumerReportsSentToHost()); + + if (mDeviceInfo != null) { + if ((updateQueueTimer == null) && (mDeviceInfo.getFirmwareVersion() < 97)) { + updateQueueTimer = new Timer(); + updateQueueTimer.schedule(new TimerTask() { + @Override + public void run() { + keyboardQueue.sendToBuffer(false); + mouseQueue.sendToBuffer(false); + consumerQueue.sendToBuffer(false); + } + }, 5, 5); + } + } + } else { + //previous FW versions + if (mHIDInfo.isKeyboardReady()) { + keyboardQueue.deviceReady(null, 0); + } + if (mHIDInfo.isMouseReady()) { + mouseQueue.deviceReady(null, 0); + } + if (mHIDInfo.isConsumerReady()) { + consumerQueue.deviceReady(null, 0); + } + } + + InputStickKeyboard.setLEDs(mHIDInfo.getNumLock(), mHIDInfo.getCapsLock(), mHIDInfo.getScrollLock()); + } + } + + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickKeyboard.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickKeyboard.java new file mode 100644 index 00000000..b310bebf --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickKeyboard.java @@ -0,0 +1,263 @@ +package com.inputstick.api.basic; + +import java.util.Vector; + +import android.util.SparseArray; + +import com.inputstick.api.InputStickKeyboardListener; +import com.inputstick.api.hid.HIDKeycodes; +import com.inputstick.api.hid.HIDTransaction; +import com.inputstick.api.hid.KeyboardReport; +import com.inputstick.api.layout.KeyboardLayout; + +public class InputStickKeyboard { + + private static final byte NONE = (byte)0; + + private static final byte LED_NUM_LOCK = 1; + private static final byte LED_CAPS_LOCK = 2; + private static final byte LED_SCROLL_LOCK = 4; + + private static boolean mReportProtocol; + private static boolean mNumLock; + private static boolean mCapsLock; + private static boolean mScrollLock; + + private static Vector mKeyboardListeners = new Vector(); + + private static final SparseArray ledsMap; + static + { + ledsMap = new SparseArray(); + ledsMap.put(LED_NUM_LOCK, "NumLock"); + ledsMap.put(LED_CAPS_LOCK, "CapsLock"); + ledsMap.put(LED_SCROLL_LOCK, "ScrollLock"); + } + + private InputStickKeyboard() { + } + + + /* + * Uses InputStick to press and then immediately release key combination specified by parameters. + * + * @param modifier state of modifier keys (CTRL_LEFT .. GUI_RIGHT, see HIDKeycodes) + * @param key non-modifier key (see HIDKeycodes) + */ + public static void pressAndRelease(byte modifier, byte key) { + HIDTransaction t = new HIDTransaction(); + t.addReport(new KeyboardReport(modifier, NONE)); + t.addReport(new KeyboardReport(modifier, key)); + t.addReport(new KeyboardReport(NONE, NONE)); + InputStickHID.addKeyboardTransaction(t); + } + + + /* + * Type text via InputStick, using selected keyboard layout. USB host must use matching keyboard layout. + * For available keyboard layouts see: com.inputstick.api.layout. + * If layout is null or not found, en-US will be used. + * + * @param toType text to type + * @param layoutCode code of keyboard layout ("en-US", "de-DE", etc.) + */ + public static void type(String toType, String layoutCode) { + KeyboardLayout layout = KeyboardLayout.getLayout(layoutCode); + layout.type(toType); + } + + + /* + * Type text via InputStick. ASCII characters only! It is assumed that USB host uses en-US keyboard layout. + * + * @param toType text to type + */ + public static void typeASCII(String toType) { + int keyCode; + int index; + + for (int i = 0; i < toType.length(); i++) { + index = toType.charAt(i); + if (index == '\n') { + pressAndRelease(NONE, HIDKeycodes.KEY_ENTER); + } else if (index == '\t') { + pressAndRelease(NONE, HIDKeycodes.KEY_TAB); + } else { + if (index > 127) { + index = 127; + } + keyCode = HIDKeycodes.getKeyCode(index); + if (keyCode > 128) { + keyCode -= 128; + pressAndRelease(HIDKeycodes.SHIFT_LEFT, (byte)keyCode); + } else { + pressAndRelease(NONE, (byte)keyCode); + } + } + } + } + + + /* + * Sends custom keyboard HID report. + * Note: keys must be "manually" released by sending next custom HID report (with 0x00s as key0..key5). + * + * @param modifier state of modifier keys (CTRL_LEFT .. GUI_RIGHT, see HIDKeycodes) + * @param key0 non modifier keyboard key (see HIDKeycodes). Use 0x00 when no key is pressed. + * @param key1 non modifier keyboard key (see HIDKeycodes). Use 0x00 when no key is pressed. + * @param key2 non modifier keyboard key (see HIDKeycodes). Use 0x00 when no key is pressed. + * @param key3 non modifier keyboard key (see HIDKeycodes). Use 0x00 when no key is pressed. + * @param key4 non modifier keyboard key (see HIDKeycodes). Use 0x00 when no key is pressed. + * @param key5 non modifier keyboard key (see HIDKeycodes). Use 0x00 when no key is pressed. + */ + public static void customReport(byte modifier, byte key0, byte key1, byte key2, byte key3, byte key4, byte key5) { + HIDTransaction t = new HIDTransaction(); + t.addReport(new KeyboardReport(modifier, key0, key1, key2, key3, key4, key5)); + InputStickHID.addKeyboardTransaction(t); + } + + + /* + * Checks is report protocol is used. + * Report protocol is in most cases used by OS + * Boot protocol is used by BIOS, or when OS is booting + * + * @return true if USB host uses report protocol, false if USB host uses boot protocol + */ + public boolean isReportProtocol() { + return mReportProtocol; + } + + + /* + * Checks states of NumLock keyboard LED + * + * @return true if NumLock LED is on, false if off. + */ + public static boolean isNumLock() { + return mNumLock; + } + + + /* + * Checks states of CapsLock keyboard LED + * + * @return true if CapsLock LED is on, false if off. + */ + public static boolean isCapsLock() { + return mCapsLock; + } + + + /* + * Checks states of ScrollLock keyboard LED + * + * @return true if ScrollLock LED is on, false if off. + */ + public static boolean isScrollLock() { + return mScrollLock; + } + + + /* + * Toggle state of NumLock by press and release NumLock key. + */ + public static void toggleNumLock() { + pressAndRelease(NONE, HIDKeycodes.KEY_NUM_LOCK); + } + + + /* + * Toggle state of CapsLock by press and release CapsLock key. + */ + public static void toggleCapsLock() { + pressAndRelease(NONE, HIDKeycodes.KEY_CAPS_LOCK); + } + + + /* + * Toggle state of ScrollLock by press and release ScrollLock key. + */ + public static void toggleScrollLock() { + pressAndRelease(NONE, HIDKeycodes.KEY_SCROLL_LOCK); + } + + + + + + + /* + * Converts state of keyboard LEDs to String. Example: "CapsLock, ScrollLock". + * + * @return String description of keyboard LEDs. + */ + public static String ledsToString(byte leds) { + String result = "None"; + boolean first = true; + byte mod; + for (int i = 0; i < 8; i++) { + mod = (byte)(LED_NUM_LOCK << i); + if ((leds & mod) != 0) { + if ( !first) { + result += ", "; + } else { + result = ""; + } + first = false; + result += ledsMap.get(mod); + } + } + + return result; + } + + + /* + * Adds InputStickKeyboardListener. Listener will be notified when state of keyboard LEDs changes (NumLock, CapsLock, ScrollLock). + * + * @param listener listener to add + */ + public static void addKeyboardListener(InputStickKeyboardListener listener) { + if (listener != null) { + if ( !mKeyboardListeners.contains(listener)) { + mKeyboardListeners.add(listener); + } + } + } + + + /* + * Removes InputStickKeyboardListener. + * + * @param listener listener to remove + */ + public static void removeKeyboardListener(InputStickKeyboardListener listener) { + if (listener != null) { + mKeyboardListeners.remove(listener); + } + } + + + + protected void setReportProtocol(boolean reportProtocol) { + mReportProtocol = reportProtocol; + } + + protected static void setLEDs(boolean numLock, boolean capsLock, boolean scrollLock) { + boolean mustUpdate = false; + if ((numLock != mNumLock) || (capsLock != mCapsLock) || (scrollLock != mScrollLock)) { + mustUpdate = true; + } + mNumLock = numLock; + mCapsLock = capsLock; + mScrollLock = scrollLock; + + if (mustUpdate) { + for (InputStickKeyboardListener listener : mKeyboardListeners) { + listener.onLEDsChanged(mNumLock, mCapsLock, mScrollLock); + } + } + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickMouse.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickMouse.java new file mode 100644 index 00000000..412d67a4 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/basic/InputStickMouse.java @@ -0,0 +1,131 @@ +package com.inputstick.api.basic; + +import android.util.SparseArray; + +import com.inputstick.api.hid.HIDTransaction; +import com.inputstick.api.hid.MouseReport; + +public class InputStickMouse { + + private static final byte NONE = 0x00; + + public static final byte BUTTON_NONE = 0x00; + public static final byte BUTTON_LEFT = 0x01; + public static final byte BUTTON_RIGHT = 0x02; + public static final byte BUTTON_MIDDLE = 0x04; + + private static final SparseArray buttonsMap; + static + { + buttonsMap = new SparseArray(); + buttonsMap.put(BUTTON_LEFT, "Left"); + buttonsMap.put(BUTTON_RIGHT, "Right"); + buttonsMap.put(BUTTON_MIDDLE, "Middle"); + } + + private static boolean mReportProtocol; + + private InputStickMouse() { + + } + + + /* + * Clicks selected mouse button (BUTTON_LEFT etc) N times + * + * @param button code of mouse button + * @param n number of button clicks (press and release events) + */ + public static void click(byte button, int n) { + HIDTransaction t = new HIDTransaction(); + t.addReport(new MouseReport()); //release + for (int i = 0; i < n; i++) { + t.addReport(new MouseReport(button, NONE, NONE, NONE)); //press + t.addReport(new MouseReport()); //release + } + InputStickHID.addMouseTransaction(t); + } + + /* + * Move mouse pointer + * + * @param x x displacement + * @param y y dispalcement + */ + public static void move(byte x, byte y) { + HIDTransaction t = new HIDTransaction(); + t.addReport(new MouseReport(NONE, x, y, NONE)); + InputStickHID.addMouseTransaction(t); + } + + /* + * Moves mouse scroll wheel + * + * @param wheel scroll wheel displacement + */ + public static void scroll(byte wheel) { + HIDTransaction t = new HIDTransaction(); + t.addReport(new MouseReport(NONE, NONE, NONE, wheel)); + InputStickHID.addMouseTransaction(t); + } + + //sends custom mouse report (buttons will remain in pressed state until released by next report) + + /* + * Sends custom HID mouse report. Mouse buttons will remain in selected state until new report is received. + * + * @param buttons state of mouse buttons + * @param x x displacement + * @param y y dispalcement + * @param wheel scroll wheel displacement + */ + public static void customReport(byte buttons, byte x, byte y, byte wheel) { + HIDTransaction t = new HIDTransaction(); + t.addReport(new MouseReport(buttons, x, y, wheel)); + InputStickHID.addMouseTransaction(t); + } + + + /* + * Returns names of buttons in "pressed" state + * + * @param buttons state of mouse buttons + */ + public static String buttonsToString(byte buttons) { + String result = "None"; + boolean first = true; + byte mod; + for (int i = 0; i < 8; i++) { + mod = (byte)(BUTTON_LEFT << i); + if ((buttons & mod) != 0) { + if ( !first) { + result += ", "; + } else { + result = ""; + } + first = false; + result += buttonsMap.get(mod); + } + } + + return result; + } + + + /* + * When report protocol is used, scroll wheel is enabled. Otherwise, simplified boot protocol is selected by USB host. + * Report protocol is in most cases used by OS. + * Boot protocol is used by BIOS, or when OS is booting. + * + * @return true if USB host uses report protocol, false if USB host uses boot protocol + */ + public boolean isReportProtocol() { + return mReportProtocol; + } + + + protected void setReportProtocol(boolean reportProtocol) { + mReportProtocol = reportProtocol; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BT20Connection.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BT20Connection.java new file mode 100644 index 00000000..8f982035 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BT20Connection.java @@ -0,0 +1,198 @@ +package com.inputstick.api.bluetooth; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.lang.reflect.Method; +import java.util.UUID; + +import android.app.Application; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothSocket; + +import com.inputstick.api.InputStickError; +import com.inputstick.api.Util; + +public class BT20Connection extends BTConnection { + + private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //SPP + + private final BluetoothAdapter mAdapter; + + private ConnectThread mConnectThread; + private ConnectedThread mConnectedThread; + + + public BT20Connection(Application app, BTService btService, String mac, boolean reflections) { + super(app, btService, mac, reflections); + mAdapter = BluetoothAdapter.getDefaultAdapter(); + } + + @Override + public void connect() { + if (mConnectThread != null) { + mConnectThread.cancel(); + mConnectThread = null; + } + if (mConnectedThread != null) { + mConnectedThread.cancel(); + mConnectedThread = null; + } + final BluetoothDevice device = mAdapter.getRemoteDevice(mMac); + if (device != null) { + mConnectThread = new ConnectThread(device, mReflections); + mConnectThread.start(); + } else { + mBTservice.connectionFailed(false, InputStickError.ERROR_BLUETOOTH_NO_REMOTE_DEVICE); + } + } + + @Override + public void disconnect() { + cancelThreads(); + } + + @Override + public void write(byte[] out) { + mConnectedThread.write(out); + } + + + + + + //################################ + + private synchronized void cancelThreads() { + if (mConnectThread != null) { + mConnectThread.cancel(); + mConnectThread = null; + } + if (mConnectedThread != null) { + mConnectedThread.cancel(); + mConnectedThread = null; + } + } + + + private class ConnectThread extends Thread { + + private final BluetoothSocket mmSocket; + //private final BluetoothDevice mmDevice; + + public ConnectThread(BluetoothDevice device, boolean useReflection) { + //mmDevice = device; + BluetoothSocket tmp = null; + + try { + if (useReflection) { + Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); + tmp = (BluetoothSocket) m.invoke(device, 1); + } else { + tmp = device.createRfcommSocketToServiceRecord(MY_UUID); + } + + } catch (IOException e) { + Util.log("Socket create() failed"); + } catch (Exception e) { + Util.log("Socket create() REFLECTION failed"); + e.printStackTrace(); + } + mmSocket = tmp; + } + + public void run() { + Util.log("BEGIN mConnectThread"); + + mAdapter.cancelDiscovery(); //else it will slow down connection + + try { + mmSocket.connect(); + } catch (IOException e) { + try { + mmSocket.close(); + } catch (IOException e2) { + Util.log("unable to close() socket during connection failure"); + } + mBTservice.connectionFailed(true, 0); + return; + } + + mConnectThread = null; + cancelThreads(); + + //now connected: + mConnectedThread = new ConnectedThread(mmSocket); + mConnectedThread.start(); + mBTservice.connectedEstablished(); + } + + public void cancel() { + try { + mmSocket.close(); + } catch (IOException e) { + Util.log("close() of connect socket failed"); + } + } + } + + + + private class ConnectedThread extends Thread { + + private final BluetoothSocket mmSocket; + private final InputStream mmInStream; + private final OutputStream mmOutStream; + + public ConnectedThread(BluetoothSocket socket) { + Util.log("create ConnectedThread"); + mmSocket = socket; + InputStream tmpIn = null; + OutputStream tmpOut = null; + + try { + tmpIn = socket.getInputStream(); + tmpOut = socket.getOutputStream(); + } catch (IOException e) { + Util.log("temp sockets not created"); + } + + mmInStream = tmpIn; + mmOutStream = tmpOut; + } + + + public void run() { + Util.log("BEGIN mConnectedThread"); + int rxTmp; + while (true) { + try { + rxTmp = mmInStream.read(); + mBTservice.onByteRx(rxTmp); + } catch (IOException e) { + mBTservice.connectionFailed(false, InputStickError.ERROR_BLUETOOTH_CONNECTION_LOST); + break; + } + } + } + + public void write(byte[] buffer) { + try { + mmOutStream.write(buffer); + mmOutStream.flush(); + } catch (IOException e) { + Util.log("write() exception"); + } + } + + public void cancel() { + try { + mmSocket.close(); + } catch (IOException e) { + Util.log("socket close() exception"); + } + } + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BT40Connection.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BT40Connection.java new file mode 100644 index 00000000..eb0b1baf --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BT40Connection.java @@ -0,0 +1,286 @@ +package com.inputstick.api.bluetooth; + +import java.util.LinkedList; +import java.util.List; +import java.util.UUID; + +import android.annotation.SuppressLint; +import android.app.Application; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCallback; +import android.bluetooth.BluetoothGattCharacteristic; +import android.bluetooth.BluetoothGattDescriptor; +import android.bluetooth.BluetoothGattService; +import android.bluetooth.BluetoothManager; +import android.bluetooth.BluetoothProfile; +import android.content.Context; +import android.os.Handler; + +import com.inputstick.api.InputStickError; +import com.inputstick.api.Util; + +@SuppressLint("NewApi") +public class BT40Connection extends BTConnection { + + private static final int CONNECTION_TIMEOUT = 10000; + + private static final String MOD_CHARACTERISTIC_CONFIG = "00002902-0000-1000-8000-00805f9b34fb"; + private static final String MOD_CONF = "0000ffe0-0000-1000-8000-00805f9b34fb"; + private static final String MOD_RX_TX = "0000ffe1-0000-1000-8000-00805f9b34fb"; + private static final UUID UUID_HM_RX_TX = UUID.fromString(MOD_RX_TX); + + private BluetoothManager mBluetoothManager; + private BluetoothAdapter mBluetoothAdapter; + private BluetoothGatt mBluetoothGatt; + private BluetoothGattCharacteristic characteristicTX; + private BluetoothGattCharacteristic characteristicRX; + + private LinkedList txBuffer; + private boolean canSend; + + private boolean isConnecting; + private Handler handler; + + public BT40Connection(Application app, BTService btService, String mac, boolean reflections) { + super(app, btService, mac, reflections); + mBluetoothManager = (BluetoothManager) (mCtx.getSystemService(Context.BLUETOOTH_SERVICE)); + mBluetoothAdapter = mBluetoothManager.getAdapter(); + + } + + @Override + public void connect() { + final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(mMac); + if (device != null) { + mBluetoothGatt = device.connectGatt(mCtx, false, mGattCallback); + + isConnecting = true; + handler = new Handler(); + handler.postDelayed(new Runnable() { + @Override + public void run() { + if (isConnecting) { + disconnect(); + mBTservice.connectionFailed(true, 0); + } + } + }, CONNECTION_TIMEOUT); + } else { + mBTservice.connectionFailed(false, InputStickError.ERROR_BLUETOOTH_NO_REMOTE_DEVICE); + } + } + + @Override + public void disconnect() { + txBuffer = null; + try { + if (mBluetoothGatt != null) { + mBluetoothGatt.close(); + mBluetoothGatt.disconnect(); + mBluetoothGatt = null; + } + } catch (Exception e) { + + } + } + + + + @Override + public void write(byte[] out) { + byte[] tmp; + int offset = 0; + + //SPECIAL CASES for flashing utility + if (Util.flashingToolMode) { + //txBuffer.add(out); + //return; + if (out.length == 1) { + txBuffer.add(out); + return; + } + if (out.length == 1026) { + tmp = new byte[2]; + tmp[0] = out[0]; + tmp[1] = out[1]; + txBuffer.add(tmp); + offset = 2; + for (int i = 0; i < 64; i++) { + tmp = new byte[16]; + System.arraycopy(out, offset, tmp, 0, 16); + offset += 16; + txBuffer.add(tmp); + } + return; + } + } + + if (out.length == 2) { + addHeader(out); + } else { + Util.log("ADDING: " + out.length); + int loops = out.length / 16; + offset = 0; + for (int i = 0; i < loops; i++) { + tmp = new byte[16]; + System.arraycopy(out, offset, tmp, 0, 16); + offset += 16; + addData16(tmp); + } + sendNext(); + } + } + + + private byte h0; + private byte h1; + private boolean header; + + private synchronized void addHeader(byte[] data) { + h0 = data[0]; + h1 = data[1]; + header = true; + } + + private synchronized void addData16(byte[] data) { + byte[] tmp; + int offset = 0; + if (txBuffer != null) { + if (header) { + header = false; + + tmp = new byte[18]; + offset = 2; + + tmp[0] = h0; + tmp[1] = h1; + } else { + tmp = new byte[16]; + offset = 0; + } + System.arraycopy(data, 0, tmp, offset, 16); + txBuffer.add(tmp); + } + } + + private synchronized byte[] getData() { + if (txBuffer != null) { + if (!txBuffer.isEmpty()) { + byte[] data = txBuffer.poll(); + return data; + } + } + return null; + } + + private synchronized void sendNext() { + if (canSend) { + byte[] data = getData(); + if (data != null) { + canSend = false; + characteristicTX.setValue(data); + characteristicTX.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE); //TODO + //characteristicTX.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT); //TODO + mBluetoothGatt.writeCharacteristic(characteristicTX); + } + } + } + + + + private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { + + @Override + public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { + if (newState == BluetoothProfile.STATE_CONNECTED) { + isConnecting = false; + Util.log("Connected to GATT server."); + Util.log("Attempting to start service discovery:" + mBluetoothGatt.discoverServices()); + } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { + isConnecting = false; + Util.log("Disconnected from GATT server."); + mBTservice.connectionFailed(false, InputStickError.ERROR_BLUETOOTH_CONNECTION_LOST); + } + } + + @Override + public void onServicesDiscovered(BluetoothGatt gatt, int status) { + if (status == BluetoothGatt.GATT_SUCCESS) { + Util.log("GATT onServicesDiscovered"); + List gattServices = null; + boolean serviceDiscovered = false; + if (mBluetoothGatt != null) { + gattServices = mBluetoothGatt.getServices(); + } + if (gattServices != null) { + String uuid = null; + characteristicRX = null; + for (BluetoothGattService gattService : gattServices) { + uuid = gattService.getUuid().toString(); + if (MOD_CONF.equals(uuid)) { + Util.log("BT LE - Serial Service Discovered"); + + characteristicTX = gattService.getCharacteristic(UUID_HM_RX_TX); + characteristicRX = gattService.getCharacteristic(UUID_HM_RX_TX); + if (characteristicRX == null) { + mBTservice.connectionFailed(false, InputStickError.ERROR_BLUETOOTH_BT40_NO_SPP_SERVICE); + } else { + serviceDiscovered = true; + } + } + } + } + if (serviceDiscovered) { + //enable notifications + mBluetoothGatt.setCharacteristicNotification(characteristicRX, true); + if (UUID_HM_RX_TX.equals(characteristicRX.getUuid())) { + Util.log("RXTX SERVICE DISCOVERED!"); + BluetoothGattDescriptor descriptor = characteristicRX.getDescriptor(UUID.fromString(MOD_CHARACTERISTIC_CONFIG)); + descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); + mBluetoothGatt.writeDescriptor(descriptor); + + txBuffer = new LinkedList(); + canSend = true; + sendNext(); + + mBTservice.connectedEstablished(); + } else { + mBTservice.connectionFailed(false, InputStickError.ERROR_BLUETOOTH_BT40_NO_SPP_SERVICE); + } + } else { + Util.log("BT LE - Serial Service NOT FOUND"); + mBTservice.connectionFailed(false, InputStickError.ERROR_BLUETOOTH_BT40_NO_SPP_SERVICE); + } + } else { + Util.log("onServicesDiscovered received: " + status); + } + } + + @Override + public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { + if (status == BluetoothGatt.GATT_SUCCESS) { + } + } + + @Override + public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { + byte b[] = characteristic.getValue(); + if (b != null) { + mBTservice.onByteRx(b); + } + } + + @Override + public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { + Util.log("GATT onCharacteristicWrite"); + if (status == BluetoothGatt.GATT_SUCCESS) { + canSend = true; + sendNext(); + } //TODO error code? + } + + }; + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BTConnection.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BTConnection.java new file mode 100644 index 00000000..a23e1e38 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BTConnection.java @@ -0,0 +1,26 @@ +package com.inputstick.api.bluetooth; + +import android.app.Application; +import android.content.Context; + + +public abstract class BTConnection { + + protected final Application mApp; + protected final Context mCtx; + protected final String mMac; + protected boolean mReflections; + protected final BTService mBTservice; + + public BTConnection(Application app, BTService btService, String mac, boolean reflections) { + mApp = app; + mCtx = app.getApplicationContext(); + mMac = mac; + mReflections = reflections; + mBTservice = btService; + } + + public abstract void connect(); + public abstract void disconnect(); + public abstract void write(byte[] out); +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BTService.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BTService.java new file mode 100644 index 00000000..2faddf35 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/BTService.java @@ -0,0 +1,231 @@ +package com.inputstick.api.bluetooth; + +import android.app.Application; +import android.bluetooth.BluetoothAdapter; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Handler; +import android.os.Message; + +import com.inputstick.api.InputStickError; +import com.inputstick.api.Util; + +public class BTService { + + public static final int DEFAULT_CONNECT_TIMEOUT = 30000; + + public static final int EVENT_NONE = 0; + public static final int EVENT_DATA = 1; + public static final int EVENT_CONNECTED = 2; + public static final int EVENT_CANCELLED = 3; + public static final int EVENT_ERROR = 4; + + + private final Handler mHandler; + private int mLastEvent; + + private String mMac; + private final Application mApp; + private final Context mCtx; + + private boolean mUseReflection; + private int mConnectTimeout; + + private long timeout; + private int retryCnt; + + private boolean disconnecting; + private boolean connected; + + private PacketReader mPacketReader; + private BTConnection mBTConnection; + + private boolean turnBluetoothOn; + private boolean receiverRegistered; + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { + final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR); + if ((state == BluetoothAdapter.STATE_ON) && (turnBluetoothOn)) { + turnBluetoothOn = false; + connect(false); + } + } + } + }; + + + + public BTService(Application app, Handler handler) { + mLastEvent = EVENT_NONE; + mHandler = handler; + mApp = app; + mCtx = app.getApplicationContext(); + mConnectTimeout = DEFAULT_CONNECT_TIMEOUT; + } + + public void setConnectTimeout(int timeout) { + mConnectTimeout = timeout; + } + + public void enableReflection(boolean enabled) { + mUseReflection = enabled; + } + + + protected synchronized void event(int event, int arg1) { + Util.log("event() " + mLastEvent + " -> " + event); + mLastEvent = event; + Message msg = Message.obtain(null, mLastEvent, arg1, 0); + mHandler.sendMessage(msg); + } + + public synchronized int getLastEvent() { + return mLastEvent; + } + + private void connect(boolean reconnecting) { + if (reconnecting) { + retryCnt++; + } else { + retryCnt = 0; + timeout = System.currentTimeMillis() + mConnectTimeout; + } + + mBTConnection.connect(); + } + + + public synchronized void connect(String mac) { + connect(mac, false); + } + + public synchronized void connect(String mac, boolean doNotAsk) { + connect(mac, doNotAsk, false); + } + + public synchronized void connect(String mac, boolean doNotAsk, boolean bt40) { + try { + Util.log("connect to: " + mac + " REFLECTION: " + mUseReflection); + disconnecting = false; + connected = false; + mMac = mac; + if (BluetoothAdapter.checkBluetoothAddress(mac)) { + BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + if (mBluetoothAdapter == null) { + event(BTService.EVENT_ERROR, InputStickError.ERROR_BLUETOOTH_NOT_SUPPORTED); + } else { + if (bt40) { + mBTConnection = new BT40Connection(mApp, this, mMac, mUseReflection); + } else { + mBTConnection = new BT20Connection(mApp, this, mMac, mUseReflection); + } + + if (mBluetoothAdapter.isEnabled()) { + connect(false); + } else { + //enableBluetooth(doNotAsk); : + if (mApp != null) { + turnBluetoothOn = true; + + if ( !receiverRegistered) { + IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED); + mCtx.registerReceiver(mReceiver, filter); + receiverRegistered = true; + } + + if (doNotAsk) { + BluetoothAdapter.getDefaultAdapter().enable(); + } else { + Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); + enableBtIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mApp.startActivity(enableBtIntent); + } + } + } + } + } else { + event(BTService.EVENT_ERROR, InputStickError.ERROR_BLUETOOTH_INVALID_MAC); + } + } catch (NoClassDefFoundError e) { + event(BTService.EVENT_ERROR, InputStickError.ERROR_BLUETOOTH_BT40_NOT_SUPPRTED); + } + } + + public synchronized void disconnect() { + Util.log("disconnect"); + disconnecting = true; + if (mBTConnection != null) { + mBTConnection.disconnect(); + } + event(EVENT_CANCELLED, 0); + } + + + public synchronized void write(byte[] out) { + if (connected) { + mBTConnection.write(out); + } + } + + + + + protected synchronized void connectedEstablished() { + removeReceiver(); //TODO + mPacketReader = new PacketReader(this, mHandler); + timeout = 0; + connected = true; + event(EVENT_CONNECTED, 0); + } + + + protected void connectionFailed(boolean canRetry, int errorCode) { + removeReceiver(); //TODO + connected = false; + if (disconnecting) { + disconnecting = false; + } else { + if (canRetry) { + if ((timeout > 0) && (System.currentTimeMillis() < timeout)) { + Util.log("RETRY: "+retryCnt + " time left: " + (timeout - System.currentTimeMillis())); + connect(true); + } else { + event(EVENT_ERROR, InputStickError.ERROR_BLUETOOTH_CONNECTION_FAILED); + } + } else { + event(EVENT_ERROR, errorCode); + } + } + } + + + protected synchronized void onByteRx(int rxByte) { + mPacketReader.rxByte((byte)rxByte); + } + + protected synchronized void onByteRx(byte[] rxBytes) { + for (int i = 0; i < rxBytes.length; i++) { + mPacketReader.rxByte(rxBytes[i]); + } + } + + + private void removeReceiver() { + if (receiverRegistered) { + mCtx.unregisterReceiver(mReceiver); + receiverRegistered = false; + } + } + + + + public static boolean isBT40Supported() { + return (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2); + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/PacketReader.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/PacketReader.java new file mode 100644 index 00000000..f8f66727 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/bluetooth/PacketReader.java @@ -0,0 +1,88 @@ +package com.inputstick.api.bluetooth; + +import android.os.Handler; + +import com.inputstick.api.InputStickError; +import com.inputstick.api.Packet; +import com.inputstick.api.Util; + +public class PacketReader { + + private static final int RX_TIMEOUT = 3000; + + private static final int RX_TAG = 0; + private static final int RX_LENGTH = 1; + private static final int RX_DATA = 2; + + private long lastRxTime; + private int rxState; + private int rxPos; + private int rxLength; + private byte[] rxData; + private int rxWdgCnt; + + private final BTService mBTService; + private final Handler mHandler; + + public PacketReader(BTService btService, Handler handler) { + mBTService = btService; + mHandler = handler; + } + + + public void rxByte(byte b) { + //byte b = (byte)rxByte; + long time = System.currentTimeMillis(); + if (time > lastRxTime + RX_TIMEOUT) { + rxState = RX_TAG; + } + + + switch (rxState) { + case RX_TAG: + if (b == Packet.START_TAG) { + rxState = RX_LENGTH; + } else { + Util.log("Unexpected RX byte" + b); + if (b == 0xAF) { + rxWdgCnt++; + } + if (rxWdgCnt > 1024) { + rxWdgCnt = 0; + mBTService.event(BTService.EVENT_ERROR, InputStickError.ERROR_HARDWARE_WDG_RESET); + } + } + break; + case RX_LENGTH: + rxLength = b; + rxLength &= 0x3F; + rxLength *= 16; + rxLength += 2; + rxPos = 2; + + rxData = new byte[rxLength]; + rxData[0] = Packet.START_TAG; + rxData[1] = (byte)b; + + rxState = RX_DATA; + break; + case RX_DATA: + if (rxPos < rxLength) { + rxData[rxPos] = b; + rxPos++; + if (rxPos == rxLength) { + //done! + mHandler.obtainMessage(BTService.EVENT_DATA, 0, 0, rxData).sendToTarget(); + rxState = RX_TAG; + } + } else { + //buffer overrun! + rxState = RX_TAG; + } + break; + } + + lastRxTime = time; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/broadcast/InputStickBroadcast.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/broadcast/InputStickBroadcast.java new file mode 100644 index 00000000..f8736bdc --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/broadcast/InputStickBroadcast.java @@ -0,0 +1,430 @@ +package com.inputstick.api.broadcast; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.NameNotFoundException; + +import com.inputstick.api.DownloadDialog; + + +/* + * IMPORTANT: + * + * Using InputStickBroadcast is the easiest and fastest way to use InputStick with your application. + * InputStickUility takes care of almost everything: + * -enabling Bluetooth if necessary, + * -selecting InputStick device (if more than one is available), + * -establishing connection, + * -deals with potential connection problems (connection failed, lost), + * -user preferences (keyboard layout, typing speed). + * + * as a result of that, your application has little to no control over: + * -connection, + * -buffers + * -timing, + * + * + * Using InputStickBroadcast is recommended only for simple use cases: typing strings. + * Example: barcode scanner app, assuming that user will use InputStick to type only some of scanned codes. + * + * Using InputStickBroadcast is NOT recommended if + * -timing is critical, + * -low latency is necessary, + * -many actions can be executed in a short period of time + * + * Example: remote control app. + * + * In such case use classes from com.inputstick.api.hid package and implement all necessary callbacks. + * + */ + + +public class InputStickBroadcast { + + private static boolean AUTO_SUPPORT_CHECK; + + public static final String PARAM_REQUEST = "REQUEST"; + public static final String PARAM_RELEASE = "RELEASE"; + public static final String PARAM_CLEAR = "CLEAR"; + + public static final String PARAM_TEXT = "TEXT"; + public static final String PARAM_LAYOUT = "LAYOUT"; + public static final String PARAM_MULTIPLIER = "MULTIPLIER"; + public static final String PARAM_KEY = "KEY"; + public static final String PARAM_MODIFIER = "MODIFIER"; + public static final String PARAM_REPORT_KEYB = "REPORT_KEYB"; + public static final String PARAM_REPORT_EMPTY = "REPORT_EMPTY"; + + public static final String PARAM_REPORT_MOUSE = "REPORT_MOUSE"; + public static final String PARAM_MOUSE_BUTTONS ="MOUSE_BUTTONS"; + public static final String PARAM_MOUSE_CLICKS = "MOUSE_CLICKS"; + + public static final String PARAM_CONSUMER = "CONSUMER"; + + + + + /* + * Checks whether InputStickUtility is installed and supports intents (version code >= 11). + * Optionally download dialog can be displayed if InputStickUtility is not installed. + * + * @param ctx context + * @param allowMessages when true, download dialog will be displayed if necessary + * + */ + public static boolean isSupported(Context ctx, boolean allowMessages) { + PackageInfo pInfo; + try { + pInfo = ctx.getPackageManager().getPackageInfo("com.inputstick.apps.inputstickutility", 0); + //System.out.println("ver: " + pInfo.versionName + " code: " + pInfo.versionCode); + if (pInfo.versionCode < 11) { + if (allowMessages) { + DownloadDialog.getDialog(ctx, DownloadDialog.NOT_UPDATED).show(); + } + return false; + } else { + return true; + } + } catch (NameNotFoundException e) { + //e.printStackTrace(); + //InputStickUtility not installed + if (allowMessages) { + DownloadDialog.getDialog(ctx, DownloadDialog.NOT_INSTALLED).show(); + } + return false; + } + } + + + /* + * When Auto Support Check is enabled, isSupported(ctx, true) will be called each time before sending broadcast. + * You do not have to check support manually. Download dialog will be displayed if InputStickUtility is not installed. + * + * WARNING: checking support each time after sending broadcast can be very time consuming!!! + * + * @param enabled true to enable Auto Support Check, false to disable + */ + public static void setAutoSupportCheck(boolean enabled) { + AUTO_SUPPORT_CHECK = enabled; + } + + + /* + * Indicates that it is very likely that this application will want to use InputStick within next few seconds. + * Depending on user preferences this action may be ignored! In such case InputStickUtility will wait until some data arrives (text etc.). + * In many cases this will allow to reduce delay between requesting some action and executing it (typing text etc). + * + * @param ctx context used to send broadcast. + */ + public static void requestConnection(Context ctx) { + Intent intent = new Intent(); + intent.putExtra(PARAM_REQUEST, true); + send(ctx, intent); + } + + + /* + * Indicates that application will no longer need InputStick in nearest future. + * Allows to save power. + * Depending on user preferences this action may be ignored! + * Ignored if not connected. + * + * @param ctx context used to send broadcast. + */ + public static void releaseConnection(Context ctx) { + Intent intent = new Intent(); + intent.putExtra(PARAM_RELEASE, true); + send(ctx, intent); + } + + + /* + * Removes all actions from queue. Clears all interface buffers. + * Use to immediately stop all actions + * Depending on user preferences this action may be ignored! + * + * @param ctx context used to send broadcast. + */ + public static void clearQueue(Context ctx) { + Intent intent = new Intent(); + intent.putExtra(PARAM_CLEAR, true); + send(ctx, intent); + } + + + + + //####################################################################################################### + //##### KEYBOARD INTERFACE ############################################################################## + //####################################################################################################### + + + /* + * Puts "type text" action into queue. Fastest typing speed, use en-US layout. + * + * @param ctx context used to send broadcast. + * @param text text to be typed. \n and \t characters are allowed. + */ + public static void type(Context ctx, String text) { + type(ctx, text, null, 1); + } + + + /* + * Puts "type text" action into queue. Fastest typing speed. + * + * Keyboard layout must match layout used by USB host. en-US is used by default. + * Depending on user preferences value of layoutCode may be ignored! + * + * @param ctx context used to send broadcast + * @param text text to be typed. \n and \t characters are allowed. + * @param layoutCode keyboard layout to be used: en-US, de-DE, pl-PL etc. + */ + public static void type(Context ctx, String text, String layoutCode) { + type(ctx, text, layoutCode, 1); + } + + + /* + * Puts "type text" action into queue. + * + * Keyboard layout must match layout used by USB host. en-US is used by default. + * Depending on user preferences value of layoutCode may be ignored! + * + * When multiplier is set to 1, keys will be "pressed" at fastest possible speed. Increase value of this parameter to obtain slower typing speed, by multiplying number of HID keyboard reports. + * Depending on user preferences value of multiplier may be ignored! + * + * @param ctx context used to send broadcast + * @param text text to be typed. \n and \t characters are allowed. + * @param layoutCode keyboard layout to be used: en-US, de-DE, pl-PL etc. + * @param multiplier controls typing speed. + */ + public static void type(Context ctx, String text, String layoutCode, int multiplier) { + Intent intent = new Intent(); + + intent.putExtra(PARAM_TEXT, text); + if (layoutCode != null) { + intent.putExtra(PARAM_LAYOUT, layoutCode); + } + if (multiplier > 1) { + intent.putExtra(PARAM_MULTIPLIER, multiplier); + } + send(ctx, intent); + } + + + /* + * Puts "press and release key" action into queue. + * + * @param ctx context used to send broadcast. + * @param modifiers modifier keys: Shift, Alt, Ctrl, Gui/Win/Command keys, (see HIDKeycodes class. + * @param key any non-modifier key, see HIDKeycodes class. + */ + public static void pressAndRelease(Context ctx, byte modifiers, byte key) { + pressAndRelease(ctx, modifiers, key, 1); + } + + + /* + * Puts "press and release key" action into queue. + * When multiplier is set to 1, keys will be "pressed" at fastest possible speed. Increase value of this parameter to obtain slower typing speed, by multiplying number of HID reports. + * + * @param ctx context used to send broadcast. + * @param modifiers modifier keys: Shift, Alt, Ctrl, Gui/Win/Command keys, (see HIDKeycodes class). + * @param key any non-modifier key, see HIDKeycodes class. + * @param multiplier controls typing speed. + */ + public static void pressAndRelease(Context ctx, byte modifiers, byte key, int multiplier) { + Intent intent = new Intent(); + + intent.putExtra(PARAM_MODIFIER, modifiers); + intent.putExtra(PARAM_KEY, key); + if (multiplier > 1) { + intent.putExtra(PARAM_MULTIPLIER, multiplier); + } + send(ctx, intent); + } + + + /* + * Puts single HID keyboard report into queue. + * HID keyboard report represents state of keyboard (which keys are pressed) at a given moment. + * Must be 8 bytes long: + * report[0] = modifier keys + * report[1] = 0x00 + * report[2] = key1 + * report[3] = key2 + * report[4] = key3 + * report[5] = key4 + * report[6] = key5 + * report[7] = key6 + * To avoid keys getting "stuck" they should be released (by adding empty report). + * + * @param ctx context used to send broadcast. + * @param report HID keyboard report. + * @param addEmptyReport empty keyboard report (all keys released) will be added if true. + */ + public static void keyboardReport(Context ctx, byte[] report, boolean addEmptyReport) { + Intent intent = new Intent(); + intent.putExtra(PARAM_REPORT_KEYB, report); + if (addEmptyReport) { + intent.putExtra(PARAM_REPORT_EMPTY, true); + } + send(ctx, intent); + } + + + /* + * Puts single HID keyboard report into queue. + * HID keyboard report represents state of keyboard (which keys are pressed) at a given moment. + * To avoid keys getting "stuck" they should be released (by adding empty report). + * + * @param ctx context used to send broadcast. + * @param modifiers modifier keys: Shift, Alt, Ctrl, Gui/Win/Command keys, (see HIDKeycodes class). + * @param key1 any non-modifier key, see HIDKeycodes class. + * @param key2 any non-modifier key, see HIDKeycodes class. + * @param key3 any non-modifier key, see HIDKeycodes class. + * @param key4 any non-modifier key, see HIDKeycodes class. + * @param key5 any non-modifier key, see HIDKeycodes class. + * @param key6 any non-modifier key, see HIDKeycodes class. + * @param addEmptyReport empty keyboard report (all keys released) will be added if true. + */ + public static void keyboardReport(Context ctx, byte modifiers, byte key1, byte key2, byte key3, byte key4, byte key5, byte key6, boolean addEmptyReport) { + byte[] report = new byte[8]; + report[0] = modifiers; + report[2] = key1; + report[3] = key2; + report[4] = key3; + report[5] = key4; + report[6] = key5; + report[7] = key6; + keyboardReport(ctx, report, addEmptyReport); + } + + + + + //####################################################################################################### + //##### MOUSE INTERFACE ################################################################################# + //####################################################################################################### + + + /* + * Puts single HID mouse report into queue. + * HID mouse report represents change in state of a mouse. + * Must be 4 bytes long: + * report[0] = buttons + * report[1] = x axis displacement + * report[2] = y axis displacement + * report[3] = scroll wheel displacement + * + * @param ctx context used to send broadcast. + * @param report HID mouse report. + */ + public static void mouseReport(Context ctx, byte[] report) { + Intent intent = new Intent(); + intent.putExtra(PARAM_REPORT_MOUSE, report); + send(ctx, intent); + } + + + /* + * Puts single HID mouse report into queue. + * Left mouse button = 0x01 + * Right mouse button = 0x02 + * Middle mouse button = 0x04 + * + * @param ctx context used to send broadcast. + * @param buttons mouse buttons to click. + * @param dx x axis displacement. + * @param dy y axis displacement. + * @param scroll scroll wheel displacement. + */ + public static void mouseReport(Context ctx, byte buttons, byte dx, byte dy, byte scroll) { + byte[] report = new byte[4]; + report[0] = buttons; + report[1] = dx; + report[2] = dy; + report[3] = scroll; + mouseReport(ctx, report); + } + + + /* + * Puts mouse click (button(s) press-release) action into queue. + * Left mouse button = 0x01 + * Right mouse button = 0x02 + * Middle mouse button = 0x04 + * + * @param ctx context used to send broadcast. + * @param buttons mouse buttons to click. + * @param n number of clicks. + */ + public static void mouseClick(Context ctx, byte buttons, int n) { + Intent intent = new Intent(); + intent.putExtra(PARAM_MOUSE_BUTTONS, buttons); + intent.putExtra(PARAM_MOUSE_CLICKS, n); + send(ctx, intent); + } + + + /* + * Puts mouse move action into queue. + * + * @param ctx context used to send broadcast. + * @param dx x axis displacement. + * @param dy y axis displacement. + */ + public static void mouseMove(Context ctx, byte dx, byte dy) { + mouseReport(ctx, (byte)0x00, dx, dy, (byte)0x00); + } + + + /* + * Puts mouse scroll action into queue. + * Positive values: scroll up; negative values: scroll down + * + * @param ctx context used to send broadcast. + * @param scroll scroll wheel displacement. + */ + public static void mouseScroll(Context ctx, byte scroll) { + mouseReport(ctx, (byte)0x00, (byte)0x00, (byte)0x00, scroll); + } + + + + + //####################################################################################################### + //##### CONSUMER CONTROL INTERFACE ###################################################################### + //####################################################################################################### + + /* + * Puts "consumer" action into queue. See InputStickConsumer class for list available actions. + * + * @param ctx context used to send broadcast. + * @param action code of consumer action. + */ + public static void consumerControlAction(Context ctx, int action) { + Intent intent = new Intent(); + intent.putExtra(PARAM_CONSUMER, action); + send(ctx, intent); + } + + + private static void send(Context ctx, Intent intent) { + intent.setAction("com.inputstick.apps.inputstickutility.HID"); + intent.setClassName("com.inputstick.apps.inputstickutility", "com.inputstick.apps.inputstickutility.service.HIDReceiver"); + + //if necessary, show download dialog message + if (AUTO_SUPPORT_CHECK) { + if (isSupported(ctx, true)) { + ctx.sendBroadcast(intent); + } + } else { + ctx.sendBroadcast(intent); + } + } + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/ConsumerReport.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/ConsumerReport.java new file mode 100644 index 00000000..b13ae68b --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/ConsumerReport.java @@ -0,0 +1,43 @@ +package com.inputstick.api.hid; + +import com.inputstick.api.Util; + +public class ConsumerReport extends HIDReport { + + public static final byte CONSUMER_REPORT_ID = 1; + public static final byte SYSTEM_REPORT_ID = 2; + public static final byte GAMEPAD_REPORT_ID = 3; + + public static final int SIZE = 3; + + private byte[] data; + + public ConsumerReport(byte id, byte b1, byte b2) { + data = new byte[SIZE]; + data[0] = id; + data[1] = b1; + data[2] = b2; + } + + public ConsumerReport(int usage) { + data = new byte[SIZE]; + data[0] = CONSUMER_REPORT_ID; + data[1] = Util.getLSB(usage); + data[2] = Util.getMSB(usage); + } + + public ConsumerReport() { + this(0); + } + + public byte[] getBytes() { + return data; + } + + public int getBytesCount() { + return SIZE; + } + + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/GamepadReport.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/GamepadReport.java new file mode 100644 index 00000000..242d4d9d --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/GamepadReport.java @@ -0,0 +1,32 @@ +package com.inputstick.api.hid; + +public class GamepadReport extends HIDReport { + + public static final int SIZE = 7; + + private byte[] data; + + public GamepadReport(byte b1, byte b2, byte x, byte y, byte z, byte rx) { + data = new byte[SIZE]; + data[0] = 3; + data[1] = b1; + data[2] = b2; + data[3] = x; + data[4] = y; + data[5] = z; + data[6] = rx; + } + + public GamepadReport() { + this((byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0); + } + + public byte[] getBytes() { + return data; + } + + public int getBytesCount() { + return SIZE; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDKeycodes.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDKeycodes.java new file mode 100644 index 00000000..3decb11e --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDKeycodes.java @@ -0,0 +1,436 @@ +package com.inputstick.api.hid; + +import android.util.SparseArray; + +public class HIDKeycodes { + + public static final byte NONE = 0x00; + + public static final byte CTRL_LEFT = 0x01; + public static final byte SHIFT_LEFT = 0x02; + public static final byte ALT_LEFT = 0x04; + public static final byte GUI_LEFT = 0x08; + public static final byte CTRL_RIGHT = 0x10; + public static final byte SHIFT_RIGHT = 0x20; + public static final byte ALT_RIGHT = 0x40; + public static final byte GUI_RIGHT = (byte)0x80; + + + public static final byte KEY_ENTER = 0x28; + public static final byte KEY_ESCAPE = 0x29; + public static final byte KEY_BACKSPACE = 0x2A; + public static final byte KEY_TAB = 0x2B; + public static final byte KEY_SPACEBAR = 0x2C; + + public static final byte KEY_CAPS_LOCK = 0x39; + + + public static final byte KEY_1 = 0x1E; + public static final byte KEY_2 = 0x1F; + public static final byte KEY_3 = 0x20; + public static final byte KEY_4 = 0x21; + public static final byte KEY_5 = 0x22; + public static final byte KEY_6 = 0x23; + public static final byte KEY_7 = 0x24; + public static final byte KEY_8 = 0x25; + public static final byte KEY_9 = 0x26; + public static final byte KEY_0 = 0x27; + + public static final byte KEY_F1 = 0x3A; + public static final byte KEY_F2 = 0x3B; + public static final byte KEY_F3 = 0x3C; + public static final byte KEY_F4 = 0x3D; + public static final byte KEY_F5 = 0x3E; + public static final byte KEY_F6 = 0x3F; + public static final byte KEY_F7 = 0x40; + public static final byte KEY_F8 = 0x41; + public static final byte KEY_F9 = 0x42; + public static final byte KEY_F10 = 0x43; + public static final byte KEY_F11 = 0x44; + public static final byte KEY_F12 = 0x45; + + public static final byte KEY_PRINT_SCREEN = 0x46; + public static final byte KEY_SCROLL_LOCK = 0x47; + public static final byte KEY_PASUE = 0x48; + public static final byte KEY_INSERT = 0x49; + public static final byte KEY_HOME = 0x4A; + public static final byte KEY_PAGE_UP = 0x4B; + public static final byte KEY_DELETE = 0x4C; + public static final byte KEY_END = 0x4D; + public static final byte KEY_PAGE_DOWN = 0x4E; + + public static final byte KEY_ARROW_RIGHT = 0x4F; + public static final byte KEY_ARROW_LEFT = 0x50; + public static final byte KEY_ARROW_DOWN = 0x51; + public static final byte KEY_ARROW_UP = 0x52; + + public static final byte KEY_NUM_LOCK = 0x53; + public static final byte KEY_NUM_SLASH = 0x54; + public static final byte KEY_NUM_STAR = 0x55; + public static final byte KEY_NUM_MINUS = 0x56; + public static final byte KEY_NUM_PLUS = 0x57; + public static final byte KEY_NUM_ENTER = 0x58; + public static final byte KEY_NUM_1 = 0x59; + public static final byte KEY_NUM_2 = 0x5A; + public static final byte KEY_NUM_3 = 0x5B; + public static final byte KEY_NUM_4 = 0x5C; + public static final byte KEY_NUM_5 = 0x5D; + public static final byte KEY_NUM_6 = 0x5E; + public static final byte KEY_NUM_7 = 0x5F; + public static final byte KEY_NUM_8 = 0x60; + public static final byte KEY_NUM_9 = 0x61; + public static final byte KEY_NUM_0 = 0x62; + public static final byte KEY_NUM_DOT = 0x63; + + public static final byte KEY_BACKSLASH_NON_US = 0x64; + + public static final byte KEY_A = 0x04; + public static final byte KEY_B = 0x05; + public static final byte KEY_C = 0x06; + public static final byte KEY_D = 0x07; + public static final byte KEY_E = 0x08; + public static final byte KEY_F = 0x09; + public static final byte KEY_G = 0x0A; + public static final byte KEY_H = 0x0B; + public static final byte KEY_I = 0x0C; + public static final byte KEY_J = 0x0D; + public static final byte KEY_K = 0x0E; + public static final byte KEY_L = 0x0F; + public static final byte KEY_M = 0x10; + public static final byte KEY_N = 0x11; + public static final byte KEY_O = 0x12; + public static final byte KEY_P = 0x13; + public static final byte KEY_Q = 0x14; + public static final byte KEY_R = 0x15; + public static final byte KEY_S = 0x16; + public static final byte KEY_T = 0x17; + public static final byte KEY_U = 0x18; + public static final byte KEY_V = 0x19; + public static final byte KEY_W = 0x1A; + public static final byte KEY_X = 0x1B; + public static final byte KEY_Y = 0x1C; + public static final byte KEY_Z = 0x1D; + + + + public static final byte KEY_MINUS = 0x2D; + public static final byte KEY_EQUALS = 0x2E; + public static final byte KEY_LEFT_BRACKET = 0x2F; + public static final byte KEY_RIGHT_BRACKET = 0x30; + public static final byte KEY_BACKSLASH = 0x31; + //public static final byte KEY_GRAVE = 0x32; + public static final byte KEY_SEMICOLON = 0x33; + public static final byte KEY_APOSTROPHE = 0x34; + public static final byte KEY_GRAVE = 0x35; + public static final byte KEY_COMA = 0x36; + public static final byte KEY_DOT = 0x37; + public static final byte KEY_SLASH = 0x38; + + + public static final byte KEY_APPLICATION = 0x65; + + + + public static final SparseArray modifiersMap; + static + { + modifiersMap = new SparseArray(); + modifiersMap.put(CTRL_LEFT, "Left Ctrl"); + modifiersMap.put(SHIFT_LEFT, "Left Shift"); + modifiersMap.put(ALT_LEFT, "Left Alt"); + modifiersMap.put(GUI_LEFT, "Left GUI"); + modifiersMap.put(CTRL_RIGHT, "Right Ctrl"); + modifiersMap.put(SHIFT_RIGHT, "Right Shift"); + modifiersMap.put(ALT_RIGHT, "Right Alt"); + modifiersMap.put(GUI_RIGHT, "Right GUI"); + } + + public static final SparseArray keyMap; + static + { + keyMap = new SparseArray(); + keyMap.put(0, "None"); + keyMap.put(KEY_ENTER, "Enter"); + keyMap.put(KEY_ESCAPE , "Esc"); + keyMap.put(KEY_BACKSPACE , "Backspace"); + keyMap.put(KEY_TAB , "Tab"); + keyMap.put(KEY_SPACEBAR , "Space"); + + keyMap.put(KEY_CAPS_LOCK , "CapsLock"); + + keyMap.put(KEY_1 , "1"); + keyMap.put(KEY_2 , "2"); + keyMap.put(KEY_3 , "3"); + keyMap.put(KEY_4 , "4"); + keyMap.put(KEY_5 , "5"); + keyMap.put(KEY_6 , "6"); + keyMap.put(KEY_7 , "7"); + keyMap.put(KEY_8 , "8"); + keyMap.put(KEY_9 , "9"); + keyMap.put(KEY_0 , "0"); + + keyMap.put(KEY_F1 , "F1"); + keyMap.put(KEY_F2 , "F2"); + keyMap.put(KEY_F3 , "F3"); + keyMap.put(KEY_F4 , "F4"); + keyMap.put(KEY_F5 , "F5"); + keyMap.put(KEY_F6 , "F6"); + keyMap.put(KEY_F7 , "F7"); + keyMap.put(KEY_F8 , "F8"); + keyMap.put(KEY_F9 , "F9"); + keyMap.put(KEY_F10 , "F10"); + keyMap.put(KEY_F11 , "F11"); + keyMap.put(KEY_F12 , "F12"); + + keyMap.put(KEY_PRINT_SCREEN , "Print Scrn"); + keyMap.put(KEY_SCROLL_LOCK , "ScrollLock"); + keyMap.put(KEY_PASUE , "Pause Break"); + keyMap.put(KEY_INSERT , "Insert"); + keyMap.put(KEY_HOME , "Home"); + keyMap.put(KEY_PAGE_UP , "PageUp"); + keyMap.put(KEY_DELETE , "Delete"); + keyMap.put(KEY_END , "End"); + keyMap.put(KEY_PAGE_DOWN , "PageDown"); + + keyMap.put(KEY_ARROW_RIGHT , "Right Arrow"); + keyMap.put(KEY_ARROW_LEFT , "Left Arrow"); + keyMap.put(KEY_ARROW_DOWN , "Down Arrow"); + keyMap.put(KEY_ARROW_UP , "Up Arrow"); + + keyMap.put(KEY_NUM_LOCK , "NumLock"); + keyMap.put(KEY_NUM_SLASH , "Num /"); + keyMap.put(KEY_NUM_STAR , "Num *"); + keyMap.put(KEY_NUM_MINUS , "Num -"); + keyMap.put(KEY_NUM_PLUS , "Num +"); + keyMap.put(KEY_NUM_ENTER , "Num Enter"); + keyMap.put(KEY_NUM_1 , "Num 1"); + keyMap.put(KEY_NUM_2 , "Num 2"); + keyMap.put(KEY_NUM_3 , "Num 3"); + keyMap.put(KEY_NUM_4 , "Num 4"); + keyMap.put(KEY_NUM_5 , "Num 5"); + keyMap.put(KEY_NUM_6 , "Num 6"); + keyMap.put(KEY_NUM_7 , "Num 7"); + keyMap.put(KEY_NUM_8 , "Num 8"); + keyMap.put(KEY_NUM_9 , "Num 9"); + keyMap.put(KEY_NUM_0 , "Num 0"); + keyMap.put(KEY_NUM_DOT , "Num ."); + + keyMap.put(KEY_A , "A"); + keyMap.put(KEY_B , "B"); + keyMap.put(KEY_C , "C"); + keyMap.put(KEY_D , "D"); + keyMap.put(KEY_E , "E"); + keyMap.put(KEY_F , "F"); + keyMap.put(KEY_G , "G"); + keyMap.put(KEY_H , "H"); + keyMap.put(KEY_I , "I"); + keyMap.put(KEY_J , "J"); + keyMap.put(KEY_K , "K"); + keyMap.put(KEY_L , "L"); + keyMap.put(KEY_M , "M"); + keyMap.put(KEY_N , "N"); + keyMap.put(KEY_O , "O"); + keyMap.put(KEY_P , "P"); + keyMap.put(KEY_Q , "Q"); + keyMap.put(KEY_R , "R"); + keyMap.put(KEY_S , "S"); + keyMap.put(KEY_T , "T"); + keyMap.put(KEY_U , "U"); + keyMap.put(KEY_V , "V"); + keyMap.put(KEY_W , "W"); + keyMap.put(KEY_X , "X"); + keyMap.put(KEY_Y , "Y"); + keyMap.put(KEY_Z , "Z"); + + keyMap.put(KEY_MINUS , "-"); + keyMap.put(KEY_EQUALS , "="); + keyMap.put(KEY_LEFT_BRACKET , "["); + keyMap.put(KEY_RIGHT_BRACKET , "]"); + keyMap.put(KEY_BACKSLASH , "\\"); + //keyMap.put(KEY_GRAVE , "`"); + keyMap.put(KEY_SEMICOLON , ";"); + keyMap.put(KEY_APOSTROPHE , "'"); + keyMap.put(KEY_GRAVE , "`"); + keyMap.put(KEY_COMA , ","); + keyMap.put(KEY_DOT , "."); + keyMap.put(KEY_SLASH , "/"); + + keyMap.put(KEY_APPLICATION , "Application"); + } + + public static final int[] ASCIItoHID = { + 0, //000 + 0, //001 + 0, //002 + 0, //003 + 0, //004 + 0, //005 + 0, //006 + 0, //007 + 0, //008 + 0, //009 + 0, //010 + 0, //011 + 0, //012 + 0, //013 + 0, //014 + 0, //015 + 0, //016 + 0, //017 + 0, //018 + 0, //019 + 0, //020 + 0, //021 + 0, //022 + 0, //023 + 0, //024 + 0, //025 + 0, //026 + 0, //027 + 0, //028 + 0, //029 + 0, //030 + 0, //031 + 44, //032 space + 128 + 30, //033 ! [SHIFT] + 128 + 52, //034 " [SHIFT] + 128 + 32, //035 # [SHIFT] + 128 + 33, //036 $ [SHIFT] + 128 + 34, //037 % [SHIFT] + 128 + 36, //038 & [SHIFT] + 52, //039 ' + 128 + 38, //040 ( [SHIFT] + 128 + 39, //041 ) [SHIFT] + 128 + 37, //042 * [SHIFT] + 128 + 46, //043 + [SHIFT] + 54, //044 , + 45, //045 - (-) + 55, //046 . (.) + 56, //047 / + 39, //048 0 + 30, //049 1 + 31, //050 2 + 32, //051 3 + 33, //052 4 + 34, //053 5 + 35, //054 6 + 36, //055 7 + 37, //056 8 + 38, //057 9 + 128 + 51, //058 : [SHIFT] + 51, //059 ; + 128 + 54, //060 < [SHIFT] + 46, //061 = + 128 + 55, //062 > [SHIFT] + 128 + 56, //063 ? [SHIFT] + 128 + 31, //064 @ [SHIFT] + 128 + 4, //065 A [SHIFT] + 128 + 5, //066 B [SHIFT] + 128 + 6, //067 C [SHIFT] + 128 + 7, //068 D [SHIFT] + 128 + 8, //069 E [SHIFT] + 128 + 9, //070 F [SHIFT] + 128 + 10, //071 G [SHIFT] + 128 + 11, //072 H [SHIFT] + 128 + 12, //073 I [SHIFT] + 128 + 13, //074 J [SHIFT] + 128 + 14, //075 K [SHIFT] + 128 + 15, //076 L [SHIFT] + 128 + 16, //077 M [SHIFT] + 128 + 17, //078 N [SHIFT] + 128 + 18, //079 O [SHIFT] + 128 + 19, //080 P [SHIFT] + 128 + 20, //081 Q [SHIFT] + 128 + 21, //082 R [SHIFT] + 128 + 22, //083 S [SHIFT] + 128 + 23, //084 T [SHIFT] + 128 + 24, //085 U [SHIFT] + 128 + 25, //086 V [SHIFT] + 128 + 26, //087 W [SHIFT] + 128 + 27, //088 X [SHIFT] + 128 + 28, //089 Y [SHIFT] + 128 + 29, //090 Z [SHIFT] + 47, //091 [ + 49, /*092 \ */ + 48, //093 ] + 128 + 35, //094 ^ [SHIFT] + 128 + 45, //095 _ [SHIFT] (underscore) + 128 + 53, //096 ` [SHIFT] (grave accent) + 4, //097 a + 5, //098 b + 6, //099 c + 7, //100 d + 8, //101 e + 9, //102 f + 10, //103 g + 11, //104 h + 12, //105 i + 13, //106 j + 14, //107 k + 15, //108 l + 16, //109 m + 17, //110 n + 18, //111 o + 19, //112 p + 20, //113 q + 21, //114 r + 22, //115 s + 23, //116 t + 24, //117 u + 25, //118 v + 26, //119 w + 27, //120 x + 28, //121 y + 29, //122 z + 128 + 47, //123 { [SHIFT] + 128 + 49, //124 | [SHIFT] + 128 + 48, //125 } [SHIFT] + 128 + 53, //126 ~ [SHIFT] + 0 //127 just in case... + }; + + public static char getChar(byte keyCode) { + for (int i = 0; i < ASCIItoHID.length; i++) { + if (ASCIItoHID[i] == keyCode) { + return (char)i; + } + } + return 0; + } + + public static byte getKeyCode(char c) { + return (byte)ASCIItoHID[c]; //TODO range + } + + public static int getKeyCode(int c) { + return ASCIItoHID[c]; //TODO range + } + + public static String modifiersToString(byte modifiers) { + String result = "None"; + boolean first = true; + byte mod; + for (int i = 0; i < 8; i++) { + mod = (byte)(CTRL_LEFT << i); + if ((modifiers & mod) != 0) { + if ( !first) { + result += ", "; + } else { + result = ""; + } + first = false; + result += modifiersMap.get(mod); + } + } + + return result; + } + + public static String keyToString(byte key) { + String result = keyMap.get(key); + if (result == null) { + result = "Unknown"; + } + return result; + } +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDReport.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDReport.java new file mode 100644 index 00000000..28cce791 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDReport.java @@ -0,0 +1,8 @@ +package com.inputstick.api.hid; + +public abstract class HIDReport { + + public abstract byte[] getBytes(); + public abstract int getBytesCount(); + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDTransaction.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDTransaction.java new file mode 100644 index 00000000..39de4683 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDTransaction.java @@ -0,0 +1,56 @@ +package com.inputstick.api.hid; + +import java.util.LinkedList; + +public class HIDTransaction { + + private int mID; + private LinkedList reports; + + public HIDTransaction() { + reports = new LinkedList(); + } + + public void addReport(HIDReport report) { + reports.add(report); + } + + public int getReportsCount() { + return reports.size(); + } + + public void setID(int id) { + mID = id; + } + + public int getID() { + return mID; + } + + public boolean hasNext() { + return !reports.isEmpty(); + } + + public byte[] getNextReport() { + return reports.poll().getBytes(); + } + + public HIDReport getHIDReportAt(int pos) { + return reports.get(pos); + } + + public HIDTransaction split(int n) { + HIDTransaction result = new HIDTransaction(); + HIDReport report; + if (n <= reports.size()) { + while(n > 0) { + report = reports.poll(); + result.addReport(report); + n--; + } + } + + return result; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDTransactionQueue.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDTransactionQueue.java new file mode 100644 index 00000000..f0cecdbd --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/HIDTransactionQueue.java @@ -0,0 +1,324 @@ +package com.inputstick.api.hid; + +import java.util.LinkedList; +import java.util.Timer; +import java.util.TimerTask; +import java.util.Vector; + +import com.inputstick.api.ConnectionManager; +import com.inputstick.api.HIDInfo; +import com.inputstick.api.OnEmptyBufferListener; +import com.inputstick.api.Packet; +import com.inputstick.api.basic.InputStickHID; + +public class HIDTransactionQueue { + + private static final int BUFFER_SIZE = 32; + private static final int BT_DELAY = 50; //additional delay for BT overhead + + private static final int MAX_PACKETS_PER_UPDATE = 10; + private static final int MAX_IMMEDIATE_PACKETS = 3; + + private final LinkedList queue; + private final ConnectionManager mConnectionManager; + private final byte cmd; + private boolean ready; + + private int mInterfaceType; + private boolean mustNotify; + + private Timer t; + private boolean timerCancelled; + private boolean sentAhead; + private long lastTime; + private long minNextTime; + private int lastReports; + + + // >= FW 0.93 + private boolean bufferInitDone; + private boolean constantUpdateMode; + private int bufferFreeSpace; + private int immediatePacketsLeft; + private int packetsSentSinceLastUpdate; + + private int interfaceReadyCnt; //fix BT4.0 lost packet problem + + public HIDTransactionQueue(int interfaceType, ConnectionManager connectionManager) { + constantUpdateMode = false; + bufferFreeSpace = BUFFER_SIZE; + interfaceReadyCnt = 0; + + queue = new LinkedList(); + mConnectionManager = connectionManager; + ready = false; + sentAhead = false; + minNextTime = 0; + + mustNotify = false; + + mInterfaceType = interfaceType; + switch (interfaceType) { + case InputStickHID.INTERFACE_KEYBOARD: + cmd = Packet.CMD_HID_DATA_KEYB; + //TODO mod + //cmd = Packet.CMD_HID_DATA_KEYB_FAST; + break; + case InputStickHID.INTERFACE_MOUSE: + cmd = Packet.CMD_HID_DATA_MOUSE; + break; + case InputStickHID.INTERFACE_CONSUMER: + cmd = Packet.CMD_HID_DATA_CONSUMER; + break; + default: + cmd = Packet.CMD_DUMMY; + } + } + + private int sendNext(int maxReports) { + HIDTransaction transaction; + + //assume there is at least 1 element in queue + transaction = queue.peek(); + if (transaction.getReportsCount() > maxReports) { + // v0.92 + if (maxReports < BUFFER_SIZE) { + //don't split transactions until there is no other way left! + return 0; + } + + //transaction too big to fit single packet! split + transaction = transaction.split(BUFFER_SIZE); + } else { + queue.removeFirst(); + } + + byte reports = 0; + ready = false; + Packet p = new Packet(false, cmd, reports); + + while (transaction.hasNext()) { + p.addBytes(transaction.getNextReport()); + //TODO mod + //byte[] r = transaction.getNextReport(); + //p.addByte(r[0]); + //p.addByte(r[2]); + + reports++; + } + + while(true) { + if (queue.isEmpty()) { + break; + } + + transaction = queue.peek(); + if (reports + transaction.getReportsCount() < maxReports) { + queue.removeFirst(); + while (transaction.hasNext()) { + p.addBytes(transaction.getNextReport()); + //TODO mod + //byte[] r = transaction.getNextReport(); + //p.addByte(r[0]); + //p.addByte(r[2]); + + reports++; + } + } else { + break; + } + } + + //!! total number of reports must be < 32 ! (max packet limitation) + p.modifyByte(1, reports); //set reports count + mConnectionManager.sendPacket(p); + + interfaceReadyCnt = 0; + lastReports = reports; + lastTime = System.currentTimeMillis(); + minNextTime = lastTime + (lastReports * 4) + BT_DELAY; + + if (queue.isEmpty()) { + notifyOnLocalBufferEmpty(); + } + + return reports; + } + + private void notifyOnRemoteBufferEmpty() { + Vector listeners = InputStickHID.getBufferEmptyListeners(); + for (OnEmptyBufferListener listener : listeners) { + listener.onRemoteBufferEmpty(mInterfaceType); + } + } + + private void notifyOnLocalBufferEmpty() { + Vector listeners = InputStickHID.getBufferEmptyListeners(); + for (OnEmptyBufferListener listener : listeners) { + listener.onLocalBufferEmpty(mInterfaceType); + } + } + + public synchronized boolean isLocalBufferEmpty() { + return queue.isEmpty(); + } + + public synchronized boolean isRemoteBufferEmpty() { + if ((queue.isEmpty()) && (bufferFreeSpace == BUFFER_SIZE)) { + return true; + } + + if (queue.isEmpty() && ( !mustNotify)) { + return true; + } else { + return false; + } + } + + public synchronized void clearBuffer() { + queue.clear(); + } + + public synchronized void addTransaction(HIDTransaction transaction) { + if ( !bufferInitDone) { + queue.add(transaction); + return; + } + + + if (constantUpdateMode) { + queue.add(transaction); + sendToBuffer(true); + return; + } + + + mustNotify = true; + //using sentAhead will slow down mouse. FW0.92 will solve the problems + if ((queue.isEmpty()) && (System.currentTimeMillis() > minNextTime) /*&& ( !sentAhead)*/) { + sentAhead = true; + ready = true; + } + + queue.add(transaction); + if (ready) { + sendNext(BUFFER_SIZE); + } + } + + private synchronized void timerAction() { + if ( !timerCancelled) { + if (sentAhead) { + deviceReady(null, 0); //will set sentAhead to false; + sentAhead = true; //restore value + } else { + deviceReady(null, 0); + } + } + } + + public synchronized void deviceReady(HIDInfo hidInfo, int reportsSentToHost) { + //it is possible that in the meantime some packets has been sent to IS!!! + + bufferInitDone = true; + + if (hidInfo != null) { + if (hidInfo.isSentToHostInfoAvailable()) { + + //BT4.0 lost packets fix: + if (bufferFreeSpace < BUFFER_SIZE) { + boolean interfaceReady = false; + if (mInterfaceType == InputStickHID.INTERFACE_KEYBOARD) { + interfaceReady = hidInfo.isKeyboardReady(); + } + if (mInterfaceType == InputStickHID.INTERFACE_MOUSE) { + interfaceReady = hidInfo.isMouseReady(); + } + if (mInterfaceType == InputStickHID.INTERFACE_CONSUMER) { + interfaceReady = hidInfo.isConsumerReady(); + } + if (interfaceReady) { + interfaceReadyCnt++; + if (interfaceReadyCnt == 10) { + bufferFreeSpace = BUFFER_SIZE; + } + } else { + interfaceReadyCnt = 0; + } + } + + + constantUpdateMode = true; + // >= FW 0.93 + bufferFreeSpace += reportsSentToHost; + if ((bufferFreeSpace == BUFFER_SIZE) && (queue.isEmpty())) { + notifyOnRemoteBufferEmpty(); + } + immediatePacketsLeft = MAX_IMMEDIATE_PACKETS; + //reportsSentSinceLastUpdate = 0; + packetsSentSinceLastUpdate = 0; + sendToBuffer(false); + return; + } + } + + + + long now = System.currentTimeMillis(); + //System.out.println("v90 HID update"); + if (now < minNextTime) { + //set timer, just in case if deviceReady won't be called again + timerCancelled = false; + t = new Timer(); + t.schedule(new TimerTask() { + @Override + public void run() { + timerAction(); + } + }, (minNextTime - now + 1)); + } else { + timerCancelled = true; + sentAhead = false; + if (!queue.isEmpty()) { + sendNext(BUFFER_SIZE); + } else { + ready = true; + //queue is empty, InputStick reported that buffer is empty, data was added since last notification + if (mustNotify) { + notifyOnRemoteBufferEmpty(); + mustNotify = false; + } + } + } + } + + public synchronized void sendToBuffer(boolean justAdded) { + if ((justAdded) && (immediatePacketsLeft <= 0)) { + return; + } + + if ( !InputStickHID.isReady()) { + return; + } + + if (queue.isEmpty()) { + return; + } + if (bufferFreeSpace <= 0) { + return; + } + if (packetsSentSinceLastUpdate >= MAX_PACKETS_PER_UPDATE) { + return; + } + + int reportsSent = sendNext(bufferFreeSpace); + if (reportsSent > 0) { + if (justAdded) { + immediatePacketsLeft --; + } + bufferFreeSpace -= reportsSent; + packetsSentSinceLastUpdate ++; + } + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/KeyboardReport.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/KeyboardReport.java new file mode 100644 index 00000000..7ece9b62 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/KeyboardReport.java @@ -0,0 +1,36 @@ +package com.inputstick.api.hid; + +public class KeyboardReport extends HIDReport { + + public static final int SIZE = 8; + + private byte[] data; + + public KeyboardReport(byte modifier, byte key0, byte key1, byte key2, byte key3, byte key4, byte key5) { + data = new byte[SIZE]; + data[0] = modifier; + data[2] = key0; + data[3] = key1; + data[4] = key2; + data[5] = key3; + data[6] = key4; + data[7] = key5; + } + + public KeyboardReport() { + this((byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0); + } + + public KeyboardReport(byte modifier, byte key) { + this(modifier, key, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0); + } + + public byte[] getBytes() { + return data; + } + + public int getBytesCount() { + return SIZE; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/MouseReport.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/MouseReport.java new file mode 100644 index 00000000..8454513e --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/hid/MouseReport.java @@ -0,0 +1,29 @@ +package com.inputstick.api.hid; + +public class MouseReport extends HIDReport { + + public static final int SIZE = 4; + + private byte[] data; + + public MouseReport(byte buttons, byte x, byte y, byte wheel) { + data = new byte[SIZE]; + data[0] = buttons; + data[1] = x; + data[2] = y; + data[3] = wheel; + } + + public MouseReport() { + this((byte)0, (byte)0, (byte)0, (byte)0); + } + + public byte[] getBytes() { + return data; + } + + public int getBytesCount() { + return SIZE; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/BasicInitManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/BasicInitManager.java new file mode 100644 index 00000000..a2082406 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/BasicInitManager.java @@ -0,0 +1,97 @@ +package com.inputstick.api.init; + +import android.os.Handler; + +import com.inputstick.api.InputStickError; +import com.inputstick.api.Packet; + + +public class BasicInitManager extends InitManager { + + private int lastStatusParam; + private Handler handler; + private boolean cancelled; + + public BasicInitManager(byte[] key) { + super(key); + lastStatusParam = 0; + } + + + @Override + public void onConnected() { + lastStatusParam = 0; + cancelled = false; + initDone = false; + sendPacket(new Packet(true, Packet.CMD_RUN_FW)); + + handler = new Handler(); + handler.postDelayed(new Runnable() { + @Override + public void run() { + if ((!cancelled) && ( !initDone)) { + sendPacket(new Packet(true, Packet.CMD_RUN_FW)); + } + } + }, 1000); + + handler.postDelayed(new Runnable() { + @Override + public void run() { + if ((!cancelled) && ( !initDone)) { + mListener.onInitFailure(InputStickError.ERROR_INIT_TIMEDOUT); + } + } + }, 2000); + } + + @Override + public void onDisconnected() { + cancelled = true; + } + + @Override + public void onData(byte[] data) { + byte cmd = data[0]; + byte respCode = data[1]; + byte param = data[1]; + + switch (cmd) { + case Packet.CMD_RUN_FW: + sendPacket(new Packet(true, Packet.CMD_FW_INFO)); + break; + case Packet.CMD_FW_INFO: + onFWInfo(data, true, true, new Packet(true, Packet.CMD_INIT)); //TODO next FW: params! + break; + case Packet.CMD_INIT: + if (respCode == Packet.RESP_OK) { + initDone = true; + sendPacket(new Packet(true, Packet.CMD_HID_STATUS_REPORT)); + } else { + mListener.onInitFailure(respCode); + } + break; + case Packet.CMD_INIT_AUTH: + initDone = onAuth(data, true, new Packet(true, Packet.CMD_INIT)); //TODO next FW: params! + break; + case Packet.CMD_HID_STATUS: + if (mKey == null) { + initDone = true; + } + + if (initDone) { + if (param != lastStatusParam) { + lastStatusParam = param; + if (param == 0x05) { + mListener.onInitReady(); + } else { + mListener.onInitNotReady(); + } + } + } + break; + } + } + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/DeviceInfo.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/DeviceInfo.java new file mode 100644 index 00000000..9e1dc49e --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/DeviceInfo.java @@ -0,0 +1,93 @@ +package com.inputstick.api.init; + +public class DeviceInfo { + + private int firmwareType; + private int versionMajor; + private int versionMinor; + private int versionHardware; + private int securityStatus; + + private boolean passwordProtected; + + public DeviceInfo(byte[] data) { + //cmd, param + firmwareType = data[2]; + versionMajor = data[3]; + versionMinor = data[4]; + versionHardware = data[5]; + + + //6,7,8,9 + //10,11,12,13 + //14,15,16,17 + + //18,19 + securityStatus = data[19]; + if (data[20] == 0) { + passwordProtected = false; + } else { + passwordProtected = true; + } + } + + public int getSecurityStatus() { + return securityStatus; + } + + public boolean isAuthenticated() { + return ((securityStatus & 0x10) != 0); + } + + public boolean isUnlocked() { + if (getFirmwareVersion() < 96) { + return true; + } else { + return ((securityStatus & 0x08) != 0); + } + } + + public int getFirmwareType() { + return firmwareType; + } + + public boolean isPasswordProtected() { + return passwordProtected; + } + + public int getVersionMinor() { + return versionMinor; + } + + public int getVersionMajor() { + return versionMajor; + } + + public int getHardwareVersion() { + return versionHardware; + } + + public int getFirmwareVersion() { + return (versionMajor) * 100 + versionMinor; + } + + + + public boolean supportsEncryption() { + return (getFirmwareVersion() >= 91); + } + + public boolean supportsPinChange() { + return (getFirmwareVersion() >= 97); + } + + public boolean supportsGamepad() { + return (getFirmwareVersion() >= 97); + } + + public boolean supportsRestoreOptions() { + return (getFirmwareVersion() >= 98); + } + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/InitManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/InitManager.java new file mode 100644 index 00000000..d4f8e445 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/InitManager.java @@ -0,0 +1,112 @@ +package com.inputstick.api.init; + +import com.inputstick.api.InputStickError; +import com.inputstick.api.Packet; +import com.inputstick.api.PacketManager; + +public class InitManager { + + public static final int DEFAULT_INIT_TIMEOUT = 60000; //60s init timeout + + protected PacketManager mPacketManager; + protected InitManagerListener mListener; + protected byte[] mKey; + protected DeviceInfo mInfo; + protected boolean initDone; + + public InitManager(byte[] key) { + mKey = key; + } + + + public DeviceInfo getDeviceInfo() { + return mInfo; + } + + public boolean isEncrypted() { + return mPacketManager.isEncrypted(); + } + + + public void init(InitManagerListener listener, PacketManager packetManager) { + mListener = listener; + mPacketManager = packetManager; + + initDone = false; + } + + public void onConnected() { + mListener.onInitReady(); + } + + public void onDisconnected() { + } + + public void onData(byte[] data) { + //byte cmd = data[0]; + //byte param = data[1]; + } + + public void sendPacket(Packet p) { + mPacketManager.sendPacket(p); + } + + public void onFWInfo(byte[] data, boolean authenticate, boolean enableEncryption, Packet sendNext) { + mInfo = new DeviceInfo(data); + + if (authenticate) { + if (mInfo.isPasswordProtected()) { + if (mKey != null) { + //authenticate + sendPacket(mPacketManager.encPacket(enableEncryption)); + } else { + mListener.onInitFailure(InputStickError.ERROR_SECURITY_NO_KEY); + } + } else { + if (mKey != null) { + //possible scenarios: FW upgrade / password removed using other device/app / tampering! + mListener.onInitFailure(InputStickError.ERROR_SECURITY_NOT_PROTECTED); + } + sendPacket(sendNext); + } + } else { + sendPacket(sendNext); + } + } + + public boolean onAuth(byte[] data, boolean enableOutEncryption, Packet sendNext) { + byte respCode = data[1]; + + switch (respCode) { + case Packet.RESP_OK: + byte[] cmp = new byte[16]; + //TODO check length! + System.arraycopy(data, 2, cmp, 0, 16); + if (mPacketManager.setEncryption(cmp, enableOutEncryption)) { + sendPacket(sendNext); + return true; + } else { + mListener.onInitFailure(InputStickError.ERROR_SECURITY_CHALLENGE); + } + break; + + case 0x20: + mListener.onInitFailure(InputStickError.ERROR_SECURITY_INVALID_KEY); + break; + + case 0x21: + mListener.onInitFailure(InputStickError.ERROR_SECURITY_NOT_PROTECTED); + break; + + case Packet.RESP_UNKNOWN_CMD: + mListener.onInitFailure(InputStickError.ERROR_SECURITY_NOT_SUPPORTED); + break; + + default: + mListener.onInitFailure(InputStickError.ERROR_SECURITY); + } + return false; + + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/InitManagerListener.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/InitManagerListener.java new file mode 100644 index 00000000..10cff787 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/init/InitManagerListener.java @@ -0,0 +1,9 @@ +package com.inputstick.api.init; + +public interface InitManagerListener { + + public void onInitReady(); + public void onInitNotReady(); + public void onInitFailure(int code); + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/DanishLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/DanishLayout.java new file mode 100644 index 00000000..6d79ea63 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/DanishLayout.java @@ -0,0 +1,390 @@ +package com.inputstick.api.layout; + +public class DanishLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "da-DK"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //da-DK + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 53, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 36, 64, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 0, 49, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 49, 0, 0 }, // * + { 43, 0, 45, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 64, 37, 0, 0 }, // [ + { 92, 64, 100, 0, 0 }, // \ + { 93, 64, 38, 0, 0 }, // ] + { 94, 0, 44, 2, 48 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 2, 46 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 64, 36, 0, 0 }, // { + { 124, 64, 46, 0, 0 }, // | + { 125, 64, 39, 0, 0 }, // } + { 126, 0, 44, 64, 48 }, // ~ + { 163, 64, 32, 0, 0 }, // ? + { 164, 2, 33, 0, 0 }, // + { 167, 2, 53, 0, 0 }, // + { 168, 0, 44, 0, 48 }, // + { 180, 0, 44, 0, 46 }, // + { 181, 64, 16, 0, 0 }, // + { 189, 0, 53, 0, 0 }, // ? + { 192, 2, 4, 2, 46 }, // ? + { 193, 2, 4, 0, 46 }, // + { 194, 2, 4, 2, 48 }, // + { 195, 2, 4, 64, 48 }, // ? + { 196, 2, 4, 0, 48 }, // + { 197, 2, 47, 0, 0 }, // ? + { 198, 2, 51, 0, 0 }, // ? + { 200, 2, 8, 2, 46 }, // ? + { 201, 2, 8, 0, 46 }, // + { 202, 2, 8, 2, 48 }, // ? + { 203, 2, 8, 0, 48 }, // + { 204, 2, 12, 2, 46 }, // ? + { 205, 2, 12, 0, 46 }, // + { 206, 2, 12, 2, 48 }, // + { 207, 2, 12, 0, 48 }, // ? + { 209, 2, 17, 64, 48 }, // ? + { 210, 2, 18, 2, 46 }, // ? + { 211, 2, 18, 0, 46 }, // + { 212, 2, 18, 2, 48 }, // + { 213, 2, 18, 64, 48 }, // ? + { 214, 2, 18, 0, 48 }, // + { 216, 2, 52, 0, 0 }, // ? + { 217, 2, 24, 2, 46 }, // ? + { 218, 2, 24, 0, 46 }, // + { 219, 2, 24, 2, 48 }, // ? + { 220, 2, 24, 0, 48 }, // + { 221, 2, 28, 0, 46 }, // + { 224, 0, 4, 2, 46 }, // ? + { 225, 0, 4, 0, 46 }, // + { 226, 0, 4, 2, 48 }, // + { 227, 0, 4, 64, 48 }, // ? + { 228, 0, 4, 0, 48 }, // + { 229, 0, 47, 0, 0 }, // ? + { 230, 0, 51, 0, 0 }, // ? + { 232, 0, 8, 2, 46 }, // ? + { 233, 0, 8, 0, 46 }, // + { 234, 0, 8, 2, 48 }, // ? + { 235, 0, 8, 0, 48 }, // + { 236, 0, 12, 2, 46 }, // ? + { 237, 0, 12, 0, 46 }, // + { 238, 0, 12, 2, 48 }, // + { 239, 0, 12, 0, 48 }, // ? + { 241, 0, 17, 64, 48 }, // ? + { 242, 0, 18, 2, 46 }, // ? + { 243, 0, 18, 0, 46 }, // + { 244, 0, 18, 2, 48 }, // + { 245, 0, 18, 64, 48 }, // ? + { 246, 0, 18, 0, 48 }, // + { 248, 0, 52, 0, 0 }, // ? + { 249, 0, 24, 2, 46 }, // ? + { 250, 0, 24, 0, 46 }, // + { 251, 0, 24, 2, 48 }, // ? + { 252, 0, 24, 0, 48 }, // + { 253, 0, 28, 0, 46 }, // + { 255, 0, 28, 0, 48 }, // ? + { 8364, 64, 34, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x0021 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x0022 , -1 , 0x0040 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x0023 , -1 , 0x00a3 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x00a4 , -1 , 0x0024 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x0025 , -1 , 0x20ac , -1 } , + /* 7 */ { 0 , (int)'6' , 0x0026 , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , 0x007b , -1 } , + /* 9 */ { 0 , (int)'8' , 0x0028 , -1 , 0x005b , -1 } , + /* 0a */ { 0 , (int)'9' , 0x0029 , -1 , 0x005d , -1 } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , 0x007d , -1 } , + /* 0c */ { 0 , 0x002b , 0x003f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x00b4 , 0x0060 , -1 , 0x007c , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 1 , 0x00e5 , 0x00c5 , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x00a8 , 0x005e , 0x001d , 0x007e , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 1 , 0x00e6 , 0x00c6 , -1 , -1 , -1 } , + /* 28 */ { 1 , 0x00f8 , 0x00d8 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x00bd , 0x00a7 , 0x001c , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x0027 , 0x002a , -1 , -1 , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , 0x00b5 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x0020 , 0x0020 , 0x0020 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , 0x005c , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x00b4, 0x0060, 0x00a8, 0x005e, 0x007e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x00b4 , 0x0061 , 0x00e1 }, + { 0x00b4 , 0x0065 , 0x00e9 }, + { 0x00b4 , 0x0075 , 0x00fa }, + { 0x00b4 , 0x0069 , 0x00ed }, + { 0x00b4 , 0x0079 , 0x00fd }, + { 0x00b4 , 0x006f , 0x00f3 }, + { 0x00b4 , 0x0041 , 0x00c1 }, + { 0x00b4 , 0x0045 , 0x00c9 }, + { 0x00b4 , 0x0055 , 0x00da }, + { 0x00b4 , 0x0049 , 0x00cd }, + { 0x00b4 , 0x0059 , 0x00dd }, + { 0x00b4 , 0x004f , 0x00d3 }, + { 0x00b4 , 0x0020 , 0x00b4 }, + { 0x0060 , 0x0061 , 0x00e0 }, + { 0x0060 , 0x0065 , 0x00e8 }, + { 0x0060 , 0x0075 , 0x00f9 }, + { 0x0060 , 0x0069 , 0x00ec }, + { 0x0060 , 0x006f , 0x00f2 }, + { 0x0060 , 0x0041 , 0x00c0 }, + { 0x0060 , 0x0045 , 0x00c8 }, + { 0x0060 , 0x0055 , 0x00d9 }, + { 0x0060 , 0x0049 , 0x00cc }, + { 0x0060 , 0x004f , 0x00d2 }, + { 0x0060 , 0x0020 , 0x0060 }, + { 0x00a8 , 0x0061 , 0x00e4 }, + { 0x00a8 , 0x0065 , 0x00eb }, + { 0x00a8 , 0x0075 , 0x00fc }, + { 0x00a8 , 0x0069 , 0x00ef }, + { 0x00a8 , 0x0079 , 0x00ff }, + { 0x00a8 , 0x006f , 0x00f6 }, + { 0x00a8 , 0x0041 , 0x00c4 }, + { 0x00a8 , 0x0045 , 0x00cb }, + { 0x00a8 , 0x0055 , 0x00dc }, + { 0x00a8 , 0x0049 , 0x00cf }, + { 0x00a8 , 0x004f , 0x00d6 }, + { 0x00a8 , 0x0020 , 0x00a8 }, + { 0x005e , 0x0061 , 0x00e2 }, + { 0x005e , 0x0065 , 0x00ea }, + { 0x005e , 0x0075 , 0x00fb }, + { 0x005e , 0x0069 , 0x00ee }, + { 0x005e , 0x006f , 0x00f4 }, + { 0x005e , 0x0041 , 0x00c2 }, + { 0x005e , 0x0045 , 0x00ca }, + { 0x005e , 0x0055 , 0x00db }, + { 0x005e , 0x0049 , 0x00ce }, + { 0x005e , 0x004f , 0x00d4 }, + { 0x005e , 0x0020 , 0x005e }, + { 0x007e , 0x006e , 0x00f1 }, + { 0x007e , 0x0061 , 0x00e3 }, + { 0x007e , 0x006f , 0x00f5 }, + { 0x007e , 0x004e , 0x00d1 }, + { 0x007e , 0x0041 , 0x00c3 }, + { 0x007e , 0x004f , 0x00d5 }, + { 0x007e , 0x0020 , 0x007e }, + + }; + + private static DanishLayout instance = new DanishLayout(); + + private DanishLayout() { + } + + public static DanishLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} \ No newline at end of file diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/DvorakLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/DvorakLayout.java new file mode 100644 index 00000000..a5cd6306 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/DvorakLayout.java @@ -0,0 +1,269 @@ +package com.inputstick.api.layout; + +public class DvorakLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "en-DV"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //en-DV + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 45, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 46, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 20, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 36, 0, 0 }, // & + { 39, 0, 20, 0, 0 }, // ' + { 40, 2, 38, 0, 0 }, // ( + { 41, 2, 39, 0, 0 }, // ) + { 42, 2, 37, 0, 0 }, // * + { 43, 2, 48, 0, 0 }, // + + { 44, 0, 26, 0, 0 }, // , + { 45, 0, 52, 0, 0 }, // - + { 46, 0, 8, 0, 0 }, // . + { 47, 0, 47, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 29, 0, 0 }, // : + { 59, 0, 29, 0, 0 }, // ; + { 60, 2, 26, 0, 0 }, // < + { 61, 0, 48, 0, 0 }, // = + { 62, 2, 8, 0, 0 }, // > + { 63, 2, 47, 0, 0 }, // ? + { 64, 2, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 17, 0, 0 }, // B + { 67, 2, 12, 0, 0 }, // C + { 68, 2, 11, 0, 0 }, // D + { 69, 2, 7, 0, 0 }, // E + { 70, 2, 28, 0, 0 }, // F + { 71, 2, 24, 0, 0 }, // G + { 72, 2, 13, 0, 0 }, // H + { 73, 2, 10, 0, 0 }, // I + { 74, 2, 6, 0, 0 }, // J + { 75, 2, 25, 0, 0 }, // K + { 76, 2, 19, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 15, 0, 0 }, // N + { 79, 2, 22, 0, 0 }, // O + { 80, 2, 21, 0, 0 }, // P + { 81, 2, 27, 0, 0 }, // Q + { 82, 2, 18, 0, 0 }, // R + { 83, 2, 51, 0, 0 }, // S + { 84, 2, 14, 0, 0 }, // T + { 85, 2, 9, 0, 0 }, // U + { 86, 2, 55, 0, 0 }, // V + { 87, 2, 54, 0, 0 }, // W + { 88, 2, 5, 0, 0 }, // X + { 89, 2, 23, 0, 0 }, // Y + { 90, 2, 56, 0, 0 }, // Z + { 91, 0, 45, 0, 0 }, // [ + { 92, 0, 49, 0, 0 }, // \ + { 93, 0, 46, 0, 0 }, // ] + { 94, 2, 35, 0, 0 }, // ^ + { 95, 2, 52, 0, 0 }, // _ + { 96, 0, 53, 0, 0 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 17, 0, 0 }, // b + { 99, 0, 12, 0, 0 }, // c + { 100, 0, 11, 0, 0 }, // d + { 101, 0, 7, 0, 0 }, // e + { 102, 0, 28, 0, 0 }, // f + { 103, 0, 24, 0, 0 }, // g + { 104, 0, 13, 0, 0 }, // h + { 105, 0, 10, 0, 0 }, // i + { 106, 0, 6, 0, 0 }, // j + { 107, 0, 25, 0, 0 }, // k + { 108, 0, 19, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 15, 0, 0 }, // n + { 111, 0, 22, 0, 0 }, // o + { 112, 0, 21, 0, 0 }, // p + { 113, 0, 27, 0, 0 }, // q + { 114, 0, 18, 0, 0 }, // r + { 115, 0, 51, 0, 0 }, // s + { 116, 0, 14, 0, 0 }, // t + { 117, 0, 9, 0, 0 }, // u + { 118, 0, 55, 0, 0 }, // v + { 119, 0, 54, 0, 0 }, // w + { 120, 0, 5, 0, 0 }, // x + { 121, 0, 23, 0, 0 }, // y + { 122, 0, 56, 0, 0 }, // z + { 123, 2, 45, 0, 0 }, // { + { 124, 2, 49, 0, 0 }, // | + { 125, 2, 46, 0, 0 }, // } + { 126, 2, 53, 0, 0 }, // ~ + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x021 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x040 , -1 , -1 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x023 , -1 , -1 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x024 , -1 , -1 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x025 , -1 , -1 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x05e , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x026 , -1 , -1 , -1 } , + /* 9 */ { 0 , (int)'8' , 0x02a , -1 , -1 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x028 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x029 , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x05b , 0x07b , 0x01b , -1 , -1 } , + /* 0d */ { 0 , 0x05d , 0x07d , 0x01d , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 0 , 0x027 , 0x022 , -1 , -1 , -1 } , + /* 11 */ { 0 , 0x02c , 0x03c , -1 , -1 , -1 } , + /* 12 */ { 0 , 0x02e , 0x03e , -1 , -1 , -1 } , + /* 13 */ { 1 , 'p' , 'P' , -1 , -1 , -1 } , + /* 14 */ { 1 , 'y' , 'Y' , -1 , -1 , -1 } , + /* 15 */ { 1 , 'f' , 'F' , -1 , -1 , -1 } , + /* 16 */ { 1 , 'g' , 'G' , -1 , -1 , -1 } , + /* 17 */ { 1 , 'c' , 'C' , -1 , -1 , -1 } , + /* 18 */ { 1 , 'r' , 'R' , -1 , -1 , -1 } , + /* 19 */ { 1 , 'l' , 'L' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x02f , 0x03f , -1 , -1 , -1 } , + /* 1b */ { 0 , 0x03d , 0x02b , -1 , -1 , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , 'a' , 'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , 'o' , 'O' , -1 , -1 , -1 } , + + /* 20 */ { 1 , 'e' , 'E' , -1 , -1 , -1 } , + /* 21 */ { 1 , 'u' , 'U' , -1 , -1 , -1 } , + /* 22 */ { 1 , 'i' , 'I' , -1 , -1 , -1 } , + /* 23 */ { 1 , 'd' , 'D' , -1 , -1 , -1 } , + /* 24 */ { 1 , 'h' , 'H' , -1 , -1 , -1 } , + /* 25 */ { 1 , 't' , 'T' , -1 , -1 , -1 } , + /* 26 */ { 1 , 'n' , 'N' , -1 , -1 , -1 } , + /* 27 */ { 1 , 's' , 'S' , -1 , -1 , -1 } , + /* 28 */ { 0 , 0x02d , 0x05f , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x060 , 0x07e , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x005c , 0x07c , 0x01c , -1 , -1 } , + /* 2c */ { 0 , 0x003b , 0x03a , -1 , -1 , -1 } , + /* 2d */ { 1 , 'q' , 'Q' , -1 , -1 , -1 } , + /* 2e */ { 1 , 'j' , 'J' , -1 , -1 , -1 } , + /* 2f */ { 1 , 'k' , 'K' , -1 , -1 , -1 } , + + /* 30 */ { 1 , 'x' , 'X' , -1 , -1 , -1 } , + /* 31 */ { 1 , 'b' , 'B' , -1 , -1 , -1 } , + /* 32 */ { 1 , 'm' , 'M' , -1 , -1 , -1 } , + /* 33 */ { 1 , 'w' , 'W' , -1 , -1 , -1 } , + /* 34 */ { 1 , 'v' , 'V' , -1 , -1 , -1 } , + /* 35 */ { 1 , 'z' , 'Z' , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x020 , 0x020 , 0x020 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x02e , 0x02e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x05c , 0x07c , 0x01c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = null; + public static final int DEADKEY_LUT[][] = null; + + private static DvorakLayout instance = new DvorakLayout(); + + private DvorakLayout() { + } + + public static DvorakLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} \ No newline at end of file diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/FinnishLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/FinnishLayout.java new file mode 100644 index 00000000..c0d6e154 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/FinnishLayout.java @@ -0,0 +1,388 @@ +package com.inputstick.api.layout; + +public class FinnishLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "fi-FI"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //fi-FI + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 24, 64, 33, 0, 0 }, //  + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 53, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 0, 49, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 49, 0, 0 }, // * + { 43, 0, 45, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 64, 37, 0, 0 }, // [ + { 92, 64, 45, 0, 0 }, // \ + { 93, 64, 38, 0, 0 }, // ] + { 94, 0, 44, 2, 48 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 2, 46 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 64, 36, 0, 0 }, // { + { 124, 64, 100, 0, 0 }, // | + { 125, 64, 39, 0, 0 }, // } + { 126, 0, 44, 64, 48 }, // ~ + { 163, 64, 32, 0, 0 }, // ? + { 164, 2, 33, 0, 0 }, // + { 167, 0, 53, 0, 0 }, // + { 168, 0, 44, 0, 48 }, // + { 180, 0, 44, 0, 46 }, // + { 181, 64, 16, 0, 0 }, // + { 189, 2, 53, 0, 0 }, // ? + { 192, 2, 4, 2, 46 }, // ? + { 193, 2, 4, 0, 46 }, // + { 194, 2, 4, 2, 48 }, // + { 195, 2, 4, 64, 48 }, // ? + { 196, 2, 52, 0, 0 }, // + { 197, 2, 47, 0, 0 }, // ? + { 200, 2, 8, 2, 46 }, // ? + { 201, 2, 8, 0, 46 }, // + { 202, 2, 8, 2, 48 }, // ? + { 203, 2, 8, 0, 48 }, // + { 204, 2, 12, 2, 46 }, // ? + { 205, 2, 12, 0, 46 }, // + { 206, 2, 12, 2, 48 }, // + { 207, 2, 12, 0, 48 }, // ? + { 209, 2, 17, 64, 48 }, // ? + { 210, 2, 18, 2, 46 }, // ? + { 211, 2, 18, 0, 46 }, // + { 212, 2, 18, 2, 48 }, // + { 213, 2, 18, 64, 48 }, // ? + { 214, 2, 51, 0, 0 }, // + { 217, 2, 24, 2, 46 }, // ? + { 218, 2, 24, 0, 46 }, // + { 219, 2, 24, 2, 48 }, // ? + { 220, 2, 24, 0, 48 }, // + { 221, 2, 28, 0, 46 }, // + { 224, 0, 4, 2, 46 }, // ? + { 225, 0, 4, 0, 46 }, // + { 226, 0, 4, 2, 48 }, // + { 227, 0, 4, 64, 48 }, // ? + { 228, 0, 52, 0, 0 }, // + { 229, 0, 47, 0, 0 }, // ? + { 232, 0, 8, 2, 46 }, // ? + { 233, 0, 8, 0, 46 }, // + { 234, 0, 8, 2, 48 }, // ? + { 235, 0, 8, 0, 48 }, // + { 236, 0, 12, 2, 46 }, // ? + { 237, 0, 12, 0, 46 }, // + { 238, 0, 12, 2, 48 }, // + { 239, 0, 12, 0, 48 }, // ? + { 241, 0, 17, 64, 48 }, // ? + { 242, 0, 18, 2, 46 }, // ? + { 243, 0, 18, 0, 46 }, // + { 244, 0, 18, 2, 48 }, // + { 245, 0, 18, 64, 48 }, // ? + { 246, 0, 51, 0, 0 }, // + { 249, 0, 24, 2, 46 }, // ? + { 250, 0, 24, 0, 46 }, // + { 251, 0, 24, 2, 48 }, // ? + { 252, 0, 24, 0, 48 }, // + { 253, 0, 28, 0, 46 }, // + { 255, 0, 28, 0, 48 }, // ? + { 8364, 64, 34, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x0021 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x0022 , -1 , 0x0040 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x0023 , -1 , 0x00a3 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x00a4 , -1 , 24 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x0025 , -1 , 0x20ac , -1 } , + /* 7 */ { 0 , (int)'6' , 0x0026 , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , 0x007b , -1 } , + /* 9 */ { 0 , (int)'8' , 0x0028 , -1 , 0x005b , -1 } , + /* 0a */ { 0 , (int)'9' , 0x0029 , -1 , 0x005d , -1 } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , 0x007d , -1 } , + /* 0c */ { 0 , 0x002b , 0x003f , -1 , 0x005c , -1 } , + /* 0d */ { 0 , 0x00b4 , 0x0060 , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x020ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 1 , 0x00e5 , 0x00c5 , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x00a8 , 0x005e , 0x001d , 0x007e , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 1 , 0x00f6 , 0x00d6 , -1 , -1 , -1 } , + /* 28 */ { 1 , 0x00e4 , 0x00c4 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x00a7 , 0x00bd , 0x001c , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x0027 , 0x002a , -1 , -1 , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , 0x00b5 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x0020 , 0x0020 , 0x0020 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , 0x007c , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x00b4, 0x0060, 0x00a8, 0x005e, 0x007e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x00a8 , 0x0061 , 0x00e4 } , + { 0x00a8 , 0x0065 , 0x00eb } , + { 0x00a8 , 0x0075 , 0x00fc } , + { 0x00a8 , 0x0069 , 0x00ef } , + { 0x00a8 , 0x0079 , 0x00ff } , + { 0x00a8 , 0x006f , 0x00f6 } , + { 0x00a8 , 0x0041 , 0x00c4 } , + { 0x00a8 , 0x0045 , 0x00cb } , + { 0x00a8 , 0x0055 , 0x00dc } , + { 0x00a8 , 0x0049 , 0x00cf } , + { 0x00a8 , 0x004f , 0x00d6 } , + { 0x00a8 , 0x0020 , 0x00a8 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + { 0x007e , 0x006e , 0x00f1 } , + { 0x007e , 0x0061 , 0x00e3 } , + { 0x007e , 0x006f , 0x00f5 } , + { 0x007e , 0x004e , 0x00d1 } , + { 0x007e , 0x0041 , 0x00c3 } , + { 0x007e , 0x004f , 0x00d5 } , + { 0x007e , 0x0020 , 0x007e } , + + + }; + + private static FinnishLayout instance = new FinnishLayout(); + + private FinnishLayout() { + } + + public static FinnishLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/FrenchLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/FrenchLayout.java new file mode 100644 index 00000000..84a62cfc --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/FrenchLayout.java @@ -0,0 +1,362 @@ +package com.inputstick.api.layout; + +public class FrenchLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "fr-FR"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //fr-FR + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 0, 56, 0, 0 }, // ! + { 34, 0, 32, 0, 0 }, // " + { 35, 64, 32, 0, 0 }, // # + { 36, 0, 48, 0, 0 }, // $ + { 37, 2, 52, 0, 0 }, // % + { 38, 0, 30, 0, 0 }, // & + { 39, 0, 33, 0, 0 }, // ' + { 40, 0, 34, 0, 0 }, // ( + { 41, 0, 45, 0, 0 }, // ) + { 42, 0, 49, 0, 0 }, // * + { 43, 2, 46, 0, 0 }, // + + { 44, 0, 16, 0, 0 }, // , + { 45, 0, 35, 0, 0 }, // - + { 46, 2, 54, 0, 0 }, // . + { 47, 2, 55, 0, 0 }, // / + { 48, 2, 39, 0, 0 }, // 0 + { 49, 2, 30, 0, 0 }, // 1 + { 50, 2, 31, 0, 0 }, // 2 + { 51, 2, 32, 0, 0 }, // 3 + { 52, 2, 33, 0, 0 }, // 4 + { 53, 2, 34, 0, 0 }, // 5 + { 54, 2, 35, 0, 0 }, // 6 + { 55, 2, 36, 0, 0 }, // 7 + { 56, 2, 37, 0, 0 }, // 8 + { 57, 2, 38, 0, 0 }, // 9 + { 58, 0, 55, 0, 0 }, // : + { 59, 0, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 0, 46, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 16, 0, 0 }, // ? + { 64, 64, 39, 0, 0 }, // @ + { 65, 2, 20, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 51, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 4, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 29, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 26, 0, 0 }, // Z + { 91, 64, 34, 0, 0 }, // [ + { 92, 64, 37, 0, 0 }, // \ + { 93, 64, 45, 0, 0 }, // ] + { 94, 0, 44, 64, 38 }, // ^ + { 95, 0, 37, 0, 0 }, // _ + { 96, 0, 44, 64, 36 }, // ` + { 97, 0, 20, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 51, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 4, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 29, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 26, 0, 0 }, // z + { 123, 64, 33, 0, 0 }, // { + { 124, 64, 35, 0, 0 }, // | + { 125, 64, 46, 0, 0 }, // } + { 126, 0, 44, 64, 31 }, // ~ + { 163, 2, 48, 0, 0 }, // ? + { 164, 64, 48, 0, 0 }, // + { 167, 2, 56, 0, 0 }, // + { 168, 0, 44, 2, 47 }, // + { 176, 2, 45, 0, 0 }, // + { 178, 0, 53, 0, 0 }, // ? + { 181, 2, 49, 0, 0 }, // + { 192, 2, 20, 64, 36 }, // ? + { 194, 2, 20, 64, 38 }, // + { 195, 2, 20, 64, 31 }, // ? + { 196, 2, 20, 2, 47 }, // + { 200, 2, 8, 64, 36 }, // ? + { 202, 2, 8, 64, 38 }, // ? + { 203, 2, 8, 2, 47 }, // + { 204, 2, 12, 64, 36 }, // ? + { 206, 2, 12, 64, 38 }, // + { 207, 2, 12, 2, 47 }, // ? + { 209, 2, 17, 64, 31 }, // ? + { 210, 2, 18, 64, 36 }, // ? + { 212, 2, 18, 64, 38 }, // + { 213, 2, 18, 64, 31 }, // ? + { 214, 2, 18, 2, 47 }, // + { 217, 2, 24, 64, 36 }, // ? + { 219, 2, 24, 64, 38 }, // ? + { 220, 2, 24, 2, 47 }, // + { 224, 0, 39, 0, 0 }, // ? + { 226, 0, 20, 64, 38 }, // + { 227, 0, 20, 64, 31 }, // ? + { 228, 0, 20, 2, 47 }, // + { 231, 0, 38, 0, 0 }, // + { 232, 0, 36, 0, 0 }, // ? + { 233, 0, 31, 0, 0 }, // + { 234, 0, 8, 64, 38 }, // ? + { 235, 0, 8, 2, 47 }, // + { 236, 0, 12, 64, 36 }, // ? + { 238, 0, 12, 64, 38 }, // + { 239, 0, 12, 2, 47 }, // ? + { 241, 0, 17, 64, 31 }, // ? + { 242, 0, 18, 64, 36 }, // ? + { 244, 0, 18, 64, 38 }, // + { 245, 0, 18, 64, 31 }, // ? + { 246, 0, 18, 2, 47 }, // + { 249, 0, 52, 0, 0 }, // ? + { 251, 0, 24, 64, 38 }, // ? + { 252, 0, 24, 2, 47 }, // + { 255, 0, 28, 2, 47 }, // ? + { 8364, 64, 8, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 1 , 0x26 , (int)'1' , -1 , -1 , -1 } , + /* 3 */ { 1 , 0x00e9 , (int)'2' , -1 , 0x007e , -1 } , + /* 4 */ { 1 , 0x22 , (int)'3' , -1 , 0x23 , -1 } , + /* 5 */ { 1 , 0x27 , (int)'4' , -1 , 0x007b , -1 } , + /* 6 */ { 1 , 0x28 , (int)'5' , -1 , 0x005b , -1 } , + /* 7 */ { 1 , 0x002d , (int)'6' , -1 , 0x007c , -1 } , + /* 8 */ { 1 , 0x00e8 , (int)'7' , -1 , 0x0060 , -1 } , + /* 9 */ { 1 , 0x005f , (int)'8' , -1 , 0x005c , -1 } , + /* 0a */ { 1 , 0x00e7 , (int)'9' , -1 , 0x005e , -1 } , + /* 0b */ { 1 , 0x00e0 , (int)'0' , -1 , 0x40 , -1 } , + /* 0c */ { 1 , 0x29 , 0x00b0 , -1 , 0x005d , -1 } , + /* 0d */ { 1 , 0x003d , 0x002b , -1 , 0x007d , -1 } , + /* 1e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 1 , 0x005e , 0x00a8 , 0x001b , -1 , -1 } , + /* 1b */ { 1 , 0x24 , 0x00a3 , 0x001d , 0x00a4 , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 28 */ { 1 , 0x00f9 , 0x25 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x00b2 , -1 , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 1 , 0x002a , 0x00b5 , 0x001c , -1 , -1 } , + /* 2c */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , 0x002c , 0x003f , -1 , -1 , -1 } , + /* 33 */ { 1 , 0x003b , 0x002e , -1 , -1 , -1 } , + /* 34 */ { 1 , 0x003a , 0x002f , -1 , -1 , -1 } , + /* 35 */ { 1 , 0x21 , 0x00a7 , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002e , 0x002e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x007e, 0x0060, 0x005e, 0x00a8, 0x007e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x007e , 0x006e , 0x00f1 } , + { 0x007e , 0x006f , 0x00f5 } , + { 0x007e , 0x0061 , 0x00e3 } , + { 0x007e , 0x004e , 0x00d1 } , + { 0x007e , 0x004f , 0x00d5 } , + { 0x007e , 0x0041 , 0x00c3 } , + { 0x007e , 0x0020 , 0x007e } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0020 , 0x005e } , + { 0x00a8 , 0x0065 , 0x00eb } , + { 0x00a8 , 0x0075 , 0x00fc } , + { 0x00a8 , 0x0069 , 0x00ef } , + { 0x00a8 , 0x0079 , 0x00ff } , + { 0x00a8 , 0x006f , 0x00f6 } , + { 0x00a8 , 0x0061 , 0x00e4 } , + { 0x00a8 , 0x0045 , 0x00cb } , + { 0x00a8 , 0x0055 , 0x00dc } , + { 0x00a8 , 0x0049 , 0x00cf } , + { 0x00a8 , 0x004f , 0x00d6 } , + { 0x00a8 , 0x0041 , 0x00c4 } , + { 0x00a8 , 0x0020 , 0x00a8 } , + }; + + private static FrenchLayout instance = new FrenchLayout(); + + private FrenchLayout() { + } + + public static FrenchLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} + diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/GermanLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/GermanLayout.java new file mode 100644 index 00000000..b083a986 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/GermanLayout.java @@ -0,0 +1,355 @@ +package com.inputstick.api.layout; + +public class GermanLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "de-DE"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //de-DE + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 0, 49, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 2, 49, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 48, 0, 0 }, // * + { 43, 0, 48, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 20, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 29, 0, 0 }, // Y + { 90, 2, 28, 0, 0 }, // Z + { 91, 64, 37, 0, 0 }, // [ + { 92, 64, 45, 0, 0 }, // \ + { 93, 64, 38, 0, 0 }, // ] + { 94, 0, 44, 0, 53 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 2, 46 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 29, 0, 0 }, // y + { 122, 0, 28, 0, 0 }, // z + { 123, 64, 36, 0, 0 }, // { + { 124, 64, 100, 0, 0 }, // | + { 125, 64, 39, 0, 0 }, // } + { 126, 64, 48, 0, 0 }, // ~ + { 167, 2, 32, 0, 0 }, // + { 176, 2, 53, 0, 0 }, // + { 178, 64, 31, 0, 0 }, // ? + { 179, 64, 32, 0, 0 }, // ? + { 180, 0, 44, 0, 46 }, // + { 181, 64, 16, 0, 0 }, // + { 192, 2, 4, 2, 46 }, // ? + { 193, 2, 4, 0, 46 }, // + { 194, 2, 4, 0, 53 }, // + { 196, 2, 52, 0, 0 }, // + { 200, 2, 8, 2, 46 }, // ? + { 201, 2, 8, 0, 46 }, // + { 202, 2, 8, 0, 53 }, // ? + { 204, 2, 12, 2, 46 }, // ? + { 205, 2, 12, 0, 46 }, // + { 206, 2, 12, 0, 53 }, // + { 210, 2, 18, 2, 46 }, // ? + { 211, 2, 18, 0, 46 }, // + { 212, 2, 18, 0, 53 }, // + { 214, 2, 51, 0, 0 }, // + { 217, 2, 24, 2, 46 }, // ? + { 218, 2, 24, 0, 46 }, // + { 219, 2, 24, 0, 53 }, // ? + { 220, 2, 47, 0, 0 }, // + { 221, 2, 29, 0, 46 }, // + { 223, 0, 45, 0, 0 }, // + { 224, 0, 4, 2, 46 }, // ? + { 225, 0, 4, 0, 46 }, // + { 226, 0, 4, 0, 53 }, // + { 228, 0, 52, 0, 0 }, // + { 232, 0, 8, 2, 46 }, // ? + { 233, 0, 8, 0, 46 }, // + { 234, 0, 8, 0, 53 }, // ? + { 236, 0, 12, 2, 46 }, // ? + { 237, 0, 12, 0, 46 }, // + { 238, 0, 12, 0, 53 }, // + { 242, 0, 18, 2, 46 }, // ? + { 243, 0, 18, 0, 46 }, // + { 244, 0, 18, 0, 53 }, // + { 246, 0, 51, 0, 0 }, // + { 249, 0, 24, 2, 46 }, // ? + { 250, 0, 24, 0, 46 }, // + { 251, 0, 24, 0, 53 }, // ? + { 252, 0, 47, 0, 0 }, // + { 253, 0, 29, 0, 46 }, // + { 8364, 64, 8, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x22 , -1 , 0x00b2 , 0x00b2 } , + /* 4 */ { 0 , (int)'3' , 0x00a7 , -1 , 0x00b3 , 0x00b3 } , + /* 5 */ { 0 , (int)'4' , 0x24 , -1 , -1 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , -1 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x26 , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , 0x007b , 0x007b } , + /* 9 */ { 0 , (int)'8' , 0x28 , -1 , 0x005b , 0x005b } , + /* 0a */ { 0 , (int)'9' , 0x29 , -1 , 0x005d , 0x005d } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , 0x007d , 0x007d } , + /* 0c */ { 0 , 0x00df , 0x003f , -1 , 0x005c , 0x005c } , + /* 0d */ { 0 , 0x00b4 , 0x0060 , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , 0x40 , 0x40 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 1 , 0x00fc , 0x00dc , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x002b , 0x002a , 0x001d , 0x007e , 0x007e } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 1 , 0x00f6 , 0x00d6 , -1 , -1 , -1 } , + /* 28 */ { 1 , 0x00e4 , 0x00c4 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x005e , 0x00b0 , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x23 , 0x27 , 0x001c , -1 , -1 } , + /* 2c */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , 0x00b5 , 0x00b5 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , -1 , 0x007c , 0x007c } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x0060, 0x00b4, 0x005e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + + }; + + private static GermanLayout instance = new GermanLayout(); + + private GermanLayout() { + } + + public static GermanLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/GermanMacLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/GermanMacLayout.java new file mode 100644 index 00000000..74788dba --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/GermanMacLayout.java @@ -0,0 +1,353 @@ +package com.inputstick.api.layout; + +public class GermanMacLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "de-DE-mac"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //de-DE-mac + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 0, 49, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 2, 49, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 48, 0, 0 }, // * + { 43, 0, 48, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 15, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 29, 0, 0 }, // Y + { 90, 2, 28, 0, 0 }, // Z + { 91, 64, 34, 0, 0 }, // [ + { 93, 64, 35, 0, 0 }, // ] + { 94, 0, 44, 0, 53 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 2, 46 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 29, 0, 0 }, // y + { 122, 0, 28, 0, 0 }, // z + { 123, 64, 37, 0, 0 }, // { + { 124, 64, 36, 0, 0 }, // | + { 125, 64, 38, 0, 0 }, // } + { 126, 64, 17, 0, 0 }, // ~ + { 167, 2, 32, 0, 0 }, // + { 176, 2, 53, 0, 0 }, // + { 180, 0, 44, 0, 46 }, // + { 181, 64, 16, 0, 0 }, // + { 192, 2, 4, 2, 46 }, // ? + { 193, 2, 4, 0, 46 }, // + { 194, 2, 4, 0, 53 }, // + { 196, 2, 52, 0, 0 }, // + { 200, 2, 8, 2, 46 }, // ? + { 201, 2, 8, 0, 46 }, // + { 202, 2, 8, 0, 53 }, // ? + { 204, 2, 12, 2, 46 }, // ? + { 205, 2, 12, 0, 46 }, // + { 206, 2, 12, 0, 53 }, // + { 210, 2, 18, 2, 46 }, // ? + { 211, 2, 18, 0, 46 }, // + { 212, 2, 18, 0, 53 }, // + { 214, 2, 51, 0, 0 }, // + { 217, 2, 24, 2, 46 }, // ? + { 218, 2, 24, 0, 46 }, // + { 219, 2, 24, 0, 53 }, // ? + { 220, 2, 47, 0, 0 }, // + { 221, 2, 29, 0, 46 }, // + { 223, 0, 45, 0, 0 }, // + { 224, 0, 4, 2, 46 }, // ? + { 225, 0, 4, 0, 46 }, // + { 226, 0, 4, 0, 53 }, // + { 228, 0, 52, 0, 0 }, // + { 232, 0, 8, 2, 46 }, // ? + { 233, 0, 8, 0, 46 }, // + { 234, 0, 8, 0, 53 }, // ? + { 236, 0, 12, 2, 46 }, // ? + { 237, 0, 12, 0, 46 }, // + { 238, 0, 12, 0, 53 }, // + { 242, 0, 18, 2, 46 }, // ? + { 243, 0, 18, 0, 46 }, // + { 244, 0, 18, 0, 53 }, // + { 246, 0, 51, 0, 0 }, // + { 249, 0, 24, 2, 46 }, // ? + { 250, 0, 24, 0, 46 }, // + { 251, 0, 24, 0, 53 }, // ? + { 252, 0, 47, 0, 0 }, // + { 253, 0, 29, 0, 46 }, // + { 8364, 64, 8, 0, 0 }, // + }; + + public static final int LUT[][] = { + // CAPSLOCK, NORMAL , SHIFT , CTRL , ALTGR , SHIFT + ALTGR + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x22 , -1 , -1 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x00a7 , -1 , -1 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x24 , -1 , -1 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , 0x005b , 0x005b } , + /* 7 */ { 0 , (int)'6' , 0x26 , -1 , 0x005d , 0x005d } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , 0x007c , 0x007c } , + /* 9 */ { 0 , (int)'8' , 0x28 , -1 , 0x007b , 0x007b } , + /* 0a */ { 0 , (int)'9' , 0x29 , -1 , 0x007d , 0x007d } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x00df , 0x003f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x00b4 , 0x0060 , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , //euro, same as Windows layout + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 1 , 0x00fc , 0x00dc , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x002b , 0x002a , 0x001d , -1 , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , 0x0040 , -1 } , + /* 27 */ { 1 , 0x00f6 , 0x00d6 , -1 , -1 , -1 } , + /* 28 */ { 1 , 0x00e4 , 0x00c4 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x005e , 0x00b0 , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x23 , 0x27 , 0x001c , -1 , -1 } , + /* 2c */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , 0x007e , 0x007e } , //MAC ~ + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , 0x00b5 , 0x00b5 } , //"micro" - same as Windwos + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , -1 , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x0060, 0x00b4, 0x005e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + + }; + + private static GermanMacLayout instance = new GermanMacLayout(); + + private GermanMacLayout() { + } + + public static GermanMacLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/HebrewLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/HebrewLayout.java new file mode 100644 index 00000000..69b992e8 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/HebrewLayout.java @@ -0,0 +1,275 @@ +package com.inputstick.api.layout; + +public class HebrewLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "he-IL"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //he-IL + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 28, 1, 49, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 52, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 36, 0, 0 }, // & + { 39, 0, 26, 0, 0 }, // ' + { 40, 2, 39, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 37, 0, 0 }, // * + { 43, 2, 46, 0, 0 }, // + + { 44, 0, 52, 0, 0 }, // , + { 45, 0, 45, 0, 0 }, // - + { 46, 0, 56, 0, 0 }, // . + { 47, 0, 20, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 51, 0, 0 }, // : + { 59, 0, 53, 0, 0 }, // ; + { 60, 2, 55, 0, 0 }, // < + { 61, 0, 46, 0, 0 }, // = + { 62, 2, 54, 0, 0 }, // > + { 63, 2, 56, 0, 0 }, // ? + { 64, 2, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 0, 48, 0, 0 }, // [ + { 92, 0, 49, 0, 0 }, // \ + { 93, 0, 47, 0, 0 }, // ] + { 94, 2, 35, 0, 0 }, // ^ + { 95, 2, 45, 0, 0 }, // _ + { 123, 2, 48, 0, 0 }, // { + { 124, 2, 49, 0, 0 }, // | + { 125, 2, 47, 0, 0 }, // } + { 126, 2, 53, 0, 0 }, // ~ + { 1471, 66, 45, 0, 0 }, // ? + { 1488, 0, 23, 0, 0 }, // ? + { 1489, 0, 6, 0, 0 }, // ? + { 1490, 0, 7, 0, 0 }, // ? + { 1491, 0, 22, 0, 0 }, // ? + { 1492, 0, 25, 0, 0 }, // ? + { 1493, 0, 24, 0, 0 }, // ? + { 1494, 0, 29, 0, 0 }, // ? + { 1495, 0, 13, 0, 0 }, // ? + { 1496, 0, 28, 0, 0 }, // ? + { 1497, 0, 11, 0, 0 }, // ? + { 1498, 0, 15, 0, 0 }, // ? + { 1499, 0, 9, 0, 0 }, // ? + { 1500, 0, 14, 0, 0 }, // ? + { 1501, 0, 18, 0, 0 }, // ? + { 1502, 0, 17, 0, 0 }, // ? + { 1503, 0, 12, 0, 0 }, // ? + { 1504, 0, 5, 0, 0 }, // ? + { 1505, 0, 27, 0, 0 }, // ? + { 1506, 0, 10, 0, 0 }, // ? + { 1507, 0, 51, 0, 0 }, // ? + { 1508, 0, 19, 0, 0 }, // ? + { 1509, 0, 55, 0, 0 }, // ? + { 1510, 0, 16, 0, 0 }, // ? + { 1511, 0, 8, 0, 0 }, // ? + { 1512, 0, 21, 0, 0 }, // ? + { 1513, 0, 4, 0, 0 }, // ? + { 1514, 0, 54, 0, 0 }, // ? + { 1520, 66, 24, 0, 0 }, // ? + { 1521, 66, 13, 0, 0 }, // ? + { 1522, 66, 11, 0, 0 }, // ? + { 8206, 64, 32, 0, 0 }, // ? + { 8207, 64, 33, 0, 0 }, // ? + { 8362, 66, 33, 0, 0 }, // ? + { 8364, 66, 8, 0, 0 }, // + }; + + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x0021 , -1 , -1 , -1 } , // TODO SGCap + /* 3 */ { 0 , (int)'2' , 0x0040 , -1 , -1 , -1 } , // TODO SGCap + /* 4 */ { 0 , (int)'3' , 0x0023 , -1 , 0x200e , -1 } , // TODO SGCap + /* 5 */ { 0 , (int)'4' , 0x0024 , -1 , 0x200f , 0x20aa } , // TODO SGCap + /* 6 */ { 0 , (int)'5' , 0x0025 , -1 , -1 , -1 } , // TODO SGCap + /* 7 */ { 0 , (int)'6' , 0x005e , -1 , -1 , -1 } , // TODO SGCap + /* 8 */ { 0 , (int)'7' , 0x0026 , -1 , -1 , -1 } , // TODO SGCap + /* 9 */ { 0 , (int)'8' , 0x002a , -1 , -1 , -1 } , // TODO SGCap + /* 0a */ { 0 , (int)'9' , 0x0029 , -1 , -1 , -1 } , // TODO SGCap + /* 0b */ { 0 , (int)'0' , 0x0028 , -1 , -1 , -1 } , // TODO SGCap + /* 0c */ { 0 , 0x002d , 0x005f , -1 , -1 , 0x05bf } , // TODO SGCap + /* 0d */ { 0 , 0x003d , 0x002b , -1 , -1 , -1 } , // TODO SGCap + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , 0x002f , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , 0x0027 , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , 0x05e7 , (int)'E' , -1 , -1 , 0x20ac } , + /* 13 */ { 1 , 0x05e8 , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , 0x05d0 , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , 0x05d8 , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , 0x05d5 , (int)'U' , -1 , -1 , 0x05f0 } , + /* 17 */ { 1 , 0x05df , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , 0x05dd , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , 0x05e4 , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x005d , 0x007d , 0x200e , -1 , -1 } , // TODO SGCap + /* 1b */ { 0 , 0x005b , 0x007b , 0x200f , -1 , -1 } , // TODO SGCap + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , 0x05e9 , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , 0x05d3 , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , 0x05d2 , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , 0x05db , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , 0x05e2 , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , 0x05d9 , (int)'H' , -1 , -1 , 0x05f2 } , + /* 24 */ { 1 , 0x05d7 , (int)'J' , -1 , -1 , 0x05f1 } , + /* 25 */ { 1 , 0x05dc , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , 0x05da , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 0 , 0x05e3 , 0x003a , -1 , -1 , -1 } , // TODO SGCap + /* 28 */ { 0 , 0x002c , 0x0022 , -1 , -1 , -1 } , // TODO SGCap + /* 29 */ { 0 , 0x003b , 0x007e , -1 , -1 , -1 } , // TODO SGCap + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x005c , 0x007c , 0x001c , -1 , -1 } , // TODO SGCap + /* 2c */ { 1 , 0x05d6 , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , 0x05e1 , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , 0x05d1 , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , 0x05d4 , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , 0x05e0 , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , 0x05de , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , 0x05e6 , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x05ea , 0x003e , -1 , -1 , -1 } , // TODO SGCap + /* 34 */ { 0 , 0x05e5 , 0x003c , -1 , -1 , -1 } , // TODO SGCap + /* 35 */ { 0 , 0x002e , 0x003f , -1 , -1 , -1 } , // TODO SGCap + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x0020 , 0x0020 , 0x0020 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002e , 0x002e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x005c , 0x007c , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = null; + public static final int DEADKEY_LUT[][] = null; + + private static HebrewLayout instance = new HebrewLayout(); + + private HebrewLayout() { + } + + public static HebrewLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/ItalianLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/ItalianLayout.java new file mode 100644 index 00000000..7de9ad6c --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/ItalianLayout.java @@ -0,0 +1,279 @@ +package com.inputstick.api.layout; + +public class ItalianLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "it-IT"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //it-IT + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 64, 52, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 0, 45, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 48, 0, 0 }, // * + { 43, 0, 48, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 51, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 64, 47, 0, 0 }, // [ + { 92, 0, 53, 0, 0 }, // \ + { 93, 64, 48, 0, 0 }, // ] + { 94, 2, 46, 0, 0 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 66, 47, 0, 0 }, // { + { 124, 2, 53, 0, 0 }, // | + { 125, 66, 48, 0, 0 }, // } + { 163, 2, 32, 0, 0 }, // ? + { 167, 2, 49, 0, 0 }, // + { 176, 2, 52, 0, 0 }, // + { 224, 0, 52, 0, 0 }, // ? + { 231, 2, 51, 0, 0 }, // + { 232, 0, 47, 0, 0 }, // ? + { 233, 2, 47, 0, 0 }, // + { 236, 0, 46, 0, 0 }, // ? + { 242, 0, 51, 0, 0 }, // ? + { 249, 0, 49, 0, 0 }, // ? + { 8364, 64, 34, 0, 0 }, // + }; + + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x0021 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x0022 , -1 , -1 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x00a3 , -1 , -1 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x0024 , -1 , -1 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x0025 , -1 , 0x20ac , -1 } , + /* 7 */ { 0 , (int)'6' , 0x0026 , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , -1 , -1 } , + /* 9 */ { 0 , (int)'8' , 0x0028 , -1 , -1 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x0029 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x0027 , 0x003f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x00ec , 0x005e , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x00e8 , 0x00e9 , 0x001b , 0x005b , 0x007b } , + /* 1b */ { 0 , 0x002b , 0x002a , 0x001d , 0x005d , 0x007d } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 0 , 0x00f2 , 0x00e7 , -1 , 0x0040 , -1 } , + /* 28 */ { 0 , 0x00e0 , 0x00b0 , -1 , 0x0023 , -1 } , + /* 29 */ { 0 , 0x005c , 0x007c , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x00f9 , 0x00a7 , 0x001c , -1 , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x0020 , 0x0020 , 0x0020 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002e , 0x002e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = null; + public static final int DEADKEY_LUT[][] = null; + + private static ItalianLayout instance = new ItalianLayout(); + + private ItalianLayout() { + } + + public static ItalianLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/KeyboardLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/KeyboardLayout.java new file mode 100644 index 00000000..e418cf9e --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/KeyboardLayout.java @@ -0,0 +1,432 @@ +package com.inputstick.api.layout; + +import com.inputstick.api.ConnectionManager; +import com.inputstick.api.basic.InputStickHID; +import com.inputstick.api.basic.InputStickKeyboard; +import com.inputstick.api.hid.HIDKeycodes; +import com.inputstick.api.hid.HIDTransaction; +import com.inputstick.api.hid.KeyboardReport; + +public abstract class KeyboardLayout { + + public static final int MAX_SCANCODE = 0x60; + + public static final byte[] scanCodeToHID = { + /* 0x00 */ 0, + /* 0x01 */ HIDKeycodes.KEY_ESCAPE, + /* 0x02 */ HIDKeycodes.KEY_1, + /* 0x03 */ HIDKeycodes.KEY_2, + /* 0x04 */ HIDKeycodes.KEY_3, + /* 0x05 */ HIDKeycodes.KEY_4, + /* 0x06 */ HIDKeycodes.KEY_5, + /* 0x07 */ HIDKeycodes.KEY_6, + /* 0x08 */ HIDKeycodes.KEY_7, + /* 0x09 */ HIDKeycodes.KEY_8, + /* 0x0a */ HIDKeycodes.KEY_9, + /* 0x0b */ HIDKeycodes.KEY_0, + /* 0x0c */ HIDKeycodes.KEY_MINUS, + /* 0x0d */ HIDKeycodes.KEY_EQUALS, + /* 0x0e */ HIDKeycodes.KEY_BACKSPACE, + /* 0x0f */ HIDKeycodes.KEY_TAB, + + + /* 0x10 */ HIDKeycodes.KEY_Q, + /* 0x11 */ HIDKeycodes.KEY_W, + /* 0x12 */ HIDKeycodes.KEY_E, + /* 0x13 */ HIDKeycodes.KEY_R, + /* 0x14 */ HIDKeycodes.KEY_T, + /* 0x15 */ HIDKeycodes.KEY_Y, + /* 0x16 */ HIDKeycodes.KEY_U, + /* 0x17 */ HIDKeycodes.KEY_I, + /* 0x18 */ HIDKeycodes.KEY_O, + /* 0x19 */ HIDKeycodes.KEY_P, + /* 0x1a */ HIDKeycodes.KEY_LEFT_BRACKET, + /* 0x1b */ HIDKeycodes.KEY_RIGHT_BRACKET, + /* 0x1c */ HIDKeycodes.KEY_ENTER, + /* 0x1d */ 0, //RL CTRL + /* 0x1e */ HIDKeycodes.KEY_A, + /* 0x1f */ HIDKeycodes.KEY_S, + + /* 0x20 */ HIDKeycodes.KEY_D, + /* 0x21 */ HIDKeycodes.KEY_F, + /* 0x22 */ HIDKeycodes.KEY_G, + /* 0x23 */ HIDKeycodes.KEY_H, + /* 0x24 */ HIDKeycodes.KEY_J, + /* 0x25 */ HIDKeycodes.KEY_K, + /* 0x26 */ HIDKeycodes.KEY_L, + /* 0x27 */ HIDKeycodes.KEY_SEMICOLON, + /* 0x28 */ HIDKeycodes.KEY_APOSTROPHE, + /* 0x29 */ HIDKeycodes.KEY_GRAVE, + /* 0x2a */ 0, //L SHIFT + /* 0x2b */ HIDKeycodes.KEY_BACKSLASH, + /* 0x2c */ HIDKeycodes.KEY_Z, + /* 0x2d */ HIDKeycodes.KEY_X, + /* 0x2e */ HIDKeycodes.KEY_C, + /* 0x2f */ HIDKeycodes.KEY_V, + + /* 0x30 */ HIDKeycodes.KEY_B, + /* 0x31 */ HIDKeycodes.KEY_N, + /* 0x32 */ HIDKeycodes.KEY_M, + /* 0x33 */ HIDKeycodes.KEY_COMA, + /* 0x34 */ HIDKeycodes.KEY_DOT, + /* 0x35 */ HIDKeycodes.KEY_SLASH, + /* 0x36 */ 0, //R SHIFT + /* 0x37 */ HIDKeycodes.KEY_PRINT_SCREEN, + /* 0x38 */ 0, //RL ALT + /* 0x39 */ HIDKeycodes.KEY_SPACEBAR, + /* 0x3a */ HIDKeycodes.KEY_CAPS_LOCK, + /* 0x3b */ HIDKeycodes.KEY_F1, + /* 0x3c */ HIDKeycodes.KEY_F2, + /* 0x3d */ HIDKeycodes.KEY_F3, + /* 0x3e */ HIDKeycodes.KEY_F4, + /* 0x3f */ HIDKeycodes.KEY_F5, + + /* 0x40 */ HIDKeycodes.KEY_F6, + /* 0x41 */ HIDKeycodes.KEY_F7, + /* 0x42 */ HIDKeycodes.KEY_F8, + /* 0x43 */ HIDKeycodes.KEY_F9, + /* 0x44 */ HIDKeycodes.KEY_F10, + /* 0x45 */ HIDKeycodes.KEY_NUM_LOCK, + /* 0x46 */ HIDKeycodes.KEY_SCROLL_LOCK, + /* 0x47 */ HIDKeycodes.KEY_HOME, + /* 0x48 */ HIDKeycodes.KEY_ARROW_UP, + /* 0x49 */ HIDKeycodes.KEY_PAGE_UP, + /* 0x4a */ 0, //- + /* 0x4b */ HIDKeycodes.KEY_ARROW_LEFT, + /* 0x4c */ 0, //CENTER + /* 0x4d */ HIDKeycodes.KEY_ARROW_RIGHT, + /* 0x4e */ 0, //+ + /* 0x4f */ HIDKeycodes.KEY_END, + + /* 0x50 */ HIDKeycodes.KEY_ARROW_DOWN, + /* 0x51 */ HIDKeycodes.KEY_PAGE_DOWN, + /* 0x52 */ HIDKeycodes.KEY_INSERT, + /* 0x53 */ HIDKeycodes.KEY_DELETE, + /* 0x54 */ 0, + /* 0x55 */ 0, + /* 0x56 */ HIDKeycodes.KEY_BACKSLASH_NON_US, //GERMAN LAYOUT! + /* 0x57 */ HIDKeycodes.KEY_F11, + /* 0x58 */ HIDKeycodes.KEY_F12, + /* 0x59 */ 0, + /* 0x5a */ 0, + /* 0x5b */ 0, + /* 0x5c */ 0, + /* 0x5d */ 0, + /* 0x5e */ 0, + /* 0x5f */ 0, + + }; + + public static final int LAYOUT_CODE = 0; + + public abstract int[][] getLUT(); + public abstract int[][] getFastLUT(); + public abstract int[][] getDeadkeyLUT(); + public abstract int[] getDeadkeys(); + public abstract String getLocaleName(); + + /* + * Type text using InputStick. Assumes that USB host uses matching keyboard layout. + * + * @param text text to type + */ + public abstract void type(String text); + + + /* + * Type text using InputStick. Assumes that USB host uses matching keyboard layout. + * Note: use only if you are certain that specified modifier keys will not cause any side effects during typing. + * + * @param text text to type + * @param modifiers state of keyboard modifier keys (CTRL_LEFT .. GUI_RIGHT, see HIDKeycodes) + */ + public abstract void type(String text, byte modifiers); + + public abstract char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr); + + public void type(int[][] fastLUT, String text, byte modifiers) { + if (InputStickHID.getState() == ConnectionManager.STATE_READY) { + char[] chars = text.toCharArray(); + HIDTransaction t; + for (char c : chars) { + if (c == '\n') { + InputStickKeyboard.pressAndRelease(HIDKeycodes.NONE, HIDKeycodes.KEY_ENTER); + } else if (c == '\t') { + InputStickKeyboard.pressAndRelease(HIDKeycodes.NONE, HIDKeycodes.KEY_TAB); + } else { + t = getHIDTransaction(fastLUT, c, modifiers); + if (t != null) { + InputStickHID.addKeyboardTransaction(t); + } + } + } + } + } + + /*public void type(int[][] lut, int[][] deadkeyLUT, int[] deadkeys, String text, byte modifiers) { + if (InputStickHID.getState() == ConnectionManager.STATE_READY) { + char[] chars = text.toCharArray(); + HIDTransaction t; + for (char c : chars) { + if (c == '\n') { + InputStickKeyboard.pressAndRelease(HIDKeycodes.NONE, HIDKeycodes.KEY_ENTER); + } else if (c == '\t') { + InputStickKeyboard.pressAndRelease(HIDKeycodes.NONE, HIDKeycodes.KEY_TAB); + } else { + t = getHIDTransaction(lut, deadkeyLUT, deadkeys, c, modifiers); + if (t != null) { + InputStickHID.addKeyboardTransaction(t); + } + } + } + } + } */ + + public static int hidToScanCode(byte key) { + for (int scanCode = 0; scanCode < MAX_SCANCODE; scanCode++) { + if (scanCodeToHID[scanCode] == key) { + return scanCode; + } + } + return -1; + } + + public static char getChar(int[][] lut, int scanCode, boolean capsLock, boolean shift, boolean altGr) { + if ((scanCode >= MAX_SCANCODE) || (scanCode < 0)) { + return (char)0; + } + + int index = 1; + + if ((capsLock) && (lut[scanCode][0] > 0)) { + //capslock is on and it affects current key + if (lut[scanCode][0] == 1) { + if (shift) { + index = 1; //caps + shift = default + } else { + index = 2; //shift + } + } else { + // >1 + if (shift) { + if (altGr) { + index = 4; //caps + shift + alt = alt + } else { + index = 1; //caps + shift = default + } + } else { + if (altGr) { + index = 5; //caps + alt = shift + alt + } else { + index = 2; //caps = shift + } + } + } + } else { + if (shift) { + index = 2; + } + if (altGr) { + if (shift) { + index = 5; + } else { + index = 4; + } + } + } + + if (lut[scanCode][index] == -1) { + index = 1; + } + return (char)lut[scanCode][index]; + } + + public static int getScanCode(int[][] lut, char c) { + for (int scanCode = 0; scanCode < MAX_SCANCODE; scanCode++) { + if (lut[scanCode][0] == -1) { + continue; + } else { + for (int i = 1; i < 6; i++) { + if (lut[scanCode][i] == (int)c) { + return scanCode; + } + } + } + } + return -1; + } + + public static byte getKey(int scanCode) { + return scanCodeToHID[scanCode]; + } + + public static byte getModifiers(int[][] lut, int scanCode, char c) { + if (lut[scanCode][1] == (int)c) { + return 0; + } + if (lut[scanCode][2] == (int)c) { + return HIDKeycodes.SHIFT_LEFT; + } + if (lut[scanCode][3] == (int)c) { + return HIDKeycodes.CTRL_LEFT; + } + if (lut[scanCode][4] == (int)c) { + return HIDKeycodes.ALT_RIGHT; + } + if (lut[scanCode][5] == (int)c) { + return HIDKeycodes.SHIFT_LEFT | HIDKeycodes.ALT_RIGHT; + } + + return 0; + } + + + public static boolean isDeadkey(int[] deadkeys, char c) { + if (deadkeys != null) { + for (int key : deadkeys) { + if (key == (int)c) { + return true; + } + } + } + return false; + } + + public static int searchLUT(int[][] deadkeyLUT, char c, int returnIndex) { + if (deadkeyLUT != null) { + for (int i = 0; i < deadkeyLUT.length; i++) { + if (deadkeyLUT[i][2] == (int)c) { + return deadkeyLUT[i][returnIndex]; + } + } + } + return -1; + } + + public static int findDeadKey(int[][] deadkeyLUT, char c) { + return searchLUT(deadkeyLUT, c, 0); + } + + public static int findFollowingKey(int[][] deadkeyLUT, char c) { + return searchLUT(deadkeyLUT, c, 1); + } + + public static HIDTransaction getHIDTransaction(int[][] fastLUT, char c, byte additionalModifierKeys) { + byte modifiers, key, deadKey, deadKeyModifiers; + HIDTransaction t = new HIDTransaction(); + + for (int i = 0; i < fastLUT.length; i++) { + if (fastLUT[i][0] == c) { + modifiers = (byte)fastLUT[i][1]; + key = (byte)fastLUT[i][2]; + deadKeyModifiers = (byte)fastLUT[i][3]; + deadKey = (byte)fastLUT[i][4]; + + if (deadKey > 0) { + t.addReport(new KeyboardReport(deadKeyModifiers, (byte)0)); + t.addReport(new KeyboardReport(deadKeyModifiers, deadKey)); + t.addReport(new KeyboardReport()); + } + t.addReport(new KeyboardReport(modifiers, (byte)0)); + t.addReport(new KeyboardReport(modifiers, key)); + t.addReport(new KeyboardReport()); + } + } + return t; + } + + public static HIDTransaction getHIDTransaction(int[][] lut, int[][] deadkeyLUT, int[] deadkeys, char c, byte additionalModifierKeys) { + byte modifiers, key; + int scanCode; + + HIDTransaction t = new HIDTransaction(); + scanCode = getScanCode(lut, c); + if (scanCode > 0) { + key = getKey(scanCode); + modifiers = getModifiers(lut, scanCode, c); + modifiers |= additionalModifierKeys; + + t.addReport(new KeyboardReport(modifiers, (byte)0)); + t.addReport(new KeyboardReport(modifiers, key)); + t.addReport(new KeyboardReport()); + + //add space after deadkey! + if (isDeadkey(deadkeys, c)) { + t.addReport(new KeyboardReport((byte)0, HIDKeycodes.KEY_SPACEBAR)); //this won't work if modifiers are present! + t.addReport(new KeyboardReport()); + } + + } else { + //check if character can be obtained using deadkey: + int deadkey = findDeadKey(deadkeyLUT, c); + if (deadkey > 0) { + //yes it can + int following = findFollowingKey(deadkeyLUT, c); + + scanCode = getScanCode(lut, (char)deadkey); + key = getKey(scanCode); + modifiers = getModifiers(lut, scanCode, (char)deadkey); + t.addReport(new KeyboardReport(modifiers, (byte)0)); + t.addReport(new KeyboardReport(modifiers, key)); + t.addReport(new KeyboardReport()); + + scanCode = getScanCode(lut, (char)following); + key = getKey(scanCode); + modifiers = getModifiers(lut, scanCode, (char)following); + t.addReport(new KeyboardReport(modifiers, (byte)0)); + t.addReport(new KeyboardReport(modifiers, key)); + t.addReport(new KeyboardReport()); + } + + } + return t; + } + + //returns layout sepcified by locale (example: "de-DE"). If specified layout is not available, en=US will be returned. + public static KeyboardLayout getLayout(String locale) { + if (locale != null) { + if (locale.equalsIgnoreCase(UnitedStatesLayout.LOCALE_NAME)) { + return UnitedStatesLayout.getInstance(); + } else if (locale.equalsIgnoreCase(PolishLayout.LOCALE_NAME)) { + return PolishLayout.getInstance(); + } else if (locale.equalsIgnoreCase(RussianLayout.LOCALE_NAME)) { + return RussianLayout.getInstance(); + } else if (locale.equalsIgnoreCase(GermanLayout.LOCALE_NAME)) { + return GermanLayout.getInstance(); + } else if (locale.equalsIgnoreCase(SlovakLayout.LOCALE_NAME)) { + return SlovakLayout.getInstance(); + } else if (locale.equalsIgnoreCase(PortugueseBrazilianLayout.LOCALE_NAME)) { + return PortugueseBrazilianLayout.getInstance(); + } else if (locale.equalsIgnoreCase(DvorakLayout.LOCALE_NAME)) { + return DvorakLayout.getInstance(); + } else if (locale.equalsIgnoreCase(NorwegianLayout.LOCALE_NAME)) { + return NorwegianLayout.getInstance(); + } else if (locale.equalsIgnoreCase(SwedishLayout.LOCALE_NAME)) { + return SwedishLayout.getInstance(); + } else if (locale.equalsIgnoreCase(FrenchLayout.LOCALE_NAME)) { + return FrenchLayout.getInstance(); + } else if (locale.equalsIgnoreCase(SpanishLayout.LOCALE_NAME)) { + return SpanishLayout.getInstance(); + } else if (locale.equalsIgnoreCase(UnitedKingdomLayout.LOCALE_NAME)) { + return UnitedKingdomLayout.getInstance(); + } else if (locale.equalsIgnoreCase(GermanMacLayout.LOCALE_NAME)) { + return GermanMacLayout.getInstance(); // TODO + } else if (locale.equalsIgnoreCase(ItalianLayout.LOCALE_NAME)) { + return ItalianLayout.getInstance(); + } else if (locale.equalsIgnoreCase(FinnishLayout.LOCALE_NAME)) { + return FinnishLayout.getInstance(); + } else if (locale.equalsIgnoreCase(SwissFrenchLayout.LOCALE_NAME)) { + return SwissFrenchLayout.getInstance(); + } else if (locale.equalsIgnoreCase(SwissGermanLayout.LOCALE_NAME)) { + return SwissGermanLayout.getInstance(); + } else if (locale.equalsIgnoreCase(HebrewLayout.LOCALE_NAME)) { + return HebrewLayout.getInstance(); + } else if (locale.equalsIgnoreCase(DanishLayout.LOCALE_NAME)) { + return DanishLayout.getInstance(); + } + } + + return UnitedStatesLayout.getInstance(); + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/NorwegianLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/NorwegianLayout.java new file mode 100644 index 00000000..109ddfe0 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/NorwegianLayout.java @@ -0,0 +1,392 @@ +package com.inputstick.api.layout; + +public class NorwegianLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "nb-NO"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //nb-NO + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 53, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 36, 64, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 0, 49, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 49, 0, 0 }, // * + { 43, 0, 45, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 64, 37, 0, 0 }, // [ + { 92, 0, 46, 0, 0 }, // \ + { 93, 64, 38, 0, 0 }, // ] + { 94, 0, 44, 2, 48 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 2, 46 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 64, 36, 0, 0 }, // { + { 124, 0, 53, 0, 0 }, // | + { 125, 64, 39, 0, 0 }, // } + { 126, 0, 44, 64, 48 }, // ~ + { 163, 64, 32, 0, 0 }, // ? + { 164, 2, 33, 0, 0 }, // ¤ + { 167, 2, 53, 0, 0 }, // § + { 168, 0, 44, 0, 48 }, // ¨ + { 180, 0, 44, 64, 46 }, // ´ + { 181, 64, 16, 0, 0 }, // µ + { 192, 2, 4, 2, 46 }, // ? + { 193, 2, 4, 64, 46 }, // Á + { 194, 2, 4, 2, 48 }, // Â + { 195, 2, 4, 64, 48 }, // ? + { 196, 2, 4, 0, 48 }, // Ä + { 197, 2, 47, 0, 0 }, // ? + { 198, 2, 52, 0, 0 }, // ? + { 200, 2, 8, 2, 46 }, // ? + { 201, 2, 8, 64, 46 }, // É + { 202, 2, 8, 2, 48 }, // ? + { 203, 2, 8, 0, 48 }, // Ë + { 204, 2, 12, 2, 46 }, // ? + { 205, 2, 12, 64, 46 }, // Í + { 206, 2, 12, 2, 48 }, // Î + { 207, 2, 12, 0, 48 }, // ? + { 209, 2, 17, 64, 48 }, // ? + { 210, 2, 18, 2, 46 }, // ? + { 211, 2, 18, 64, 46 }, // Ó + { 212, 2, 18, 2, 48 }, // Ô + { 213, 2, 18, 64, 48 }, // ? + { 214, 2, 18, 0, 48 }, // Ö + { 216, 2, 51, 0, 0 }, // ? + { 217, 2, 24, 2, 46 }, // ? + { 218, 2, 24, 64, 46 }, // Ú + { 219, 2, 24, 2, 48 }, // ? + { 220, 2, 24, 0, 48 }, // Ü + { 221, 2, 28, 64, 46 }, // Ý + { 224, 0, 4, 2, 46 }, // ? + { 225, 0, 4, 64, 46 }, // á + { 226, 0, 4, 2, 48 }, // â + { 227, 0, 4, 64, 48 }, // ? + { 228, 0, 4, 0, 48 }, // ä + { 229, 0, 47, 0, 0 }, // ? + { 230, 0, 52, 0, 0 }, // ? + { 232, 0, 8, 2, 46 }, // ? + { 233, 0, 8, 64, 46 }, // é + { 234, 0, 8, 2, 48 }, // ? + { 235, 0, 8, 0, 48 }, // ë + { 236, 0, 12, 2, 46 }, // ? + { 237, 0, 12, 64, 46 }, // í + { 238, 0, 12, 2, 48 }, // î + { 239, 0, 12, 0, 48 }, // ? + { 241, 0, 17, 64, 48 }, // ? + { 242, 0, 18, 2, 46 }, // ? + { 243, 0, 18, 64, 46 }, // ó + { 244, 0, 18, 2, 48 }, // ô + { 245, 0, 18, 64, 48 }, // ? + { 246, 0, 18, 0, 48 }, // ö + { 248, 0, 51, 0, 0 }, // ? + { 249, 0, 24, 2, 46 }, // ? + { 250, 0, 24, 64, 46 }, // ú + { 251, 0, 24, 2, 48 }, // ? + { 252, 0, 24, 0, 48 }, // ü + { 253, 0, 28, 64, 46 }, // ý + { 255, 0, 28, 0, 48 }, // ? + { 8364, 64, 34, 0, 0 }, // € + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x22 , -1 , 0x40 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x23 , -1 , 0x00a3 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x00a4 , -1 , 0x24 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , 0x20ac , -1 } , + /* 7 */ { 0 , (int)'6' , 0x26 , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , 0x007b , -1 } , + /* 9 */ { 0 , (int)'8' , 0x28 , -1 , 0x005b , -1 } , + /* 0a */ { 0 , (int)'9' , 0x29 , -1 , 0x005d , -1 } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , 0x007d , -1 } , + /* 0c */ { 0 , 0x002b , 0x003f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x005c , 0x0060 , -1 , 0x00b4 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 1 , 0x00e5 , 0x00c5 , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x00a8 , 0x005e , 0x001d , 0x007e , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 1 , 0x00f8 , 0x00d8 , -1 , -1 , -1 } , + /* 28 */ { 1 , 0x00e6 , 0x00c6 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x007c , 0x00a7 , 0x001c , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x27 , 0x002a , -1 , -1 , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , 0x00b5 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x0060, 0x00b4, 0x00a8, 0x005e, 0x007e + }; + + //0x0060 => 0061 00e0 // a -> à + public static final int DEADKEY_LUT[][] = { + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x00a8 , 0x0061 , 0x00e4 } , + { 0x00a8 , 0x0065 , 0x00eb } , + { 0x00a8 , 0x0075 , 0x00fc } , + { 0x00a8 , 0x0069 , 0x00ef } , + { 0x00a8 , 0x0079 , 0x00ff } , + { 0x00a8 , 0x006f , 0x00f6 } , + { 0x00a8 , 0x0041 , 0x00c4 } , + { 0x00a8 , 0x0045 , 0x00cb } , + { 0x00a8 , 0x0055 , 0x00dc } , + { 0x00a8 , 0x0049 , 0x00cf } , + { 0x00a8 , 0x004f , 0x00d6 } , + { 0x00a8 , 0x0020 , 0x00a8 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + { 0x007e , 0x006e , 0x00f1 } , + { 0x007e , 0x0061 , 0x00e3 } , + { 0x007e , 0x006f , 0x00f5 } , + { 0x007e , 0x004e , 0x00d1 } , + { 0x007e , 0x0041 , 0x00c3 } , + { 0x007e , 0x004f , 0x00d5 } , + { 0x007e , 0x0020 , 0x007e } , + }; + + + + private static NorwegianLayout instance = new NorwegianLayout(); + + private NorwegianLayout() { + } + + public static NorwegianLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} + diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/PolishLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/PolishLayout.java new file mode 100644 index 00000000..d7b9a223 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/PolishLayout.java @@ -0,0 +1,312 @@ +package com.inputstick.api.layout; + + +public class PolishLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "pl-PL"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //pl-PL + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 52, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 36, 0, 0 }, // & + { 39, 0, 52, 0, 0 }, // ' + { 40, 2, 38, 0, 0 }, // ( + { 41, 2, 39, 0, 0 }, // ) + { 42, 2, 37, 0, 0 }, // * + { 43, 2, 46, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 45, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 0, 56, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 51, 0, 0 }, // : + { 59, 0, 51, 0, 0 }, // ; + { 60, 2, 54, 0, 0 }, // < + { 61, 0, 46, 0, 0 }, // = + { 62, 2, 55, 0, 0 }, // > + { 63, 2, 56, 0, 0 }, // ? + { 64, 2, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 0, 47, 0, 0 }, // [ + { 92, 0, 49, 0, 0 }, // \ + { 93, 0, 48, 0, 0 }, // ] + { 94, 2, 35, 0, 0 }, // ^ + { 95, 2, 45, 0, 0 }, // _ + { 96, 0, 53, 0, 0 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 2, 47, 0, 0 }, // { + { 124, 2, 49, 0, 0 }, // | + { 125, 2, 48, 0, 0 }, // } + { 126, 0, 44, 2, 53 }, // ~ + { 211, 66, 18, 0, 0 }, // + { 243, 64, 18, 0, 0 }, // + { 260, 66, 4, 0, 0 }, // + { 261, 64, 4, 0, 0 }, // + { 262, 66, 6, 0, 0 }, // + { 263, 64, 6, 0, 0 }, // + { 280, 66, 8, 0, 0 }, // + { 281, 64, 8, 0, 0 }, // + { 321, 66, 15, 0, 0 }, // + { 322, 64, 15, 0, 0 }, // + { 323, 66, 17, 0, 0 }, // + { 324, 64, 17, 0, 0 }, // + { 346, 66, 22, 0, 0 }, // + { 347, 64, 22, 0, 0 }, // + { 377, 66, 27, 0, 0 }, // + { 378, 64, 27, 0, 0 }, // + { 379, 66, 29, 0, 0 }, // + { 380, 64, 29, 0, 0 }, // + { 8364, 64, 24, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x40 , -1 , -1 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x23 , -1 , -1 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x24 , -1 , -1 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , -1 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x005e , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x26 , -1 , -1 , -1 } , + /* 9 */ { 0 , (int)'8' , 0x002a , -1 , -1 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x28 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x29 , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x003d , 0x002b , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 5 , (int)'e' , (int)'E' , -1 , 0x119 , 0x118 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , 0x20ac , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 5 , (int)'o' , (int)'O' , -1 , 0x00f3 , 0x00d3 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x005b , 0x007b , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x005d , 0x007d , 0x001d , -1 , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 5 , (int)'a' , (int)'A' , -1 , 0x105 , 0x104 } , + /* 1f */ { 5 , (int)'s' , (int)'S' , -1 , 0x015b , 0x015a } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 5 , (int)'l' , (int)'L' , -1 , 0x142 , 0x141 } , + /* 27 */ { 0 , 0x003b , 0x003a , 0x001d , -1 , -1 } , + /* 28 */ { 0 , 0x27 , 0x22 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x60 , 0x007e , -1 , -1 , -1 } , //@ + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x005c , 0x007c , 0x001c , -1 , -1 } , + /* 2c */ { 5 , (int)'z' , (int)'Z' , -1 , 0x017c , 0x017b } , + /* 2d */ { 5 , (int)'x' , (int)'X' , -1 , 0x017a , 0x179 } , + /* 2e */ { 5 , (int)'c' , (int)'C' , -1 , 0x107 , 0x106 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 5 , (int)'n' , (int)'N' , -1 , 0x144 , 0x143 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003c , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003e , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002f , 0x003f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x005c , 0x007c , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + }; + + public static final int DEADKEYS[] = { + 0x007e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x007e , 0x006e , 0x0144 } , + { 0x007e , 0x0063 , 0x0107 } , + { 0x007e , 0x0078 , 0x017a } , + { 0x007e , 0x007a , 0x017c } , + { 0x007e , 0x0061 , 0x0105 } , + { 0x007e , 0x0073 , 0x015b } , + { 0x007e , 0x006c , 0x0142 } , + { 0x007e , 0x0065 , 0x0119 } , + { 0x007e , 0x006f , 0x00f3 } , + { 0x007e , 0x004e , 0x0143 } , + { 0x007e , 0x0043 , 0x0106 } , + { 0x007e , 0x0058 , 0x0179 } , + { 0x007e , 0x005a , 0x017b } , + { 0x007e , 0x0041 , 0x0104 } , + { 0x007e , 0x0053 , 0x015a } , + { 0x007e , 0x004c , 0x0141 } , + { 0x007e , 0x0045 , 0x0118 } , + { 0x007e , 0x004f , 0x00d3 } , + { 0x007e , 0x0020 , 0x007e } , + }; + + private static PolishLayout instance = new PolishLayout(); + + private PolishLayout() { + } + + public static PolishLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/PortugueseBrazilianLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/PortugueseBrazilianLayout.java new file mode 100644 index 00000000..953ce76a --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/PortugueseBrazilianLayout.java @@ -0,0 +1,399 @@ +package com.inputstick.api.layout; + +public class PortugueseBrazilianLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "pt-BR"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //pt-BR + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 48, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 51, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 53, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 36, 0, 0 }, // & + { 39, 0, 53, 0, 0 }, // ' + { 40, 2, 38, 0, 0 }, // ( + { 41, 2, 39, 0, 0 }, // ) + { 42, 2, 37, 0, 0 }, // * + { 43, 2, 46, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 45, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 64, 20, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 56, 0, 0 }, // : + { 59, 0, 56, 0, 0 }, // ; + { 60, 2, 54, 0, 0 }, // < + { 61, 0, 46, 0, 0 }, // = + { 62, 2, 55, 0, 0 }, // > + { 63, 64, 26, 0, 0 }, // ? + { 64, 2, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 0, 48, 0, 0 }, // [ + { 92, 0, 100, 0, 0 }, // \ + { 93, 0, 49, 0, 0 }, // ] + { 94, 0, 44, 2, 52 }, // ^ + { 95, 2, 45, 0, 0 }, // _ + { 96, 0, 44, 2, 47 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 2, 48, 0, 0 }, // { + { 124, 2, 100, 0, 0 }, // | + { 125, 2, 49, 0, 0 }, // } + { 126, 0, 44, 0, 52 }, // ~ + { 162, 64, 34, 0, 0 }, // ? + { 163, 64, 33, 0, 0 }, // ? + { 167, 64, 46, 0, 0 }, // + { 168, 0, 44, 2, 35 }, // + { 170, 64, 48, 0, 0 }, // ? + { 172, 64, 35, 0, 0 }, // + { 176, 64, 8, 0, 0 }, // + { 178, 64, 31, 0, 0 }, // ? + { 179, 64, 32, 0, 0 }, // ? + { 180, 0, 44, 0, 47 }, // + { 185, 64, 30, 0, 0 }, // ? + { 186, 64, 49, 0, 0 }, // ? + { 192, 2, 4, 2, 47 }, // ? + { 193, 2, 4, 0, 47 }, // + { 194, 2, 4, 2, 52 }, // + { 195, 2, 4, 0, 52 }, // ? + { 196, 2, 4, 2, 35 }, // + { 199, 2, 51, 0, 0 }, // + { 200, 2, 8, 2, 47 }, // ? + { 201, 2, 8, 0, 47 }, // + { 202, 2, 8, 2, 52 }, // ? + { 203, 2, 8, 2, 35 }, // + { 204, 2, 12, 2, 47 }, // ? + { 205, 2, 12, 0, 47 }, // + { 206, 2, 12, 2, 52 }, // + { 207, 2, 12, 2, 35 }, // ? + { 209, 2, 17, 0, 52 }, // ? + { 210, 2, 18, 2, 47 }, // ? + { 211, 2, 18, 0, 47 }, // + { 212, 2, 18, 2, 52 }, // + { 213, 2, 18, 0, 52 }, // ? + { 214, 2, 18, 2, 35 }, // + { 217, 2, 24, 2, 47 }, // ? + { 218, 2, 24, 0, 47 }, // + { 219, 2, 24, 2, 52 }, // ? + { 220, 2, 24, 2, 35 }, // + { 221, 2, 28, 0, 47 }, // + { 224, 0, 4, 2, 47 }, // ? + { 225, 0, 4, 0, 47 }, // + { 226, 0, 4, 2, 52 }, // + { 227, 0, 4, 0, 52 }, // ? + { 228, 0, 4, 2, 35 }, // + { 231, 0, 51, 0, 0 }, // + { 232, 0, 8, 2, 47 }, // ? + { 233, 0, 8, 0, 47 }, // + { 234, 0, 8, 2, 52 }, // ? + { 235, 0, 8, 2, 35 }, // + { 236, 0, 12, 2, 47 }, // ? + { 237, 0, 12, 0, 47 }, // + { 238, 0, 12, 2, 52 }, // + { 239, 0, 12, 2, 35 }, // ? + { 241, 0, 17, 0, 52 }, // ? + { 242, 0, 18, 2, 47 }, // ? + { 243, 0, 18, 0, 47 }, // + { 244, 0, 18, 2, 52 }, // + { 245, 0, 18, 0, 52 }, // ? + { 246, 0, 18, 2, 35 }, // + { 249, 0, 24, 2, 47 }, // ? + { 250, 0, 24, 0, 47 }, // + { 251, 0, 24, 2, 52 }, // ? + { 252, 0, 24, 2, 35 }, // + { 253, 0, 28, 0, 47 }, // + { 255, 0, 28, 2, 35 }, // ? + { 8354, 64, 6, 0, 0 }, // ? + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , 0x00b9 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x40 , -1 , 0x00b2 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x23 , -1 , 0x00b3 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x24 , -1 , 0x00a3 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , 0x00a2 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x00a8 , -1 , 0x00ac , -1 } , + /* 8 */ { 0 , (int)'7' , 0x26 , -1 , -1 , -1 } , + /* 9 */ { 0 , (int)'8' , 0x002a , -1 , -1 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x28 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x29 , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x003d , 0x002b , -1 , 0x00a7 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , 0x002f , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , 0x003f , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x00b0 , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x00b4 , 0x0060 , -1 , -1 , -1 } , + /* 1b */ { 0 , 0x005b , 0x007b , 0x001b , 0x00aa , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 1 , 0x00e7 , 0x00c7 , 0x001d , -1 , -1 } , + /* 28 */ { 0 , 0x007e , 0x005e , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x27 , 0x22 , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x005d , 0x007d , 0x001c , 0x00ba , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , 0x20a2 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003c , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003e , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x003b , 0x003a , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x005c , 0x007c , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + /* 73 */ /*{ 0 , 002f , 003f , -1 , 00b0 , -1 } ,*/ + /* 7e */ /*{ 0 , 002e , 002e , -1 , -1 , -1 } ,*/ + + + + + }; + + public static final int DEADKEYS[] = { + 0x00a8, 0x00b4, 0x0060, 0x007e, 0x005e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x00a8 , 0x0061 , 0x00e4 } , + { 0x00a8 , 0x0065 , 0x00eb } , + { 0x00a8 , 0x0075 , 0x00fc } , + { 0x00a8 , 0x0069 , 0x00ef } , + { 0x00a8 , 0x0079 , 0x00ff } , + { 0x00a8 , 0x006f , 0x00f6 } , + { 0x00a8 , 0x0041 , 0x00c4 } , + { 0x00a8 , 0x0045 , 0x00cb } , + { 0x00a8 , 0x0055 , 0x00dc } , + { 0x00a8 , 0x0049 , 0x00cf } , + { 0x00a8 , 0x004f , 0x00d6 } , + { 0x00a8 , 0x0020 , 0x00a8 } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x007e , 0x006e , 0x00f1 } , + { 0x007e , 0x0061 , 0x00e3 } , + { 0x007e , 0x006f , 0x00f5 } , + { 0x007e , 0x004e , 0x00d1 } , + { 0x007e , 0x0041 , 0x00c3 } , + { 0x007e , 0x004f , 0x00d5 } , + { 0x007e , 0x0020 , 0x007e } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + + }; + + private static PortugueseBrazilianLayout instance = new PortugueseBrazilianLayout(); + + private PortugueseBrazilianLayout() { + } + + public static PortugueseBrazilianLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/RussianLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/RussianLayout.java new file mode 100644 index 00000000..0c2c7d0c --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/RussianLayout.java @@ -0,0 +1,269 @@ +package com.inputstick.api.layout; + +public class RussianLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "ru-RU"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //ru-RU + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 28, 1, 49, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 37, 2, 34, 0, 0 }, // % + { 40, 2, 38, 0, 0 }, // ( + { 41, 2, 39, 0, 0 }, // ) + { 42, 2, 37, 0, 0 }, // * + { 43, 2, 46, 0, 0 }, // + + { 44, 2, 56, 0, 0 }, // , + { 45, 0, 45, 0, 0 }, // - + { 46, 0, 56, 0, 0 }, // . + { 47, 2, 49, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 35, 0, 0 }, // : + { 59, 2, 33, 0, 0 }, // ; + { 61, 0, 46, 0, 0 }, // = + { 63, 2, 36, 0, 0 }, // ? + { 92, 0, 49, 0, 0 }, // \ + { 95, 2, 45, 0, 0 }, // _ + { 1025, 2, 53, 0, 0 }, // ? + { 1040, 2, 9, 0, 0 }, // ? + { 1041, 2, 54, 0, 0 }, // ? + { 1042, 2, 7, 0, 0 }, // ? + { 1043, 2, 24, 0, 0 }, // ? + { 1044, 2, 15, 0, 0 }, // ? + { 1045, 2, 23, 0, 0 }, // ? + { 1046, 2, 51, 0, 0 }, // ? + { 1047, 2, 19, 0, 0 }, // ? + { 1048, 2, 5, 0, 0 }, // ? + { 1049, 2, 20, 0, 0 }, // ? + { 1050, 2, 21, 0, 0 }, // ? + { 1051, 2, 14, 0, 0 }, // ? + { 1052, 2, 25, 0, 0 }, // ? + { 1053, 2, 28, 0, 0 }, // ? + { 1054, 2, 13, 0, 0 }, // ? + { 1055, 2, 10, 0, 0 }, // ? + { 1056, 2, 11, 0, 0 }, // ? + { 1057, 2, 6, 0, 0 }, // ? + { 1058, 2, 17, 0, 0 }, // ? + { 1059, 2, 8, 0, 0 }, // ? + { 1060, 2, 4, 0, 0 }, // ? + { 1061, 2, 47, 0, 0 }, // ? + { 1062, 2, 26, 0, 0 }, // ? + { 1063, 2, 27, 0, 0 }, // ? + { 1064, 2, 12, 0, 0 }, // ? + { 1065, 2, 18, 0, 0 }, // ? + { 1066, 2, 48, 0, 0 }, // ? + { 1067, 2, 22, 0, 0 }, // ? + { 1068, 2, 16, 0, 0 }, // ? + { 1069, 2, 52, 0, 0 }, // ? + { 1070, 2, 55, 0, 0 }, // ? + { 1071, 2, 29, 0, 0 }, // ? + { 1072, 0, 9, 0, 0 }, // ? + { 1073, 0, 54, 0, 0 }, // ? + { 1074, 0, 7, 0, 0 }, // ? + { 1075, 0, 24, 0, 0 }, // ? + { 1076, 0, 15, 0, 0 }, // ? + { 1077, 0, 23, 0, 0 }, // ? + { 1078, 0, 51, 0, 0 }, // ? + { 1079, 0, 19, 0, 0 }, // ? + { 1080, 0, 5, 0, 0 }, // ? + { 1081, 0, 20, 0, 0 }, // ? + { 1082, 0, 21, 0, 0 }, // ? + { 1083, 0, 14, 0, 0 }, // ? + { 1084, 0, 25, 0, 0 }, // ? + { 1085, 0, 28, 0, 0 }, // ? + { 1086, 0, 13, 0, 0 }, // ? + { 1087, 0, 10, 0, 0 }, // ? + { 1088, 0, 11, 0, 0 }, // ? + { 1089, 0, 6, 0, 0 }, // ? + { 1090, 0, 17, 0, 0 }, // ? + { 1091, 0, 8, 0, 0 }, // ? + { 1092, 0, 4, 0, 0 }, // ? + { 1093, 0, 47, 0, 0 }, // ? + { 1094, 0, 26, 0, 0 }, // ? + { 1095, 0, 27, 0, 0 }, // ? + { 1096, 0, 12, 0, 0 }, // ? + { 1097, 0, 18, 0, 0 }, // ? + { 1098, 0, 48, 0, 0 }, // ? + { 1099, 0, 22, 0, 0 }, // ? + { 1100, 0, 16, 0, 0 }, // ? + { 1101, 0, 52, 0, 0 }, // ? + { 1102, 0, 55, 0, 0 }, // ? + { 1103, 0, 29, 0, 0 }, // ? + { 1105, 0, 53, 0, 0 }, // ? + { 8470, 2, 32, 0, 0 }, // ? + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x22 , -1 , -1 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x2116 , -1 , -1 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x003b , -1 , -1 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , -1 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x003a , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x003f , -1 , -1 , -1 } , + /* 9 */ { 0 , (int)'8' , 0x002a , -1 , -1 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x28 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x29 , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x003d , 0x002b , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , 0x439 , 0x419 , -1 , -1 , -1 } , + /* 11 */ { 1 , 0x446 , 0x426 , -1 , -1 , -1 } , + /* 12 */ { 1 , 0x443 , 0x423 , -1 , -1 , -1 } , + /* 13 */ { 1 , 0x043a , 0x041a , -1 , -1 , -1 } , + /* 14 */ { 1 , 0x435 , 0x415 , -1 , -1 , -1 } , + /* 15 */ { 1 , 0x043d , 0x041d , -1 , -1 , -1 } , + /* 16 */ { 1 , 0x433 , 0x413 , -1 , -1 , -1 } , + /* 17 */ { 1 , 0x448 , 0x428 , -1 , -1 , -1 } , + /* 18 */ { 1 , 0x449 , 0x429 , -1 , -1 , -1 } , + /* 19 */ { 1 , 0x437 , 0x417 , -1 , -1 , -1 } , + /* 1a */ { 1 , 0x445 , 0x425 , -1 , -1 , -1 } , + /* 1b */ { 1 , 0x044a , 0x042a , -1 , -1 , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , 0x444 , 0x424 , -1 , -1 , -1 } , + /* 1f */ { 1 , 0x044b , 0x042b , -1 , -1 , -1 } , + + + /* 20 */ { 1 , 0x432 , 0x412 , -1 , -1 , -1 } , + /* 21 */ { 1 , 0x430 , 0x410 , -1 , -1 , -1 } , + /* 22 */ { 1 , 0x043f , 0x041f , -1 , -1 , -1 } , + /* 23 */ { 1 , 0x440 , 0x420 , -1 , -1 , -1 } , + /* 24 */ { 1 , 0x043e , 0x041e , -1 , -1 , -1 } , + /* 25 */ { 1 , 0x043b , 0x041b , -1 , -1 , -1 } , + /* 26 */ { 1 , 0x434 , 0x414 , -1 , -1 , -1 } , + /* 27 */ { 1 , 0x436 , 0x416 , -1 , -1 , -1 } , + /* 28 */ { 1 , 0x044d , 0x042d , -1 , -1 , -1 } , + /* 29 */ { 1 , 0x451 , 0x401 , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x005c , 0x002f , 0x001c , -1 , -1 } , + /* 2c */ { 1 , 0x044f , 0x042f , -1 , -1 , -1 } , + /* 2d */ { 1 , 0x447 , 0x427 , -1 , -1 , -1 } , + /* 2e */ { 1 , 0x441 , 0x421 , -1 , -1 , -1 } , + /* 2f */ { 1 , 0x043c , 0x041c , -1 , -1 , -1 } , + + + /* 30 */ { 1 , 0x438 , 0x418 , -1 , -1 , -1 } , + /* 31 */ { 1 , 0x442 , 0x422 , -1 , -1 , -1 } , + /* 32 */ { 1 , 0x044c , 0x042c , -1 , -1 , -1 } , + /* 33 */ { 1 , 0x431 , 0x411 , -1 , -1 , -1 } , + /* 34 */ { 1 , 0x044e , 0x042e , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002e , 0x002c , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x005c , 0x002f , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = null; + public static final int DEADKEY_LUT[][] = null; + + private static RussianLayout instance = new RussianLayout(); + + private RussianLayout() { + } + + public static RussianLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SlovakLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SlovakLayout.java new file mode 100644 index 00000000..d70f7020 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SlovakLayout.java @@ -0,0 +1,505 @@ +package com.inputstick.api.layout; + +public class SlovakLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "sk-SK"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //sk-SK + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 0, 66, 30, 0, 0 }, // + { 7, 64, 30, 0, 0 }, //  + { 27, 1, 48, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 51, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 52, 0, 0 }, // ! + { 34, 2, 51, 0, 0 }, // " + { 35, 64, 27, 0, 0 }, // # + { 36, 64, 51, 0, 0 }, // $ + { 37, 2, 45, 0, 0 }, // % + { 38, 64, 6, 0, 0 }, // & + { 39, 64, 19, 0, 0 }, // ' + { 40, 2, 48, 0, 0 }, // ( + { 41, 2, 49, 0, 0 }, // ) + { 42, 64, 56, 0, 0 }, // * + { 43, 0, 30, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 47, 0, 0 }, // / + { 48, 2, 39, 0, 0 }, // 0 + { 49, 2, 30, 0, 0 }, // 1 + { 50, 2, 31, 0, 0 }, // 2 + { 51, 2, 32, 0, 0 }, // 3 + { 52, 2, 33, 0, 0 }, // 4 + { 53, 2, 34, 0, 0 }, // 5 + { 54, 2, 35, 0, 0 }, // 6 + { 55, 2, 36, 0, 0 }, // 7 + { 56, 2, 37, 0, 0 }, // 8 + { 57, 2, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 0, 53, 0, 0 }, // ; + { 60, 64, 54, 0, 0 }, // < + { 61, 0, 45, 0, 0 }, // = + { 62, 64, 29, 0, 0 }, // > + { 63, 2, 54, 0, 0 }, // ? + { 64, 64, 25, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 64, 9, 0, 0 }, // [ + { 92, 64, 20, 0, 0 }, // \ + { 93, 64, 10, 0, 0 }, // ] + { 94, 0, 44, 64, 32 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 64, 36, 0, 0 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 64, 5, 0, 0 }, // { + { 124, 64, 26, 0, 0 }, // | + { 125, 64, 17, 0, 0 }, // } + { 164, 64, 49, 0, 0 }, // + { 167, 0, 52, 0, 0 }, // + { 168, 0, 44, 64, 45 }, // + { 176, 0, 44, 64, 34 }, // + { 180, 0, 44, 64, 38 }, // + { 184, 0, 44, 64, 46 }, // + { 193, 2, 4, 64, 38 }, // + { 194, 2, 4, 64, 32 }, // + { 196, 2, 4, 64, 45 }, // + { 199, 2, 6, 64, 46 }, // + { 201, 2, 8, 64, 38 }, // + { 203, 2, 8, 64, 45 }, // + { 205, 2, 12, 64, 38 }, // + { 206, 2, 12, 64, 32 }, // + { 211, 2, 18, 64, 38 }, // + { 212, 2, 18, 64, 32 }, // + { 214, 2, 18, 64, 45 }, // + { 215, 64, 48, 0, 0 }, // + { 218, 2, 24, 64, 38 }, // + { 220, 2, 24, 64, 45 }, // + { 221, 2, 28, 64, 38 }, // + { 223, 64, 52, 0, 0 }, // + { 225, 0, 37, 0, 0 }, // + { 226, 0, 4, 64, 32 }, // + { 228, 0, 48, 0, 0 }, // + { 231, 0, 6, 64, 46 }, // + { 233, 0, 39, 0, 0 }, // + { 235, 0, 8, 64, 45 }, // + { 237, 0, 38, 0, 0 }, // + { 238, 0, 12, 64, 32 }, // + { 243, 0, 18, 64, 38 }, // + { 244, 0, 51, 0, 0 }, // + { 246, 0, 18, 64, 45 }, // + { 247, 64, 47, 0, 0 }, // + { 250, 0, 47, 0, 0 }, // + { 252, 0, 24, 64, 45 }, // + { 253, 0, 36, 0, 0 }, // + { 258, 2, 4, 64, 32 }, // + { 259, 0, 4, 64, 32 }, // + { 260, 2, 4, 64, 35 }, // + { 261, 0, 4, 64, 35 }, // + { 262, 2, 6, 64, 38 }, // + { 263, 0, 6, 64, 38 }, // + { 268, 2, 6, 64, 31 }, // + { 269, 0, 33, 0, 0 }, // + { 270, 2, 7, 64, 31 }, // + { 271, 0, 7, 64, 31 }, // + { 272, 64, 7, 0, 0 }, // + { 273, 64, 22, 0, 0 }, // + { 280, 2, 8, 64, 35 }, // + { 281, 0, 8, 64, 35 }, // + { 282, 2, 8, 64, 31 }, // + { 283, 0, 8, 64, 31 }, // + { 313, 2, 15, 64, 38 }, // + { 314, 0, 15, 64, 38 }, // + { 317, 2, 15, 64, 31 }, // + { 318, 0, 31, 0, 0 }, // + { 321, 64, 15, 0, 0 }, // + { 322, 64, 14, 0, 0 }, // + { 323, 2, 17, 64, 38 }, // + { 324, 0, 17, 64, 38 }, // + { 327, 2, 17, 64, 31 }, // + { 328, 0, 49, 0, 0 }, // + { 336, 2, 18, 64, 39 }, // + { 337, 0, 18, 64, 39 }, // + { 340, 2, 21, 64, 38 }, // + { 341, 0, 21, 64, 38 }, // + { 344, 2, 21, 64, 31 }, // + { 345, 0, 21, 64, 31 }, // + { 346, 2, 22, 64, 38 }, // + { 347, 0, 22, 64, 38 }, // + { 350, 2, 22, 64, 46 }, // + { 351, 0, 22, 64, 46 }, // + { 352, 2, 22, 64, 31 }, // + { 353, 0, 32, 0, 0 }, // + { 354, 2, 23, 64, 46 }, // + { 355, 0, 23, 64, 46 }, // + { 356, 2, 23, 64, 31 }, // + { 357, 0, 34, 0, 0 }, // + { 366, 2, 24, 64, 34 }, // + { 367, 0, 24, 64, 34 }, // + { 368, 2, 24, 64, 39 }, // + { 369, 0, 24, 64, 39 }, // + { 377, 2, 29, 64, 38 }, // + { 378, 0, 29, 64, 38 }, // + { 379, 2, 29, 64, 37 }, // + { 380, 0, 29, 64, 37 }, // + { 381, 2, 29, 64, 31 }, // + { 382, 0, 35, 0, 0 }, // + { 711, 0, 44, 64, 31 }, // + { 728, 0, 44, 64, 33 }, // + { 729, 0, 44, 64, 37 }, // + { 731, 0, 44, 64, 35 }, // + { 733, 0, 44, 64, 39 }, // + { 8364, 64, 8, 0, 0 }, // + }; + + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , 0x02b , (int)'1' , -1 , 0x007 , 0 } , + /* 3 */ { 0 , 0x13e , (int)'2' , -1 , 0x2c7 , 0 } , + /* 4 */ { 0 , 0x161 , (int)'3' , -1 , 0x05e , 0 } , + /* 5 */ { 0 , 0x10d , (int)'4' , -1 , 0x2d8 , 0 } , + /* 6 */ { 0 , 0x165 , (int)'5' , -1 , 0x0b0 , 0 } , + /* 7 */ { 0 , 0x17e , (int)'6' , -1 , 0x2db , 0 } , + /* 8 */ { 0 , 0x0fd , (int)'7' , -1 , 0x060 , 0 } , + /* 9 */ { 0 , 0x0e1 , (int)'8' , -1 , 0x2d9 , 0 } , + /* 0a */ { 0 , 0x0ed , (int)'9' , -1 , 0x0b4 , 0 } , + /* 0b */ { 0 , 0x0e9 , (int)'0' , -1 , 0x2dd , 0 } , + /* 0c */ { 0 , 0x03d , 0x025 , -1 , 0x0a8 , 0 } , + /* 0d */ { 0 , 0x0b4 , 0x2c7 , -1 , 0x0b8 , 0 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , 'q' , 'Q' , -1 , 0x05c , 0 } , + /* 11 */ { 1 , 'w' , 'W' , -1 , 0x07c , 0 } , + /* 12 */ { 1 , 'e' , 'E' , -1 , 0x20ac , 0 } , + /* 13 */ { 1 , 'r' , 'R' , -1 , -1 , 0 } , + /* 14 */ { 1 , 't' , 'T' , -1 , -1 , 0 } , + /* 15 */ { 1 , 'y' , 'Y' , -1 , -1 , 0 } , + /* 16 */ { 1 , 'u' , 'U' , -1 , -1 , 0 } , + /* 17 */ { 1 , 'i' , 'I' , -1 , -1 , 0 } , + /* 18 */ { 1 , 'o' , 'O' , -1 , -1 , 0 } , + /* 19 */ { 1 , 'p' , 'P' , -1 , 0x027 , 0 } , + /* 1a */ { 0 , 0x0fa , 0x02f , -1 , 0x0f7 , 0 } , + /* 1b */ { 0 , 0x0e4 , 0x028 , 0x01b , 0x0d7 , 0 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , 'a' , 'A' , -1 , -1 , 0 } , + /* 1f */ { 1 , 's' , 'S' , -1 , 0x111 , 0 } , + + /* 20 */ { 1 , 'd' , 'D' , -1 , 0x110 , 0 } , + /* 21 */ { 1 , 'f' , 'F' , -1 , 0x05b , 0 } , + /* 22 */ { 1 , 'g' , 'G' , -1 , 0x05d , 0 } , + /* 23 */ { 1 , 'h' , 'H' , -1 , -1 , 0 } , + /* 24 */ { 1 , 'j' , 'J' , -1 , -1 , 0 } , + /* 25 */ { 1 , 'k' , 'K' , -1 , 0x142 , 0 } , + /* 26 */ { 1 , 'l' , 'L' , -1 , 0x141 , 0 } , + /* 27 */ { 0 , 0x0f4 , 0x022 , 0x01d , 0x024 , 0 } , + /* 28 */ { 0 , 0x0a7 , 0x021 , -1 , 0x0df , 0 } , + /* 29 */ { 0 , 0x03b , 0x0b0 , -1 , -1 , 0 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x148 , 0x029 , 0x01c , 0x0a4 , 0 } , + /* 2c */ { 1 , 'z' , 'Z' , -1 , 0x03e , 0 } , + /* 2d */ { 1 , 'x' , 'X' , -1 , 0x023 , 0 } , + /* 2e */ { 1 , 'c' , 'C' , -1 , 0x026 , 0 } , + /* 2f */ { 1 , 'v' , 'V' , -1 , 0x040 , 0 } , + + /* 30 */ { 1 , 'b' , 'B' , -1 , 0x07b , 0 } , + /* 31 */ { 1 , 'n' , 'N' , -1 , 0x07d , 0 } , + /* 32 */ { 1 , 'm' , 'M' , -1 , -1 , 0 } , + /* 33 */ { 0 , 0x02c , 0x03f , -1 , 0x03c , 0 } , + /* 34 */ { 0 , 0x02e , 0x03a , -1 , 0x03e , 0 } , + /* 35 */ { 0 , 0x02d , 0x05f , -1 , 0x02a , 0 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x020 , 0x020 , 0x020 , -1 , 0 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x02c , 0x02c , -1 , -1 , 0 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x026 , 0x02a , 0x01c , 0x03c , 0 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + + }; + + public static final int DEADKEYS[] = { + 0x02c7, 0x005e, 0x02d8, 0x00b0, 0x02db, 0x02d9, 0x00b4, 0x02dd, 0x00a8, 0x00b4, 0x02c7, 0x00b8, 0x00b0 + }; + + public static final int DEADKEY_LUT[][] = { + { 0x02c7 , 0x006e , 0x0148 } , + { 0x02c7 , 0x0063 , 0x010d } , + { 0x02c7 , 0x007a , 0x017e } , + { 0x02c7 , 0x0064 , 0x010f } , + { 0x02c7 , 0x0073 , 0x0161 } , + { 0x02c7 , 0x006c , 0x013e } , + { 0x02c7 , 0x0065 , 0x011b } , + { 0x02c7 , 0x0072 , 0x0159 } , + { 0x02c7 , 0x0074 , 0x0165 } , + { 0x02c7 , 0x004e , 0x0147 } , + { 0x02c7 , 0x0043 , 0x010c } , + { 0x02c7 , 0x005a , 0x017d } , + { 0x02c7 , 0x0044 , 0x010e } , + { 0x02c7 , 0x0053 , 0x0160 } , + { 0x02c7 , 0x004c , 0x013d } , + { 0x02c7 , 0x0045 , 0x011a } , + { 0x02c7 , 0x0052 , 0x0158 } , + { 0x02c7 , 0x0054 , 0x0164 } , + { 0x02c7 , 0x0020 , 0x02c7 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + { 0x005e , 0x0061 , 0x0103 } , + { 0x005e , 0x0041 , 0x0102 } , + { 0x005e , 0x0020 , 0x02d8 } , + { 0x00b0 , 0x0075 , 0x016f } , + { 0x00b0 , 0x0055 , 0x016e } , + { 0x00b0 , 0x0020 , 0x00b0 } , + { 0x02db , 0x0061 , 0x0105 } , + { 0x02db , 0x0065 , 0x0119 } , + { 0x02db , 0x0041 , 0x0104 } , + { 0x02db , 0x0045 , 0x0118 } , + { 0x02db , 0x0020 , 0x02db } , + { 0x02d9 , 0x007a , 0x017c } , + { 0x02d9 , 0x005a , 0x017b } , + { 0x02d9 , 0x0020 , 0x02d9 } , + { 0x00b4 , 0x006e , 0x0144 } , + { 0x00b4 , 0x0063 , 0x0107 } , + { 0x00b4 , 0x007a , 0x017a } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0073 , 0x015b } , + { 0x00b4 , 0x006c , 0x013a } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0072 , 0x0155 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x004e , 0x0143 } , + { 0x00b4 , 0x0043 , 0x0106 } , + { 0x00b4 , 0x005a , 0x0179 } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0053 , 0x015a } , + { 0x00b4 , 0x004c , 0x0139 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0052 , 0x0154 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x02dd , 0x0075 , 0x0171 } , + { 0x02dd , 0x006f , 0x0151 } , + { 0x02dd , 0x0055 , 0x0170 } , + { 0x02dd , 0x004f , 0x0150 } , + { 0x02dd , 0x0020 , 0x02dd } , + { 0x00a8 , 0x0061 , 0x00e4 } , + { 0x00a8 , 0x0065 , 0x00eb } , + { 0x00a8 , 0x0075 , 0x00fc } , + { 0x00a8 , 0x006f , 0x00f6 } , + { 0x00a8 , 0x0041 , 0x00c4 } , + { 0x00a8 , 0x0045 , 0x00cb } , + { 0x00a8 , 0x0055 , 0x00dc } , + { 0x00a8 , 0x004f , 0x00d6 } , + { 0x00a8 , 0x0020 , 0x00a8 } , + { 0x00b4 , 0x006e , 0x0144 } , + { 0x00b4 , 0x0063 , 0x0107 } , + { 0x00b4 , 0x007a , 0x017a } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0073 , 0x015b } , + { 0x00b4 , 0x006c , 0x013a } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0072 , 0x0155 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x004e , 0x0143 } , + { 0x00b4 , 0x0043 , 0x0106 } , + { 0x00b4 , 0x005a , 0x0179 } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0053 , 0x015a } , + { 0x00b4 , 0x004c , 0x0139 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0052 , 0x0154 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x02c7 , 0x006e , 0x0148 } , + { 0x02c7 , 0x0063 , 0x010d } , + { 0x02c7 , 0x007a , 0x017e } , + { 0x02c7 , 0x0064 , 0x010f } , + { 0x02c7 , 0x0073 , 0x0161 } , + { 0x02c7 , 0x006c , 0x013e } , + { 0x02c7 , 0x0065 , 0x011b } , + { 0x02c7 , 0x0072 , 0x0159 } , + { 0x02c7 , 0x0074 , 0x0165 } , + { 0x02c7 , 0x004e , 0x0147 } , + { 0x02c7 , 0x0043 , 0x010c } , + { 0x02c7 , 0x005a , 0x017d } , + { 0x02c7 , 0x0044 , 0x010e } , + { 0x02c7 , 0x0053 , 0x0160 } , + { 0x02c7 , 0x004c , 0x013d } , + { 0x02c7 , 0x0045 , 0x011a } , + { 0x02c7 , 0x0052 , 0x0158 } , + { 0x02c7 , 0x0054 , 0x0164 } , + { 0x02c7 , 0x0020 , 0x02c7 } , + { 0x00b8 , 0x0063 , 0x00e7 } , + { 0x00b8 , 0x0073 , 0x015f } , + { 0x00b8 , 0x0074 , 0x0163 } , + { 0x00b8 , 0x0043 , 0x00c7 } , + { 0x00b8 , 0x0053 , 0x015e } , + { 0x00b8 , 0x0054 , 0x0162 } , + { 0x00b8 , 0x0020 , 0x00b8 } , + { 0x00b0 , 0x0075 , 0x016f } , + { 0x00b0 , 0x0055 , 0x016e } , + { 0x00b0 , 0x0020 , 0x00b0 } , + + }; + + private static SlovakLayout instance = new SlovakLayout(); + + private SlovakLayout() { + } + + public static SlovakLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SpanishLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SpanishLayout.java new file mode 100644 index 00000000..1561cb16 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SpanishLayout.java @@ -0,0 +1,392 @@ +package com.inputstick.api.layout; + +public class SpanishLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "es-ES"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //es-ES + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 20, 1, 44, 0, 0 }, //  + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 64, 32, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 0, 45, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 48, 0, 0 }, // * + { 43, 0, 48, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 64, 47, 0, 0 }, // [ + { 92, 64, 53, 0, 0 }, // \ + { 93, 64, 48, 0, 0 }, // ] + { 94, 0, 44, 2, 47 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 0, 47 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 64, 52, 0, 0 }, // { + { 124, 64, 30, 0, 0 }, // | + { 125, 64, 49, 0, 0 }, // } + { 126, 0, 44, 64, 33 }, // ~ + { 161, 0, 46, 0, 0 }, // ? + { 168, 0, 44, 2, 52 }, // + { 170, 2, 53, 0, 0 }, // ? + { 172, 64, 35, 0, 0 }, // + { 180, 0, 44, 0, 52 }, // + { 183, 2, 32, 0, 0 }, // + { 186, 0, 53, 0, 0 }, // ? + { 191, 2, 46, 0, 0 }, // ? + { 192, 2, 4, 0, 47 }, // ? + { 193, 2, 4, 0, 52 }, // + { 194, 2, 4, 2, 47 }, // + { 195, 2, 4, 64, 33 }, // ? + { 196, 2, 4, 2, 52 }, // + { 199, 2, 49, 0, 0 }, // + { 200, 2, 8, 0, 47 }, // ? + { 201, 2, 8, 0, 52 }, // + { 202, 2, 8, 2, 47 }, // ? + { 203, 2, 8, 2, 52 }, // + { 204, 2, 12, 0, 47 }, // ? + { 205, 2, 12, 0, 52 }, // + { 206, 2, 12, 2, 47 }, // + { 207, 2, 12, 2, 52 }, // ? + { 209, 2, 51, 0, 0 }, // ? + { 210, 2, 18, 0, 47 }, // ? + { 211, 2, 18, 0, 52 }, // + { 212, 2, 18, 2, 47 }, // + { 213, 2, 18, 64, 33 }, // ? + { 214, 2, 18, 2, 52 }, // + { 217, 2, 24, 0, 47 }, // ? + { 218, 2, 24, 0, 52 }, // + { 219, 2, 24, 2, 47 }, // ? + { 220, 2, 24, 2, 52 }, // + { 221, 2, 28, 0, 52 }, // + { 224, 0, 4, 0, 47 }, // ? + { 225, 0, 4, 0, 52 }, // + { 226, 0, 4, 2, 47 }, // + { 227, 0, 4, 64, 33 }, // ? + { 228, 0, 4, 2, 52 }, // + { 231, 0, 49, 0, 0 }, // + { 232, 0, 8, 0, 47 }, // ? + { 233, 0, 8, 0, 52 }, // + { 234, 0, 8, 2, 47 }, // ? + { 235, 0, 8, 2, 52 }, // + { 236, 0, 12, 0, 47 }, // ? + { 237, 0, 12, 0, 52 }, // + { 238, 0, 12, 2, 47 }, // + { 239, 0, 12, 2, 52 }, // ? + { 241, 0, 51, 0, 0 }, // ? + { 242, 0, 18, 0, 47 }, // ? + { 243, 0, 18, 0, 52 }, // + { 244, 0, 18, 2, 47 }, // + { 245, 0, 18, 64, 33 }, // ? + { 246, 0, 18, 2, 52 }, // + { 249, 0, 24, 0, 47 }, // ? + { 250, 0, 24, 0, 52 }, // + { 251, 0, 24, 2, 47 }, // ? + { 252, 0, 24, 2, 52 }, // + { 253, 0, 28, 0, 52 }, // + { 255, 0, 28, 2, 52 }, // ? + { 8364, 64, 34, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , 0x007c , -1 } , + /* 3 */ { 0 , (int)'2' , 0x22 , -1 , 0x40 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x00b7 , -1 , 0x23 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x24 , -1 , 0x007e , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , 0x20ac , -1 } , + /* 7 */ { 0 , (int)'6' , 0x26 , -1 , 0x00ac , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , -1 , -1 } , + /* 9 */ { 0 , (int)'8' , 0x28 , -1 , -1 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x29 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x27 , 0x003f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x00a1 , 0x00bf , -1 , -1 , -1 } , + /* 1e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x0060 , 0x005e , 0x001b , 0x005b , -1 } , + /* 1b */ { 0 , 0x002b , 0x002a , 0x001d , 0x005d , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 1 , 0x00f1 , 0x00d1 , -1 , -1 , -1 } , + /* 28 */ { 0 , 0x00b4 , 0x00a8 , -1 , 0x007b , -1 } , + /* 29 */ { 0 , 0x00ba , 0x00aa , -1 , 0x005c , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 1 , 0x00e7 , 0x00c7 , 0x001c , 0x007d , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002e , 0x002e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x007e, 0x0060, 0x005e, 0x00b4,0x00a8 + }; + + public static final int DEADKEY_LUT[][] = { + { 0x007e , 0x006e , 0x00f1 } , + { 0x007e , 0x0061 , 0x00e3 } , + { 0x007e , 0x006f , 0x00f5 } , + { 0x007e , 0x004e , 0x00d1 } , + { 0x007e , 0x0041 , 0x00c3 } , + { 0x007e , 0x004f , 0x00d5 } , + { 0x007e , 0x0020 , 0x007e } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x00a8 , 0x0061 , 0x00e4 } , + { 0x00a8 , 0x0065 , 0x00eb } , + { 0x00a8 , 0x0075 , 0x00fc } , + { 0x00a8 , 0x0069 , 0x00ef } , + { 0x00a8 , 0x0079 , 0x00ff } , + { 0x00a8 , 0x006f , 0x00f6 } , + { 0x00a8 , 0x0041 , 0x00c4 } , + { 0x00a8 , 0x0045 , 0x00cb } , + { 0x00a8 , 0x0055 , 0x00dc } , + { 0x00a8 , 0x0049 , 0x00cf } , + { 0x00a8 , 0x004f , 0x00d6 } , + { 0x00a8 , 0x0020 , 0x00a8 } , + }; + + private static SpanishLayout instance = new SpanishLayout(); + + private SpanishLayout() { + } + + public static SpanishLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} + diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwedishLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwedishLayout.java new file mode 100644 index 00000000..6e56eb03 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwedishLayout.java @@ -0,0 +1,386 @@ +package com.inputstick.api.layout; + +public class SwedishLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "sv-SE"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //sv-SE + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 53, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 36, 64, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 0, 49, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 49, 0, 0 }, // * + { 43, 0, 45, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 64, 37, 0, 0 }, // [ + { 92, 64, 45, 0, 0 }, // \ + { 93, 64, 38, 0, 0 }, // ] + { 94, 0, 44, 2, 48 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 2, 46 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 64, 36, 0, 0 }, // { + { 124, 64, 100, 0, 0 }, // | + { 125, 64, 39, 0, 0 }, // } + { 126, 0, 44, 64, 48 }, // ~ + { 163, 64, 32, 0, 0 }, // ? + { 164, 2, 33, 0, 0 }, // + { 167, 0, 53, 0, 0 }, // + { 168, 0, 44, 0, 48 }, // + { 180, 0, 44, 0, 46 }, // + { 181, 64, 16, 0, 0 }, // + { 189, 2, 53, 0, 0 }, // ? + { 192, 2, 4, 2, 46 }, // ? + { 193, 2, 4, 0, 46 }, // + { 194, 2, 4, 2, 48 }, // + { 195, 2, 4, 64, 48 }, // ? + { 196, 2, 52, 0, 0 }, // + { 197, 2, 47, 0, 0 }, // ? + { 200, 2, 8, 2, 46 }, // ? + { 201, 2, 8, 0, 46 }, // + { 202, 2, 8, 2, 48 }, // ? + { 203, 2, 8, 0, 48 }, // + { 204, 2, 12, 2, 46 }, // ? + { 205, 2, 12, 0, 46 }, // + { 206, 2, 12, 2, 48 }, // + { 207, 2, 12, 0, 48 }, // ? + { 209, 2, 17, 64, 48 }, // ? + { 210, 2, 18, 2, 46 }, // ? + { 211, 2, 18, 0, 46 }, // + { 212, 2, 18, 2, 48 }, // + { 213, 2, 18, 64, 48 }, // ? + { 214, 2, 51, 0, 0 }, // + { 217, 2, 24, 2, 46 }, // ? + { 218, 2, 24, 0, 46 }, // + { 219, 2, 24, 2, 48 }, // ? + { 220, 2, 24, 0, 48 }, // + { 221, 2, 28, 0, 46 }, // + { 224, 0, 4, 2, 46 }, // ? + { 225, 0, 4, 0, 46 }, // + { 226, 0, 4, 2, 48 }, // + { 227, 0, 4, 64, 48 }, // ? + { 228, 0, 52, 0, 0 }, // + { 229, 0, 47, 0, 0 }, // ? + { 232, 0, 8, 2, 46 }, // ? + { 233, 0, 8, 0, 46 }, // + { 234, 0, 8, 2, 48 }, // ? + { 235, 0, 8, 0, 48 }, // + { 236, 0, 12, 2, 46 }, // ? + { 237, 0, 12, 0, 46 }, // + { 238, 0, 12, 2, 48 }, // + { 239, 0, 12, 0, 48 }, // ? + { 241, 0, 17, 64, 48 }, // ? + { 242, 0, 18, 2, 46 }, // ? + { 243, 0, 18, 0, 46 }, // + { 244, 0, 18, 2, 48 }, // + { 245, 0, 18, 64, 48 }, // ? + { 246, 0, 51, 0, 0 }, // + { 249, 0, 24, 2, 46 }, // ? + { 250, 0, 24, 0, 46 }, // + { 251, 0, 24, 2, 48 }, // ? + { 252, 0, 24, 0, 48 }, // + { 253, 0, 28, 0, 46 }, // + { 255, 0, 28, 0, 48 }, // ? + { 8364, 64, 34, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x22 , -1 , 0x40 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x23 , -1 , 0x00a3 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x00a4 , -1 , 0x24 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , 0x20ac , -1 } , + /* 7 */ { 0 , (int)'6' , 0x26 , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , 0x007b , -1 } , + /* 9 */ { 0 , (int)'8' , 0x28 , -1 , 0x005b , -1 } , + /* 0a */ { 0 , (int)'9' , 0x29 , -1 , 0x005d , -1 } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , 0x007d , -1 } , + /* 0c */ { 0 , 0x002b , 0x003f , -1 , 0x005c , -1 } , + /* 0d */ { 0 , 0x00b4 , 0x0060 , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 1 , 0x00e5 , 0x00c5 , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x00a8 , 0x005e , 0x001d , 0x007e , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 1 , 0x00f6 , 0x00d6 , -1 , -1 , -1 } , + /* 28 */ { 1 , 0x00e4 , 0x00c4 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x00a7 , 0x00bd , 0x001c , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x27 , 0x002a , -1 , -1 , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , 0x00b5 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002c , 0x002c , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , 0x007c , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x0060, 0x00b4, 0x005e, 0x00a8, 0x007e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x00a8 , 0x0061 , 0x00e4 } , + { 0x00a8 , 0x0065 , 0x00eb } , + { 0x00a8 , 0x0075 , 0x00fc } , + { 0x00a8 , 0x0069 , 0x00ef } , + { 0x00a8 , 0x0079 , 0x00ff } , + { 0x00a8 , 0x006f , 0x00f6 } , + { 0x00a8 , 0x0041 , 0x00c4 } , + { 0x00a8 , 0x0045 , 0x00cb } , + { 0x00a8 , 0x0055 , 0x00dc } , + { 0x00a8 , 0x0049 , 0x00cf } , + { 0x00a8 , 0x004f , 0x00d6 } , + { 0x00a8 , 0x0020 , 0x00a8 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + { 0x007e , 0x006e , 0x00f1 } , + { 0x007e , 0x0061 , 0x00e3 } , + { 0x007e , 0x006f , 0x00f5 } , + { 0x007e , 0x004e , 0x00d1 } , + { 0x007e , 0x0041 , 0x00c3 } , + { 0x007e , 0x004f , 0x00d5 } , + { 0x007e , 0x0020 , 0x007e } , + }; + + private static SwedishLayout instance = new SwedishLayout(); + + private SwedishLayout() { + } + + public static SwedishLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} + diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwissFrenchLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwissFrenchLayout.java new file mode 100644 index 00000000..4b91d06d --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwissFrenchLayout.java @@ -0,0 +1,353 @@ +package com.inputstick.api.layout; + +public class SwissFrenchLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "fr-CH"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //fr-CH + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 8, 2, 37, 0, 0 }, //  + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 48, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 64, 32, 0, 0 }, // # + { 36, 0, 49, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 0, 45, 0, 0 }, // ' + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 32, 0, 0 }, // * + { 43, 2, 30, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 29, 0, 0 }, // Y + { 90, 2, 28, 0, 0 }, // Z + { 91, 64, 47, 0, 0 }, // [ + { 92, 64, 100, 0, 0 }, // \ + { 93, 64, 48, 0, 0 }, // ] + { 94, 0, 44, 0, 46 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 2, 46 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 29, 0, 0 }, // y + { 122, 0, 28, 0, 0 }, // z + { 123, 64, 52, 0, 0 }, // { + { 124, 64, 36, 0, 0 }, // | + { 125, 64, 49, 0, 0 }, // } + { 126, 64, 46, 0, 0 }, // ~ + { 162, 64, 37, 0, 0 }, // ? + { 163, 2, 49, 0, 0 }, // ? + { 166, 64, 30, 0, 0 }, // + { 167, 64, 34, 0, 0 }, // + { 168, 0, 48, 0, 0 }, // + { 172, 64, 35, 0, 0 }, // + { 176, 64, 33, 0, 0 }, // + { 180, 0, 44, 64, 45 }, // + { 192, 2, 4, 2, 46 }, // ? + { 193, 2, 4, 64, 45 }, // + { 194, 2, 4, 0, 46 }, // + { 200, 2, 8, 2, 46 }, // ? + { 201, 2, 8, 64, 45 }, // + { 202, 2, 8, 0, 46 }, // ? + { 204, 2, 12, 2, 46 }, // ? + { 205, 2, 12, 64, 45 }, // + { 206, 2, 12, 0, 46 }, // + { 210, 2, 18, 2, 46 }, // ? + { 211, 2, 18, 64, 45 }, // + { 212, 2, 18, 0, 46 }, // + { 217, 2, 24, 2, 46 }, // ? + { 218, 2, 24, 64, 45 }, // + { 219, 2, 24, 0, 46 }, // ? + { 221, 2, 29, 64, 45 }, // + { 224, 0, 52, 0, 0 }, // ? + { 225, 0, 4, 64, 45 }, // + { 226, 0, 4, 0, 46 }, // + { 228, 2, 52, 0, 0 }, // + { 231, 2, 33, 0, 0 }, // + { 232, 0, 47, 0, 0 }, // ? + { 233, 0, 51, 0, 0 }, // + { 234, 0, 8, 0, 46 }, // ? + { 236, 0, 12, 2, 46 }, // ? + { 237, 0, 12, 64, 45 }, // + { 238, 0, 12, 0, 46 }, // + { 242, 0, 18, 2, 46 }, // ? + { 243, 0, 18, 64, 45 }, // + { 244, 0, 18, 0, 46 }, // + { 246, 2, 51, 0, 0 }, // + { 249, 0, 24, 2, 46 }, // ? + { 250, 0, 24, 64, 45 }, // + { 251, 0, 24, 0, 46 }, // ? + { 252, 2, 47, 0, 0 }, // + { 253, 0, 29, 64, 45 }, // + { 8364, 64, 8, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x002b , -1 , 0x00a6 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x0022 , -1 , 0x0040 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x002a , -1 , 0x0023 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x00e7 , -1 , 0x00b0 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x0025 , -1 , 0x00a7 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x0026 , -1 , 0x00ac , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , 0x007c , -1 } , + /* 9 */ { 0 , (int)'8' , 0x008 , -1 , 0x00a2 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x0029 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x0027 , 0x003f , -1 , 0x00b4 , -1 } , + /* 0d */ { 0 , 0x005e , 0x0060 , -1 , 0x007e , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x00e8 , 0x00fc , 0x001b , 0x005b , -1 } , + /* 1b */ { 0 , 0x00a8 , 0x0021 , 0x001d , 0x005d , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 0 , 0x00e9 , 0x00f6 , -1 , -1 , -1 } , + /* 28 */ { 0 , 0x00e0 , 0x00e4 , -1 , 0x007b , -1 } , + /* 29 */ { 0 , 0x00a7 , 0x00b0 , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x0024 , 0x00a3 , 0x001c , 0x007d , -1 } , + /* 2c */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x0020 , 0x0020 , 0x0020 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002e , 0x002e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , 0x005c , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x0060, 0x00b4, 0x005e + }; + + public static final int DEADKEY_LUT[][] = { + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + + }; + + private static SwissFrenchLayout instance = new SwissFrenchLayout(); + + private SwissFrenchLayout() { + } + + public static SwissFrenchLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwissGermanLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwissGermanLayout.java new file mode 100644 index 00000000..3f5067a9 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/SwissGermanLayout.java @@ -0,0 +1,388 @@ +package com.inputstick.api.layout; + +public class SwissGermanLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "de-CH"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //de-CH + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 48, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 64, 32, 0, 0 }, // # + { 36, 0, 49, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 35, 0, 0 }, // & + { 39, 0, 45, 0, 0 }, // ' + { 40, 2, 37, 0, 0 }, // ( + { 41, 2, 38, 0, 0 }, // ) + { 42, 2, 32, 0, 0 }, // * + { 43, 2, 30, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 56, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 2, 36, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 55, 0, 0 }, // : + { 59, 2, 54, 0, 0 }, // ; + { 60, 0, 100, 0, 0 }, // < + { 61, 2, 39, 0, 0 }, // = + { 62, 2, 100, 0, 0 }, // > + { 63, 2, 45, 0, 0 }, // ? + { 64, 64, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 29, 0, 0 }, // Y + { 90, 2, 28, 0, 0 }, // Z + { 91, 64, 47, 0, 0 }, // [ + { 92, 64, 100, 0, 0 }, // \ + { 93, 64, 48, 0, 0 }, // ] + { 94, 0, 44, 0, 46 }, // ^ + { 95, 2, 56, 0, 0 }, // _ + { 96, 0, 44, 2, 46 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 29, 0, 0 }, // y + { 122, 0, 28, 0, 0 }, // z + { 123, 64, 52, 0, 0 }, // { + { 124, 64, 36, 0, 0 }, // | + { 125, 64, 49, 0, 0 }, // } + { 126, 0, 44, 64, 46 }, // ~ + { 162, 64, 37, 0, 0 }, // ? + { 163, 2, 49, 0, 0 }, // ? + { 166, 64, 30, 0, 0 }, // + { 167, 64, 34, 0, 0 }, // + { 168, 0, 44, 0, 48 }, // + { 172, 64, 35, 0, 0 }, // + { 176, 64, 33, 0, 0 }, // + { 180, 0, 44, 64, 45 }, // + { 192, 2, 4, 2, 46 }, // ? + { 193, 2, 4, 64, 45 }, // + { 194, 2, 4, 0, 46 }, // + { 195, 2, 4, 64, 46 }, // ? + { 196, 2, 4, 0, 48 }, // + { 200, 2, 8, 2, 46 }, // ? + { 201, 2, 8, 64, 45 }, // + { 202, 2, 8, 0, 46 }, // ? + { 203, 2, 8, 0, 48 }, // + { 204, 2, 12, 2, 46 }, // ? + { 205, 2, 12, 64, 45 }, // + { 206, 2, 12, 0, 46 }, // + { 207, 2, 12, 0, 48 }, // ? + { 209, 2, 17, 64, 46 }, // ? + { 210, 2, 18, 2, 46 }, // ? + { 211, 2, 18, 64, 45 }, // + { 212, 2, 18, 0, 46 }, // + { 213, 2, 18, 64, 46 }, // ? + { 214, 2, 18, 0, 48 }, // + { 217, 2, 24, 2, 46 }, // ? + { 218, 2, 24, 64, 45 }, // + { 219, 2, 24, 0, 46 }, // ? + { 220, 2, 24, 0, 48 }, // + { 221, 2, 29, 64, 45 }, // + { 224, 2, 52, 0, 0 }, // ? + { 225, 0, 4, 64, 45 }, // + { 226, 0, 4, 0, 46 }, // + { 227, 0, 4, 64, 46 }, // ? + { 228, 0, 52, 0, 0 }, // + { 231, 2, 33, 0, 0 }, // + { 232, 2, 47, 0, 0 }, // ? + { 233, 2, 51, 0, 0 }, // + { 234, 0, 8, 0, 46 }, // ? + { 235, 0, 8, 0, 48 }, // + { 236, 0, 12, 2, 46 }, // ? + { 237, 0, 12, 64, 45 }, // + { 238, 0, 12, 0, 46 }, // + { 239, 0, 12, 0, 48 }, // ? + { 241, 0, 17, 64, 46 }, // ? + { 242, 0, 18, 2, 46 }, // ? + { 243, 0, 18, 64, 45 }, // + { 244, 0, 18, 0, 46 }, // + { 245, 0, 18, 64, 46 }, // ? + { 246, 0, 51, 0, 0 }, // + { 249, 0, 24, 2, 46 }, // ? + { 250, 0, 24, 64, 45 }, // + { 251, 0, 24, 0, 46 }, // ? + { 252, 0, 47, 0, 0 }, // + { 253, 0, 29, 64, 45 }, // + { 255, 0, 29, 0, 48 }, // ? + { 8364, 64, 8, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x002b , -1 , 0x00a6 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x0022 , -1 , 0x0040 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x002a , -1 , 0x0023 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x00e7 , -1 , 0x00b0 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x0025 , -1 , 0x00a7 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x0026 , -1 , 0x00ac , -1 } , + /* 8 */ { 0 , (int)'7' , 0x002f , -1 , 0x007c , -1 } , + /* 9 */ { 0 , (int)'8' , 0x0028 , -1 , 0x00a2 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x0029 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x003d , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x0027 , 0x003f , -1 , 0x00b4 , -1 } , + /* 0d */ { 0 , 0x005e , 0x0060 , -1 , 0x007e , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , 0x20ac , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x00fc , 0x00e8 , 0x001b , 0x005b , -1 } , // TODO SGCap + /* 1b */ { 0 , 0x00a8 , 0x0021 , 0x001d , 0x005d , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 0 , 0x00f6 , 0x00e9 , -1 , -1 , -1 } , // TODO SGCap + /* 28 */ { 0 , 0x00e4 , 0x00e0 , -1 , 0x007b , -1 } , // TODO SGCap + /* 29 */ { 0 , 0x00a7 , 0x00b0 , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x0024 , 0x00a3 , 0x001c , 0x007d , -1 } , + /* 2c */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003b , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003a , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x0020 , 0x0020 , 0x0020 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002e , 0x002e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x003c , 0x003e , 0x001c , 0x005c , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = { + 0x00b4, 0x005e, 0x0060, 0x007e, 0x00a8 + }; + + public static final int DEADKEY_LUT[][] = { + { 0x00b4 , 0x0079 , 0x00fd } , + { 0x00b4 , 0x0061 , 0x00e1 } , + { 0x00b4 , 0x0065 , 0x00e9 } , + { 0x00b4 , 0x0075 , 0x00fa } , + { 0x00b4 , 0x0069 , 0x00ed } , + { 0x00b4 , 0x006f , 0x00f3 } , + { 0x00b4 , 0x0059 , 0x00dd } , + { 0x00b4 , 0x0041 , 0x00c1 } , + { 0x00b4 , 0x0045 , 0x00c9 } , + { 0x00b4 , 0x0055 , 0x00da } , + { 0x00b4 , 0x0049 , 0x00cd } , + { 0x00b4 , 0x004f , 0x00d3 } , + { 0x00b4 , 0x0020 , 0x00b4 } , + { 0x005e , 0x0061 , 0x00e2 } , + { 0x005e , 0x0065 , 0x00ea } , + { 0x005e , 0x0075 , 0x00fb } , + { 0x005e , 0x0069 , 0x00ee } , + { 0x005e , 0x006f , 0x00f4 } , + { 0x005e , 0x0041 , 0x00c2 } , + { 0x005e , 0x0045 , 0x00ca } , + { 0x005e , 0x0055 , 0x00db } , + { 0x005e , 0x0049 , 0x00ce } , + { 0x005e , 0x004f , 0x00d4 } , + { 0x005e , 0x0020 , 0x005e } , + { 0x0060 , 0x0061 , 0x00e0 } , + { 0x0060 , 0x0065 , 0x00e8 } , + { 0x0060 , 0x0075 , 0x00f9 } , + { 0x0060 , 0x0069 , 0x00ec } , + { 0x0060 , 0x006f , 0x00f2 } , + { 0x0060 , 0x0041 , 0x00c0 } , + { 0x0060 , 0x0045 , 0x00c8 } , + { 0x0060 , 0x0055 , 0x00d9 } , + { 0x0060 , 0x0049 , 0x00cc } , + { 0x0060 , 0x004f , 0x00d2 } , + { 0x0060 , 0x0020 , 0x0060 } , + { 0x007e , 0x006e , 0x00f1 } , + { 0x007e , 0x0061 , 0x00e3 } , + { 0x007e , 0x006f , 0x00f5 } , + { 0x007e , 0x004e , 0x00d1 } , + { 0x007e , 0x0041 , 0x00c3 } , + { 0x007e , 0x004f , 0x00d5 } , + { 0x007e , 0x0020 , 0x007e } , + { 0x00a8 , 0x0079 , 0x00ff } , + { 0x00a8 , 0x0061 , 0x00e4 } , + { 0x00a8 , 0x0065 , 0x00eb } , + { 0x00a8 , 0x0075 , 0x00fc } , + { 0x00a8 , 0x0069 , 0x00ef } , + { 0x00a8 , 0x006f , 0x00f6 } , + { 0x00a8 , 0x0041 , 0x00c4 } , + { 0x00a8 , 0x0045 , 0x00cb } , + { 0x00a8 , 0x0055 , 0x00dc } , + { 0x00a8 , 0x0049 , 0x00cf } , + { 0x00a8 , 0x004f , 0x00d6 } , + { 0x00a8 , 0x0020 , 0x00a8 } , + }; + + + + private static SwissGermanLayout instance = new SwissGermanLayout(); + + private SwissGermanLayout() { + } + + public static SwissGermanLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} + diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/UnitedKingdomLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/UnitedKingdomLayout.java new file mode 100644 index 00000000..040db75b --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/UnitedKingdomLayout.java @@ -0,0 +1,283 @@ +package com.inputstick.api.layout; + +public class UnitedKingdomLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "en-GB"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //en-GB + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 31, 0, 0 }, // " + { 35, 0, 49, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 36, 0, 0 }, // & + { 39, 0, 52, 0, 0 }, // ' + { 40, 2, 38, 0, 0 }, // ( + { 41, 2, 39, 0, 0 }, // ) + { 42, 2, 37, 0, 0 }, // * + { 43, 2, 46, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 45, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 0, 56, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 51, 0, 0 }, // : + { 59, 0, 51, 0, 0 }, // ; + { 60, 2, 54, 0, 0 }, // < + { 61, 0, 46, 0, 0 }, // = + { 62, 2, 55, 0, 0 }, // > + { 63, 2, 56, 0, 0 }, // ? + { 64, 2, 52, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 0, 47, 0, 0 }, // [ + { 92, 0, 100, 0, 0 }, // \ + { 93, 0, 48, 0, 0 }, // ] + { 94, 2, 35, 0, 0 }, // ^ + { 95, 2, 45, 0, 0 }, // _ + { 96, 0, 53, 0, 0 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 2, 47, 0, 0 }, // { + { 124, 2, 100, 0, 0 }, // | + { 125, 2, 48, 0, 0 }, // } + { 126, 2, 49, 0, 0 }, // ~ + { 163, 2, 32, 0, 0 }, // ? + { 166, 64, 53, 0, 0 }, // + { 172, 2, 53, 0, 0 }, // + { 193, 66, 4, 0, 0 }, // + { 201, 66, 8, 0, 0 }, // + { 205, 66, 12, 0, 0 }, // + { 211, 66, 18, 0, 0 }, // + { 218, 66, 24, 0, 0 }, // + { 225, 64, 4, 0, 0 }, // + { 233, 64, 8, 0, 0 }, // + { 237, 64, 12, 0, 0 }, // + { 243, 64, 18, 0, 0 }, // + { 250, 64, 24, 0, 0 }, // + { 8364, 64, 33, 0, 0 }, // + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x22 , -1 , -1 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x00a3 , -1 , -1 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x24 , -1 , 0x20ac , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , -1 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x005e , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x26 , -1 , -1 , -1 } , + /* 9 */ { 0 , (int)'8' , 0x002a , -1 , -1 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x28 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x29 , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x003d , 0x002b , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 5 , (int)'e' , (int)'E' , -1 , 0x00e9 , 0x00c9 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 5 , (int)'u' , (int)'U' , -1 , 0x00fa , 0x00da } , + /* 17 */ { 5 , (int)'i' , (int)'I' , -1 , 0x00ed , 0x00cd } , + /* 18 */ { 5 , (int)'o' , (int)'O' , -1 , 0x00f3 , 0x00d3 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x005b , 0x007b , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x005d , 0x007d , 0x001d , -1 , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 5 , (int)'a' , (int)'A' , -1 , 0x00e1 , 0x00c1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 0 , 0x003b , 0x003a , -1 , -1 , -1 } , + /* 28 */ { 0 , 0x27 , 0x40 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x60 , 0x00ac , -1 , 0x00a6 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x23 , 0x007e , 0x001c , -1 , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003c , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003e , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002f , 0x003f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002e , 0x002e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x005c , 0x007c , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + + }; + + public static final int DEADKEYS[] = null; + public static final int DEADKEY_LUT[][] = null; + + private static UnitedKingdomLayout instance = new UnitedKingdomLayout(); + + private UnitedKingdomLayout() { + } + + public static UnitedKingdomLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/UnitedStatesLayout.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/UnitedStatesLayout.java new file mode 100644 index 00000000..62097466 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/api/layout/UnitedStatesLayout.java @@ -0,0 +1,268 @@ +package com.inputstick.api.layout; + +public class UnitedStatesLayout extends KeyboardLayout { + + public static final String LOCALE_NAME = "en-US"; + + //{char (16b unicode), modifier, key, deadkey_modifier, deadkey} + //en-US + private static final int[][] FAST_LUT = { + { 0, 0, 0, 0, 0 }, // empty + { 27, 1, 47, 0, 0 }, //  + { 28, 1, 49, 0, 0 }, //  + { 29, 1, 48, 0, 0 }, //  + { 32, 0, 44, 0, 0 }, // + { 33, 2, 30, 0, 0 }, // ! + { 34, 2, 52, 0, 0 }, // " + { 35, 2, 32, 0, 0 }, // # + { 36, 2, 33, 0, 0 }, // $ + { 37, 2, 34, 0, 0 }, // % + { 38, 2, 36, 0, 0 }, // & + { 39, 0, 52, 0, 0 }, // ' + { 40, 2, 38, 0, 0 }, // ( + { 41, 2, 39, 0, 0 }, // ) + { 42, 2, 37, 0, 0 }, // * + { 43, 2, 46, 0, 0 }, // + + { 44, 0, 54, 0, 0 }, // , + { 45, 0, 45, 0, 0 }, // - + { 46, 0, 55, 0, 0 }, // . + { 47, 0, 56, 0, 0 }, // / + { 48, 0, 39, 0, 0 }, // 0 + { 49, 0, 30, 0, 0 }, // 1 + { 50, 0, 31, 0, 0 }, // 2 + { 51, 0, 32, 0, 0 }, // 3 + { 52, 0, 33, 0, 0 }, // 4 + { 53, 0, 34, 0, 0 }, // 5 + { 54, 0, 35, 0, 0 }, // 6 + { 55, 0, 36, 0, 0 }, // 7 + { 56, 0, 37, 0, 0 }, // 8 + { 57, 0, 38, 0, 0 }, // 9 + { 58, 2, 51, 0, 0 }, // : + { 59, 0, 51, 0, 0 }, // ; + { 60, 2, 54, 0, 0 }, // < + { 61, 0, 46, 0, 0 }, // = + { 62, 2, 55, 0, 0 }, // > + { 63, 2, 56, 0, 0 }, // ? + { 64, 2, 31, 0, 0 }, // @ + { 65, 2, 4, 0, 0 }, // A + { 66, 2, 5, 0, 0 }, // B + { 67, 2, 6, 0, 0 }, // C + { 68, 2, 7, 0, 0 }, // D + { 69, 2, 8, 0, 0 }, // E + { 70, 2, 9, 0, 0 }, // F + { 71, 2, 10, 0, 0 }, // G + { 72, 2, 11, 0, 0 }, // H + { 73, 2, 12, 0, 0 }, // I + { 74, 2, 13, 0, 0 }, // J + { 75, 2, 14, 0, 0 }, // K + { 76, 2, 15, 0, 0 }, // L + { 77, 2, 16, 0, 0 }, // M + { 78, 2, 17, 0, 0 }, // N + { 79, 2, 18, 0, 0 }, // O + { 80, 2, 19, 0, 0 }, // P + { 81, 2, 20, 0, 0 }, // Q + { 82, 2, 21, 0, 0 }, // R + { 83, 2, 22, 0, 0 }, // S + { 84, 2, 23, 0, 0 }, // T + { 85, 2, 24, 0, 0 }, // U + { 86, 2, 25, 0, 0 }, // V + { 87, 2, 26, 0, 0 }, // W + { 88, 2, 27, 0, 0 }, // X + { 89, 2, 28, 0, 0 }, // Y + { 90, 2, 29, 0, 0 }, // Z + { 91, 0, 47, 0, 0 }, // [ + { 92, 0, 49, 0, 0 }, // \ + { 93, 0, 48, 0, 0 }, // ] + { 94, 2, 35, 0, 0 }, // ^ + { 95, 2, 45, 0, 0 }, // _ + { 96, 0, 53, 0, 0 }, // ` + { 97, 0, 4, 0, 0 }, // a + { 98, 0, 5, 0, 0 }, // b + { 99, 0, 6, 0, 0 }, // c + { 100, 0, 7, 0, 0 }, // d + { 101, 0, 8, 0, 0 }, // e + { 102, 0, 9, 0, 0 }, // f + { 103, 0, 10, 0, 0 }, // g + { 104, 0, 11, 0, 0 }, // h + { 105, 0, 12, 0, 0 }, // i + { 106, 0, 13, 0, 0 }, // j + { 107, 0, 14, 0, 0 }, // k + { 108, 0, 15, 0, 0 }, // l + { 109, 0, 16, 0, 0 }, // m + { 110, 0, 17, 0, 0 }, // n + { 111, 0, 18, 0, 0 }, // o + { 112, 0, 19, 0, 0 }, // p + { 113, 0, 20, 0, 0 }, // q + { 114, 0, 21, 0, 0 }, // r + { 115, 0, 22, 0, 0 }, // s + { 116, 0, 23, 0, 0 }, // t + { 117, 0, 24, 0, 0 }, // u + { 118, 0, 25, 0, 0 }, // v + { 119, 0, 26, 0, 0 }, // w + { 120, 0, 27, 0, 0 }, // x + { 121, 0, 28, 0, 0 }, // y + { 122, 0, 29, 0, 0 }, // z + { 123, 2, 47, 0, 0 }, // { + { 124, 2, 49, 0, 0 }, // | + { 125, 2, 48, 0, 0 }, // } + { 126, 2, 53, 0, 0 }, // ~ + }; + + public static final int LUT[][] = { + /* 0 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2 */ { 0 , (int)'1' , 0x21 , -1 , -1 , -1 } , + /* 3 */ { 0 , (int)'2' , 0x40 , -1 , -1 , -1 } , + /* 4 */ { 0 , (int)'3' , 0x23 , -1 , -1 , -1 } , + /* 5 */ { 0 , (int)'4' , 0x24 , -1 , -1 , -1 } , + /* 6 */ { 0 , (int)'5' , 0x25 , -1 , -1 , -1 } , + /* 7 */ { 0 , (int)'6' , 0x005e , -1 , -1 , -1 } , + /* 8 */ { 0 , (int)'7' , 0x26 , -1 , -1 , -1 } , + /* 9 */ { 0 , (int)'8' , 0x002a , -1 , -1 , -1 } , + /* 0a */ { 0 , (int)'9' , 0x28 , -1 , -1 , -1 } , + /* 0b */ { 0 , (int)'0' , 0x29 , -1 , -1 , -1 } , + /* 0c */ { 0 , 0x002d , 0x005f , -1 , -1 , -1 } , + /* 0d */ { 0 , 0x003d , 0x002b , -1 , -1 , -1 } , + /* 0e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 0f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 10 */ { 1 , (int)'q' , (int)'Q' , -1 , -1 , -1 } , + /* 11 */ { 1 , (int)'w' , (int)'W' , -1 , -1 , -1 } , + /* 12 */ { 1 , (int)'e' , (int)'E' , -1 , -1 , -1 } , + /* 13 */ { 1 , (int)'r' , (int)'R' , -1 , -1 , -1 } , + /* 14 */ { 1 , (int)'t' , (int)'T' , -1 , -1 , -1 } , + /* 15 */ { 1 , (int)'y' , (int)'Y' , -1 , -1 , -1 } , + /* 16 */ { 1 , (int)'u' , (int)'U' , -1 , -1 , -1 } , + /* 17 */ { 1 , (int)'i' , (int)'I' , -1 , -1 , -1 } , + /* 18 */ { 1 , (int)'o' , (int)'O' , -1 , -1 , -1 } , + /* 19 */ { 1 , (int)'p' , (int)'P' , -1 , -1 , -1 } , + /* 1a */ { 0 , 0x005b , 0x007b , 0x001b , -1 , -1 } , + /* 1b */ { 0 , 0x005d , 0x007d , 0x001d , -1 , -1 } , + /* 1c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 1e */ { 1 , (int)'a' , (int)'A' , -1 , -1 , -1 } , + /* 1f */ { 1 , (int)'s' , (int)'S' , -1 , -1 , -1 } , + + /* 20 */ { 1 , (int)'d' , (int)'D' , -1 , -1 , -1 } , + /* 21 */ { 1 , (int)'f' , (int)'F' , -1 , -1 , -1 } , + /* 22 */ { 1 , (int)'g' , (int)'G' , -1 , -1 , -1 } , + /* 23 */ { 1 , (int)'h' , (int)'H' , -1 , -1 , -1 } , + /* 24 */ { 1 , (int)'j' , (int)'J' , -1 , -1 , -1 } , + /* 25 */ { 1 , (int)'k' , (int)'K' , -1 , -1 , -1 } , + /* 26 */ { 1 , (int)'l' , (int)'L' , -1 , -1 , -1 } , + /* 27 */ { 0 , 0x003b , 0x003a , -1 , -1 , -1 } , + /* 28 */ { 0 , 0x27 , 0x22 , -1 , -1 , -1 } , + /* 29 */ { 0 , 0x60 , 0x007e , -1 , -1 , -1 } , + /* 2a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 2b */ { 0 , 0x005c , 0x007c , 0x001c , -1 , -1 } , + /* 2c */ { 1 , (int)'z' , (int)'Z' , -1 , -1 , -1 } , + /* 2d */ { 1 , (int)'x' , (int)'X' , -1 , -1 , -1 } , + /* 2e */ { 1 , (int)'c' , (int)'C' , -1 , -1 , -1 } , + /* 2f */ { 1 , (int)'v' , (int)'V' , -1 , -1 , -1 } , + + /* 30 */ { 1 , (int)'b' , (int)'B' , -1 , -1 , -1 } , + /* 31 */ { 1 , (int)'n' , (int)'N' , -1 , -1 , -1 } , + /* 32 */ { 1 , (int)'m' , (int)'M' , -1 , -1 , -1 } , + /* 33 */ { 0 , 0x002c , 0x003c , -1 , -1 , -1 } , + /* 34 */ { 0 , 0x002e , 0x003e , -1 , -1 , -1 } , + /* 35 */ { 0 , 0x002f , 0x003f , -1 , -1 , -1 } , + /* 36 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 37 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 38 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 39 */ { 0 , 0x20 , 0x20 , 0x20 , -1 , -1 } , + /* 3a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 3f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 40 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 41 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 42 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 43 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 44 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 45 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 46 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 47 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 48 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 49 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 4f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + /* 50 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 51 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 52 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 53 */ { 0 , 0x002e , 0x002e , -1 , -1 , -1 } , + /* 54 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 55 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 56 */ { 0 , 0x005c , 0x007c , 0x001c , -1 , -1 } , + /* 57 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 58 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 59 */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5a */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5b */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5c */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5d */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5e */ { -1 , 0 , 0 , 0 , 0 , 0 } , + /* 5f */ { -1 , 0 , 0 , 0 , 0 , 0 } , + + }; + + public static final int DEADKEYS[] = null; + public static final int DEADKEY_LUT[][] = null; + + private static UnitedStatesLayout instance = new UnitedStatesLayout(); + + private UnitedStatesLayout() { + } + + public static UnitedStatesLayout getInstance() { + return instance; + } + + @Override + public int[][] getLUT() { + return LUT; + } + + @Override + public int[][] getFastLUT() { + return FAST_LUT; + } + + @Override + public void type(String text) { + super.type(FAST_LUT, text, (byte)0); + } + + @Override + public void type(String text, byte modifiers) { + super.type(FAST_LUT, text, modifiers); + } + + @Override + public char getChar(int scanCode, boolean capsLock, boolean shift, boolean altGr) { + return super.getChar(LUT, scanCode, capsLock, shift, altGr); + } + + @Override + public String getLocaleName() { + return LOCALE_NAME; + } + + @Override + public int[][] getDeadkeyLUT() { + return DEADKEY_LUT; + } + + @Override + public int[] getDeadkeys() { + return DEADKEYS; + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/BasicInitManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/BasicInitManager.java new file mode 100644 index 00000000..9af6e902 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/BasicInitManager.java @@ -0,0 +1,78 @@ +package com.inputstick.init; + +import com.inputstick.api.Packet; + + +public class BasicInitManager extends InitManager { + + private static final int UPDATES_LIMIT = 50; + private static final int RETRY_LIMIT = 3; + + + private int lastStatusParam; + private int noInitUpdatesCnt; + private int noInitRetryCnt; + + public BasicInitManager(byte[] key) { + super(key); + lastStatusParam = 0; + } + + + @Override + public void onConnected() { + sendPacket(new Packet(true, Packet.CMD_RUN_FW)); + } + + @Override + public void onData(byte[] data) { + byte cmd = data[0]; + byte respCode = data[1]; + byte param = data[1]; + + switch (cmd) { + case Packet.CMD_RUN_FW: + sendPacket(new Packet(true, Packet.CMD_FW_INFO)); + break; + case Packet.CMD_FW_INFO: + onFWInfo(data, true, true, new Packet(true, Packet.CMD_INIT)); //TODO next FW: params! + break; + case Packet.CMD_INIT: + if (respCode == Packet.RESP_OK) { + initDone = true; + noInitUpdatesCnt = 0; + noInitRetryCnt = 0; + sendPacket(new Packet(true, Packet.CMD_HID_STATUS_REPORT)); + } else { + mListener.onInitFailure(respCode); + } + break; + case Packet.CMD_INIT_AUTH: + onAuth(data, true, new Packet(true, Packet.CMD_INIT)); //TODO next FW: params! + break; + case Packet.CMD_HID_STATUS: + if (initDone) { + if (param != lastStatusParam) { + lastStatusParam = param; + if (param == 0x05) { + mListener.onInitReady(); + } else { + mListener.onInitNotReady(); + } + } + } else { + noInitUpdatesCnt++; + if (noInitUpdatesCnt == UPDATES_LIMIT) { + noInitUpdatesCnt = 0; + if (noInitRetryCnt < RETRY_LIMIT) { + sendPacket(new Packet(true, Packet.CMD_RUN_FW)); + noInitRetryCnt++; + } + } + } + break; + } + } + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/BootloaderInitManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/BootloaderInitManager.java new file mode 100644 index 00000000..ea49b56d --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/BootloaderInitManager.java @@ -0,0 +1,28 @@ +package com.inputstick.init; + +import com.inputstick.api.Packet; + +public class BootloaderInitManager extends InitManager { + + public BootloaderInitManager(byte[] key) { + super(key); + } + + @Override + public void onConnected() { + //TODO key + sendPacket(new Packet(true, Packet.CMD_RUN_BL)); + } + + @Override + public void onData(byte[] data) { + byte cmd = data[0]; + //byte respCode = data[1]; + //byte param = data[1]; + + if (cmd == Packet.CMD_RUN_BL) { + mListener.onInitReady(); + } + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/DeviceInfo.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/DeviceInfo.java new file mode 100644 index 00000000..286bed75 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/DeviceInfo.java @@ -0,0 +1,89 @@ +package com.inputstick.init; + +public class DeviceInfo { + + private int firmwareType; + private int versionMajor; + private int versionMinor; + private int versionHardware; + private int securityStatus; + + private boolean passwordProtected; + + public DeviceInfo(byte[] data) { + //cmd, param + firmwareType = data[2]; + versionMajor = data[3]; + versionMinor = data[4]; + versionHardware = data[5]; + + + //6,7,8,9 + //10,11,12,13 + //14,15,16,17 + + //18,19 + securityStatus = data[19]; + if (data[20] == 0) { + passwordProtected = false; + } else { + passwordProtected = true; + } + } + + public int getSecurityStatus() { + return securityStatus; + } + + public boolean isAuthenticated() { + return ((securityStatus & 0x10) != 0); + } + + public boolean isUnlocked() { + if (getFirmwareVersion() < 96) { + return true; + } else { + return ((securityStatus & 0x08) != 0); + } + } + + public int getFirmwareType() { + return firmwareType; + } + + public boolean isPasswordProtected() { + return passwordProtected; + } + + public int getVersionMinor() { + return versionMinor; + } + + public int getVersionMajor() { + return versionMajor; + } + + public int getHardwareVersion() { + return versionHardware; + } + + public int getFirmwareVersion() { + return (versionMajor) * 100 + versionMinor; + } + + + + public boolean supportsEncryption() { + return (getFirmwareVersion() >= 91); + } + + public boolean supportsPinChange() { + return (getFirmwareVersion() >= 97); + } + + public boolean supportsGamepad() { + return (getFirmwareVersion() >= 97); + } + + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/InitManager.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/InitManager.java new file mode 100644 index 00000000..c3c62256 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/InitManager.java @@ -0,0 +1,107 @@ +package com.inputstick.init; + +import com.inputstick.api.InputStickError; +import com.inputstick.api.Packet; +import com.inputstick.api.PacketManager; + +public class InitManager { + + public static final int DEFAULT_INIT_TIMEOUT = 60000; //60s init timeout + + protected PacketManager mPacketManager; + protected InitManagerListener mListener; + protected byte[] mKey; + protected DeviceInfo mInfo; + protected boolean initDone; + + public InitManager(byte[] key) { + mKey = key; + } + + + public DeviceInfo getDeviceInfo() { + return mInfo; + } + + public boolean isEncrypted() { + return mPacketManager.isEncrypted(); + } + + + public void init(InitManagerListener listener, PacketManager packetManager) { + mListener = listener; + mPacketManager = packetManager; + + initDone = false; + } + + public void onConnected() { + mListener.onInitReady(); + } + + public void onData(byte[] data) { + //byte cmd = data[0]; + //byte param = data[1]; + } + + public void sendPacket(Packet p) { + mPacketManager.sendPacket(p); + } + + public void onFWInfo(byte[] data, boolean authenticate, boolean enableEncryption, Packet sendNext) { + mInfo = new DeviceInfo(data); + + if (authenticate) { + if (mInfo.isPasswordProtected()) { + if (mKey != null) { + //authenticate + sendPacket(mPacketManager.encPacket(enableEncryption)); + } else { + mListener.onInitFailure(InputStickError.ERROR_SECURITY_NO_KEY); + } + } else { + if (mKey != null) { + //possible scenarios: FW upgrade / password removed using other device/app / tampering! + mListener.onInitFailure(InputStickError.ERROR_SECURITY_NOT_PROTECTED); + } + sendPacket(sendNext); + } + } else { + sendPacket(sendNext); + } + } + + public void onAuth(byte[] data, boolean enableOutEncryption, Packet sendNext) { + byte respCode = data[1]; + + switch (respCode) { + case Packet.RESP_OK: + byte[] cmp = new byte[16]; + //TODO check length! + System.arraycopy(data, 2, cmp, 0, 16); + if (mPacketManager.setEncryption(cmp, enableOutEncryption)) { + sendPacket(sendNext); + } else { + mListener.onInitFailure(InputStickError.ERROR_SECURITY_CHALLENGE); + } + break; + + case 0x20: + mListener.onInitFailure(InputStickError.ERROR_SECURITY_INVALID_KEY); + break; + + case 0x21: + mListener.onInitFailure(InputStickError.ERROR_SECURITY_NOT_PROTECTED); + break; + + case Packet.RESP_UNKNOWN_CMD: + mListener.onInitFailure(InputStickError.ERROR_SECURITY_NOT_SUPPORTED); + break; + + default: + mListener.onInitFailure(InputStickError.ERROR_SECURITY); + } + + } + +} diff --git a/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/InitManagerListener.java b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/InitManagerListener.java new file mode 100644 index 00000000..fee3c21a --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/java/com/inputstick/init/InitManagerListener.java @@ -0,0 +1,9 @@ +package com.inputstick.init; + +public interface InitManagerListener { + + public void onInitReady(); + public void onInitNotReady(); + public void onInitFailure(int code); + +} diff --git a/src/java/InputStickAPI/app/src/main/res/drawable-hdpi/ic_launcher.png b/src/java/InputStickAPI/app/src/main/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..96a442e5b8e9394ccf50bab9988cb2316026245d GIT binary patch literal 9397 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 literal 0 HcmV?d00001 diff --git a/src/java/InputStickAPI/app/src/main/res/drawable-xhdpi/ic_launcher.png b/src/java/InputStickAPI/app/src/main/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..71c6d760f05183ef8a47c614d8d13380c8528499 GIT binary patch literal 14383 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 literal 0 HcmV?d00001 diff --git a/src/java/InputStickAPI/app/src/main/res/menu/install_utility.xml b/src/java/InputStickAPI/app/src/main/res/menu/install_utility.xml new file mode 100644 index 00000000..c0020282 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/res/menu/install_utility.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/src/java/InputStickAPI/app/src/main/res/values-sw600dp/dimens.xml b/src/java/InputStickAPI/app/src/main/res/values-sw600dp/dimens.xml new file mode 100644 index 00000000..44f01db7 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/res/values-sw600dp/dimens.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/src/java/InputStickAPI/app/src/main/res/values-sw720dp-land/dimens.xml b/src/java/InputStickAPI/app/src/main/res/values-sw720dp-land/dimens.xml new file mode 100644 index 00000000..61e3fa8f --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/res/values-sw720dp-land/dimens.xml @@ -0,0 +1,9 @@ + + + + 128dp + + diff --git a/src/java/PluginInputStick/res/values-v11/styles.xml b/src/java/InputStickAPI/app/src/main/res/values-v11/styles.xml similarity index 100% rename from src/java/PluginInputStick/res/values-v11/styles.xml rename to src/java/InputStickAPI/app/src/main/res/values-v11/styles.xml diff --git a/src/java/PluginInputStick/res/values-v14/styles.xml b/src/java/InputStickAPI/app/src/main/res/values-v14/styles.xml similarity index 100% rename from src/java/PluginInputStick/res/values-v14/styles.xml rename to src/java/InputStickAPI/app/src/main/res/values-v14/styles.xml diff --git a/src/java/PluginInputStick/res/values/dimens.xml b/src/java/InputStickAPI/app/src/main/res/values/dimens.xml similarity index 100% rename from src/java/PluginInputStick/res/values/dimens.xml rename to src/java/InputStickAPI/app/src/main/res/values/dimens.xml diff --git a/src/java/InputStickAPI/app/src/main/res/values/strings.xml b/src/java/InputStickAPI/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..fbe60928 --- /dev/null +++ b/src/java/InputStickAPI/app/src/main/res/values/strings.xml @@ -0,0 +1,9 @@ + + + + InputStickAPI + Download InputStickUtility + Settings + Hello world! + + diff --git a/src/java/PluginInputStick/res/values/styles.xml b/src/java/InputStickAPI/app/src/main/res/values/styles.xml similarity index 100% rename from src/java/PluginInputStick/res/values/styles.xml rename to src/java/InputStickAPI/app/src/main/res/values/styles.xml diff --git a/src/java/InputStickAPI/build.gradle b/src/java/InputStickAPI/build.gradle new file mode 100644 index 00000000..88d246d4 --- /dev/null +++ b/src/java/InputStickAPI/build.gradle @@ -0,0 +1,15 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.2.3' + } +} + +allprojects { + repositories { + jcenter() + } +} diff --git a/src/java/InputStickAPI/build/intermediates/gradle_project_sync_data.bin b/src/java/InputStickAPI/build/intermediates/gradle_project_sync_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..40ef7efd698d75b1b2cd892448214bb7af377359 GIT binary patch literal 588 zcmZ4UmVvdnh`~BJKUXg?FQq6yGexf?KR>5fFEb@IQ7^qHF(oHeub?PDD>b=9&mGJS zfbfDV^O9W>OA^=Il)3f#Vc9Px24*h?$=phx#NrZ&LXe7(%-q!ClEmBs9|r#1O1I3M zROgJ;d2Qo;{Be6IGXc#N|t%HZf5-u_`Fu5^s z<>V)(xFsf+nf0c16Uz@dG2IRaZ3f31$qy}BaRo~MLC%h@U>v>52-n1GDT zoJ^oGP!nPh0a=h*RFaumTw2Ib$G{FU=8A03&3=YWEH4{4XT160R0niGPJVJ?4k*+y z6z^r7mKL_L)$!Oj_ueNdJvU1j1W7WQzc{s|1Q>e7Ft5R#G4E!=KAZdOdAbRDQsGXA n7nU&apo9TjVM3@V@7rUdeRICLm{cc!t*9trU^Ub;(lZ7CfK|}J literal 0 HcmV?d00001 diff --git a/src/java/InputStickAPI/gradle/wrapper/gradle-wrapper.jar b/src/java/InputStickAPI/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z zGh0A%o~bd$iYvP!egRY{hObDIvy_vXAOkeTgl5o!33m!l4VLm@<-FwT0+k|yl~vUh z@RFcL4=b(QQQmwQ;>FS_e96dyIU`jmR%&&Amxcb8^&?wvpK{_V_IbmqHh);$hBa~S z;^ph!k~noKv{`Ix7Hi&;Hq%y3wpqUsYO%HhI3Oe~HPmjnSTEasoU;Q_UfYbzd?Vv@ zD6ztDG|W|%xq)xqSx%bU1f>fF#;p9g=Hnjph>Pp$ZHaHS@-DkHw#H&vb1gARf4A*zm3Z75QQ6l( z=-MPMjish$J$0I49EEg^Ykw8IqSY`XkCP&TC?!7zmO`ILgJ9R{56s-ZY$f> zU9GwXt`(^0LGOD9@WoNFK0owGKDC1)QACY_r#@IuE2<`tep4B#I^(PRQ_-Fw(5nws zpkX=rVeVXzR;+%UzoNa;jjx<&@ABmU5X926KsQsz40o*{@47S2 z)p9z@lt=9?A2~!G*QqJWYT5z^CTeckRwhSWiC3h8PQ0M9R}_#QC+lz>`?kgy2DZio zz&2Ozo=yTXVf-?&E;_t`qY{Oy>?+7+I= zWl!tZM_YCLmGXY1nKbIHc;*Mag{Nzx-#yA{ zTATrWj;Nn;NWm6_1#0zy9SQiQV=38f(`DRgD|RxwggL(!^`}lcDTuL4RtLB2F5)lt z=mNMJN|1gcui=?#{NfL{r^nQY+_|N|6Gp5L^vRgt5&tZjSRIk{_*y<3^NrX6PTkze zD|*8!08ZVN)-72TA4Wo3B=+Rg1sc>SX9*X>a!rR~ntLVYeWF5MrLl zA&1L8oli@9ERY|geFokJq^O$2hEpVpIW8G>PPH0;=|7|#AQChL2Hz)4XtpAk zNrN2@Ju^8y&42HCvGddK3)r8FM?oM!3oeQ??bjoYjl$2^3|T7~s}_^835Q(&b>~3} z2kybqM_%CIKk1KSOuXDo@Y=OG2o!SL{Eb4H0-QCc+BwE8x6{rq9j$6EQUYK5a7JL! z`#NqLkDC^u0$R1Wh@%&;yj?39HRipTeiy6#+?5OF%pWyN{0+dVIf*7@T&}{v%_aC8 zCCD1xJ+^*uRsDT%lLxEUuiFqSnBZu`0yIFSv*ajhO^DNoi35o1**16bg1JB z{jl8@msjlAn3`qW{1^SIklxN^q#w|#gqFgkAZ4xtaoJN*u z{YUf|`W)RJfq)@6F&LfUxoMQz%@3SuEJHU;-YXb7a$%W=2RWu5;j44cMjC0oYy|1! zed@H>VQ!7=f~DVYkWT0nfQfAp*<@FZh{^;wmhr|K(D)i?fq9r2FEIatP=^0(s{f8GBn<8T zVz_@sKhbLE&d91L-?o`13zv6PNeK}O5dv>f{-`!ms#4U+JtPV=fgQ5;iNPl9Hf&9( zsJSm5iXIqN7|;I5M08MjUJ{J2@M3 zYN9ft?xIjx&{$K_>S%;Wfwf9N>#|ArVF^shFb9vS)v9Gm00m_%^wcLxe;gIx$7^xR zz$-JDB|>2tnGG@Rrt@R>O40AreXSU|kB3Bm)NILHlrcQ&jak^+~b`)2;otjI(n8A_X~kvp4N$+4|{8IIIv zw*(i}tt+)Kife9&xo-TyoPffGYe;D0a%!Uk(Nd^m?SvaF-gdAz4~-DTm3|Qzf%Pfd zC&tA;D2b4F@d23KV)Csxg6fyOD2>pLy#n+rU&KaQU*txfUj&D3aryVj!Lnz*;xHvl zzo}=X>kl0mBeSRXoZ^SeF94hlCU*cg+b}8p#>JZvWj8gh#66A0ODJ`AX>rubFqbBw z-WR3Z5`33S;7D5J8nq%Z^JqvZj^l)wZUX#7^q&*R+XVPln{wtnJ~;_WQzO{BIFV55 zLRuAKXu+A|7*2L*<_P${>0VdVjlC|n^@lRi}r?wnzQQm z3&h~C3!4C`w<92{?Dpea@5nLP2RJrxvCCBh%Tjobl2FupWZfayq_U$Q@L%$uEB6#X zrm_1TZA8FEtkd`tg)a_jaqnv3BC_O*AUq-*RNLOT)$>2D!r>FZdH&$x5G_FiAPaw4 zgK*7>(qd6R?+M3s@h>Z|H%7eGPxJWn_U$w`fb(Mp+_IK2Kj37YT#Xe5e6KS-_~mW} z`NXEovDJh7n!#q4b+=ne<7uB7Y2(TAR<3@PS&o3P$h#cZ-xF$~JiH6_gsv9v(#ehK zhSB_#AI%lF#+!MB5DMUN+Zhf}=t~{B|Fn{rGM?dOaSvX!D{oGXfS*%~g`W84JJAy4 zMdS?9Bb$vx?`91$J`pD-MGCTHNxU+SxLg&QY+*b_pk0R=A`F}jw$pN*BNM8`6Y=cm zgRh#vab$N$0=XjH6vMyTHQg*+1~gwOO9yhnzZx#e!1H#|Mr<`jJGetsM;$TnciSPJ z5I-R0)$)0r8ABy-2y&`2$33xx#%1mp+@1Vr|q_e=#t7YjjWXH#3F|Fu<G#+-tE2K7 zOJkYxNa74@UT_K4CyJ%mR9Yfa$l=z}lB(6)tZ1Ksp2bv$^OUn3Oed@=Q0M}imYTwX zQoO^_H7SKzf_#kPgKcs%r4BFUyAK9MzfYReHCd=l)YJEgPKq-^z3C%4lq%{&8c{2CGQ3jo!iD|wSEhZ# zjJoH87Rt{4*M_1GdBnBU3trC*hn@KCFABd=Zu`hK;@!TW`hp~;4Aac@24m|GI)Ula z4y%}ClnEu;AL4XVQ6^*!()W#P>BYC@K5mw7c4X|Hk^(mS9ZtfMsVLoPIiwI?w_X0- z#vyiV5q9(xq~fS`_FiUZw->8Awktga>2SrWyvZ|h@LVFtnY#T z%OX30{yiSov4!43kFd(8)cPRMyrN z={af_ONd;m=`^wc7lL|b7V!;zmCI}&8qz=?-6t=uOV;X>G{8pAwf9UJ`Hm=ubIbgR zs6bw3pFeQHL`1P1m5fP~fL*s?rX_|8%tB`Phrij^Nkj{o0oCo*g|ELexQU+2gt66=7}w5A+Qr}mHXC%)(ODT# zK#XTuzqOmMsO~*wgoYjDcy)P7G`5x7mYVB?DOXV^D3nN89P#?cp?A~c%c$#;+|10O z8z(C>mwk#A*LDlpv2~JXY_y_OLZ*Mt)>@gqKf-Ym+cZ{8d%+!1xNm3_xMygTp-!A5 zUTpYFd=!lz&4IFq)Ni7kxLYWhd0o2)ngenV-QP@VCu;147_Lo9f~=+=Nw$6=xyZzp zn7zAe41Sac>O60(dgwPd5a^umFVSH;<7vN>o;}YlMYhBZFZ}-sz`P^3oAI>SCZy&zUtwKSewH;CYysPQN7H>&m215&e2J? zY}>5N-LhaDeRF~C0cB>M z7@y&xh9q??*EIKnh*;1)n-WuSl6HkrI?OUiS^lx$Sr2C-jUm6zhd{nd(>#O8k9*kF zPom7-%w1NjFpj7WP=^!>Vx^6SG^r`r+M&s7V(uh~!T7aE;_ubqNSy)<5(Vi)-^Mp9 zEH@8Vs-+FEeJK%M0z3FzqjkXz$n~BzrtjQv`LagAMo>=?dO8-(af?k@UpL5J#;18~ zHCnWuB(m6G6a2gDq2s`^^5km@A3Rqg-oHZ68v5NqVc zHX_Iw!OOMhzS=gfR7k;K1gkEwuFs|MYTeNhc0js>Wo#^=wX4T<`p zR2$8p6%A9ZTac;OvA4u#Oe3(OUep%&QgqpR8-&{0gjRE()!Ikc?ClygFmGa(7Z^9X zWzmV0$<8Uh)#qaH1`2YCV4Zu6@~*c*bhtHXw~1I6q4I>{92Eq+ZS@_nSQU43bZyidk@hd$j-_iL=^^2CwPcaXnBP;s;b zA4C!k+~rg4U)}=bZ2q*)c4BZ#a&o!uJo*6hK3JRBhOOUQ6fQI;dU#3v>_#yi62&Sp z-%9JJxwIfQ`@w(_qH0J0z~(lbh`P zHoyp2?Oppx^WXwD<~20v!lYm~n53G1w*Ej z9^B*j@lrd>XGW43ff)F;5k|HnGGRu=wmZG9c~#%vDWQHlOIA9(;&TBr#yza{(?k0> zcGF&nOI}JhuPl`kLViBEd)~p2nY9QLdX42u9C~EUWsl-@CE;05y@^V1^wM$ z&zemD1oZd$Z))kEw9)_Mf+X#nT?}n({(+aXHK2S@j$MDsdrw-iLb?#r{?Vud?I5+I zVQ8U?LXsQ}8-)JBGaoawyOsTTK_f8~gFFJ&lhDLs8@Rw$ey-wr&eqSEU^~1jtHmz6 z!D2g4Yh?3VE*W8=*r&G`?u?M~AdO;uTRPfE(@=Gkg z7gh=EGu!6VJJ?S_>|5ZwY?dGFBp3B9m4J1=7u=HcGjsCW+y6`W?OWxfH?S#X8&Zk& zvz6tWcnaS1@~3FTH}q_*$)AjYA_j;yl0H0{I(CW7Rq|;5Q2>Ngd(tmJDp+~qHe_8y zPU_fiCrn!SJ3x&>o6;WDnjUVEt`2fhc9+uLI>99(l$(>Tzwpbh>O775OA5i`jaBdp zXnCwUgomyF3K$0tXzgQhSAc!6nhyRh_$fP}Rd$|*Y7?ah(JrN=I7+)+Hp4BLJJ2P~ zFD!)H^uR2*m7GQZpLUVS#R3^?2wCd}(gcFcz!u5KN9ldNJdh@%onf06z9m~T0n;dqg6@?>G@S|rPO*Kj>{su+R|7bH>osA&uD4eqxtr**k($ii`uO? z7-&VkiL4Rp3S&e+T}2Z#;NtWHZco(v8O3QMvN0g7l8GV|U2>x-DbamkZo5)bjaSFR zr~Y9(EvF9{o*@|nBPj+e5o$_K`%TH1hD=|its}|qS^o6EQu_gOuDUH=Dtzik;P7G$ zq%_T<>9O}bGIB?;IQ*H`BJ5NWF6+XLv@G7aZwcy(&BoepG~u`aIcG>y+;J7+L=wTZ zB=%n@O}=+mjBO%1lMo6C0@1*+mhBqqY((%QMUBhyeC~r*5WVqzisOXFncr*5Lr0q6 zyPU&NOV}Vt2jl>&yig4I6j93?D>Ft=keRh=Y;3*^Z-I26nkZ#Jj5OJ89_?@#9lNjp z#gfAO6i937)~I|98P%xAWxwmk(F&@lTMx63*FZ~2b{NHU+}EV8+kMAB0bM*Zn#&7ubt98!PT^ZcMOfwMgkYz6+;?CKbvV zQ}Z@s_3JcMPhF&y1?}9uZFIBiPR3g7lf=+XEr9Bl%zRfGcaKb*ZQq5b35ZkR@=JEw zP#iqgh2^#@VA-h)>r`7R-$1_ddGr&oWWV$rx;pkG0Yohp9p@In_p)hKvMo@qIv zcN2t{23&^Nj=Y&gX;*vJ;kjM zHE2`jtjVRRn;=WqVAY&m$z=IoKa{>DgJ;To@OPqNbh=#jiS$WE+O4TZIOv?niWs47 zQfRBG&WGmU~>2O{}h17wXGEnigSIhCkg%N~|e?hG8a- zG!Wv&NMu5z!*80>;c^G9h3n#e>SBt5JpCm0o-03o2u=@v^n+#6Q^r#96J5Q=Dd=>s z(n0{v%yj)=j_Je2`DoyT#yykulwTB+@ejCB{dA7VUnG>4`oE?GFV4sx$5;%9&}yxfz<-wWk|IlA|g&! zN_Emw#w*2GT=f95(%Y1#Viop;Yro3SqUrW~2`Fl?Ten{jAt==a>hx$0$zXN`^7>V_ zG*o7iqeZV)txtHUU2#SDTyU#@paP;_yxp!SAG##cB= zr@LoQg4f~Uy5QM++W`WlbNrDa*U;54`3$T;^YVNSHX4?%z|`B~i7W+kl0wBB`8|(l zAyI6dXL&-Sei0=f#P^m`z=JJ`=W;PPX18HF;5AaB%Zlze`#pz;t#7Bzq0;k8IyvdK=R zBW+4GhjOv+oNq^~#!5(+pDz)Ku{u60bVjyym8Or8L;iqR|qTcxEKTRm^Y%QjFYU=ab+^a|!{!hYc+= z%Qc02=prKpzD+jiiOwzyb(dELO|-iyWzizeLugO!<1(j|3cbR!8Ty1$C|l@cWoi?v zLe<5+(Z-eH++=fX**O-I8^ceYZgiA!!dH+7zfoP-Q+@$>;ab&~cLFg!uOUX7h0r== z`@*QP9tnV1cu1!9pHc43C!{3?-GUBJEzI(&#~vY9MEUcRNR*61)mo!RG>_Yb^rNN7 zR9^bI45V?3Lq`^^BMD!GONuO4NH#v9OP3@s%6*Ha3#S*;f z6JEi)qW#Iq#5BtIXT9Gby|H?NJG}DN#Li82kZ_Rt1=T0Z@U6OAdyf}4OD|Sk^2%-1 zzgvqZ@b6~kL!^sZLO$r{s!3fQ5bHW}8r$uTVS*iw1u8^9{YlPp_^Xm5IN zF|@)ZOReX zB*#tEbWEX~@f)ST|s$oUKS@drycE1tYtdJ9b*(uFTxNZ{n3BI*kF7wXgT6+@PI@vwH7iQS{1T!Nauk>fm8gOLe`->Pi~ z8)3=UL_$OLl2n7QZlHt846nkYFu4V};3LpYA%5VaF#a2#d2g0&ZO~3WA%1XlerVpg zCAlM;(9OqH@`(>Tha{*@R%twB!}1ng4V=^+R`Q{#fkRk)C|suozf-uCXrkIH2SC^C z6wlxR`yS;-U#uu#`OnD%U<41%C4mp>LYLPIbgVO~WsT1if)Y)T*8nUB`2*(B;U_ha1NWv2`GqrZ z3MWWpT3tZ!*N@d*!j3=@K4>X*gX4A^@QPAz24?7u90AXaLiFq=Z$|5p$Ok2|YCX_Z zFgNPiY2r_Bg2BQE!0z=_N*G?%0cNITmAru*!Mws=F+F&Qw!&1?DBN{vSy%IvGRV@1 zS->PARgL^XS!-aZj zi@`~LhWfD!H-L0kNv=Jil9zR0>jZLqu)cLq?$yXVyk%EteKcWbe^qh#spHJPa#?92 za(N(Kw0se^$7nQUQZBet;C_Dj5(2_?TdrXFYwmebq}YGQbN5Ex7M zGSCX~Ey;5AqAzEDNr%p^!cuG?&wIeY&Bm5guVg>8F=!nT%7QZTGR(uGM&IZuMw0V_ zhPiIFWm?H?aw*(v6#uVT@NEzi2h5I$cZ-n0~m$tmwdMTjG*of^Y%1 zW?Y%o*-_iMqEJhXo^!Qo?tGFUn1Mb|urN4_;a)9bila2}5rBS#hZ5wV+t1xbyF1TW zj+~cdjbcMgY$zTOq6;ODaxzNA@PZIXX(-=cT8DBd;9ihfqqtbDr9#gXGtK24BPxjZ z9+Xp>W1(s)->-}VX~BoQv$I|-CBdO`gULrvNL>;@*HvTdh@wyNf}~IB5mFnTitX2i z;>W>tlQyc2)T4Mq+f!(i3#KuK-I8Kj3Wm(UYx?KWWt8DEPR_Jdb9CE~Fjc7Rkh#gh zowNv()KRO@##-C+ig0l!^*ol!Bj%d32_N*~d!|&>{t!k3lc?6VrdlCCb1?qyoR42m zv;4KdwCgvMT*{?tJKa(T?cl|b;k4P>c&O@~g71K5@}ys$)?}WSxD;<5%4wEz7h=+q ztLumn6>leWdDk#*@{=v9p)MsvuJMyf_VEs;pJh?i3z7_W@Q|3p$a}P@MQ-NpMtDUBgH!h4Ia#L&POr4Qw0Tqdw^}gCmQAB z8Dgkzn?V!_@04(cx0~-pqJOpeP1_}@Ml3pCb45EJoghLows9ET13J8kt0;m$6-jO( z4F|p+JFD1NT%4bpn4?&)d+~<360$z5on`eS6{H`S>t`VS$>(D`#mC*XK6zULj1Da# zpV$gw$2Ui{07NiYJQQNK;rOepRxA>soNK~B2;>z;{Ovx`k}(dlOHHuNHfeR}7tmIp zcM}q4*Fq8vSNJYi@4-;}`@bC?nrUy`3jR%HXhs79qWI5;hyTpH5%n-NcKu&j(aGwT z1~{geeq?Jd>>HL+?2`0K8dB2pvTS=LO~tb~vx_<=iN8^rW!y@~lBTAaxHmvVQJSeJ z!cb9ffMdP1lgI=>QJN{XpM4{reRrdIt|v|0-8!p}M*Qw^uV1@Ho-YsNd0!a(os$F* zT0tGHA#0%u0j*%S>kL*73@~7|iP;;!JbWSTA@`#VHv_l_%Z7CgX@>dhg_ zgn0|U)SY~U-E5{QiT@(uPp#1jaz!(_3^Cbz2 z4ZgWWz=PdGCiGznk{^4TBfx_;ZjAHQ>dB4YI}zfEnTbf60lR%=@VWt0yc=fd38Ig* z)Q38#e9^+tA7K}IDG5Z~>JE?J+n%0_-|i2{E*$jb4h?|_^$HRHjVkiyX6@Y+)0C2a zA+eegpT1dUpqQFIwx;!ayQcWQBQTj1n5&h<%Lggt@&tE19Rm~Rijtqw6nmYip_xg0 zO_IYpU304embcWP+**H|Z5~%R*mqq+y{KbTVqugkb)JFSgjVljsR{-c>u+{?moCCl zTL)?85;LXk0HIDC3v*|bB-r_z%zvL6Dp__L*A~Z*o?$rm>cYux&)W=6#+Cb}TF&Kd zdCgz3(ZrNA>-V>$C{a^Y^2F!l_%3lFe$s(IOfLBLEJ4Mcd!y&Ah9r)7q?oc z5L(+S8{AhZ)@3bw0*8(}Xw{94Vmz6FrK&VFrJN;xB96QmqYEibFz|yHgUluA-=+yS}I-+#_Pk zN67-#8W(R^e7f!;i0tXbJgMmJZH%yEwn*-}5ew13D<_FYWnt?{Mv1+MI~u;FN~?~m z{hUnlD1|RkN}c1HQ6l@^WYbHAXPJ^m0te1woe;LDJ}XEJqh1tPf=sD0%b+OuR1aCoP>I>GBn4C24Zu$D)qg=gq;D??5 zUSj%;-Hvk_ffj-+SI{ZCp`gZcNu=L@_N}kCcs?TyMr-37fhy$?a<7lt1`fZw<%$8@B6(Wgo!#!z9z{ab|x`+&;kP!(gfdY}A-GP&4Cbh-S< z1(kmgnMyB2z3ipEj5;4<{(=&<7a>A_Jl`ujUKYV@%k(oD=cD7W@8~5O=R*zdjM_y; zXwme~0wo0aDa~9rDnjF=B}Bbj|DHRQjN|?@(F^=bVFdr!#mwr|c0843k>%~5J|7|v zSY=T)iPU6rEAwrM(xTZwPio%D4y9Z4kL0bMLKvu4yd)0ZJA3<;>a2q~rEfcREn}~1 zCJ~3c?Afvx?3^@+!lnf(kB6YwfsJ*u^y7kZA?VmM%nBmaMspWu?WXq4)jQsq`9EbT zlF2zJ)wXuAF*2u|yd5hNrG>~|i}R&ZyeetTQ!?Hz6xGZZb3W6|vR>Hq=}*m=V=Lsp zUOMxh;ZfP4za~C{Ppn^%rhitvpnu^G{Z#o-r?TdEgSbtK_+~_iD49xM;$}X*mJF02|WBL{SDqK9}p4N!G$3m=x#@T+4QcapM{4j|Q zwO!(hldpuSW#by!zHEP@tzIC|KdD z%BJzQ7Ho1(HemWm`Z8m_D#*`PZ-(R%sZmPrS$aHS#WPjH3EDitxN|DY+ zYC|3S?PQ3NNYau$Qk8f>{w}~xCX;;CE=7;Kp4^xXR8#&^L+y-jep7oO^wnQ840tg1 zuN17QKsfdqZPlB8OzwF+)q#IsmenEmIbRAJHJ$JjxzawKpk8^sBm3iy=*kB%LppNb zhSdk`^n?01FKQ;=iU+McN7Mk0^`KE>mMe1CQ2a_R26_}^$bogFm=2vqJake7x)KN( zYz;gRPL+r4*KD>1U+DU+1jh{mT8#P#(z9^(aDljpeN{mRmx{AZX&hXKXNuxj3x*RrpjvOaZ#`1EqK!$+8=0yv8}=;>f=E?5tGbRUd4%?QL zy$kq6mZeF%k6E1&8nwAYMd!-lRkhQTob$7s`*XqcHs;l~mHV}fx&0I&i!CHaPVSM{ zHdRh7a>hP)t@YTrWm9y zl-ENWSVzlKVvTdWK>)enmGCEw(WYS=FtY{srdE{Z(3~4svwd)ct;`6Y{^qiW+9E@A ztzd?lj5F#k`=E1U-n*1JJc0{x{0q!_tkD<_S6bGsW)^RxGu%Rj^Mvw|R0WP1SqvAI zs(MiAd@Y5x!UKu376&|quQNxir;{Iz(+}3k-GNb29HaQh?K30u=6sXpIc?j0hF{VY zM$Do*>pN)eRljAOgpx7fMfSrnZ7>fi@@>Jh;qxj1#-Vj}JC3E^GCbC(r55_AG>6cq z4ru34FtVuBt)bkX4>ZFWjToyu)VA>IE6hXc+^(3ruUaKRqHnx3z)(GXetm;^0D95s zQ&drwfjhM4*|q=;i5Io0eDf?I{p}qo@7i7abHX5qLu~VDwYf4bmV~-^M_U?DL(+cG z{AyE^a|*73Ft)o5k-p)+GLXj#q01VlJ9#ZJkf|+c%6qfRgVp&6NsU3~F?!uh}HJm73xq>v$h zYoW3wJE6n9P|;{8U<^%UE2wjR4x^G_Nc$J(i)!>;g4`CCh2z^Dth#ah#<`#axDR?F z4>~hnN2%B2ZUuU6j>m1Qjj~5jQSdA&Q#7hOky#=Ue)}7LPJ!8nbZO_0Sw{G>>M7&E zb1dy|0Zi$(ubk`4^XkVI%4WIpe?Bh!D~IjvZs14yHw=aQ8-`N-=P*?Kzi&eRGZ_6Z zT>eis`!Dy3eT3=vt#Lbc+;}i5XJf7zM3QneL{t?w=U<1rk7+z2Cu^|~=~54tAeSYF zsXHsU;nM0dpK>+71yo(NFLV-^Lf7%U?Q$*q{^j04Gl71ya2)^j`nmJ$cmI9eFMjp+ z#)jKmi4lZc<;l>!={@jTm%?!5jS;6;c*Ml55~r6Y?22B^K3bPhKQ(ICc&z%w<4W1= zjTTtz_}IA$%kCqU)h#$!Yq>>2mVG}qYL}!avmCWYV}x4!YEeq)pgTp| zR;+skHuc7YXRLrcbYXt>?@pa{l^2pL>RrZ!22zMmi1ZR?nkaWF*`@XFK4jGh&Em3vn(l z3~^Q9&tM^eV=f^lccCUc9v02z%^n5VV6s$~k0uq5B#Ipd6`M1Kptg^v<2jiNdlAWQ z_MmtNEaeYIHaiuaFQdG&df7miiB5lZkSbg&kxY*Eh|KTW`Tk~VwKC~+-GoYE+pvwc{+nIEizq6!xP>7ZQ(S2%48l$Y98L zvs7s<&0ArXqOb*GdLH0>Yq-f!{I~e~Z@FUIPm?jzqFZvz9VeZLYNGO}>Vh<=!Er7W zS!X6RF^et7)IM1pq57z*^hP5w7HKSDd8jHX!*gkKrGc-GssrNu5H%7-cNE{h$!aEQK3g*qy;= z)}pxO8;}nLVYm_24@iEs8)R7i;Th0n4->&$8m6(LKCRd(yn7KY%QHu_f=*#e`H^U( z{u!`9JaRD?Z?23fEXrjx>A@+a!y-_oaDB)o@2s{2%A97-ctFfrN0cXQ@6aGH`X~Nr z144?qk;MzDU-cgQOLfT3-ZR#hKmYtKG*iGf4ZJ`|`9!^SkBDUUSJCba)>mM!)k~(z zdjUqB`)~!UObMHB1b$UItM$<0kwlqHH;c z=)+~bkOcIT7vI0Iy(wD)vsg9|oi##%Rgrq`Ek;pN)}lbpz`iv{F4K*{ZZ?Zjixxxr zY|SPl2NsXH+5pimj+MvbZ_+HrfvdC13|9Zs)Y=nW$z<0mhl}%irBSm5T3ZrN#2AhY z_ZrTmS(L`U#y}VZ@~QL9wUS6AnU*7LWS02Xyz`b>%rTml#Wb0yr>@c(Ym*40g;P{V zjV1XSHdU>oY!&Jh7MzhzUV8(9E+yl5UJYga>=0Ldjwtc`5!1>LxaB-kVW;IlSPs+0 zUBx=m8OKVp<`frNvMK>WMO(iKY%PuvqD+PK*vP6f?_o!O)MCW5Ic zv(%f5PLHyOJ2h@Yn_to@54Yq;fdoy40&sbe3A$4uUXHsHP_~K}h#)p&TyOx(~JE?y(IBAQKl}~VQjVC-c6oZwmESL;`Xth?2)-b6ImNcJi z;w|`Q*k?`L(+Dp}t(FocvzWB(%~9$EAB6_J6CrA}hMj-Vy*6iA$FdV}!lvk%6}M)4 zTf<)EbXr9^hveAav1yA?>O0aNEpv0&rju{(Gt|dP=AP%)uQm~OE7@+wEhILrRLt&E zoEsF^nz>4yK1|EOU*kM+9317S;+bb7?TJM2UUpc!%sDp}7!<`i=W!ot8*C&fpj>mk#qt~GCeqcy)?W6sl>eUnR%yCBR&Ow-rc|q;lhnI+f-%`6Xf)% zIYZru;27%vA{Qi2=J`PQC<28;tFx(V^sgXf>)8WNxxQwT14M9I6- z+V0@tiCiDkv`7r-06sJS8@s|Lf>mV+8h}SPT4ZGPSMaFK7_SMXH$3KN7b2V?iV-jA zh1!Z>2tv^HVbHnNUAf-wQW#zMV(h8=3x2Swd|-%AczEIWLcm~EAu7rc3s%56b;7ME zj}$pe#fc^314Mb9i)xH^_#({)tTD4hsoz!7XcHUh9*G|}?k=D?9LBkTm2?fgaIG(%%$DL#}a-_990rQBU+M;jrf zCcvgM`+oyZmsUqc?lly9axZfO)02l$TMS#I+jHYY`Uk!gtDv|@GBQ||uaG^n*QR3Q z@tV?D;R;KmkxSDQh<2DkDC1?m?jTvf2i^T;+}aYhzL?ymNZmdns2e)}2V>tDCRw{= zTV3q3ZQDkdZQHi3?y{@8Y@1!SZQHi(y7|qSx$~Vl=iX<2`@y3eSYpsBV zI`Q-6;)B=p(ZbX55C*pu1C&yqS|@Pytis3$VDux0kxKK}2tO&GC;cH~759o?W2V)2 z)`;U(nCHBE!-maQz%z#zoRNpJR+GmJ!3N^@cA>0EGg?OtgM_h|j1X=!4N%!`g~%hdI3%yz&wq4rYChPIGnSg{H%i>96! z-(@qsCOfnz7ozXoUXzfzDmr>gg$5Z1DK$z#;wn9nnfJhy6T5-oi9fT^_CY%VrL?l} zGvnrMZP_P|XC$*}{V}b^|Hc38YaZQESOWqA1|tiXKtIxxiQ%Zthz?_wfx@<8I{XUW z+LH%eO9RxR_)8gia6-1>ZjZB2(=`?uuX|MkX082Dz*=ep%hMwK$TVTyr2*|gDy&QOWu zorR#*(SDS{S|DzOU$<-I#JTKxj#@0(__e&GRz4NuZZLUS8}$w+$QBgWMMaKge*2-) zrm62RUyB?YSUCWTiP_j-thgG>#(ZEN+~bMuqT~i3;Ri`l${s0OCvCM>sqtIX?Cy`8 zm)MRz-s^YOw>9`aR#J^tJz6$S-et%elmR2iuSqMd(gr6a#gA_+=N(I6%Cc+-mg$?_1>PlK zbgD2`hLZ?z4S~uhJf=rraLBL?H#c$cXyqt{u^?#2vX2sFb z^EU-9jmp{IZ~^ii@+7ogf!n_QawvItcLiC}w^$~vgEi(mX79UwDdBg`IlF42E5lWE zbSibqoIx*0>WWMT{Z_NadHkSg8{YW4*mZ@6!>VP>ey}2PuGwo%>W7FwVv7R!OD32n zW6ArEJX8g_aIxkbBl^YeTy5mhl1kFGI#n>%3hI>b(^`1uh}2+>kKJh0NUC|1&(l)D zh3Barl&yHRG+Le2#~u>KoY-#GSF>v)>xsEp%zgpq4;V6upzm3>V&yk^AD}uIF{vIn zRN-^d4(Sk6ioqcK@EObsAi#Z-u&Hh#kZdv1rjm4u=$2QF<6$mgJ4BE0yefFI zT7HWn?f668n!;x>!CrbdA~lDfjX?)315k1fMR~lG)|X_o()w|NX&iYUTKxI2TLl|r z{&TWcBxP>*;|XSZ1GkL&lSg?XL9rR4Ub&4&03kf};+6$F)%2rsI%9W_i_P|P%Z^b@ zDHH2LV*jB@Izq0~E4F^j04+C|SFiV8{!bth%bz(KfCg42^ zGz5P7xor$)I4VX}Cf6|DqZ$-hG7(}91tg#AknfMLFozF1-R~KS3&5I0GNb`P1+hIB z?OPmW8md3RB6v#N{4S5jm@$WTT{Sg{rVEs*)vA^CQLx?XrMKM@*gcB3mk@j#l0(~2 z9I=(Xh8)bcR(@8=&9sl1C?1}w(z+FA2`Z^NXw1t(!rpYH3(gf7&m=mm3+-sls8vRq z#E(Os4ZNSDdxRo&`NiRpo)Ai|7^GziBL6s@;1DZqlN@P_rfv4Ce1={V2BI~@(;N`A zMqjHDayBZ);7{j>)-eo~ZwBHz0eMGRu`43F`@I0g!%s~ANs>Vum~RicKT1sUXnL=gOG zDR`d=#>s?m+Af1fiaxYxSx{c5@u%@gvoHf#s6g>u57#@#a2~fNvb%uTYPfBoT_$~a^w96(}#d;-wELAoaiZCbM zxY4fKlS6-l1!b1!yra|`LOQoJB))=CxUAYqFcTDThhA?d}6FD$gYlk**!# zD=!KW>>tg1EtmSejwz{usaTPgyQm~o+NDg`MvNo)*2eWX*qAQ)4_I?Pl__?+UL>zU zvoT(dQ)pe9z1y}qa^fi-NawtuXXM>*o6Al~8~$6e>l*vX)3pB_2NFKR#2f&zqbDp7 z5aGX%gMYRH3R1Q3LS91k6-#2tzadzwbwGd{Z~z+fBD5iJ6bz4o1Rj#7cBL|x8k%jO z{cW0%iYUcCODdCIB(++gAsK(^OkY5tbWY;)>IeTp{{d~Y#hpaDa-5r#&Ha?+G{tn~ zb(#A1=WG1~q1*ReXb4CcR7gFcFK*I6Lr8bXLt9>9IybMR&%ZK15Pg4p_(v5Sya_70 ziuUYG@EBKKbKYLWbDZ)|jXpJJZ&bB|>%8bcJ7>l2>hXuf-h5Bm+ zHZ55e9(Sg>G@8a`P@3e2(YWbpKayoLQ}ar?bOh2hs89=v+ifONL~;q(d^X$7qfw=; zENCt`J*+G;dV_85dL3Tm5qz2K4m$dvUXh>H*6A@*)DSZ2og!!0GMoCPTbcd!h z@fRl3f;{F%##~e|?vw6>4VLOJXrgF2O{)k7={TiDIE=(Dq*Qy@oTM*zDr{&ElSiYM zp<=R4r36J69aTWU+R9Hfd$H5gWmJ?V){KU3!FGyE(^@i!wFjeZHzi@5dLM387u=ld zDuI1Y9aR$wW>s#I{2!yLDaVkbP0&*0Rw%6bi(LtieJQ4(1V!z!ec zxPd)Ro0iU%RP#L|_l?KE=8&DRHK>jyVOYvhGeH+Dg_E%lgA(HtS6e$v%D7I;JSA2x zJyAuin-tvpN9g7>R_VAk2y;z??3BAp?u`h-AVDA;hP#m+Ie`7qbROGh%_UTW#R8yfGp<`u zT0}L)#f%(XEE)^iXVkO8^cvjflS zqgCxM310)JQde*o>fUl#>ZVeKsgO|j#uKGi)nF_ur&_f+8#C0&TfHnfsLOL|l(2qn zzdv^wdTi|o>$q(G;+tkTKrC4rE)BY?U`NHrct*gVx&Fq2&`!3htkZEOfODxftr4Te zoseFuag=IL1Nmq45nu|G#!^@0vYG5IueVyabw#q#aMxI9byjs99WGL*y)AKSaV(zx z_`(}GNM*1y<}4H9wYYSFJyg9J)H?v((!TfFaWx(sU*fU823wPgN}sS|an>&UvI;9B(IW(V)zPBm!iHD} z#^w74Lpmu7Q-GzlVS%*T-z*?q9;ZE1rs0ART4jnba~>D}G#opcQ=0H)af6HcoRn+b z<2rB{evcd1C9+1D2J<8wZ*NxIgjZtv5GLmCgt?t)h#_#ke{c+R6mv6))J@*}Y25ef z&~LoA&qL-#o=tcfhjH{wqDJ;~-TG^?2bCf~s0k4Rr!xwz%Aef_LeAklxE=Yzv|3jf zgD0G~)e9wr@)BCjlY84wz?$NS8KC9I$wf(T&+79JjF#n?BTI)Oub%4wiOcqw+R`R_q<`dcuoF z%~hKeL&tDFFYqCY)LkC&5y(k7TTrD>35rIAx}tH4k!g9bwYVJ>Vdir4F$T*wC@$08 z9Vo*Q0>*RcvK##h>MGUhA9xix+?c1wc6xJhn)^9;@BE6i*Rl8VQdstnLOP1mq$2;!bfASHmiW7|=fA{k$rs^-8n{D6_ z!O0=_K}HvcZJLSOC6z-L^pl3Gg>8-rU#Sp1VHMqgXPE@9x&IHe;K3;!^SQLDP1Gk&szPtk| z!gP;D7|#y~yVQ?sOFiT*V(Z-}5w1H6Q_U5JM#iW16yZiFRP1Re z6d4#47#NzEm};1qRP9}1;S?AECZC5?6r)p;GIW%UGW3$tBN7WTlOy|7R1?%A<1!8Z zWcm5P6(|@=;*K&3_$9aiP>2C|H*~SEHl}qnF*32RcmCVYu#s!C?PGvhf1vgQ({MEQ z0-#j>--RMe{&5&$0wkE87$5Ic5_O3gm&0wuE-r3wCp?G1zA70H{;-u#8CM~=RwB~( zn~C`<6feUh$bdO1%&N3!qbu6nGRd5`MM1E_qrbKh-8UYp5Bn)+3H>W^BhAn;{BMii zQ6h=TvFrK)^wKK>Ii6gKj}shWFYof%+9iCj?ME4sR7F+EI)n8FL{{PKEFvB65==*@ ztYjjVTJCuAFf8I~yB-pN_PJtqH&j$`#<<`CruB zL=_u3WB~-;t3q)iNn0eU(mFTih<4nOAb>1#WtBpLi(I)^zeYIHtkMGXCMx+I zxn4BT0V=+JPzPeY=!gAL9H~Iu%!rH0-S@IcG%~=tB#6 z3?WE7GAfJ{>GE{?Cn3T!QE}GK9b*EdSJ02&x@t|}JrL{^wrM@w^&})o;&q816M5`} zv)GB;AU7`haa1_vGQ}a$!m-zkV(+M>q!vI0Swo18{;<>GYZw7-V-`G#FZ z;+`vsBihuCk1RFz1IPbPX8$W|nDk6yiU8Si40!zy{^nmv_P1=2H*j<^as01|W>BQS zU)H`NU*-*((5?rqp;kgu@+hDpJ;?p8CA1d65)bxtJikJal(bvzdGGk}O*hXz+<}J? zLcR+L2OeA7Hg4Ngrc@8htV!xzT1}8!;I6q4U&S$O9SdTrot<`XEF=(`1{T&NmQ>K7 zMhGtK9(g1p@`t)<)=eZjN8=Kn#0pC2gzXjXcadjHMc_pfV(@^3541)LC1fY~k2zn&2PdaW`RPEHoKW^(p_b=LxpW&kF?v&nzb z1`@60=JZj9zNXk(E6D5D}(@k4Oi@$e2^M%grhlEuRwVGjDDay$Qpj z`_X-Y_!4e-Y*GVgF==F0ow5MlTTAsnKR;h#b0TF>AyJe`6r|%==oiwd6xDy5ky6qQ z)}Rd0f)8xoNo)1jj59p;ChIv4Eo7z*{m2yXq6)lJrnziw9jn%Ez|A-2Xg4@1)ET2u zIX8`u5M4m=+-6?`S;?VDFJkEMf+=q?0D7?rRv)mH=gptBFJGuQo21rlIyP>%ymGWk z=PsJ>>q~i>EN~{zO0TklBIe(8i>xkd=+U@;C{SdQ`E03*KXmWm4v#DEJi_-F+3lrR z;0al0yXA&axWr)U%1VZ@(83WozZbaogIoGYpl!5vz@Tz5?u36m;N=*f0UY$ssXR!q zWj~U)qW9Q9Fg9UW?|XPnelikeqa9R^Gk77PgEyEqW$1j=P@L z*ndO!fwPeq_7J_H1Sx>#L$EO_;MfYj{lKuD8ZrUtgQLUUEhvaXA$)-<61v`C=qUhI zioV&KR#l50fn!-2VT`aMv|LycLOFPT{rRSRGTBMc)A`Cl%K&4KIgMf}G%Qpb2@cB* zw8obt-BI3q8Lab!O<#zeaz{P-lI2l`2@qrjD+Qy)^VKks5&SeT(I)i?&Kf59{F`Rw zuh7Q>SQNwqLO%cu2lzcJ7eR*3!g}U)9=EQ}js-q{d%h!wl6X3%H0Z2^8f&^H;yqti4z6TNWc& zDUU8YV(ZHA*34HHaj#C43PFZq7a>=PMmj4+?C4&l=Y-W1D#1VYvJ1~K%$&g-o*-heAgLXXIGRhU zufonwl1R<@Kc8dPKkb`i5P9VFT_NOiRA=#tM0WX2Zut)_ zLjAlJS1&nnrL8x8!o$G+*z|kmgv4DMjvfnvH)7s$X=-nQC3(eU!ioQwIkaXrl+58 z@v)uj$7>i`^#+Xu%21!F#AuX|6lD-uelN9ggShOX&ZIN+G#y5T0q+RL*(T(EP)(nP744-ML= z+Rs3|2`L4I;b=WHwvKX_AD56GU+z92_Q9D*P|HjPYa$yW0o|NO{>4B1Uvq!T;g_N- zAbNf%J0QBo1cL@iahigvWJ9~A4-glDJEK?>9*+GI6)I~UIWi>7ybj#%Po}yT6d6Li z^AGh(W{NJwz#a~Qs!IvGKjqYir%cY1+8(5lFgGvl(nhFHc7H2^A(P}yeOa_;%+bh` zcql{#E$kdu?yhRNS$iE@F8!9E5NISAlyeuOhRD)&xMf0gz^J927u5aK|P- z>B%*9vSHy?L_q)OD>4+P;^tz4T>d(rqGI7Qp@@@EQ-v9w-;n;7N05{)V4c7}&Y^!`kH3}Q z4RtMV6gAARY~y$hG7uSbU|4hRMn97Dv0$Le@1jDIq&DKy{D$FOjqw{NruxivljBGw zP4iM(4Nrz^^~;{QBD7TVrb6PB=B$<-e9!0QeE8lcZLdDeb?Gv$ePllO2jgy&FSbW* zSDjDUV^=`S(Oo0;k(Idvzh}aXkfO)F6AqB?wWqYJw-1wOn5!{-ghaHb^v|B^92LmQ9QZj zHA&X)fd%B$^+TQaM@FPXM$$DdW|Vl)4bM-#?Slb^qUX1`$Yh6Lhc4>9J$I4ba->f3 z9CeGO>T!W3w(){M{OJ+?9!MK68KovK#k9TSX#R?++W4A+N>W8nnk**6AB)e;rev=$ zN_+(?(YEX;vsZ{EkEGw%J#iJYgR8A}p+iW;c@V>Z1&K->wI>!x-+!0*pn|{f=XA7J zfjw88LeeJgs4YI?&dHkBL|PRX`ULOIZlnniTUgo-k`2O2RXx4FC76;K^|ZC6WOAEw zz~V0bZ29xe=!#Xk?*b{sjw+^8l0Koy+e7HjWXgmPa4sITz+$VP!YlJ$eyfi3^6gGx6jZLpbUzX;!Z6K}aoc!1CRi zB6Lhwt%-GMcUW;Yiy6Y7hX(2oksbsi;Z6k*=;y;1!taBcCNBXkhuVPTi+1N*z*}bf z`R=&hH*Ck5oWz>FR~>MO$3dbDSJ!y|wrff-H$y(5KadrA_PR|rR>jS=*9&J*ykWLr z-1Z^QOxE=!6I z%Bozo)mW7#2Hd$-`hzg=F@6*cNz^$#BbGlIf${ZV1ADc}sNl=B72g`41|F7JtZ^BT z+y}nqn3Ug`2scS_{MjykPW2~*k$i6PhvvxJCW;n!SK5B8Rpm41fCEdy=ea-4F`rN5 zF>ClKp#4?}pI7eR#6U|}t`DA!GQJB7nT$HVV*{qPjIRU1Ou3W;I^pCt54o|ZHvWaH zooFx9L%#yv)!P;^er5LCU$5@qXMhJ-*T5Ah8|}byGNU5oMp3V)yR;hWJKojJEregX z<1UPt%&~=5OuP(|B{ty);vLdoe7o^?`tkQa7zoXKAW6D@lc+FTzucotaOfJ!(Bm zHE8f8j@6||lH`y2<&hP}Q1wr(=6ze0D6NRL{7QaE1=nTAzqjIeD}Be&@#_d*dyurz z&L7xo-D9!dS`i>^GaIPArR@r=N#-ppIh!UBcb!N*?nLUO+*%C>_dCF1IH)q>5oT(t zjQo{AoDB;mWL;3&;vTt?;bvJSj>^Gq4Jrh}S}D>G)+b!>oRDWI?c_d77$kF5ms{Gx zak*>~*5AvaB-Xl)IgdZ^Cupv6HxQ0 zM(KPaDpPsPOd)e)aFw}|=tfzg@J1P8oJx2ZBY=g4>_G(Hkgld(u&~jN((eJ}5@b1} zI(P7j443AZj*I@%q!$JQ2?DZV47U!|Tt6_;tlb`mSP3 z74DE4#|1FMDqwYbT4P6#wSI%s?*wDc>)MR$4z9ZtJg04+CTUds>1JSDwI}=vpRoRR zLqx(Tvf34CvkTMOPkoH~$CG~fSZb;(2S4Q6Vpe9G83V={hwQ>acu+MCX)@0i>Vd`% z4I8Ye+7&Kcbh(*bN1etKmrpN)v|=eI+$oD=zzii6nP&w|kn2Y-f!(v<aE zKmOz#{6PZB(8zD={il`RO6D}v(@mN_66KXUAEefgg|;VmBfP?UrfB$&zaRw7oanna zkNmVGz4Vhd!vZSnp1(&_5^t;eSv6O771BloJAHi=Pnn+aa6y(e2iiE97uZ{evzQ^8 z*lN@ZYx<-hLXP^IuYLGf<01O*>nDp0fo;;Iyt`JADrxt7-jEF(vv_btyp6CT8=@5t zm`I0lW+2+_xj2CRL|40kcYysuyYeiGihGe&a)yilqP}5h+^)m8$=mzrUe`$(?BIY> zfF7-V10Gu0CkWF)wz04&hhI>es0NS7d`cnT`4y8K!wUAKv$H09fa>KeNQvwUNDT1zn}_*RHykC$CD%*h7vRCQ&Z z4&N-!L>(@8i?K$l5)13n0%VPPV`iG7Q$2{1T3JypLSvN%1kX73goBIOEmg=Uf$9e? zm}g>JFu}EQKH>|K!)m9teoCmTc`y2Ll}msZYyy0Pkqjeid66>DP_?C{KCw94lHvLW z-+X!2YSm70s833lH0o+|A%Xwsw`@8lE3ia0n_Dve;LC7@I+i~@%$lD|3fNf&R6ob6 z@iGfx^OC4s`$|vO!0jTWwVpX;X^EqJF{i324I>N=f@u+rTN+xJGGR0LsCQc;iFD=F zbZJrgOpS;04o^wP7HF5QBaJ$KJgS2V4u02ViWD=6+7rcu`uc&MOoyf%ZBU|gQZkUg z<}ax>*Fo?d*77Ia)+{(`X45{a8>Bi$u-0BWSteyp#GJnTs?&k&<0NeHA$Qb3;SAJK zl}H*~eyD-0qHI3SEcn`_7d zq@YRsFdBig+k490BZSQwW)j}~GvM7x>2ymO4zakaHZ!q6C2{fz^NvvD8+e%7?BQBH z-}%B{oROo2+|6g%#+XmyyIJrK_(uEbg%MHlBn3^!&hWi+9c0iqM69enep#5FvV_^r z?Yr(k*5FbG{==#CGI1zU0Wk{V?UGhBBfv9HP9A-AmcJmL^f4S zY3E2$WQa&n#WRQ5DOqty_Pu z-NWQGCR^Hnu^Vo2rm`-M>zzf|uMCUd1X0{wISJL2Pp=AO5 zF@(50!g|SYw3n<_VP0T~`WUjtY**6Npphr5bD%i3#*p7h8$#;XTLJAt5J-x~O1~`z z`2C~P4%XSI(JbrEmVMEwqdsa^aqXWg;A6KBn^jDxTl!}Q!^WhprL$kb(Iqq zUS`i$tIPs#hdE-zAaMGoxcG?Z;RO2L0Y|gcjV_)FFo|e)MtTl`msLTwq>po$`H6_U zhdWK97~M>idl9GE_WgobQkK_P85H_0jN?s3O)+m&68B`_;FnbZ3W*Qm++ghSs7|T4b7m~VVV%j0gl`Iw!?+-9#Lsb!j3O%fSTVuK z37V>qM81D+Atl};23`TqEAfEkQDpz$-1$e__>X2jN>xh@Sq)I6sj@< ziJ^66GSmW9c%F7eu6&_t$UaLXF4KweZecS1ZiHPWy-$e_7`jVk74OS*!z=l#(CQ^K zW-ke|g^&0o=hn+4uh-8lUh0>!VIXXnQXwKr>`94+2~<;+`k z$|}QZ>#pm2g}8k*;)`@EnM~ZQtci%_$ink9t6`HP{gn}P1==;WDAld3JX?k%^GcTU za>m|CH|UsyFhyJBwG5=`6562hkVRMQ=_ron-Vlm$4bG^GFz|Jh5mM{J1`!!hAr~8F^w> z^YhQ=c|bFn_6~9X$v(30v$5IX;#Nl-XXRPgs{g_~RS*znH^6Vhe}8>T?aMA|qfnWO zQpf(wr^PfygfM+m2u!9}F|frrZPBQ!dh(varsYo!tCV)WA(Wn^_t=WR_G7cQU`AGx zrK^B6<}9+$w;$vra)QWMKf_Tnqg93AMVZ6Qd=q6rdB{;ZhsoT zWy9QhnpEnc@Dauz4!8gq zqDanAX#$^vf-4~ZqUJtSe?SO+Hmb?)l2#}v(8}2+P{ZZuhlib0$3G0|a5?JR>QgUUP$HTE5hb`h>imq#7P+Y*-UVLm@9km|V# zoigziFt$bxgQMwqKKhd!c--&ciywIED>faY3zHLrA{V#IA)!mq!FXxf?1coGK~N(b zjwu*@2B1^(bzFVBJO`4EJ$=it!a0kbgUvPL;Er(0io{W4G7Bkqh)=g)uS|l0YfD}f zaCJwY7vR-D=P9M68`cmtmQ^!F-$lt@0S|9G7cHgT13A0xMv)HmH#Z<4{~iYo_VOD{ z5!kU+>mUOvHouw+-y?*cNlUlDwD#;6ZvAIc$YcwG&qKZFh>EtM(Eda+w)E$HcfZyB zG*$<*ae_ApE%gxWx%O^~XMnRSNLv!y`g99F(J_m)spJAc95P|_joOIoru%atbw z9PYgkcE*8x#)-W{>96KDl&74iW<#wrK)1s zxzU{`rW5af+dT6Z@_1dG<}CtDMT`EGVEXSL_5D9)Z;6UJe-TW7)M?bY%E;8G?Yc!$ zic;F5=#dba^P~7f#qvC}Nd#XEo2r_UlgfR_`B2^W0QjXU?RAi$>f&{G_Lu8Fp0qDp z?vAdm%z#3kcZmaJ@afooB=A@>8_N~O9Yzu=ZCEikM>UgU+{%>pPvmSNzGk@*jnc5~ z(Z#H4OL^gw>)gqZ!9X|3i4LAdp9vo)?F9QCR3##{BHoZ73Uk^Ha={2rc*TBijfKH- z=$cZQdc<5%*$kVo|{+bL3 zEoU&tq*YPR)^y-SISeQNQ)YZ9v>Hm4O=J)lf(y=Yu1ao&zj#5GVGxyj%V%vl9}dw< zO;@NRd4qe@Et}E@Q;SChBR2QPKll1{*5*jT*<$$5TywvC77vt=1=0xZ46>_17YzbiBoDffH(1_qFP7v2SVhZmA_7JDB50t#C39 z8V<9(E?bVWI<7d6MzcS^w!XmZ**{AO!~DZNU)pgr=yY1 zT@!AapE;yg&hmj*g{I3vd## zx+d%^O?d%%?Dba|l~X6ZOW|>FPsrjPjn-h4swysH!RNJUWofC?K(^0uHrBPrH5#W> zMn8^@USzjUucqo%+5&))Dnnw`5l1mp>roaA99Nkk4keZl2wAF7oa(!x?@8uGWzc5Q zM}g`}zf-D@B6lVFYWmmJ8a+_%z8g$C7Ww~PD9&jki08NY!b!fK288R;E?e3Z+Pk{is%HxQU`xu9+y5 zq?DWJD7kKp(B2J$t5Ij8-)?g!T9_n<&0L8F5-D0dp>9!Qnl#E{eDtkNo#lw6rMJG$ z9Gz_Z&a_6ie?;F1Y^6I$Mg9_sml@-z6t!YLr=ml<6{^U~UIbZUUa_zy>fBtR3Rpig zc1kLSJj!rEJILzL^uE1mQ}hjMCkA|ZlWVC9T-#=~ip%McP%6QscEGlYLuUxDUC=aX zCK@}@!_@~@z;70I+Hp5#Tq4h#d4r!$Np1KhXkAGlY$ap7IZ9DY})&(xoTyle8^dBXbQUhPE6ehWHrfMh&0=d<)E2+pxvWo=@`^ zIk@;-$}a4zJmK;rnaC)^a1_a_ie7OE*|hYEq1<6EG>r}!XI9+(j>oe!fVBG%7d}?U z#ja?T@`XO(;q~fe2CfFm-g8FbVD;O7y9c;J)k0>#q7z-%oMy4l+ zW>V~Y?s`NoXkBeHlXg&u*8B7)B%alfYcCriYwFQWeZ6Qre!4timF`d$=YN~_fPM5Kc8P;B-WIDrg^-j=|{Szq6(TC)oa!V7y zLmMFN1&0lM`+TC$7}on;!51{d^&M`UW ztI$U4S&}_R?G;2sI)g4)uS-t}sbnRoXVwM!&vi3GfYsU?fSI5Hn2GCOJ5IpPZ%Y#+ z=l@;;{XiY_r#^RJSr?s1) z4b@ve?p5(@YTD-<%79-%w)Iv@!Nf+6F4F1`&t~S{b4!B3fl-!~58a~Uj~d4-xRt`k zsmGHs$D~Wr&+DWK$cy07NH@_z(Ku8gdSN989efXqpreBSw$I%17RdxoE<5C^N&9sk!s2b9*#}#v@O@Hgm z2|U7Gs*@hu1JO$H(Mk)%buh~*>paY&Z|_AKf-?cz6jlT-v6 zF>l9?C6EBRpV2&c1~{1$VeSA|G7T(VqyzZr&G>vm87oBq2S%H0D+RbZm}Z`t5Hf$C zFn7X*;R_D^ z#Ug0tYczRP$s!6w<27;5Mw0QT3uNO5xY($|*-DoR1cq8H9l}_^O(=g5jLnbU5*SLx zGpjfy(NPyjL`^Oln_$uI6(aEh(iS4G=$%0;n39C(iw79RlXG>W&8;R1h;oVaODw2nw^v{~`j(1K8$ z5pHKrj2wJhMfw0Sos}kyOS48Dw_~=ka$0ZPb!9=_FhfOx9NpMxd80!a-$dKOmOGDW zi$G74Sd(-u8c!%35lL|GkyxZdlYUCML{V-Ovq{g}SXea9t`pYM^ioot&1_(85oVZ6 zUhCw#HkfCg7mRT3|>99{swr3FlA@_$RnE?714^o;vps4j4}u=PfUAd zMmV3j;Rogci^f!ms$Z;gqiy7>soQwo7clLNJ4=JAyrz;=*Yhe8q7*$Du970BXW89Xyq92M4GSkNS-6uVN~Y4r7iG>{OyW=R?@DmRoi9GS^QtbP zFy2DB`|uZTv8|ow|Jcz6?C=10U$*_l2oWiacRwyoLafS!EO%Lv8N-*U8V+2<_~eEA zgPG-klSM19k%(%;3YM|>F||hE4>7GMA(GaOvZBrE{$t|Hvg(C2^PEsi4+)w#P4jE2XDi2SBm1?6NiSkOp-IT<|r}L9)4tLI_KJ*GKhv16IV}An+Jyx z=Mk`vCXkt-qg|ah5=GD;g5gZQugsv!#)$@ zkE=6=6W9u9VWiGjr|MgyF<&XcKX&S3oN{c{jt-*1HHaQgY({yjZiWW97rha^TxZy< z2%-5X;0EBP>(Y9|x*603*Pz-eMF5*#4M;F`QjTBH>rrO$r3iz5 z?_nHysyjnizhZQMXo1gz7b{p`yZ8Q78^ zFJ3&CzM9fzAqb6ac}@00d*zjW`)TBzL=s$M`X*0{z8$pkd2@#4CGyKEhzqQR!7*Lo@mhw`yNEE6~+nF3p;Qp;x#-C)N5qQD)z#rmZ#)g*~Nk z)#HPdF_V$0wlJ4f3HFy&fTB#7Iq|HwGdd#P3k=p3dcpfCfn$O)C7;y;;J4Za_;+DEH%|8nKwnWcD zBgHX)JrDRqtn(hC+?fV5QVpv1^3=t2!q~AVwMBXohuW@6p`!h>>C58%sth4+Baw|u zh&>N1`t(FHKv(P+@nT$Mvcl){&d%Y5dx|&jkUxjpUO3ii1*^l$zCE*>59`AvAja%`Bfry-`?(Oo?5wY|b4YM0lC?*o7_G$QC~QwKslQTWac z#;%`sWIt8-mVa1|2KH=u!^ukn-3xyQcm4@|+Ra&~nNBi0F81BZT$XgH@$2h2wk2W% znpo1OZuQ1N>bX52II+lsnQ`WVUxmZ?4fR_f0243_m`mbc3`?iy*HBJI)p2 z`GQ{`uS;@;e1COn-vgE2D!>EheLBCF-+ok-x5X8Cu>4H}98dH^O(VlqQwE>jlLcs> zNG`aSgDNHnH8zWw?h!tye^aN|%>@k;h`Z_H6*py3hHO^6PE1-GSbkhG%wg;+vVo&dc)3~9&` zPtZtJyCqCdrFUIEt%Gs_?J``ycD16pKm^bZn>4xq3i>9{b`Ri6yH|K>kfC; zI5l&P)4NHPR)*R0DUcyB4!|2cir(Y1&Bsn3X8v4D(#QW8Dtv@D)CCO zadQC85Zy=Rkrhm9&csynbm>B_nwMTFah9ETdNcLU@J{haekA|9*DA2pY&A|FS*L!*O+>@Q$00FeL+2lg2NWLITxH5 z0l;yj=vQWI@q~jVn~+5MG!mV@Y`gE958tV#UcO#56hn>b69 zM;lq+P@MW=cIvIXkQmKS$*7l|}AW%6zETA2b`qD*cL z(=k4-4=t6FzQo#uMXVwF{4HvE%%tGbiOlO)Q3Y6D<5W$ z9pm>%TBUI99MC`N9S$crpOCr4sWJHP)$Zg#NXa~j?WeVo03P3}_w%##A@F|Bjo-nNxJZX%lbcyQtG8sO zWKHes>38e-!hu1$6VvY+W-z?<942r=i&i<88UGWdQHuMQjWC-rs$7xE<_-PNgC z_aIqBfG^4puRkogKc%I-rLIVF=M8jCh?C4!M|Q=_kO&3gwwjv$ay{FUDs?k7xr%jD zHreor1+#e1_;6|2wGPtz$``x}nzWQFj8V&Wm8Tu#oaqM<$BLh+Xis=Tt+bzEpC}w) z_c&qJ6u&eWHDb<>p;%F_>|`0p6kXYpw0B_3sIT@!=fWHH`M{FYdkF}*CxT|`v%pvx z#F#^4tdS0|O9M1#db%MF(5Opy;i( zL(Pc2aM4*f_Bme@o{xMrsO=)&>YKQw+)P-`FwEHR4vjU>#9~X7ElQ#sRMjR^Cd)wl zg^67Bgn9CK=WP%Ar>T4J!}DcLDe z=ehSmTp##KyQ78cmArL=IjOD6+n@jHCbOatm)#4l$t5YV?q-J86T&;>lEyK&9(XLh zr{kPuX+P8LN%rd%8&&Ia)iKX_%=j`Mr*)c)cO1`-B$XBvoT3yQCDKA>8F0KL$GpHL zPe?6dkE&T+VX=uJOjXyrq$BQ`a8H@wN1%0nw4qBI$2zBx)ID^6;Ux+? zu{?X$_1hoz9d^jkDJpT-N6+HDNo%^MQ2~yqsSBJj4@5;|1@w+BE04#@Jo4I63<~?O?ok%g%vQakTJKpMsk&oeVES1>cnaF7ZkFpqN6lx` zzD+YhR%wq2DP0fJCNC}CXK`g{AA6*}!O}%#0!Tdho4ooh&a5&{xtcFmjO4%Kj$f(1 zTk||{u|*?tAT{{<)?PmD_$JVA;dw;UF+x~|!q-EE*Oy?gFIlB*^``@ob2VL?rogtP z0M34@?2$;}n;^OAV2?o|zHg`+@Adk+&@Syd!rS zWvW$e5w{onua4sp+jHuJ&olMz#V53Z5y-FkcJDz>Wk%_J>COk5<0ya*aZLZl9LH}A zJhJ`Q-n9K+c8=0`FWE^x^xn4Fa7PDUc;v2+us(dSaoIUR4D#QQh91R!${|j{)=Zy1 zG;hqgdhSklM-VKL6HNC3&B(p1B)2Nshe7)F=-HBe=8o%OhK1MN*Gq6dBuPvqDRVJ{ z;zVNY?wSB%W0s^OMR_HL(Ws)va7eWGF*MWx<1wG7hZ}o=B62D?i|&0b14_7UG287YDr%?aYMMpeCkY1i`b+H!J9sqrvKc#Y6c8At@QiLSwj)@ifz~Z|c$lOMA@?cPqFRmZ%_>bz2X4(B=`^3;MDjsEeAO=? zSoD&+L>A|fGt7+6kF2@LqhL06sD%|~YsIe=EcWqy{e_61N_D(*CacnMvyXMjP87HI z4PT6!$fzxx{}=>jeqzkkoN+!r9e|@lZUN4pn(T28v`k=_vIhTn^i9O3qTqd)-%!QQ zYB6*6B@&b(!#X4C~59SLZuorNU_wWZA36{>O%iX)VS5NNZh49C_ppI>?)wwml}_0MLzOXT>lmo#&Ew6d?mu8~~I_^4VGBQtCAke;RQa5DL` z1PFDPsKb3CS$v;RhlQ1J@AHa1VRuuxp}NOIvrC>4$$A0Ix0VpAc0lfG%8{mR{TRQ( zbXM#1Tci3H*Wt>cVuMta^6^z`=^B@j+YhJqq9?>zZPxyg2U(wvod=uwJs{8gtpyab zXHQX<0FOGW6+dw&%c_qMUOI^+Rnb?&HB7Fee|33p4#8i>%_ev(aTm7N1f#6lV%28O zQ`tQh$VDjy8x(Lh#$rg1Kco$Bw%gULq+lc4$&HFGvLMO30QBSDvZ#*~hEHVZ`5=Kw z3y^9D512@P%d~s{x!lrHeL4!TzL`9(ITC97`Cwnn8PSdxPG@0_v{No|kfu3DbtF}K zuoP+88j4dP+Bn7hlGwU$BJy+LN6g&d3HJWMAd1P9xCXG-_P)raipYg5R{KQO$j;I9 z1y1cw#13K|&kfsRZ@qQC<>j=|OC?*v1|VrY$s=2!{}e33aQcZghqc@YsHKq^)kpkg z>B;CWNX+K=u|y#N)O>n5YuyvPl5cO6B^scmG?J zC8ix)E1PlhNaw8FpD+b|D$z`Id^4)rJe78MNiBga?Z- z0$L&MRTieSB1_E#KaN*H#Ns1}?zOA%Ybr{G+Sn3moXTVZj=L`nt?D&-MjOMz-Yq&@ z$P3h23d_F8Dcf*?txX7}p>nM*s+65t z1il8bHHsBynUK|aEXSjzY6sz1nZ%|%XeWTcGLRyRl@q4YAR)JovbdTTY&7u>@}28A zgV^Npp?}I!?3K7IXu9ml-Lw;w@9m zBYTeU+Seh8uJ-w?4e_6byq0f7>O3xm(hO}Y=fgU5^vW|>0yQ^0+?}LT55ei$i zzlU-iRbd8TRX9Ept%h%ariV=%u%F@@FA>U*XdAalcH%>#5_a&w)g`uW%3}m?vP- zc5}DkuF6ruKDwEYj+2YTSQ9=rkp19U5P@(zRm(nLod(sG9{~nw1BUoS2OFDXa{xfw zZ~UaZLFUZxfQ*9?_X?*~`d;nn-BbaefLJ`DT13KF6?T5Mnt;v5d>H}s)aAIzJcs#B z|CuXPJKww}hWBKsUfks#Kh$)ptp?5U1b@ttXFRbe_BZ&_R9XC6CA4WhWhMUE9Y2H4 z{w#CBCR<)Fd1M;mx*m?Z=L-^1kv1WKtqG(BjMiR4M^5yN4rlFM6oGUS2Wf~7Z@e*- ze84Vr`Bmi!(a1y}-m^HHMpbAiKPVEv|(7=|}D#Ihfk+-S5Hlkfch02z&$(zS3vrYz2g*ic{xBy~*gIp(eG}^gMc7 zPu2Eivnp@BH3SOgx!aJXttx*()!=2)%Bf$Gs^4cCs@)=(PJNxhH5lVY&qSZYaa?A^LhZW`B9(N?fx<^gCb(VE%3QpA*_Pohgp6vCB36iVaq zc1TI%L2Le?kuv?6Dq`H+W>AqnjyEzUBK948|DB|)U0_4DzWF#7L{agwo%y$hC>->r z4|_g_6ZC!n2=GF4RqVh6$$reQ(bG0K)i9(oC1t6kY)R@DNxicxGxejwL2sB<>l#w4 zE$QkyFI^(kZ#eE5srv*JDRIqRp2Totc8I%{jWhC$GrPWVc&gE1(8#?k!xDEQ)Tu~e zdU@aD8enALmN@%1FmWUz;4p}41)@c>Fg}1vv~q>xD}KC#sF|L&FU);^Ye|Q;1#^ps z)WmmdQI2;%?S%6i86-GD88>r|(nJackvJ#50vG6fm$1GWf*f6>oBiDKG0Kkwb17KPnS%7CKb zB7$V58cTd8x*NXg=uEX8Man_cDu;)4+P}BuCvYH6P|`x-#CMOp;%u$e z&BZNHgXz-KlbLp;j)si^~BI{!yNLWs5fK+!##G;yVWq|<>7TlosfaWN-;C@oag~V`3rZM_HN`kpF`u1p# ztNTl4`j*Lf>>3NIoiu{ZrM9&E5H~ozq-Qz@Lkbp-xdm>FbHQ2KCc8WD7kt?=R*kG# z!rQ178&ZoU(~U<;lsg@n216Ze3rB2FwqjbZ=u|J?nN%<4J9(Bl(90xevE|7ejUYm9 zg@E_xX}u2d%O1mpA2XzjRwWinvSeg)gHABeMH(2!A^g@~4l%8e0WWAkBvv60Cr>TR zQB1%EQ zUoZeUdqjh+1gFo6h~C~z#A57mf5ibmq$y_uVtA_kWv8X)CzfVEooDaY!#P?5$Y zGPKXbE<75nc%D-|w4OrP#;87oL@2^4+sxKah;a-5&z_&SUf~-z(1}bP=tM^GYtR3a z!x4zjSa^)KWG6jxfUI#{<26g$iAI;o_+B{LXY@WfWEdEl6%#8s3@b`?&Tm#aSK!~| z^%DdrXnijW`d!ajWuKApw&{L+WCPpFialo&^dZ9jC7A%BO`2ZF&YUDe;Yu|zFuv`2 z)BE*7Lkay)M7uohJ)446X``0x0%PzPTWY92`1Oq4a2D_7V0wypPnXFR)WM0IlFgg@ zqz#hv2xJEQL8eu}O;e(w4rSA?5|eZHbS6jENytJBq59?bOf>Wrl8ySZH36H(6fGR#vHM6q zn}!7!I@4$*+LFXs{x?|=q2*QtYT%Lw3+5(8uc0j8o3}TrG(zSV#>4wo6~)u|R+Yx# z?0$AspZDjv{dfv417~C17Oy%Fal{%+B6H(NX`$Bl>II-L3N3 zZc+sKZbqewU*&_Xt;9k=%4*aVYBvE1n&JZS7Uqjd%n8nOQmzh^x#vWK{;In~=QO)g zT-n3OU(1@3QfL|$g1d2xeBb@O15Rl01+hmpup2De7p%Yrd$E7(In!*R+;IJZh}v!svi z;7N~pq8KZDXXap0qd_D=Y^B)rz4S0^SF=&v6YYTAV$ad43#x!+n~-6< zK{8*vWoAdW(gGGt&URD}@g6tMoY(+Lw=vvxhfIIK9AjvNF_(W}1Rxn(mp;tJfDV<0 zbJN0t(@Xb8UeO{&T{$$uDrs7)j$}=?WsuDl+T2N5Y<4TMHGOMcocPr$%~(yvtKv(n z`U96d!D0cb9>Dx2zz$m&lAhazs%UeR^K*gb>d8CPs+?qlpfA;t{InXa)^2ryC(FU(Zc6Xbnnh`lg`K&g^JeS>}^c0MJKUCfV+~ zV(EN0Z5ztoN;hqcj!8V+VRbSltJ<~|y`U+9#wv|~H zNE!j9uXa=dec@JQSgJ6N6@Il&tzCBJv9#ldR`Lm*<)YwH4tdlAlG0Fl8Nfa(J~c%DQ2AA-}x8D=p(l#n1+hgx;N;1Aq?lq@{Lt9FKu89CjnnHD1G_@p;%Lp`+b@ttb33!E_Xt;QUD9~nRQl&xAro9-{+&6^ljK2f-d>&qy&d#0xwH z@slNv@ULKp!Cf*JHuS@#4c?F->WjPc)yiuSargAIEg>muRxzY?Hzdq@G5CS)U1*Et zE2SLh=@DI1J(guiy2Igq(?(xI9WL%g^f@{5Hmr|!Qz4`vn|LjrtO=b~I6~5EU5Fxy z;-#<)6w#w=DkpSthAu+E;OL?!?6C9Mwt*o(@68(Jhvs-eX4V z=d=>HI|`3J%H5X|gSrC8KH^IL?h5=3ID6svwHH@(wRbSG`Zsor^q4`3PCn#-(YX?< z_q8+T)51$E0xyKR{L!LN(G=+9K6$3#PDT^IAe|Igkx=!4#rqKWoXiZdh`&ocjp=Ok zemJe6*{it~>;sr(B0fSmp(S#*y5I0)OOz~Oe6Im+($S}e3tyx7Y6pA8vKCBmSEQDa zLfkm*;uMbTLpcR0)tF_v-lbK%`5>POyI2E(!)2=Rj0p;WKi=|UNt6HsQv0xR3QIK9 zsew(AFyzH!7Azxum{%VC^`cqhGdGbABGQ4cYdNBPTx+XpJ=NUEDeP^e^w^AOE1pQI zP{Us-sk!v$gj}@684E!uWjzvpoF|%v-6hwnitN1sCSg@(>RDCVgU8Ile_-xX`hL6u zzI4*Q)AVu(-ef8{#~P9STQ5t|qIMRoh&S?7Oq+cL6vxG?{NUr@k(~7^%w)P6nPbDa~4Jw}*p-|cT4p1?)!c0FoB(^DNJ+FDg+LoP6=RgB7Or673WD5MG&C!4< zerd6q$ODkBvFoy*%cpHGKSt z3uDC6Sc=xvv@kDzRD)aIO`x}BaWLycA%(w-D`Pd+uL*rL|etagQ;U&xt_9?7#}=}5HI)cU-0 z%pMA`>Xb7s)|Y)4HKSZOu;{lg=KjeIyXb0{@EM`FTDkLRH`!W%z*lQJ74P%Ka76)H zblrSIzf+dMWbO`g;=(b@{pS)zUcO&GrIFe%&?YeX4r8B2bBArB%-5ZrQ+vonr%AYy z1+u0*K{UVUmV>h5vD!F;6}a%KdMZQLs04oGkpiaC)zI( zT2U9qta5o|6Y+It1)sE8>u&0)W~l$NX@ZQ8UZfB=`($EW6?FT%{EoRhOrb9)z@3r8y?Z99FNLDE;7V=Q zotj&igu*Rh^VQn3MQKBq!T{yTwGhn1YL6k*?j?{_ek5xe8#i#GG4S-a_Re2lssG!} z`Y-d0BcOdB@!m?4y&hMN68}#0-IIlm_xO)d#}ugX{q^OZe{-@LeJyv`cY&ze4t2~! zKb{qX-j;kt{?gC(vW%}X4pm@1F?~LH{^Q8d@X$dy@5ff~p!J3zmA>H`A)y+6RB_h* zZfIO+bd=*LiymRw{asW%xxaVl33_xtdVrrqIPn zc@y8oMJvNtgcO~4i0`f)GCFkWY8EF?4duLVjHTdb6oYLnO9}Q-pe{CKQJL)hV8)JI z$mVA0Dq&7Z1TbYdSC(WbJ+IBjXngZTu&I+vHF|>Zo$757{8lL;8Zr-Exkf?3jzN5k z_d9I>{>^J?!l)< zNd$7E9FVrta}3qy3L7Ys$^fRWNuu^hs^{*eXvazd&+Q*?lTfc>2+EdP(o0P_Z05HX zVKsfFAQ{t^CRu~Dw(CuJ>tvx*p$5@flA>QRl455b&{*U?xU8`)nF2T$uu_(l8VNtq z?pBiRQIckGzk8W&SFSB=g6eG`ZC;6v9w`?eF*S}3E@N`2ropeHP)E}o?qJkyVEI;K$!)bWY zt9>4WmDVJh7U~m$|K`T#hF!v|znj^=M;69uXrFys#51XT;DbMr4H)>7UQ1e2(cuQf z4kr~Tt1tpBB2GaJ(|j~lHgW40EgMMVqR6eJoJig1SBg|2=$~4I3P0eP$q%_`sS&4~ z26=&a&tLjQbch1`cVXa-2fTl1y8}->|Nqu?uVrNTov!=VKh)g89wUPTgAzkSKZ57_ zr=B^mcldE3K04t4{;RaG53&9yovq;@aR#VHx+R1^^*kr-vEEd!uea68Z<{R%_DD6fn&T4 zu;fDj07L-(_fLSJGdkeh&c&7A(ZLj`7iwnkAcqUexU;WjUkqeg1m1-IUZTIZA(4dtr2Gr`e{BIejlCgS<33MB=1!8?a74!F%=Uo7N`F@k} ze+1C_eU4Y_$mvdjci zwEtCIphA2PBzBhng5=M#e4r%)RW5rVD|_`PvY$7BK`}w~d>%0O9sY#*LUAq=^OjMF^PY5m<7!=s5jyRfosCQAo#hL`h5vN-M}6Q z0Li}){5?wi8)GVHNkF|U9*8V5ej)nhb^TLw1KqiPK(@{P1^L&P=`ZNt?_+}&0(8Uh zfyyZFPgMV7ECt;Jdw|`|{}b$w4&x77VxR>8wUs|GQ5FBf1UlvasqX$qfk5rI4>Wfr zztH>y`=daAef**C12yJ7;LDf&3;h3X+5@dGPy@vS(RSs3CWimbTp=g \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/src/java/InputStickAPI/gradlew.bat b/src/java/InputStickAPI/gradlew.bat new file mode 100644 index 00000000..8a0b282a --- /dev/null +++ b/src/java/InputStickAPI/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/java/InputStickAPI/import-summary.txt b/src/java/InputStickAPI/import-summary.txt new file mode 100644 index 00000000..52f4974d --- /dev/null +++ b/src/java/InputStickAPI/import-summary.txt @@ -0,0 +1,60 @@ +ECLIPSE ANDROID PROJECT IMPORT SUMMARY +====================================== + +Ignored Files: +-------------- +The following files were *not* copied into the new Gradle project; you +should evaluate whether these are still needed in your project and if +so manually move them: + +* .gitignore +* .idea\ +* .idea\.name +* .idea\InputStickAPI.iml +* .idea\compiler.xml +* .idea\copyright\ +* .idea\copyright\profiles_settings.xml +* .idea\misc.xml +* .idea\modules.xml +* .idea\vcs.xml +* .idea\workspace.xml +* LICENSE +* README.md +* proguard-project.txt + +Replaced Jars with Dependencies: +-------------------------------- +The importer recognized the following .jar files as third party +libraries and replaced them with Gradle dependencies instead. This has +the advantage that more explicit version information is known, and the +libraries can be updated automatically. However, it is possible that +the .jar file in your project was of an older version than the +dependency we picked, which could render the project not compileable. +You can disable the jar replacement in the import wizard and try again: + +android-support-v4.jar => com.android.support:support-v4:19.1.0 +android-support-v7-appcompat.jar => com.android.support:appcompat-v7:19.1.0 + +Moved Files: +------------ +Android Gradle projects use a different directory structure than ADT +Eclipse projects. Here's how the projects were restructured: + +* AndroidManifest.xml => app\src\main\AndroidManifest.xml +* res\ => app\src\main\res\ +* src\ => app\src\main\java\ + +Next Steps: +----------- +You can now build the project. The Gradle project needs network +connectivity to download dependencies. + +Bugs: +----- +If for some reason your project does not build, and you determine that +it is due to a bug or limitation of the Eclipse to Gradle importer, +please file a bug at http://b.android.com with category +Component-Tools. + +(This import summary is for your information only, and can be deleted +after import once you are satisfied with the results.) diff --git a/src/java/InputStickAPI/settings.gradle b/src/java/InputStickAPI/settings.gradle new file mode 100644 index 00000000..e7b4def4 --- /dev/null +++ b/src/java/InputStickAPI/settings.gradle @@ -0,0 +1 @@ +include ':app' diff --git a/src/java/KP2ASoftKeyboard/.classpath b/src/java/KP2ASoftKeyboard/.classpath deleted file mode 100644 index 51769745..00000000 --- a/src/java/KP2ASoftKeyboard/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard/.project b/src/java/KP2ASoftKeyboard/.project deleted file mode 100644 index 7f9482b1..00000000 --- a/src/java/KP2ASoftKeyboard/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - KP2ASoftKeyboard - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/src/java/KP2ASoftKeyboard/.settings/org.eclipse.core.resources.prefs b/src/java/KP2ASoftKeyboard/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 754811a1..00000000 --- a/src/java/KP2ASoftKeyboard/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/keepass2android/softkeyboard/KP2AKeyboard.java=UTF-8 diff --git a/src/java/KP2ASoftKeyboard/AndroidManifest.xml b/src/java/KP2ASoftKeyboard/AndroidManifest.xml deleted file mode 100644 index 71182870..00000000 --- a/src/java/KP2ASoftKeyboard/AndroidManifest.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard/lint.xml b/src/java/KP2ASoftKeyboard/lint.xml deleted file mode 100644 index bbe34965..00000000 --- a/src/java/KP2ASoftKeyboard/lint.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/java/KP2ASoftKeyboard/project.properties b/src/java/KP2ASoftKeyboard/project.properties deleted file mode 100644 index 484dab07..00000000 --- a/src/java/KP2ASoftKeyboard/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-17 -android.library=true diff --git a/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard.png b/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard.png deleted file mode 100644 index b57ae6656cbb4718e82ef2c54b0eb0d1bb215f35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1486 zcmV;<1u^=GP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*h( z1p^)K$_`Qh00mA-L_t(&-tC%CXcSi*$3L?(yNSD-jRs7j-NdZHv93K7dNCdfwSOoj zE%ab=PzqA$y?F8>bkkExD+!8+R!c)#dI@?cYe6GqwPrVs8w+lfT*Nf1rG+*zYu0gR zc6#v5GMW4_E}4*({lT!4-}~{K_kF+j`@Y|MFOq4Ryo}=EC6y|$DzGZBDzGZBDzHix z$pKOUYJnO+cC>FsF##QT3Oo_-MLRGLum#u(G>YFX0^DX61IPpa0{;NB0$|ZHr~$%l zZEf$5jg9@L>$+}Mi0Hbm-?(vOBoc|d3+x1ZcI5TI8xs=~znc{*moH!b6?h#8+4HQa zwY9a=tYFb~UEj59*9Rh%Bt?Kz>gwu(_7L8>b!)n_v$HRo%}xW_CL_FBRaJM#bn5MaiC=MJr@Rg=%X&?&}1OsgrV7{rTsfULTANHox=~#&( zpJDLWBep~|O?wE;2w;X|S&(gvY1rD`)E8}i@B-4p!a{bXB}`dmWS)vhIYHHk1Put? zV<0EqgD&YGiF7F1!0NIrYwJ~c$UsO{RW+4LeVt4udsS84Bi6lbF6u+&tf?NLB^r$$ zv9k>DA+WC1K!X5jk&a@EddQ{+Sg;kk(hB}x zNR)C|F&qxJ_V@R90USGa?8mvexd(t04u@M#ojUbNKA*2E6bjz8IP`kGg_@e0+3xP{ z^VVcp#=jv7@}irpxcmC`>p$CAYXH~>?7MpP>JR1afaCG_S>RP*-!lH&HiQ)efq*st z@%emyOYisl1LZPULqo%MF%6gV?|IRqK;=0*RcV>yuE()h?Ci;tCl%8)jaV%9owbkZ z?d|>k#EBDIHBAc`hOwpvRhDJL=kv|?^z?jdk;*duA3OGiYuaWn%P@YwzdN7Lr^GJW zaGXDeL^S{~?_jxY;&-k2TM*>&p8#NOH0}N$InE0eAiQ_)-nZ`Fy?cH&R$Rh5&CSiN z_wL=Bv3=Zh91ZB!Y!UQtwLKLBvDT?$v8m5C7#@fJZ8lJn(1pET?~c``q6wIiBrOW{ z;NakAU0q#9Hk&`iCiqDmJit3)YSA&B9R!b zw6pu$w{QQ^(b4fS&}yxB_S=?PK?2)FIaCR^EkzNbS>SKMta-p#>3+;-J0;%i_hW`2 zH%;W1K~*a8s&>8pNlcQ~Z`Q6ypIo_IKXc{`@pzn`o}LwL`uqDyBog%X^|_RNrnxSU zT_z?bO8P5Tt}JTv`~6(IcCFN&$z)vVlPkagMn*9JlLqkKZr-$pn04`j(P_i2s7}$`!-!QsA oefl(-rg8lE@eQH-mv$ZdA9pzK2Jh=p?f?J)07*qoM6N<$f~LsG+yDRo diff --git a/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_delete.png b/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_delete.png deleted file mode 100644 index 5139c7179066ca30e114eebb8dd721262dc55ec6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 885 zcmV-*1B(2KP)o@rHU%e1hiC*e=tH zAPD$!k?>qRUL{lrPYAOipXvU}RtN{heGlOq+M|T~`Um-Z-h1Y{2qy?Lgja-)2wxt^ zMpDZm=c;W42;Sk2sy*k|G;X7#XFcR}kYv`IIBEM}!}Sw4F(RA$-=-Eiawx0kKYukcllh z^uveu4Gd^TBgkYvAkw?hzc)GlaDlJ~q0Gb<9s7AF>Iz9v5>xijmmGgQk9wen8r3I@ z<$yUJLhzGDjBD9vKIDoRT>*v5nV8va7{Ov(Vv5|P*ra1fd*T`syo9Kf_Sl!0A~%Fi zGf2Pt8X#A|Ka_S|?c)^RZP1l|=vfZY)EkqSzWFO5LE@b6q>oz|@>xs+T=E+yAQ`zyczi=?*yWu58G00000 LNkvXXu0mjf{Ku#U diff --git a/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_done.png b/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_done.png deleted file mode 100644 index 471c5021b88acefdbdabd722c10e9761c54eb40f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1593 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 JWt~$(695;{cgz3) diff --git a/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_return.png b/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_return.png deleted file mode 100644 index 5a5670c320ffe799ebc46b7834c4be80b68edbed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^T0m^c!3HE98h7RaDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42-)xT^vIyZYBNs|KI*_0D}*YGfR(E$(4nR`D9C9tZ;Uh zwR&|Su$_el!A7!U=E6UZ9p11V ziDwJG!p-=RMa8|TK~+GUcbmy7z9TsiM|wGz1xhV-jA@uDQRwA-g{R-Od09ml)1zdE zJtYR#S42CWJ3C)a-e4sna#y-ArNQxWK&-+&rXzEjcXCZ-d-T>p$7^|v|1@XEK5K?j zovn>5d>{8Ov6><;byv%zD>P>2M_J8Yp@6nX_OlLKI8F*E^c_{KZ;xnix^#{!qnl0s z0drDR&lXulvscR*3l#*}j4mCR_`S07Vf(p<~}`x`7cI{bNCCkh1!K4Ly%&c55( z@qwv;HS@>dB@^Vf)Gk|oVIt3k58m3gGF~SqoHJFJwlF;Ow1t&8I12iZVuhWVfy01d YOPJfP!uqsUU{o`By85}Sb4q9e04T=P^Z)<= diff --git a/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_search.png b/src/java/KP2ASoftKeyboard/res/drawable-hdpi/sym_keyboard_search.png deleted file mode 100644 index e72cde3bb6b1265464a78f0deacaf2143bb526c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1623 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 diff --git a/src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard.png b/src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard.png deleted file mode 100644 index 33d68cccfada6bc886222144bf4bab069db2b531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*h( z1p*fr1lA1z00LG?L_t(o!|j;CirP>VhQDhvMr~`XG8Z8*bYq~tOrK!hpjixbF^fX! zqKkIhzCoX$FJp^tN>L~kCDCFgQggdGmP{F)(Wp2u2M*UGa{oW){`Z^{l`)26vI0kD z4}=~F6Qw_!OW5_(2d{gkd-` z2evQ_M?nx=06tJrKm&LlhT#|2b?d!e?|Y}y={k-xS4yS(NRKh5kR(a5-ERA>R_j?5 zMdMnn_5%27i)N~>>(&Q@!B5}!KLK4}wC5vh0DiyUf8}{z6Q}~krG{*P*=%+N`~bcI zzeGz#@udjKhTtmkQ2fD zXZ9_rb%2I3<}-j&Di95P+%i6wTNSSYwC{4@!{IR6WxUSpI~1;1YyDc{DL{@m&gklX zw2s>{WC7(Inz>0sRvtq4MniA1O;~IFK3i|J*6*a=Y^))B%cCwzrFB*m!bED$!8G(i zCWLi1J*b9~B$=$OsE%WDYbZ_Af;73BXutvHTIZ|)5{#d z6^yE2UL&*s{s2@el@f3!8=gv6J`pEFzyfBXl~tF)0-pX??@r`FjA-yoFcA(5TUbw` zC>nd7*X(w?FAq5nd7jsdqG&8lcYc%;qkT*>_0hd`99wTiZTjzrQfeC!@Bhu!7;_`g zs_*wsXql-j`112MS=`BhmL;_dGCP?Vvjp;z$uoZB7Wyjt3*Iy`WrbNc8`SrcFv~?X@`8zzgstbmu@S&Tl{kWOPW9q|$n{68jV212`1AGho*6 z?wFzTh@}wwOW+yU7rH0*V$d8tvIn!!#o+TJiCzK6$a)onQWhaXm$6q>$j}kV9dIA2 zVSW6GZiPN{9$sn2-$d_OXN+mQsO$O^%Wlx23KB|g9&~yOl6T;C0FEnQ zKJ6g6NYm6d7&6ClfV;9wC+_U8Vo;JKST@u**yn=8>-IXUPD4V%`ZXWv!%HS10}9-K zwi0Pc1X(Gj#8QxyA^ONN^bHG3$U3s-C)S*YR^i;-uqUMmWB#W{S~57 diff --git a/src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_done.png b/src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_done.png deleted file mode 100644 index c0d6d1394b4912a2508055ec7979f4a6c2bbc4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmV+e1N{7nP)DN7IhR2Ags-S5F5wW^ zLF7VUlYs~bmxKW@;fEE1W!v`C(P%Uba~|xIeKQBtyb&4>$(@UTJ4w~eU;G69+T!Ao~@{$#%@VT%Rr!4V@~rjOVPv#~yqx5#n|Ky=aUo6?Slh2@g?~w*XBcz+s<4 zD{-5F-`QWucU$<75E?v!PYoOv9V4?Ib5Fu;fa5qPdGlYOJ;`i1NmWs!R7!ks!q zib*2!rji7GC1I}KpC?L;N&o#Ip-0E2ItW~%!_=^qcR*x_`|~6|WXcHbl9P`h_+BX! z++9Aw{l`%rO7y`gB4nUJx9GPoaPKp=^F!FLadP2002ovPDHLkV1krB BVQ>Hd diff --git a/src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_kp2a.png b/src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_kp2a.png deleted file mode 100644 index 707b62d91d8a51d18c0135de9581819decefc925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmV-I0=@l-P)VBBCHziJb_sv9h!|drQSi0wO^K3sJ#B!PZ9b4_Kr~XFwaZ5YkDI14T$gQ9*-{ z`)p=mIrsK*;Q52)y_xyVdoyq5?JiV6eXO=rHUo93pDilL0OPx`sF5oaQ3H%1$ zN5o3nE&{6&@ql5Vw$%l7&Hi|#z9YAmrN_bD_{-S4jcrIm+a4hQ^0ye z^o_U}pOzxLsZQ2pc}87L?z%c%TQ~JalE15aYk0l#!}R;1#$TJLsQXHhPo@4z%7>~t zCvDRyFQk00%xeJTxm`)!g^2i)^KP+TRU!o^BR-w-xqfMX&Ircpx}w+CGcPipEp*M2 z-&f#WL~N9@s&2iKt%tV=8~}FmKcGgabHLmP)}M%oXaW=Yj0BPInbru_ZbU?<2}}Vq zHN-LCWkmc`PXeza;+uMGK;})LgL>6^bhBXh3q{J;2l!d+@)3Aj6Um1hXYz7|x&wFv zECU;T{941d+;|3dd6+hBs%@ZM!`lX&1@@$TB%SX7`v0M{~#Q9LyAFJWZ(1Cr+eG#Lnx Q8vp`k$@`TKE zz$b~44+&UC2@nM4!w)Dy3Qd8uuxtU$GW0kE2|l2*Wfy?B5No1=x*`#3F{J=x#sp}Q z_5p8MN+2E!p{~Yj8PJjoL?s#`EQJ@sRLzG_7dlcYc!?`%Xk{thvJ`4*A~jPn<7nSv j)WT5p8JZ4pXlYN8v8q9j|0 zL0AwK;xGP9t0?6fR?~P^;qkdZJ|mm`E5H)4$iK@>P`?OCmdQknfC(seyWIyJ4o4|g zXi!ykITQ-Lf&UBe8Tbk;FtPO7m_im05}6&q0l?ka+4*#Kc6Kf%*%EAQZ0s$F-o&_* zKnak;5lnghWQ3?jwgdKxii)d~larBH5+h<=U0qM`Of^Lk$kLM#rD-2hL&2gyTCou~=@2q=truUc!HZ)4pLs1wdtgfB&#H z0i_K-FBf<|M^WKAq3)~c=;(MZjlTdC>OqKdUrn7OMduu_J5KjxGtui}L~-rmD5gZn zkVK7DlgVV%9OL8TA6Wc;#?coN#~;AAnVFeSlGZ7D>}9JoNi-Ur*Bq#kB9277Niz9f zp4n_Jk=_&2gAl3g;?&gCd(GkTc#g2(8HH^_ivksHaeI6Fd2RgM+}u2GB`bO;HBGp` zuCA_Ctcm94<{tQKxw8sc8mQY&kraq}MfC^2lNX?i4pE9~!r}0Qs4s18ZO`Dp0#Gz+ zfJ-iy>%J_WPN(xB?wtX4aY~hqDs>)p4r!67FIr2JKoUg4nvr^!m6e59Jnh_>Su&|~ z31#x?DjORc@5-c-8IdBgO-)U0yp0seq|zmn!7rdXIcm4tuZg-O8$~S;2=vKgXdynI zFGzJJlal9E5`A?DCr0gHR=~u}*rTjoulFUhd2$#0g?l&u&>p|I~{PO9`JdI7N@Q! zWq&)$Qq;C_@n>_*(H>_-6#a=v`ThPo7-OTcdJszGxVw{112&s2kcbq^fpIekB_&1O zx7mdLAcf*@(nwKsP~5jSGiC8e*{iCm>PJRK`WhM<{J1{M&7rQR?e!p)$D3~sZ`uod zj9Jt6n?XqY(pC5B!QczL*p{^nnBU+nz zA=$63&2xHQdrxd*uI+3s1z&jB`M&R*?|shuKJWK^XM!xtnw4Z)%?h(MLaUCD7;8`v zgm_;{;9rRmSEWQNC^5+w$^dcz9nbXx_zw8vC6&sQX_<)0>2y~0_xInxbs3NkWO39I zHwxQw_zM|5UEI1_uX+h=kYcovEv<>t0~1si~p#RRWu1=`>kFL?#n30(&Su3K^@_ zdIf!F+uPgkQ6G`2t*yO=z6xLyi$A4=1P*@zu&bq|<#vQ)C*T0~cXV{zVWK{V!*QPb zH$*F-WC)2I{z|0ddX&^qWvvIyz`-XlA_cMg%FD~opwGtR+EftA;ILOvG>8Z}>+0%? z6t6Z!>_;aiCYDH%=+Qm~l=8Tc3?Xu2ps?HR_FB>lIcaTeeTcr3z&4ItCPy)cOMWMC zLAifyZ0s4@hqxI2EC*@`ks~w0ep;D)WMt$8`fid#sx;O}KI?=8zXLc9TsE7{Ey{Ck zZEg2Se?Xoh@@PKAIQBX{)|Q&W!a{PUDJUq&ot&IJw=^h2W^wQAKa0=Oe+0@kZ4$aT1Hdi*uXf)<3jk2<`lCZ(wj!7T$#J8xZ$iCb} zCX*?X_c%cgsAYF1@_r1~@7+ zz&Ab-s3t^?egYr(et|2C#x%vn#YUv?QrM)TNMo;nH=Ig|NiFb6Ks6zWC-6t~)8tEO z%!Wm#QK!?<5#&AK;fSQ>fEL3RDHZkg^{zl5kP|tG%6hK$Or(|&rA=&XY&^^w3bWDC zQNP>meyrw9q?Qn^BiRspX|%!V>1h+MVQC{o&t=oa)YQ~lo6Xh}vK=%djUp4$ri+lo zI@0L%`fQwq!bGjrYUM-@`>8m>(wekSUd9Fn1|IM}r%%+k+6d8NH{09Wd&^)jSc1Wz z$dOsZD&QX;9)83tcQD~(&tXkq-q4rfEe zt7s?4kkTb;ImBuDKBfQ1e@AQoeyln|zXTWn&(i@0_lXih00000NkvXXu0mjfMx^J; diff --git a/src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_space.png b/src/java/KP2ASoftKeyboard/res/drawable-mdpi/sym_keyboard_space.png deleted file mode 100644 index 09b94d9e6b126aeef966562a0bfd09c7ac4fc373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFot=$IEGZ*dNbpoUyFf2+jOoq(^8Vde0km(|KO6_`&;Ku zCBwWk=^r-5?3nR1;YdRG!I#h0D=t}mMb+z!&!^=ED)#cZ=^Pcgx6dsTNiy4*pum=d zj26_hJ^3yy$NH%_sAG%L-bwd7*4_8L|Etvg=pS1)^(EYwB#WdkDZl*L?$G=<$GglW zDkZYa{mJ*JUlGp>&YI5o^X=>eozq2`Lau=^7dITbtl_S(*GIeJ4bwfL?@}xxS4wMh zghE5-UMldlQqPrbWD4Txk3C>5!L?+upp(fn72nIZRXp?fR?gGtvXd9McXol6@oA-{ zYkZXY9-lV!mcDl?OuoZoa>QrST}H0 zx8HvYlP_y*7C!N2zM8s$u~OqWgTlWK*}aa&AsT((>yo!H{{8j((P_WG*XysSeJ}be bkia1Lt1Eme`{W0}XkhSk^>bP0l+XkKauK;F diff --git a/src/java/KP2ASoftKeyboard/res/layout/input.xml b/src/java/KP2ASoftKeyboard/res/layout/input.xml deleted file mode 100644 index d16b2b2e..00000000 --- a/src/java/KP2ASoftKeyboard/res/layout/input.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-ar/strings.xml b/src/java/KP2ASoftKeyboard/res/values-ar/strings.xml deleted file mode 100644 index de3dba77..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-ar/strings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - اختر مُدخل آخر - اختر مُدخل - البحث عن مُدخل يحتوي على \"%1$s\" - بحث - التالي - إرسال - diff --git a/src/java/KP2ASoftKeyboard/res/values-bg-rBG/strings.xml b/src/java/KP2ASoftKeyboard/res/values-bg-rBG/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-bg-rBG/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-ca/strings.xml b/src/java/KP2ASoftKeyboard/res/values-ca/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-ca/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-cs/strings.xml b/src/java/KP2ASoftKeyboard/res/values-cs/strings.xml deleted file mode 100644 index 4f5ebe00..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-cs/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Vyberte další položku - Vybrat položku - Hledat položky s \"%1$s\" - Jít - Další - Odeslat - diff --git a/src/java/KP2ASoftKeyboard/res/values-da/strings.xml b/src/java/KP2ASoftKeyboard/res/values-da/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-da/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-de/strings.xml b/src/java/KP2ASoftKeyboard/res/values-de/strings.xml deleted file mode 100644 index ad5fc831..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-de/strings.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Keepass2Android - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Anderen Eintrag wählen - Eintrag wählen - Suche Eintrag mit \"%1$s\" - Los - Weiter - Senden - %s - diff --git a/src/java/KP2ASoftKeyboard/res/values-el/strings.xml b/src/java/KP2ASoftKeyboard/res/values-el/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-el/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-es/strings.xml b/src/java/KP2ASoftKeyboard/res/values-es/strings.xml deleted file mode 100644 index 6158762b..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-es/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - ¿\u0020.,:?[de \n()] * & @ {} / < > _ += | \" - Seleccione otra entrada - Seleccione una entrada - Buscar entrada con \"%1$s\" - Ir - Siguiente - Enviar - diff --git a/src/java/KP2ASoftKeyboard/res/values-fi/strings.xml b/src/java/KP2ASoftKeyboard/res/values-fi/strings.xml deleted file mode 100644 index f096a18d..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-fi/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Valitse toinen merkintä - Valitse merkintä - Etsi merkintä \"%1$s\" - Mene - Seuraava - Lähetä - diff --git a/src/java/KP2ASoftKeyboard/res/values-fr/strings.xml b/src/java/KP2ASoftKeyboard/res/values-fr/strings.xml deleted file mode 100644 index 8c42dbc6..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-fr/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Choisir une autre entrée - Choisir une entrée - Rechercher une entrée avec \"%1$s\" - Go - Suivant - Envoyer - diff --git a/src/java/KP2ASoftKeyboard/res/values-hu/strings.xml b/src/java/KP2ASoftKeyboard/res/values-hu/strings.xml deleted file mode 100644 index e727856d..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-hu/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Válasszon egy másik bejegyzést - Válasszon bejegyzést - Bejegyzés keresése: \"%1$s\" - Go - Következő - Küldés - diff --git a/src/java/KP2ASoftKeyboard/res/values-in/strings.xml b/src/java/KP2ASoftKeyboard/res/values-in/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-in/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-it/strings.xml b/src/java/KP2ASoftKeyboard/res/values-it/strings.xml deleted file mode 100644 index a82de10e..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-it/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Seleziona un\'altra voce - Seleziona una voce - Cerca la voce \"%1$s\" - Vai - Avanti - Invia - diff --git a/src/java/KP2ASoftKeyboard/res/values-iw/strings.xml b/src/java/KP2ASoftKeyboard/res/values-iw/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-iw/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-ja/strings.xml b/src/java/KP2ASoftKeyboard/res/values-ja/strings.xml deleted file mode 100644 index c95d6f53..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-ja/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - 別のエントリを選択 - エントリの選択 - エントリを\"%1$s\"で検索します。 - Go - - 送信 - diff --git a/src/java/KP2ASoftKeyboard/res/values-ko/strings.xml b/src/java/KP2ASoftKeyboard/res/values-ko/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-ko/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-land/dimens.xml b/src/java/KP2ASoftKeyboard/res/values-land/dimens.xml deleted file mode 100644 index b5f3bc12..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-land/dimens.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - 46dip - diff --git a/src/java/KP2ASoftKeyboard/res/values-nb/strings.xml b/src/java/KP2ASoftKeyboard/res/values-nb/strings.xml deleted file mode 100644 index 7fb47938..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-nb/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Velg en annen oppføring - Velg oppføring - Søke etter oppføringen med \"%1$s\" - Kjør - Neste - Send - diff --git a/src/java/KP2ASoftKeyboard/res/values-nl/strings.xml b/src/java/KP2ASoftKeyboard/res/values-nl/strings.xml deleted file mode 100644 index 9da5541f..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-nl/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Kies een andere regel - Kies regel - Zoek voor regel met \"%1$s\" - Ga - Volgende - Zend - diff --git a/src/java/KP2ASoftKeyboard/res/values-nn/strings.xml b/src/java/KP2ASoftKeyboard/res/values-nn/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-nn/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-pl/strings.xml b/src/java/KP2ASoftKeyboard/res/values-pl/strings.xml deleted file mode 100644 index efee50cb..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-pl/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Wybierz inną pozycję - Wybierz pozycję - Wyszukaj pozycję z \"%1$s\" - Idź - Dalej - Wyślij - diff --git a/src/java/KP2ASoftKeyboard/res/values-pt-rBR/strings.xml b/src/java/KP2ASoftKeyboard/res/values-pt-rBR/strings.xml deleted file mode 100644 index f4a970e9..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-pt-rBR/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Selecione outra entrada - Selecione uma entrada - Localizar entrada com \"%1$s\" - Ir - Próximo - Enviar - diff --git a/src/java/KP2ASoftKeyboard/res/values-pt-rPT/strings.xml b/src/java/KP2ASoftKeyboard/res/values-pt-rPT/strings.xml deleted file mode 100644 index 927f1817..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-pt-rPT/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Selecionar outra entrada - Selecionar a entrada - Procurar entrada com \"%1$s\" - Ir - Seguinte - Enviar - diff --git a/src/java/KP2ASoftKeyboard/res/values-ro/strings.xml b/src/java/KP2ASoftKeyboard/res/values-ro/strings.xml deleted file mode 100644 index a59025ca..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-ro/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Selectaţi o altă înregistrare - Alegeți înregistraea - Căutaţi înregistrarea \"%1$s\" - Go - Următoarea - Trimite - diff --git a/src/java/KP2ASoftKeyboard/res/values-ru/strings.xml b/src/java/KP2ASoftKeyboard/res/values-ru/strings.xml deleted file mode 100644 index 930d304a..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-ru/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Выбрать другую запись - Выбрать запись - Поиск записи с \"%1$s\" - Перейти - Вперёд - Отправить - diff --git a/src/java/KP2ASoftKeyboard/res/values-sk/strings.xml b/src/java/KP2ASoftKeyboard/res/values-sk/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-sk/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-sl/strings.xml b/src/java/KP2ASoftKeyboard/res/values-sl/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-sl/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-sr/strings.xml b/src/java/KP2ASoftKeyboard/res/values-sr/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-sr/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values-sv/strings.xml b/src/java/KP2ASoftKeyboard/res/values-sv/strings.xml deleted file mode 100644 index 814ea337..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-sv/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Välj en annan post - Välj post - Sök efter post med \"%1$s\" - - Nästa - Skicka - diff --git a/src/java/KP2ASoftKeyboard/res/values-tr/strings.xml b/src/java/KP2ASoftKeyboard/res/values-tr/strings.xml deleted file mode 100644 index 32b14f7d..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-tr/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Başka bir kayıt seçin - Kayıt seçin - Kayıt \"%1$s\" ile arama - Başla - Sonraki - Gönder - diff --git a/src/java/KP2ASoftKeyboard/res/values-uk/strings.xml b/src/java/KP2ASoftKeyboard/res/values-uk/strings.xml deleted file mode 100644 index 2d9ade75..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-uk/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,:!?[\n()] * & @ {} / <> _ + = | \" - Вибрати інший запис - Вибрати запис - Пошук запису з \'%1$s\' - Перейти - Наступний - Відправити - diff --git a/src/java/KP2ASoftKeyboard/res/values-vi/strings.xml b/src/java/KP2ASoftKeyboard/res/values-vi/strings.xml deleted file mode 100644 index ee9ef2d3..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-vi/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - Chọn mục khác - Chọn mục - Tìm kiếm các mục nhập với \"%1$s\" - Đi - Tiếp theo - Gởi - diff --git a/src/java/KP2ASoftKeyboard/res/values-zh-rCN/strings.xml b/src/java/KP2ASoftKeyboard/res/values-zh-rCN/strings.xml deleted file mode 100644 index 226a7c3b..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-zh-rCN/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|\" - 选择另一条目 - 选择条目 - 搜索带有\"%1$s\" 的条目 - 转到 - 下一步 - 发送 - diff --git a/src/java/KP2ASoftKeyboard/res/values-zh-rTW/strings.xml b/src/java/KP2ASoftKeyboard/res/values-zh-rTW/strings.xml deleted file mode 100644 index 351dfe74..00000000 --- a/src/java/KP2ASoftKeyboard/res/values-zh-rTW/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/java/KP2ASoftKeyboard/res/values/colors.xml b/src/java/KP2ASoftKeyboard/res/values/colors.xml deleted file mode 100644 index 74d103af..00000000 --- a/src/java/KP2ASoftKeyboard/res/values/colors.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - #FF000000 - #FFE35900 - #ff808080 - #bbffffff - \ No newline at end of file diff --git a/src/java/KP2ASoftKeyboard/res/values/dimens.xml b/src/java/KP2ASoftKeyboard/res/values/dimens.xml deleted file mode 100644 index caf615cf..00000000 --- a/src/java/KP2ASoftKeyboard/res/values/dimens.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - 50dip - 16sp - 6sp - \ No newline at end of file diff --git a/src/java/KP2ASoftKeyboard/res/values/strings.xml b/src/java/KP2ASoftKeyboard/res/values/strings.xml deleted file mode 100644 index 3c6260c8..00000000 --- a/src/java/KP2ASoftKeyboard/res/values/strings.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - Keepass2Android - - - \u0020.,;:!?\n()[]*&@{}/<>_+=|" - - Select another entry - Select entry - Search for entry with "%1$s" - - - Go - Next - Send - - - %s - diff --git a/src/java/KP2ASoftKeyboard/res/xml/method.xml b/src/java/KP2ASoftKeyboard/res/xml/method.xml deleted file mode 100644 index 95d61e41..00000000 --- a/src/java/KP2ASoftKeyboard/res/xml/method.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard/res/xml/qwerty.xml b/src/java/KP2ASoftKeyboard/res/xml/qwerty.xml deleted file mode 100644 index 839b5dbe..00000000 --- a/src/java/KP2ASoftKeyboard/res/xml/qwerty.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/java/KP2ASoftKeyboard/res/xml/symbols.xml b/src/java/KP2ASoftKeyboard/res/xml/symbols.xml deleted file mode 100644 index a28d752b..00000000 --- a/src/java/KP2ASoftKeyboard/res/xml/symbols.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/java/KP2ASoftKeyboard/res/xml/symbols_shift.xml b/src/java/KP2ASoftKeyboard/res/xml/symbols_shift.xml deleted file mode 100644 index d7139f34..00000000 --- a/src/java/KP2ASoftKeyboard/res/xml/symbols_shift.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java b/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java deleted file mode 100644 index b3b7c8c0..00000000 --- a/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This is a part of the inputmethod-common static Java library. - * The original source code can be found at frameworks/opt/inputmethodcommon of Android Open Source - * Project. - */ - -package com.android.inputmethodcommon; - -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.os.Bundle; -import android.preference.PreferenceFragment; - -/** - * This is a helper class for an IME's settings preference fragment. It's recommended for every - * IME to have its own settings preference fragment which inherits this class. - */ -public abstract class InputMethodSettingsFragment extends PreferenceFragment - implements InputMethodSettingsInterface { - private final InputMethodSettingsImpl mSettings = new InputMethodSettingsImpl(); - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - final Context context = getActivity(); - setPreferenceScreen(getPreferenceManager().createPreferenceScreen(context)); - mSettings.init(context, getPreferenceScreen()); - } - - /** - * {@inheritDoc} - */ - @Override - public void setInputMethodSettingsCategoryTitle(int resId) { - mSettings.setInputMethodSettingsCategoryTitle(resId); - } - - /** - * {@inheritDoc} - */ - @Override - public void setInputMethodSettingsCategoryTitle(CharSequence title) { - mSettings.setInputMethodSettingsCategoryTitle(title); - } - - /** - * {@inheritDoc} - */ - @Override - public void setSubtypeEnablerTitle(int resId) { - mSettings.setSubtypeEnablerTitle(resId); - } - - /** - * {@inheritDoc} - */ - @Override - public void setSubtypeEnablerTitle(CharSequence title) { - mSettings.setSubtypeEnablerTitle(title); - } - - /** - * {@inheritDoc} - */ - @Override - public void setSubtypeEnablerIcon(int resId) { - mSettings.setSubtypeEnablerIcon(resId); - } - - /** - * {@inheritDoc} - */ - @Override - public void setSubtypeEnablerIcon(Drawable drawable) { - mSettings.setSubtypeEnablerIcon(drawable); - } - - /** - * {@inheritDoc} - */ - @Override - public void onResume() { - super.onResume(); - mSettings.updateSubtypeEnabler(); - } -} diff --git a/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java b/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java deleted file mode 100644 index 722148d8..00000000 --- a/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This is a part of the inputmethod-common static Java library. - * The original source code can be found at frameworks/opt/inputmethodcommon of Android Open Source - * Project. - */ - -package com.android.inputmethodcommon; - -import android.content.Context; -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.preference.Preference; -import android.preference.Preference.OnPreferenceClickListener; -import android.preference.PreferenceScreen; -import android.provider.Settings; -import android.text.TextUtils; -import android.view.inputmethod.InputMethodInfo; -import android.view.inputmethod.InputMethodManager; -import android.view.inputmethod.InputMethodSubtype; - -import java.util.List; - -/* package private */ class InputMethodSettingsImpl implements InputMethodSettingsInterface { - private Preference mSubtypeEnablerPreference; - private int mInputMethodSettingsCategoryTitleRes; - private CharSequence mInputMethodSettingsCategoryTitle; - private int mSubtypeEnablerTitleRes; - private CharSequence mSubtypeEnablerTitle; - private int mSubtypeEnablerIconRes; - private Drawable mSubtypeEnablerIcon; - private InputMethodManager mImm; - private InputMethodInfo mImi; - private Context mContext; - - /** - * Initialize internal states of this object. - * @param context the context for this application. - * @param prefScreen a PreferenceScreen of PreferenceActivity or PreferenceFragment. - * @return true if this application is an IME and has two or more subtypes, false otherwise. - */ - public boolean init(final Context context, final PreferenceScreen prefScreen) { - mContext = context; - mImm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); - mImi = getMyImi(context, mImm); - if (mImi == null || mImi.getSubtypeCount() <= 1) { - return false; - } - mSubtypeEnablerPreference = new Preference(context); - mSubtypeEnablerPreference - .setOnPreferenceClickListener(new OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - final CharSequence title = getSubtypeEnablerTitle(context); - final Intent intent = - new Intent(Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS); - intent.putExtra(Settings.EXTRA_INPUT_METHOD_ID, mImi.getId()); - if (!TextUtils.isEmpty(title)) { - intent.putExtra(Intent.EXTRA_TITLE, title); - } - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED - | Intent.FLAG_ACTIVITY_CLEAR_TOP); - context.startActivity(intent); - return true; - } - }); - prefScreen.addPreference(mSubtypeEnablerPreference); - updateSubtypeEnabler(); - return true; - } - - private static InputMethodInfo getMyImi(Context context, InputMethodManager imm) { - final List imis = imm.getInputMethodList(); - for (int i = 0; i < imis.size(); ++i) { - final InputMethodInfo imi = imis.get(i); - if (imis.get(i).getPackageName().equals(context.getPackageName())) { - return imi; - } - } - return null; - } - - private static String getEnabledSubtypesLabel( - Context context, InputMethodManager imm, InputMethodInfo imi) { - if (context == null || imm == null || imi == null) return null; - final List subtypes = imm.getEnabledInputMethodSubtypeList(imi, true); - final StringBuilder sb = new StringBuilder(); - final int N = subtypes.size(); - for (int i = 0; i < N; ++i) { - final InputMethodSubtype subtype = subtypes.get(i); - if (sb.length() > 0) { - sb.append(", "); - } - sb.append(subtype.getDisplayName(context, imi.getPackageName(), - imi.getServiceInfo().applicationInfo)); - } - return sb.toString(); - } - /** - * {@inheritDoc} - */ - @Override - public void setInputMethodSettingsCategoryTitle(int resId) { - mInputMethodSettingsCategoryTitleRes = resId; - updateSubtypeEnabler(); - } - - /** - * {@inheritDoc} - */ - @Override - public void setInputMethodSettingsCategoryTitle(CharSequence title) { - mInputMethodSettingsCategoryTitleRes = 0; - mInputMethodSettingsCategoryTitle = title; - updateSubtypeEnabler(); - } - - /** - * {@inheritDoc} - */ - @Override - public void setSubtypeEnablerTitle(int resId) { - mSubtypeEnablerTitleRes = resId; - updateSubtypeEnabler(); - } - - /** - * {@inheritDoc} - */ - @Override - public void setSubtypeEnablerTitle(CharSequence title) { - mSubtypeEnablerTitleRes = 0; - mSubtypeEnablerTitle = title; - updateSubtypeEnabler(); - } - - /** - * {@inheritDoc} - */ - @Override - public void setSubtypeEnablerIcon(int resId) { - mSubtypeEnablerIconRes = resId; - updateSubtypeEnabler(); - } - - /** - * {@inheritDoc} - */ - @Override - public void setSubtypeEnablerIcon(Drawable drawable) { - mSubtypeEnablerIconRes = 0; - mSubtypeEnablerIcon = drawable; - updateSubtypeEnabler(); - } - - private CharSequence getSubtypeEnablerTitle(Context context) { - if (mSubtypeEnablerTitleRes != 0) { - return context.getString(mSubtypeEnablerTitleRes); - } else { - return mSubtypeEnablerTitle; - } - } - - public void updateSubtypeEnabler() { - if (mSubtypeEnablerPreference != null) { - if (mSubtypeEnablerTitleRes != 0) { - mSubtypeEnablerPreference.setTitle(mSubtypeEnablerTitleRes); - } else if (!TextUtils.isEmpty(mSubtypeEnablerTitle)) { - mSubtypeEnablerPreference.setTitle(mSubtypeEnablerTitle); - } - final String summary = getEnabledSubtypesLabel(mContext, mImm, mImi); - if (!TextUtils.isEmpty(summary)) { - mSubtypeEnablerPreference.setSummary(summary); - } - if (mSubtypeEnablerIconRes != 0) { - mSubtypeEnablerPreference.setIcon(mSubtypeEnablerIconRes); - } else if (mSubtypeEnablerIcon != null) { - mSubtypeEnablerPreference.setIcon(mSubtypeEnablerIcon); - } - } - } -} diff --git a/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsInterface.java b/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsInterface.java deleted file mode 100644 index f41e224d..00000000 --- a/src/java/KP2ASoftKeyboard/src/com/android/inputmethodcommon/InputMethodSettingsInterface.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -/** - * This is a part of the inputmethod-common static Java library. - * The original source code can be found at frameworks/opt/inputmethodcommon of Android Open Source - * Project. - */ - -package com.android.inputmethodcommon; - -import android.graphics.drawable.Drawable; - -/** - * InputMethodSettingsInterface is the interface for adding IME related preferences to - * PreferenceActivity or PreferenceFragment. - */ -public interface InputMethodSettingsInterface { - /** - * Sets the title for the input method settings category with a resource ID. - * @param resId The resource ID of the title. - */ - public void setInputMethodSettingsCategoryTitle(int resId); - - /** - * Sets the title for the input method settings category with a CharSequence. - * @param title The title for this preference. - */ - public void setInputMethodSettingsCategoryTitle(CharSequence title); - - /** - * Sets the title for the input method enabler preference for launching subtype enabler with a - * resource ID. - * @param resId The resource ID of the title. - */ - public void setSubtypeEnablerTitle(int resId); - - /** - * Sets the title for the input method enabler preference for launching subtype enabler with a - * CharSequence. - * @param title The title for this preference. - */ - public void setSubtypeEnablerTitle(CharSequence title); - - /** - * Sets the icon for the preference for launching subtype enabler with a resource ID. - * @param resId The resource id of an optional icon for the preference. - */ - public void setSubtypeEnablerIcon(int resId); - - /** - * Sets the icon for the Preference for launching subtype enabler with a Drawable. - * @param drawable The drawable of an optional icon for the preference. - */ - public void setSubtypeEnablerIcon(Drawable drawable); -} diff --git a/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/KeyboardData.java b/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/KeyboardData.java deleted file mode 100644 index 57c2b10e..00000000 --- a/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/KeyboardData.java +++ /dev/null @@ -1,17 +0,0 @@ - -package keepass2android.kbbridge; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -public class KeyboardData -{ - public static List availableFields = new ArrayList(); - public static String entryName; - public static String entryId; - - public static void clear() - { - availableFields.clear(); - entryName = entryId = ""; - } -} diff --git a/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/KeyboardDataBuilder.java b/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/KeyboardDataBuilder.java deleted file mode 100644 index 32afc347..00000000 --- a/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/KeyboardDataBuilder.java +++ /dev/null @@ -1,19 +0,0 @@ -package keepass2android.kbbridge; -import java.util.ArrayList; -import java.util.HashMap; -public class KeyboardDataBuilder { - private ArrayList availableFields = new ArrayList(); - - public void addPair(String displayName, String valueToType) - { - StringForTyping pair = new StringForTyping(); - pair.displayName = displayName; - pair.value = valueToType; - availableFields.add(pair); - } - - public void commit() - { - KeyboardData.availableFields = this.availableFields; - } -} diff --git a/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/StringForTyping.java b/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/StringForTyping.java deleted file mode 100644 index 9348dad2..00000000 --- a/src/java/KP2ASoftKeyboard/src/keepass2android/kbbridge/StringForTyping.java +++ /dev/null @@ -1,20 +0,0 @@ -package keepass2android.kbbridge; - -public class StringForTyping { - public String key; //internal identifier (PwEntry string field key) - public String displayName; //display name for displaying the key (might be translated) - public String value; - - @Override - public StringForTyping clone(){ - - StringForTyping theClone = new StringForTyping(); - theClone.key = key; - theClone.displayName = displayName; - theClone.value = value; - - return theClone; - } - - -} diff --git a/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/CandidateView.java b/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/CandidateView.java deleted file mode 100644 index ab6a53ba..00000000 --- a/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/CandidateView.java +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (C) 2008-2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package keepass2android.softkeyboard; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.view.GestureDetector; -import android.view.MotionEvent; -import android.view.View; - -import java.util.ArrayList; -import java.util.List; - -import keepass2android.softkeyboard.R; - -public class CandidateView extends View { - - private static final int OUT_OF_BOUNDS = -1; - - private KP2AKeyboard mService; - private List mSuggestions; - private int mSelectedIndex; - private int mTouchX = OUT_OF_BOUNDS; - private Drawable mSelectionHighlight; - private boolean mTypedWordValid; - - private Rect mBgPadding; - - private static final int MAX_SUGGESTIONS = 32; - private static final int SCROLL_PIXELS = 20; - - private int[] mWordWidth = new int[MAX_SUGGESTIONS]; - private int[] mWordX = new int[MAX_SUGGESTIONS]; - - private static final int X_GAP = 10; - - private static final List EMPTY_LIST = new ArrayList(); - - private int mColorNormal; - private int mColorRecommended; - private int mColorOther; - private int mVerticalPadding; - private Paint mPaint; - private boolean mScrolled; - private int mTargetScrollX; - - private int mTotalWidth; - - private GestureDetector mGestureDetector; - - /** - * Construct a CandidateView for showing suggested words for completion. - * @param context - * @param attrs - */ - public CandidateView(Context context) { - super(context); - mSelectionHighlight = context.getResources().getDrawable( - android.R.drawable.list_selector_background); - mSelectionHighlight.setState(new int[] { - android.R.attr.state_enabled, - android.R.attr.state_focused, - android.R.attr.state_window_focused, - android.R.attr.state_pressed - }); - - Resources r = context.getResources(); - - setBackgroundColor(r.getColor(R.color.candidate_background)); - - mColorNormal = r.getColor(R.color.candidate_normal); - mColorRecommended = r.getColor(R.color.candidate_recommended); - mColorOther = r.getColor(R.color.candidate_other); - mVerticalPadding = r.getDimensionPixelSize(R.dimen.candidate_vertical_padding); - - mPaint = new Paint(); - mPaint.setColor(mColorNormal); - mPaint.setAntiAlias(true); - mPaint.setTextSize(r.getDimensionPixelSize(R.dimen.candidate_font_height)); - mPaint.setStrokeWidth(0); - - mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() { - @Override - public boolean onScroll(MotionEvent e1, MotionEvent e2, - float distanceX, float distanceY) { - mScrolled = true; - int sx = getScrollX(); - sx += distanceX; - if (sx < 0) { - sx = 0; - } - if (sx + getWidth() > mTotalWidth) { - sx -= distanceX; - } - mTargetScrollX = sx; - scrollTo(sx, getScrollY()); - invalidate(); - return true; - } - }); - setHorizontalFadingEdgeEnabled(true); - setWillNotDraw(false); - setHorizontalScrollBarEnabled(false); - setVerticalScrollBarEnabled(false); - } - - /** - * A connection back to the service to communicate with the text field - * @param listener - */ - public void setService(KP2AKeyboard listener) { - mService = listener; - } - - @Override - public int computeHorizontalScrollRange() { - return mTotalWidth; - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int measuredWidth = resolveSize(50, widthMeasureSpec); - - // Get the desired height of the icon menu view (last row of items does - // not have a divider below) - Rect padding = new Rect(); - mSelectionHighlight.getPadding(padding); - final int desiredHeight = ((int)mPaint.getTextSize()) + mVerticalPadding - + padding.top + padding.bottom; - - // Maximum possible width and desired height - setMeasuredDimension(measuredWidth, - resolveSize(desiredHeight, heightMeasureSpec)); - } - - /** - * If the canvas is null, then only touch calculations are performed to pick the target - * candidate. - */ - @Override - protected void onDraw(Canvas canvas) { - if (canvas != null) { - super.onDraw(canvas); - } - mTotalWidth = 0; - if (mSuggestions == null) return; - - if (mBgPadding == null) { - mBgPadding = new Rect(0, 0, 0, 0); - if (getBackground() != null) { - getBackground().getPadding(mBgPadding); - } - } - int x = 0; - final int count = mSuggestions.size(); - final int height = getHeight(); - final Rect bgPadding = mBgPadding; - final Paint paint = mPaint; - final int touchX = mTouchX; - final int scrollX = getScrollX(); - final boolean scrolled = mScrolled; - final boolean typedWordValid = mTypedWordValid; - final int y = (int) (((height - mPaint.getTextSize()) / 2) - mPaint.ascent()); - - for (int i = 0; i < count; i++) { - String suggestion = mSuggestions.get(i); - float textWidth = paint.measureText(suggestion); - final int wordWidth = (int) textWidth + X_GAP * 2; - - mWordX[i] = x; - mWordWidth[i] = wordWidth; - paint.setColor(mColorNormal); - if (touchX + scrollX >= x && touchX + scrollX < x + wordWidth && !scrolled) { - if (canvas != null) { - canvas.translate(x, 0); - mSelectionHighlight.setBounds(0, bgPadding.top, wordWidth, height); - mSelectionHighlight.draw(canvas); - canvas.translate(-x, 0); - } - mSelectedIndex = i; - } - - if (canvas != null) { - if ((i == 1 && !typedWordValid) || (i == 0 && typedWordValid)) { - paint.setFakeBoldText(true); - paint.setColor(mColorRecommended); - } else if (i != 0) { - paint.setColor(mColorOther); - } - canvas.drawText(suggestion, x + X_GAP, y, paint); - paint.setColor(mColorOther); - canvas.drawLine(x + wordWidth + 0.5f, bgPadding.top, - x + wordWidth + 0.5f, height + 1, paint); - paint.setFakeBoldText(false); - } - x += wordWidth; - } - mTotalWidth = x; - if (mTargetScrollX != getScrollX()) { - scrollToTarget(); - } - } - - private void scrollToTarget() { - int sx = getScrollX(); - if (mTargetScrollX > sx) { - sx += SCROLL_PIXELS; - if (sx >= mTargetScrollX) { - sx = mTargetScrollX; - requestLayout(); - } - } else { - sx -= SCROLL_PIXELS; - if (sx <= mTargetScrollX) { - sx = mTargetScrollX; - requestLayout(); - } - } - scrollTo(sx, getScrollY()); - invalidate(); - } - - public void setSuggestions(List suggestions, boolean completions, - boolean typedWordValid) { - clear(); - if (suggestions != null) { - mSuggestions = new ArrayList(suggestions); - } - mTypedWordValid = typedWordValid; - scrollTo(0, 0); - mTargetScrollX = 0; - // Compute the total width - onDraw(null); - invalidate(); - requestLayout(); - } - - public void clear() { - mSuggestions = EMPTY_LIST; - mTouchX = OUT_OF_BOUNDS; - mSelectedIndex = -1; - invalidate(); - } - - @Override - public boolean onTouchEvent(MotionEvent me) { - - if (mGestureDetector.onTouchEvent(me)) { - return true; - } - - int action = me.getAction(); - int x = (int) me.getX(); - int y = (int) me.getY(); - mTouchX = x; - - switch (action) { - case MotionEvent.ACTION_DOWN: - mScrolled = false; - invalidate(); - break; - case MotionEvent.ACTION_MOVE: - if (y <= 0) { - // Fling up!? - if (mSelectedIndex >= 0) { - mService.pickSuggestionManually(mSelectedIndex); - mSelectedIndex = -1; - } - } - invalidate(); - break; - case MotionEvent.ACTION_UP: - if (!mScrolled) { - if (mSelectedIndex >= 0) { - mService.pickSuggestionManually(mSelectedIndex); - } - } - mSelectedIndex = -1; - removeHighlight(); - requestLayout(); - break; - } - return true; - } - - /** - * For flick through from keyboard, call this method with the x coordinate of the flick - * gesture. - * @param x - */ - public void takeSuggestionAt(float x) { - mTouchX = (int) x; - // To detect candidate - onDraw(null); - if (mSelectedIndex >= 0) { - mService.pickSuggestionManually(mSelectedIndex); - } - invalidate(); - } - - private void removeHighlight() { - mTouchX = OUT_OF_BOUNDS; - invalidate(); - } -} diff --git a/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/KP2AKeyboard.java b/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/KP2AKeyboard.java deleted file mode 100644 index 1f5ae22b..00000000 --- a/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/KP2AKeyboard.java +++ /dev/null @@ -1,835 +0,0 @@ -/* - * Copyright (C) 2008-2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package keepass2android.softkeyboard; - -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.inputmethodservice.InputMethodService; -import android.inputmethodservice.Keyboard; -import android.inputmethodservice.KeyboardView; -import android.text.InputType; -import android.util.Log; -import android.util.Printer; -import android.view.KeyEvent; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; -import android.view.inputmethod.CompletionInfo; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.ExtractedText; -import android.view.inputmethod.ExtractedTextRequest; -import android.view.inputmethod.InputConnection; -import android.view.inputmethod.InputMethodManager; -import android.view.inputmethod.InputMethodSubtype; - -import java.util.ArrayList; -import java.util.List; - -import keepass2android.kbbridge.StringForTyping; -import keepass2android.softkeyboard.R; - -/** - * Example of writing an input method for a soft keyboard. This code is focused - * on simplicity over completeness, so it should in no way be considered to be a - * complete soft keyboard implementation. Its purpose is to provide a basic - * example for how you would get started writing an input method, to be fleshed - * out as appropriate. - */ -public class KP2AKeyboard extends InputMethodService implements - KeyboardView.OnKeyboardActionListener { - static final boolean DEBUG = false; - - private InputMethodManager mInputMethodManager; - - private LatinKeyboardView mInputView; - private CandidateView mCandidateView; - private CompletionInfo[] mCompletions; - - private StringBuilder mComposing = new StringBuilder(); - private boolean mPredictionOn; - private boolean mCompletionOn; - private int mLastDisplayWidth; - private boolean mCapsLock; - private long mLastShiftTime; - private long mMetaState; - - private LatinKeyboard mSymbolsKeyboard; - private LatinKeyboard mSymbolsShiftedKeyboard; - private LatinKeyboard mQwertyKeyboard; - - private LatinKeyboard mCurKeyboard; - - private String mWordSeparators; - - private String mClientPackageName; - - /** - * Main initialization of the input method component. Be sure to call to - * super class. - */ - @Override - public void onCreate() { - super.onCreate(); - mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); - mWordSeparators = getResources().getString(R.string.word_separators); - } - - /** - * This is the point where you can do all of your UI initialization. It is - * called after creation and any configuration change. - */ - @Override - public void onInitializeInterface() { - if (mQwertyKeyboard != null) { - // Configuration changes can happen after the keyboard gets - // recreated, - // so we need to be able to re-build the keyboards if the available - // space has changed. - int displayWidth = getMaxWidth(); - if (displayWidth == mLastDisplayWidth) - return; - mLastDisplayWidth = displayWidth; - } - mQwertyKeyboard = new LatinKeyboard(this, R.xml.qwerty); - mSymbolsKeyboard = new LatinKeyboard(this, R.xml.symbols); - mSymbolsShiftedKeyboard = new LatinKeyboard(this, R.xml.symbols_shift); - } - - /** - * Called by the framework when your view for creating input needs to be - * generated. This will be called the first time your input method is - * displayed, and every time it needs to be re-created such as due to a - * configuration change. - */ - @Override - public View onCreateInputView() { - mInputView = (LatinKeyboardView) getLayoutInflater().inflate( - R.layout.input, null); - mInputView.setOnKeyboardActionListener(this); - mInputView.setKeyboard(mQwertyKeyboard); - return mInputView; - } - - /** - * Called by the framework when your view for showing candidates needs to be - * generated, like {@link #onCreateInputView}. - */ - @Override - public View onCreateCandidatesView() { - mCandidateView = new CandidateView(this); - mCandidateView.setService(this); - return mCandidateView; - } - - /** - * This is the main point where we do our initialization of the input method - * to begin operating on an application. At this point we have been bound to - * the client, and are now receiving all of the detailed information about - * the target of our edits. - */ - @Override - public void onStartInput(EditorInfo attribute, boolean restarting) { - super.onStartInput(attribute, restarting); - - // Reset our state. We want to do this even if restarting, because - // the underlying state of the text editor could have changed in any - // way. - mComposing.setLength(0); - updateCandidates(); - - if (!restarting) { - // Clear shift states. - mMetaState = 0; - } - - mClientPackageName = attribute.packageName; - - mPredictionOn = false; - mCompletionOn = false; - mCompletions = null; - - // We are now going to initialize our state based on the type of - // text being edited. - switch (attribute.inputType & InputType.TYPE_MASK_CLASS) { - case InputType.TYPE_CLASS_NUMBER: - case InputType.TYPE_CLASS_DATETIME: - // Numbers and dates default to the symbols keyboard, with - // no extra features. - mCurKeyboard = mSymbolsKeyboard; - break; - - case InputType.TYPE_CLASS_PHONE: - // Phones will also default to the symbols keyboard, though - // often you will want to have a dedicated phone keyboard. - mCurKeyboard = mSymbolsKeyboard; - break; - - case InputType.TYPE_CLASS_TEXT: - // This is general text editing. We will default to the - // normal alphabetic keyboard, and assume that we should - // be doing predictive text (showing candidates as the - // user types). - mCurKeyboard = mQwertyKeyboard; - mPredictionOn = true; - - // We now look for a few special variations of text that will - // modify our behavior. - int variation = attribute.inputType & InputType.TYPE_MASK_VARIATION; - if (variation == InputType.TYPE_TEXT_VARIATION_PASSWORD - || variation == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) { - // Do not display predictions / what the user is typing - // when they are entering a password. - mPredictionOn = false; - } - - if (variation == InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS - || variation == InputType.TYPE_TEXT_VARIATION_URI - || variation == InputType.TYPE_TEXT_VARIATION_FILTER) { - // Our predictions are not useful for e-mail addresses - // or URIs. - mPredictionOn = false; - } - - if ((attribute.inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE) != 0) { - // If this is an auto-complete text view, then our predictions - // will not be shown and instead we will allow the editor - // to supply their own. We only show the editor's - // candidates when in fullscreen mode, otherwise relying - // own it displaying its own UI. - mPredictionOn = false; - mCompletionOn = isFullscreenMode(); - } - - // We also want to look at the current state of the editor - // to decide whether our alphabetic keyboard should start out - // shifted. - updateShiftKeyState(attribute); - break; - - default: - // For all unknown input types, default to the alphabetic - // keyboard with no special features. - mCurKeyboard = mQwertyKeyboard; - updateShiftKeyState(attribute); - } - - // Update the label on the enter key, depending on what the application - // says it will do. - mCurKeyboard.setImeOptions(getResources(), attribute.imeOptions); - - tryAutoFillIn(attribute); - - } - - private boolean tryAutoFillIn(final EditorInfo attribute) { - //auto fill in? - //TODO: make this inside an AsyncTask: getText* might be slow - CharSequence textAfter = getCurrentInputConnection().getTextAfterCursor(1 /*length*/, 0 /*flags*/); - CharSequence textBefore = getCurrentInputConnection().getTextBeforeCursor(1 /*length*/, 0 /*flags*/); - boolean hasTextInField = ((textAfter != null) && (textAfter.length() > 0)) - || ((textBefore != null) && (textBefore.length()> 0)); - if (!hasTextInField) - { - //try to look up saved field ids: - if (attribute.fieldId > -1) - { - SharedPreferences prefs = getApplicationContext().getSharedPreferences("savedFieldIds", MODE_PRIVATE); - - String key = attribute.packageName+"/"+attribute.fieldId; - Log.d("KP2AK", "looking up saved field for "+key); - - String fieldKey = prefs.getString(key, ""); - - if ("".equals(fieldKey) == false) - { - Log.d("KP2AK","Found field "+fieldKey); - if (commitTextForKey(attribute, fieldKey)) - return true; - } - } - - //try to look up saved field hint: - if ((attribute.hintText != null) && (attribute.hintText.length() > 0)) - { - SharedPreferences prefs = getApplicationContext().getSharedPreferences("savedFieldHints", MODE_PRIVATE); - - String key = attribute.packageName+"/"+keepass2android.kbbridge.KeyboardData.entryId+"/"+attribute.hintText; - Log.d("KP2AK", "looking up saved field hint for "+key); - - String displayName = prefs.getString(key, ""); - - if ("".equals(displayName) == false) - { - Log.d("KP2AK","Found field "+displayName); - if (commitTextForKey(attribute, displayName)) - return true; - } - } - - //try to look up by hint - if ((attribute.hintText != null) && (attribute.hintText.length() > 0)) - { - if (commitTextForKey(attribute, attribute.hintText.toString())) - return true; - } - - } - return false; - } - - private boolean commitTextForKey(final EditorInfo attribute, String key) { - List availableFields = keepass2android.kbbridge.KeyboardData.availableFields; - for (StringForTyping str: availableFields) - { - if (str.key.equals(key)) - { - Log.d("KP2AK", "Typing!"); - commitKp2aString(str.value, attribute); - return true; - } - } - return false; - } - - private void commitKp2aString(String value, EditorInfo editorInfo) { - getCurrentInputConnection().commitText( - value, 0); - - if ((editorInfo.imeOptions&(EditorInfo.IME_MASK_ACTION|EditorInfo.IME_FLAG_NO_ENTER_ACTION)) == EditorInfo.IME_ACTION_NEXT) - { - Log.d("KP2AK", "action is NEXT"); - getCurrentInputConnection().performEditorAction(editorInfo.actionId); - } - - - } - - /** - * This is called when the user is done editing a field. We can use this to - * reset our state. - */ - @Override - public void onFinishInput() { - super.onFinishInput(); - - // Clear current composing text and candidates. - mComposing.setLength(0); - updateCandidates(); - - // We only hide the candidates window when finishing input on - // a particular editor, to avoid popping the underlying application - // up and down if the user is entering text into the bottom of - // its window. - setCandidatesViewShown(false); - - mCurKeyboard = mQwertyKeyboard; - if (mInputView != null) { - mInputView.closing(); - } - } - - @Override - public void onStartInputView(EditorInfo attribute, boolean restarting) { - super.onStartInputView(attribute, restarting); - // Apply the selected keyboard to the input view. - mInputView.setKeyboard(mCurKeyboard); - mInputView.closing(); - // final InputMethodSubtype subtype = - // mInputMethodManager.getCurrentInputMethodSubtype(); - // mInputView.setSubtypeOnSpaceKey(subtype); - } - - @Override - public void onCurrentInputMethodSubtypeChanged(InputMethodSubtype subtype) { - mInputView.setSubtypeOnSpaceKey(subtype); - } - - /** - * Deal with the editor reporting movement of its cursor. - */ - @Override - public void onUpdateSelection(int oldSelStart, int oldSelEnd, - int newSelStart, int newSelEnd, int candidatesStart, - int candidatesEnd) { - super.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd, - candidatesStart, candidatesEnd); - - // If the current selection in the text view changes, we should - // clear whatever candidate text we have. - if (mComposing.length() > 0 - && (newSelStart != candidatesEnd || newSelEnd != candidatesEnd)) { - mComposing.setLength(0); - updateCandidates(); - InputConnection ic = getCurrentInputConnection(); - - if (ic != null) { - ic.finishComposingText(); - } - } - } - - /** - * This tells us about completions that the editor has determined based on - * the current text in it. We want to use this in fullscreen mode to show - * the completions ourself, since the editor can not be seen in that - * situation. - */ - @Override - public void onDisplayCompletions(CompletionInfo[] completions) { - if (mCompletionOn) { - mCompletions = completions; - if (completions == null) { - setSuggestions(null, false, false); - return; - } - - List stringList = new ArrayList(); - for (int i = 0; i < completions.length; i++) { - CompletionInfo ci = completions[i]; - if (ci != null) - stringList.add(ci.getText().toString()); - } - setSuggestions(stringList, true, true); - } - } - - /** - * Use this to monitor key events being delivered to the application. We get - * first crack at them, and can either resume them or let them continue to - * the app. - */ - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - switch (keyCode) { - case KeyEvent.KEYCODE_BACK: - // The InputMethodService already takes care of the back - // key for us, to dismiss the input method if it is shown. - // However, our keyboard could be showing a pop-up window - // that back should dismiss, so we first allow it to do that. - if (event.getRepeatCount() == 0 && mInputView != null) { - if (mInputView.handleBack()) { - return true; - } - } - break; - - case KeyEvent.KEYCODE_DEL: - // Special handling of the delete key: if we currently are - // composing text for the user, we want to modify that instead - // of let the application to the delete itself. - if (mComposing.length() > 0) { - onKey(Keyboard.KEYCODE_DELETE, null); - return true; - } - break; - - case KeyEvent.KEYCODE_ENTER: - // Let the underlying text editor always handle these. - return false; - - default: - - } - - return super.onKeyDown(keyCode, event); - } - - /** - * Helper function to commit any text being composed in to the editor. - */ - private void commitTyped(InputConnection inputConnection) { - if (mComposing.length() > 0) { - inputConnection.commitText(mComposing, mComposing.length()); - mComposing.setLength(0); - updateCandidates(); - } - } - - /** - * Helper to update the shift state of our keyboard based on the initial - * editor state. - */ - private void updateShiftKeyState(EditorInfo attr) { - if (attr != null && mInputView != null - && mQwertyKeyboard == mInputView.getKeyboard()) { - int caps = 0; - EditorInfo ei = getCurrentInputEditorInfo(); - if (ei != null && ei.inputType != InputType.TYPE_NULL) { - caps = getCurrentInputConnection().getCursorCapsMode( - attr.inputType); - } - mInputView.setShifted(mCapsLock || caps != 0); - } - } - - /** - * Helper to determine if a given character code is alphabetic. - */ - private boolean isAlphabet(int code) { - if (Character.isLetter(code)) { - return true; - } else { - return false; - } - } - - /** - * Helper to send a key down / key up pair to the current editor. - */ - private void keyDownUp(int keyEventCode) { - getCurrentInputConnection().sendKeyEvent( - new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode)); - getCurrentInputConnection().sendKeyEvent( - new KeyEvent(KeyEvent.ACTION_UP, keyEventCode)); - } - - /** - * Helper to send a character to the editor as raw key events. - */ - private void sendKey(int keyCode) { - switch (keyCode) { - case '\n': - keyDownUp(KeyEvent.KEYCODE_ENTER); - break; - default: - if (keyCode >= '0' && keyCode <= '9') { - keyDownUp(keyCode - '0' + KeyEvent.KEYCODE_0); - } else { - getCurrentInputConnection().commitText( - String.valueOf((char) keyCode), 1); - } - break; - } - } - - // Implementation of KeyboardViewListener - - public void onKey(int primaryCode, int[] keyCodes) { - if (isWordSeparator(primaryCode)) { - // Handle separator - if (mComposing.length() > 0) { - commitTyped(getCurrentInputConnection()); - } - sendKey(primaryCode); - updateShiftKeyState(getCurrentInputEditorInfo()); - } else if (primaryCode == Keyboard.KEYCODE_DELETE) { - android.util.Log.d("DEBUG", "DELETE"); - handleBackspace(); - } else if (primaryCode == Keyboard.KEYCODE_SHIFT) { - android.util.Log.d("DEBUG", "SHIFT"); - handleShift(); - } else if (primaryCode == Keyboard.KEYCODE_CANCEL) { - android.util.Log.d("DEBUG", "CANCEL"); - handleClose(); - return; - } else if (primaryCode == LatinKeyboardView.KEYCODE_KP2A) { - - AlertDialog.Builder builder = new AlertDialog.Builder(this); - String title = "Keepass2Android"; - List availableFields = keepass2android.kbbridge.KeyboardData.availableFields; - - Log.d("KP2AK", "hint: "+getCurrentInputEditorInfo().hintText); - Log.d("KP2AK", "field name: "+getCurrentInputEditorInfo().fieldName); - Log.d("KP2AK", "label: "+getCurrentInputEditorInfo().label); - getCurrentInputEditorInfo().dump(new Printer() { - - @Override - public void println(String x) { - Log.d("KP2AK", x); - - } - },""); - final ArrayList items = new ArrayList(); - for (StringForTyping entry : availableFields) - { - items.add(entry.clone()); - } - - - if (keepass2android.kbbridge.KeyboardData.entryName == null) - { - StringForTyping openEntry = new StringForTyping(); - openEntry.displayName = openEntry.key = getString(R.string.open_entry); - openEntry.value = "KP2ASPECIAL_SelectEntryTask"; - items.add(openEntry); - } - else - { - StringForTyping changeEntry = new StringForTyping(); - changeEntry.displayName = changeEntry.key = getString(R.string.change_entry); - changeEntry.value = "KP2ASPECIAL_SelectEntryTask"; - items.add(changeEntry); - } - - if ((mClientPackageName != null) && (mClientPackageName != "")) - { - StringForTyping searchEntry = new StringForTyping(); - searchEntry.key = searchEntry.displayName - = getString(R.string.open_entry_for_app,mClientPackageName); - searchEntry.value = "KP2ASPECIAL_SearchUrlTask"; - items.add(searchEntry); - } - - builder.setTitle(title); - - builder.setItems(items.toArray(new CharSequence[items.size()]), - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int item) { - - if (items.get(item).value.startsWith("KP2ASPECIAL")) { - //change entry - Intent startKp2aIntent = getPackageManager().getLaunchIntentForPackage(getApplicationContext().getPackageName()); - if (startKp2aIntent != null) - { - startKp2aIntent.addCategory(Intent.CATEGORY_LAUNCHER); - startKp2aIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - String value = items.get(item).value; - String taskName = value.substring("KP2ASPECIAL_".length()); - startKp2aIntent.putExtra("KP2A_APPTASK", taskName); - if (taskName.equals("SearchUrlTask")) - { - startKp2aIntent.putExtra("UrlToSearch", "androidapp://"+mClientPackageName); - } - startActivity(startKp2aIntent); - } - } else { - - - if (getCurrentInputEditorInfo().fieldId > 0) - { - SharedPreferences savedFieldIds = getApplicationContext().getSharedPreferences("savedFieldIds", MODE_PRIVATE); - Editor edit = savedFieldIds.edit(); - - edit.putString(getCurrentInputEditorInfo().packageName+"/"+getCurrentInputEditorInfo().fieldId, items.get(item).key); - edit.commit(); - } - - commitKp2aString(items.get(item).value, getCurrentInputEditorInfo()); - - } - } - }); - - builder.setNegativeButton(android.R.string.cancel, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - // User cancelled the dialog - } - }); - - // Create the AlertDialog - AlertDialog dialog = builder.create(); - Window window = dialog.getWindow(); - WindowManager.LayoutParams lp = window.getAttributes(); - lp.token = mInputView.getWindowToken(); - lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG; - window.setAttributes(lp); - window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); - - dialog.show(); - } else if (primaryCode == LatinKeyboardView.KEYCODE_SELECT_IME) { - mInputMethodManager.showInputMethodPicker(); - } else if (primaryCode == Keyboard.KEYCODE_MODE_CHANGE - && mInputView != null) { - Keyboard current = mInputView.getKeyboard(); - if (current == mSymbolsKeyboard - || current == mSymbolsShiftedKeyboard) { - current = mQwertyKeyboard; - } else { - current = mSymbolsKeyboard; - } - mInputView.setKeyboard(current); - if (current == mSymbolsKeyboard) { - current.setShifted(false); - } - } else { - handleCharacter(primaryCode, keyCodes); - // mCapsLock = false; - // mInputView.setShifted(mCapsLock); - updateShiftKeyState(getCurrentInputEditorInfo()); - } - } - - public void onText(CharSequence text) { - InputConnection ic = getCurrentInputConnection(); - if (ic == null) - return; - ic.beginBatchEdit(); - if (mComposing.length() > 0) { - commitTyped(ic); - } - ic.commitText(text, 0); - ic.endBatchEdit(); - updateShiftKeyState(getCurrentInputEditorInfo()); - } - - /** - * Update the list of available candidates from the current composing text. - * This will need to be filled in by however you are determining candidates. - */ - private void updateCandidates() { - if (!mCompletionOn) { - if (mComposing.length() > 0) { - ArrayList list = new ArrayList(); - list.add(mComposing.toString()); - setSuggestions(list, true, true); - } else { - setSuggestions(null, false, false); - } - } - } - - public void setSuggestions(List suggestions, boolean completions, - boolean typedWordValid) { - if (suggestions != null && suggestions.size() > 0) { - setCandidatesViewShown(true); - } else if (isExtractViewShown()) { - setCandidatesViewShown(true); - } - if (mCandidateView != null) { - mCandidateView.setSuggestions(suggestions, completions, - typedWordValid); - } - } - - private void handleBackspace() { - final int length = mComposing.length(); - if (length > 1) { - mComposing.delete(length - 1, length); - getCurrentInputConnection().setComposingText(mComposing, 1); - updateCandidates(); - } else if (length > 0) { - mComposing.setLength(0); - getCurrentInputConnection().commitText("", 0); - updateCandidates(); - } else { - keyDownUp(KeyEvent.KEYCODE_DEL); - } - updateShiftKeyState(getCurrentInputEditorInfo()); - } - - private void handleShift() { - if (mInputView == null) { - return; - } - - Keyboard currentKeyboard = mInputView.getKeyboard(); - if (mQwertyKeyboard == currentKeyboard) { - // Alphabet keyboard - checkToggleCapsLock(); - mInputView.setShifted(mCapsLock || !mInputView.isShifted()); - - } else if (currentKeyboard == mSymbolsKeyboard) { - mSymbolsKeyboard.setShifted(true); - mInputView.setKeyboard(mSymbolsShiftedKeyboard); - mSymbolsShiftedKeyboard.setShifted(true); - } else if (currentKeyboard == mSymbolsShiftedKeyboard) { - mSymbolsShiftedKeyboard.setShifted(false); - mInputView.setKeyboard(mSymbolsKeyboard); - mSymbolsKeyboard.setShifted(false); - } - } - - private void handleCharacter(int primaryCode, int[] keyCodes) { - if (isInputViewShown()) { - if (mInputView.isShifted()) { - primaryCode = Character.toUpperCase(primaryCode); - } - } - if (isAlphabet(primaryCode) && mPredictionOn) { - mComposing.append((char) primaryCode); - getCurrentInputConnection().setComposingText(mComposing, 1); - updateShiftKeyState(getCurrentInputEditorInfo()); - updateCandidates(); - } else { - getCurrentInputConnection().commitText( - String.valueOf((char) primaryCode), 1); - } - } - - private void handleClose() { - commitTyped(getCurrentInputConnection()); - requestHideSelf(0); - mInputView.closing(); - } - - private void checkToggleCapsLock() { - long now = System.currentTimeMillis(); - if (mLastShiftTime + 800 > now) { - mCapsLock = !mCapsLock; - mLastShiftTime = 0; - } else { - mLastShiftTime = now; - } - } - - private String getWordSeparators() { - return mWordSeparators; - } - - public boolean isWordSeparator(int code) { - String separators = getWordSeparators(); - return separators.contains(String.valueOf((char) code)); - } - - public void pickDefaultCandidate() { - pickSuggestionManually(0); - } - - public void pickSuggestionManually(int index) { - if (mCompletionOn && mCompletions != null && index >= 0 - && index < mCompletions.length) { - CompletionInfo ci = mCompletions[index]; - getCurrentInputConnection().commitCompletion(ci); - if (mCandidateView != null) { - mCandidateView.clear(); - } - updateShiftKeyState(getCurrentInputEditorInfo()); - } else if (mComposing.length() > 0) { - // If we were generating candidate suggestions for the current - // text, we would commit one of them here. But for this sample, - // we will just commit the current text. - commitTyped(getCurrentInputConnection()); - } - } - - public void swipeRight() { - if (mCompletionOn) { - pickDefaultCandidate(); - } - } - - public void swipeLeft() { - handleBackspace(); - } - - public void swipeDown() { - handleClose(); - } - - public void swipeUp() { - } - - public void onPress(int primaryCode) { - } - - public void onRelease(int primaryCode) { - } -} diff --git a/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/LatinKeyboard.java b/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/LatinKeyboard.java deleted file mode 100644 index 9a2f58a0..00000000 --- a/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/LatinKeyboard.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2008-2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package keepass2android.softkeyboard; - -import keepass2android.softkeyboard.R; - -import android.content.Context; -import android.content.res.Resources; -import android.content.res.XmlResourceParser; -import android.graphics.drawable.Drawable; -import android.inputmethodservice.Keyboard; -import android.view.inputmethod.EditorInfo; - -public class LatinKeyboard extends Keyboard { - - private Key mEnterKey; - private Key mSpaceKey; - - public LatinKeyboard(Context context, int xmlLayoutResId) { - super(context, xmlLayoutResId); - } - - public LatinKeyboard(Context context, int layoutTemplateResId, - CharSequence characters, int columns, int horizontalPadding) { - super(context, layoutTemplateResId, characters, columns, horizontalPadding); - } - - @Override - protected Key createKeyFromXml(Resources res, Row parent, int x, int y, - XmlResourceParser parser) { - Key key = new LatinKey(res, parent, x, y, parser); - if (key.codes[0] == 10) { - mEnterKey = key; - } else if (key.codes[0] == ' ') { - mSpaceKey = key; - } - return key; - } - - /** - * This looks at the ime options given by the current editor, to set the - * appropriate label on the keyboard's enter key (if it has one). - */ - void setImeOptions(Resources res, int options) { - if (mEnterKey == null) { - return; - } - - switch (options&(EditorInfo.IME_MASK_ACTION|EditorInfo.IME_FLAG_NO_ENTER_ACTION)) { - case EditorInfo.IME_ACTION_GO: - mEnterKey.iconPreview = null; - mEnterKey.icon = null; - mEnterKey.label = res.getText(R.string.label_go_key); - break; - case EditorInfo.IME_ACTION_NEXT: - mEnterKey.iconPreview = null; - mEnterKey.icon = null; - mEnterKey.label = res.getText(R.string.label_next_key); - break; - case EditorInfo.IME_ACTION_SEARCH: - mEnterKey.icon = res.getDrawable(R.drawable.sym_keyboard_search); - mEnterKey.label = null; - break; - case EditorInfo.IME_ACTION_SEND: - mEnterKey.iconPreview = null; - mEnterKey.icon = null; - mEnterKey.label = res.getText(R.string.label_send_key); - break; - default: - mEnterKey.icon = res.getDrawable(R.drawable.sym_keyboard_return); - mEnterKey.label = null; - break; - } - } - - void setSpaceIcon(final Drawable icon) { - if (mSpaceKey != null) { - mSpaceKey.icon = icon; - } - } - - static class LatinKey extends Keyboard.Key { - - public LatinKey(Resources res, Keyboard.Row parent, int x, int y, XmlResourceParser parser) { - super(res, parent, x, y, parser); - } - - /** - * Overriding this method so that we can reduce the target area for the key that - * closes the keyboard. - */ - @Override - public boolean isInside(int x, int y) { - return super.isInside(x, codes[0] == KEYCODE_CANCEL ? y - 10 : y); - } - } - -} diff --git a/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/LatinKeyboardView.java b/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/LatinKeyboardView.java deleted file mode 100644 index a1854da8..00000000 --- a/src/java/KP2ASoftKeyboard/src/keepass2android/softkeyboard/LatinKeyboardView.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2008-2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package keepass2android.softkeyboard; - -import android.content.Context; -import android.inputmethodservice.Keyboard; -import android.inputmethodservice.Keyboard.Key; -import android.inputmethodservice.KeyboardView; -import android.util.AttributeSet; -import android.view.inputmethod.InputMethodSubtype; - -public class LatinKeyboardView extends KeyboardView { - - static final int KEYCODE_OPTIONS = -100; - static final int KEYCODE_KP2A = -101; - static final int KEYCODE_SELECT_IME = -102; - - public LatinKeyboardView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public LatinKeyboardView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - @Override - protected boolean onLongPress(Key key) { - if (key.codes[0] == Keyboard.KEYCODE_CANCEL) { - getOnKeyboardActionListener().onKey(KEYCODE_OPTIONS, null); - return true; - } else { - return super.onLongPress(key); - } - } - - void setSubtypeOnSpaceKey(final InputMethodSubtype subtype) { - //final LatinKeyboard keyboard = (LatinKeyboard)getKeyboard(); - //keyboard.setSpaceIcon(getResources().getDrawable(subtype.getIconResId())); - //invalidateAllKeys(); - } -} diff --git a/src/java/KP2ASoftKeyboard2/.gitignore b/src/java/KP2ASoftKeyboard2/.gitignore deleted file mode 100644 index d45006d9..00000000 --- a/src/java/KP2ASoftKeyboard2/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/native/obj -/native/libs - -/java/bin -/tests/bin diff --git a/src/java/KP2ASoftKeyboard2/java/.classpath b/src/java/KP2ASoftKeyboard2/java/.classpath deleted file mode 100644 index 51769745..00000000 --- a/src/java/KP2ASoftKeyboard2/java/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/.project b/src/java/KP2ASoftKeyboard2/java/.project deleted file mode 100644 index 2f557768..00000000 --- a/src/java/KP2ASoftKeyboard2/java/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - KP2ASoftKeyboard2 - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/src/java/KP2ASoftKeyboard2/java/.settings/org.eclipse.jdt.core.prefs b/src/java/KP2ASoftKeyboard2/java/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b080d2dd..00000000 --- a/src/java/KP2ASoftKeyboard2/java/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/src/java/KP2ASoftKeyboard2/java/Android.mk b/src/java/KP2ASoftKeyboard2/java/Android.mk deleted file mode 100644 index 03d48aaa..00000000 --- a/src/java/KP2ASoftKeyboard2/java/Android.mk +++ /dev/null @@ -1,22 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_PACKAGE_NAME := LatinIME - -LOCAL_CERTIFICATE := shared - -LOCAL_JNI_SHARED_LIBRARIES := libjni_latinime - -LOCAL_STATIC_JAVA_LIBRARIES := android-common - -#LOCAL_AAPT_FLAGS := -0 .dict - -LOCAL_SDK_VERSION := current - -LOCAL_PROGUARD_FLAG_FILES := proguard.flags - -include $(BUILD_PACKAGE) diff --git a/src/java/KP2ASoftKeyboard2/java/AndroidManifest.xml b/src/java/KP2ASoftKeyboard2/java/AndroidManifest.xml deleted file mode 100644 index 4101f662..00000000 --- a/src/java/KP2ASoftKeyboard2/java/AndroidManifest.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/MODULE_LICENSE_APACHE2 b/src/java/KP2ASoftKeyboard2/java/MODULE_LICENSE_APACHE2 deleted file mode 100644 index e69de29b..00000000 diff --git a/src/java/KP2ASoftKeyboard2/java/NOTICE b/src/java/KP2ASoftKeyboard2/java/NOTICE deleted file mode 100644 index 7340b9e3..00000000 --- a/src/java/KP2ASoftKeyboard2/java/NOTICE +++ /dev/null @@ -1,190 +0,0 @@ - - Copyright (c) 2008, The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - diff --git a/src/java/KP2ASoftKeyboard2/java/createProjectZip.bat b/src/java/KP2ASoftKeyboard2/java/createProjectZip.bat deleted file mode 100644 index 82b33699..00000000 --- a/src/java/KP2ASoftKeyboard2/java/createProjectZip.bat +++ /dev/null @@ -1,11 +0,0 @@ -rmdir projectzip /s /q -mkdir projectzip -del project.zip -xcopy bin projectzip\bin\ /E -xcopy res projectzip\res\ /E -rmdir projectzip\bin\res\crunch /s /q -cd projectzip -"c:\Program Files\7-Zip\7z.exe" a -tzip project.zip bin -"c:\Program Files\7-Zip\7z.exe" a -tzip project.zip res -cd .. -xcopy projectzip\project.zip project.zip \ No newline at end of file diff --git a/src/java/KP2ASoftKeyboard2/java/gen/keepass2android/softkeyboard/BuildConfig.java b/src/java/KP2ASoftKeyboard2/java/gen/keepass2android/softkeyboard/BuildConfig.java deleted file mode 100644 index 80eada24..00000000 --- a/src/java/KP2ASoftKeyboard2/java/gen/keepass2android/softkeyboard/BuildConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -/*___Generated_by_IDEA___*/ - -package keepass2android.softkeyboard; - -/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */ -public final class BuildConfig { - public final static boolean DEBUG = Boolean.parseBoolean(null); -} \ No newline at end of file diff --git a/src/java/KP2ASoftKeyboard2/java/libs/armeabi-v7a/libjni_latinime.so b/src/java/KP2ASoftKeyboard2/java/libs/armeabi-v7a/libjni_latinime.so deleted file mode 100644 index fce10f89e8ebb9d3cf912cdffe0d6529abec961e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21688 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 diff --git a/src/java/KP2ASoftKeyboard2/java/libs/armeabi/libjni_latinime.so b/src/java/KP2ASoftKeyboard2/java/libs/armeabi/libjni_latinime.so deleted file mode 100644 index 3f97a51693790c3ebe7f1994b7cdd8720301a34d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21684 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...); -} - --keep class keepass2android.softkeyboard.Suggest { - (...); -} diff --git a/src/java/KP2ASoftKeyboard2/java/project.properties b/src/java/KP2ASoftKeyboard2/java/project.properties deleted file mode 100644 index 484dab07..00000000 --- a/src/java/KP2ASoftKeyboard2/java/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-17 -android.library=true diff --git a/src/java/KP2ASoftKeyboard2/java/res/anim/key_preview_fadein.xml b/src/java/KP2ASoftKeyboard2/java/res/anim/key_preview_fadein.xml deleted file mode 100644 index 9fad7b9a..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/anim/key_preview_fadein.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/anim/key_preview_fadeout.xml b/src/java/KP2ASoftKeyboard2/java/res/anim/key_preview_fadeout.xml deleted file mode 100644 index 7de5123c..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/anim/key_preview_fadeout.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/anim/mini_keyboard_fadein.xml b/src/java/KP2ASoftKeyboard2/java/res/anim/mini_keyboard_fadein.xml deleted file mode 100644 index 9fad7b9a..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/anim/mini_keyboard_fadein.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/anim/mini_keyboard_fadeout.xml b/src/java/KP2ASoftKeyboard2/java/res/anim/mini_keyboard_fadeout.xml deleted file mode 100644 index 7de5123c..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/anim/mini_keyboard_fadeout.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png deleted file mode 100644 index 01fc8ca780342b16e22a395f702af499a2eb21b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 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 M07*qoM6N<$f)}_=$N&HU diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png deleted file mode 100644 index 1fcbd9a887085ef01807d36e6309f95457beab4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)5I5=A-EA&vv4JX3pa{*8}*#O4<$|8xoHwJo)k3EKvMOks=7MW ziJi}9@>625m{9OnPfR)QnGP@*va%q6{JMRdo5Qg9Z5ZLB8v;eW+@5Rkvv<&38 zS9IP00CXP?2XS-^!a2akGYFpx!Xp5HE*zl`M~fBn*)W6P{J>ESF|U(-v)RyaIHbj5 zAtIqrC{VlIrb?x9rN>OK7DNssomadJt>tn_{eGYF`Mj7V4Z{%U27>`Ln@w>}p2=K= zmJFivh*u!E$9O!Za=A>!V)2q2Z*Om6)|^hKR4SF|_4V~O5IGlk_yK|^pG+n%hRQVx zAPBShd@j5Ny*&B2PIeVQ2Ju2L3t>9NtRzG5lTWA97oB#m#)cJy)$l^H*{o>-v*7@B zvZ8n>2p2ba21zap@)Gr|TCF+)iQ6TkpX2A}hibK&Sau*EIE?UnwOWZp2cVOO7k>nR zJYeYi`@7H!AWQ)81^@v9SSQi&(9q(rg5ixuLqKt&?{+&;D0w2d3&bw$yb^#QlynP5 zr*;|lmejW|Bl7L8vZa!W|H#}$Zd zu$*Le?R_u8N!MeRgi? zqbrUcth_}Xeh5nARNvB!44L>_1f!npKze1 z|MBr5_V?5<3KB#OH+1fMy&g>_lk3ZLAiq%lfjD?d4+T}f8P>@k0R{l>e;~V+#4XbR O0000fq`m4?>Ze(rf5TCEm#cXx*_;b&cVZEX#mPRD`>L>i{J_54&0LWu_kWc>$$ zDD8k4gl)?znIH_&>-Fr#+2|zDJiOwJcZO?^dR%0rVGXweiKz{^_EoGwts@8mYs17K z5(8qqfXHV>J;Fw7PuZSU+CcjX9$8`~q#TDKd*g`OiX~V zeA$li_DzU)r%%zjyk)=3=h*SZToY;Wh#gb^MPyu$4LpX5I&VrOsMQkwRO=!(DMo6XVQ~zM}1EBmu;FRb>EW| z9RTIJ{*-BIka4mr z#5-kfPbVR`@+N2!YAR_ZPZB6;r0k591`(L4r6tBE4VLXUiJ3)6OFSXR9FXjNb~aeH zsJq?nM_bg3{N+Q^6SZ0m)oK;K?@#WLMx$YkW*7lUZ%r=>MC8mM^?Du6W;6S|!Tr8L z+1%X3&dv@hmCBHe773D;8~5&|YWYc_@L5E%-^s5jxAM*$yG;Q-g8J~cB0&<|SFbwCbcz7M>*-T}Ai1W|r zp#I7Ni6FkYxVZTK^78WA^YimBj1ON!w8G%XH zWtp&;NkB{{n1yr<33!NWcSlD@&FSgsG0R%Akwuh$y<9F=Pft&4%}5ChFhVsj2*6M+ z4FVbA|F0HtDA`E^=^|~kTCIqWNjLk2Sm1Qz2REQr4KjfsG$3UkBWA1_*CDVG{@)-Q z%UWWj<(qJVP(70PRzhN7I4ZRYa1U9wQBbcfRuZ7$9+0ao0+AcjBw0*Ui2r98dyb7z z@miV{O2UthNdssS5EhiDs8)KIsY)6E0HKQe)n2QpX6fbiz|zYl7Z3)KfDk-rXSb`v zdT_%8ZkP-(f@6@Y3PhL?Fyeld;G<12W8mcYbRhIvf(gzCV7({mx&iBa<@jD3_NJQa8mRq%&88Q;wss(Jw z4YN}%tCC#9U^kQl{4`GBVSVWdvjU zHWLTAfbICH>j^F?N5Voyk)m1zS(AgYGc~CvnSa-Y$U$c9yZq4KCKgj+d(kowPP;&| z+D!KxlBL{tiYmssfRL4OuP{OT6kOIsW>R5k0OSGEXhvR;!=j0AoGi5xb%H|EBu1K4 z_-s<~(fVem9qpu+aSXV1BzZzg()od?y84z~>?6xq$Tp7BjZzE}Hbgd;jU+Y%gie)G z&a3U3GPM8*uEfYt8m|HomEy@2qD&c~l-PbTm`u$?a=(PKxq(Cwn4F_rePqghliA62 zodlEFLuFTFasvTFC%)0DAENL%wR5r&RHUt$80v^hwWcwm%hJubF`(8JG^H4dMjqh% zd`K8hWh9^;g1aMCS0^W!N;IBVCG{~Ca7#!)LX{ClE{qt>0#vK&RubO9D(3vFQKQa> zkqjc2*Vx6d0zO1-Mop$^z_U?mn?L|t634iZ5__Z;bdE$G`a8woNXtj0|2*9zE0hqCdps#@{F zE`s1Pb(ePbfK8bI#A*j5t9PrwMyLR3pr?`5zL$+-f%d;7!H)m1nU}S+K z!$o(m;LMQ{zkyKX7jUN3fgj-ly@F9}I5-qKxmU0wgCm0kP6Q{=ZnVG8%_4g!@1mgAC+1cs&`T6%JCnw*e-^3mv^_3h6t_3_-@1d?%uZ{fhqlb)o z&PVCdoa^sKuif0-{Bw16^?Q2%yY%}H*ZrnHf4IKB{^{`W@J0H$O4pYxET1cgrfGr) zMui6eRC4(S$NRA~oQ*6JfEDB5o_=>gL`Ve`3=mhn3aXV;D+Qw0 z8ey?}V6j-l)Egr^Ss*RHAb}z7^zmyXf)M~&%T90x;Q-N22?(;J5A`x6RytX8j5G?u z0)ZE~jG*8M#ZUPK5LZEshAS{~=9U~x2D*`dBxGLp=DNP_9LnjLezKtG}84EQ) zNWoZoE8H*DfB_Kd!Ds?dlmU$TJ=O-6u@*?*k(CS!1LLj*A{ZI3zMc$SZ!a^#YGqjggYy84+-<@AlIM;s zAa%RyDfwJwD*H4DG{K|hyZD;jNLK=Zg`T3+NeG- zkTEl4SFFs24y4L9ixC8Zj2NNU0^hZqiO86jaMAS<;% zHpLFiqN8{(oVt{aT~$k)f)THk8_~7A))W|VDiRNgK((kwwFc`0R4Xr7J#$XDb3VET zLb+zC79Nq2tz^B05djdbOx3F890!??Z8eZ#0Hz4UEObW4Z713%K#Uk^JVwlnl(tpl z$V7fJ)0jF&VDg49qFvNcoC&4NhzA7LHzRf0x@zGP*np{H#G!T`LHV0BFB5}j1gGF2gr5hy_Pfj`%o$MWT~=|P0gh?rCP;mo5u(_BS1ThBU7@B z7{R%H<7CtaDWI*=0jW~VaZRZf(${3FPqgV(VNFUEFxhN>*+w8!LLMXAngJstC{vZO z8xX-3K}&--0138hCIiX~n;7j$n}elpl%mq8R|CS0F(I`$-baTa@91tvix?l_|$VekK?mQiKw=yvVqGuW@C-){g&!!ni_>28)CYK@r(*;%N&-D!r6 zxFB#VAOjMCSsvE)hGmn{iluQW@sSx}fs%}T?Ka2AZvVYKu(dDkA@x6# q%(qz}pJMBQ>`|_F?OgDG0t^6r6@`(Aq`Y+i0000lg+&jwADlqG-dhtB7se&@>H<;|Qws8F8LsjL8K)y|vo5g<%-J z4r7Q)fCweT!djMf9z>|1TE|~=I>?Lb0s;g=AO!MzPI@bH^#h696j2#O8%3yUeTq*A zgh1{DQL$>h%SjtW^nQv$W+xB=A+u9MB#)e2T&+C9b@2%PgrV|F<(Cv85CS0(0{P6q z!#*Nj1y9oi^E@k&scD+>b2PxP3sO~;gy{QT0x8kC8IzL_bzSdEvWoC}(epeA!%+TM zr4bIXJF+Z;vMe_o+Dy=$n#FyY-TkXG*4sIfhX4ZrZ63IoZcU)}00000NkvXXu0mjf DLLJ0W diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_light_popup_normal.9.png deleted file mode 100644 index e3a77d61b32ba4705f29f4e34389cc225762a9f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MejUa978H@y}5Oo_mBZk!^0h~T6q(st|jn4OW5$P;fSEw zgAATmjIO??8{2d1y!UOHcxip9+|)}`-?!B5Vy^tMC`zflW6C;}P7{I7xUiS|I0W)9 zUcVeMWySHbUzcu0@jdQ(quKuP=CkGZmtV4qUN?8&pYEs2^wx?U`Ta<#^0>#6nOSL< zSLk#&G%zqSv2X||ATuiYT{b(kTw(%C)bpP#ICGL`(!MQzee-`>ly1y7xfdy?6Mjx0 z{Pf=|z1IZ$I36$JP5i~m#L`jkG3j&E6fpq>@5fK3>Yn=h;qm(a=F@K7VUb`Ex)NRC Td-+W%(B}-Eu6{1-oD!M<&g6?P diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png deleted file mode 100644 index 431c44967f4c7022a2082b6b7c83d8c8c75abca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 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 Hu0mjf(1wtX diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png deleted file mode 100644 index 83c6eb3fc1a8c7264b5554016f1a30a25dcf3b1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png deleted file mode 100644 index 88acdd7483f4eaf257c1b64331c7ae3046ff53f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2213 zcmV;W2wL}vP)E_-0onO^=r}EmOMdgosLwNgn`+56$`>FoZ@(rc@ zr(eH*-}LFz=WyS?eV@NcAd}~NAF)+cLVlx_o>%+#?|0{H~8z=v19JksZ;Ls z>C=HTXU+u9o;~Z%ojd2wpFbad;&=WVzl-fGCr_R%apJ^@6334pFM*mx96fq83?8!i zjPH8h5t%}f7bt$=!UcEn;>8k|E?sgB4Gr${<;(8Ml`HP*)vMtreh2tB1>aY=AM6)k zFgPFt1Cs&+1tDbf8EZW4M5a*WISL>sxOVMY;QICJ?#7K9?&i&#?$)ha?#`V%C2rro z9l+lee3xKbf_-tn91tCp)ZjoSioEaXC^DscsU~M9h+roS!;lDk_wHSH@7_K4;K2j; z@Zm%E=+Pth`0?ZL6X0(OzNg&3e?NeIU|)a(QBE9SR-;HaPZv*z*k&#z(h4FNDHJ0N z!0=C=JaLVUjqd5wr|#LaXC?5v1>Yms4nUp*K;e|2f|>K#Uiyrmc|P`Zjik}IRL!a*yV5ijzm&-kV1 zQ_qL-z%MVNJFzl4E0n23QHxPTXC!qZ!O6gj;Pm@#Y_G2II4KsvM%;lt(Cx9pnNcbI zJta`7wN!v70-S)N$akKeRf*tqr>D_MXDtm#G5a?wkZLP?7Sq!>GG&Y4RL5%uuNx|( z#|uxr8n6<2y4Kk!cPd7vY!O_6c>z?RA{iB`guTvaOR0ptfFe`22yP+timq36%INh) zFM9T(Snb6T`&0?mWe#M@7QuZF@27a1l9I94nQGCCZAwCKUw8|HOxYs1QRDp%?}I3$ z_ggAt(XjSHS9E*A8A#oKAyc*pZpV4I%R646vqKrZAEQ_~>}fS6VQ(6d1(~u%@Z3=D z7T&g+p53a!o{=cQ8DMzLfK1sUc+lbV0-qmLNLx)$207@#%vMqX``m&|*&=u%^)c7Zjy)+3Iy?4QqF@U9JzZSDJ}IE9D$IdQ*&PkY}>XitRULe zMoOs=r4;S&q6InIJ`~VZOoA-Plr6Gl%a*X@$)!+0F$$$xF9+K?Ma!^UibbYukxiR6 zg{kEFEc%mTR)}pt7_12U{geRLjdgt(nX*Od>+9Y2?c3ds9XkSCNT!qu=^}S7+B(=L z!?PaiBMUNRi>zC>&TZYgHS{H+mo+k%zQZ8-WG9<{VK zvLI8o$nxdO-TL+GLthe#Ss~kkwjFJo*p^8NpqAD~7G%m6S+ZnFn98+l*9Op^fO05= zqS}6xs|MYM`(b$0U_I7H7G%m6S+r=8TeWJH!?8jrW`%4EYAY(K?{Iq+U~sLCEXb5C zGJpPjw_?SL(3gZ_Dnu#UhSk9Bbo42JT3Q=f7A#nhFEV%TT(@-TQnzf`vHZHG#58y$UyM=h<5EHh`$%omw9ZJNVzg1#i!8RaOYGi6~wi~XLCJ_S%m zYa`3_>C^K?rc9XeQ(L2q`L;nk_}!qllCMY5>+m zj^QoM!50g$A<%qKuoc6cE(cJHdU;E4j}4baI-~*4I35? zF36-v2^P(qrKnXY!Qcw&U~tQcv`C1&7&>&Q!vT*23_?W|$ra6FC25t={b2u52Dx6ndNufrUweAQmuiYd>gwu#^s~|!-|ljJyE*9HyZ0Zp zwY8Id#{Qm9;>%|>g(99dp0=J&o{ysa7oHzHKYM=l{QesG&GU=rC(l=&&*NKk@5T4E z3PoDSSL|w{b+`ChQC)mjYCt^TUKaymJN1te-D6vIiUVHw#&zrX(qp^$Wc5_i(I89?0+Vmoybi8htqgIAfhQK)@vw+_uj nP0Y|%BwAPdg8%>Ge@*%aMPP3}F4_LX00000NkvXXu0mjfYo{tf diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png deleted file mode 100644 index e047eaff156e610e1a898175fb966b73861ea1a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmV`})NhM=ThG=Aqs#JA*nI`(1mVNsN68@M@ry13_ zZ8n=ErG~UfBog^jQ|2FTw;NrrSGwQtkbqmQ7PZ@LQcAgrTrL-yOeQp+&-3rc2&Pr_jo+ga=E0@Xp}3$M5-pClVKvP$l-9H#bQCj z;qaAy-xOicOoHu&N<=W4xITz5cqSo4#9ozWrC$=}vq1j{b^$MhP!tgytc>mDD%%86 zMxId`W3s5>ww6f-B}TZra9I`6$sj4>d%1Id zqGv9o^GKT8+7U2s-N8;sa5U(w7g2d#&Kh2h=OmB221C4a9ZCm436PSS!)Vm_(4Q<-?Tv z2BTeI`>-k3B-?YMv}UYscvoP)t2C&5LUNGC*ox!f5eV|6Oh@AqlFUejzgqi(mGPeM|J`}us%F*4RS zqWmFszZ@6){hm&z6YO?{mFe|*G#-y%s(jS_GGiWqR9$K#Vhea>8)W*g4y|aB$m)Xk bM}PqUY?J9Njve6W00000NkvXXu0mjf+J0A` diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png deleted file mode 100644 index 218a2d29ee0ce205540e727471d76629375ba275..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1042 zcmV+t1nv8YP)yItjU(Cg{xsfu#NV$rFO zp!(TmWkd&~cWAX*ba!{BV)*g#F_p_@6|x6|0X3UVs?};#tyZ1N%P#<}losm|3;;+z zpQl_dr@&x@QmK>*gU`>;>OQW)kPByDTUvVMPLGd|bZ~H>qy!LnAXAR-_#Nz^-O0&` z6aUbIQ7CEId<60V6G%w9Orm~i!3%1rOAAik@Aqkce}7>j#{+;FGuSvfI&zYGcmQ>k zgbKf=Qz1tH$Z$BM!^6YxsD=ArVl*0kw{z(up~7!a)B+<&dJhi|D%4^M%|H;Xa9ycX zR67832_#h1(w$uI0ArCKz{bnHMIMU%>LifLV0_8Qz7=^ z;zCIaAr})%URC10>nTd;%#qXwY`W7oI&C|+5+{#wzlOZAA_;(Q z+sZXNchIXOAbvJ^wk0L+4dR;L?nwZ_w(&WbKp#OvRNhCIv}R}9P>sP|Je&#VH-@~ diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png deleted file mode 100644 index afe49512e9ec9756f6126b852ea40db9178dea3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1105 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/candidate_feedback_background.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/candidate_feedback_background.9.png deleted file mode 100644 index 203c4e640d8369111e7e09102e1ef502d60fcff8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 833 zcmV-H1HSx;P)V-Cu$HxIEp6v7C|bq)2MU6Lfou`}4gw)uL}DO{i6A@(f?!}o2*R{; z9S5#=B6_~@dV=qPFPC>jy?*@O<9&Lb)@(Kt9Ky1!(}`GI=HwH6!V=8lfXI(}#1}TX_AHpvhgQ;W_CR zqc{B}=`le%-WVJLBc1Ysbcx}r_)2<2fGWn}5STq0-jFUbFCF&@&}(CG2+R%*pGezk zKAB94cswq`;jnQ6olZy8>vhrV_4J#5$f*&awyA>rOb3(AW<@HM+L%2ek;q)NT1^xR z1@$IB=?UrX+MTl~z#TQ0$z()2oo2I+q=WMLyq=cs`MBWSq0H9$8S4VG}4&8D7uZ^AjR)b%?Y4n?_KW(B5Fsfc#_O!MgB+Tqx?{e^}DH7DT| zi$ykIN~O{nFf{MaZXavawyb?|a*e~~(?qpe6^`S~8x>{CSs)NF24plEiGIH?TCLWf z9CN&wuj}yA!7f`!<$Bs;{E04?|1P=aozZ;`J)tacw@F7#!5n!3<9QQEPh6+r#-d1b z3R!#;Uch*%Ir{$LA?c|&X@r(N{#Qv?48r)fn1^)p!7A4|tP761IovmG5nRT&p|J3~ z6`TV&fCD&y12}*KIDmry9KZn_z}Zk3zwTN2v&5C|Zt`1%-vSH(*kja>F`B{A00000 LNkvXXu0mjfD}Q=1 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/caution.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/caution.png deleted file mode 100644 index 5cb6c54b93459214c352dde5285d29647173d680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1641 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/dialog_bubble_step07.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/dialog_bubble_step07.9.png deleted file mode 100644 index 94b915432d34e3acdd8b6130e42718ed7eda1d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6012 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 M07*qoM6N<$f)#Y3r~m)} diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/hint_popup.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/hint_popup.9.png deleted file mode 100644 index b5ec003e655b5cd6de5ca98e10bbf849aed0fe37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^MnG)I!3HEtepD0zDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MJ=8#jv*Dd-rO|gI-tPA8W3D{L~e8W7NuA#k(fma@AV&v z$TJ2CZM`;WX2%QGsJR|%C-cq}6@Y>Xd*(!!EZ)0e`wI?Ca3ag&<>o(k68H5rfPl)= zs_WGS|G6zssTs~=V`Tgpm#@ul`RQy0iv+`r-B%uJewT0nx`)Bj)z4*}Q$iB}N`Fe% diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_dialog_keyboard.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_dialog_keyboard.png deleted file mode 100644 index c7729566c241f096bde71b5da5f46453e9507f53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmV+?1K9kDP)(RCwC#Sxu`FQ5c@las1#$;75WX z;x!d7wCjIdgrX=4qE)M;Mavd#+XU@`y9%UeaiP_Pe#2e3Fi}(_6|Uc27!^lHd)~Qd zYI;H4oWq?151x5O=e*CEbKdtkC{CwSf#+rtIB$jkL%>ZJAZ0QcAruNdMgJ9Wo0GUN zfn=djI1v>^d1J9yKJhsFgTWvn4u``!`W{YKP@V)#jZJI_xXEdBm6%K>LaWu%`);>e z5JizmexrbNI<0m(ol|tp9*-v;i^a?=^7AD`c6tV6B%$4IAEW;ScvP>~pJ|%L9KRUz zk^o7PF05AT+3eckaD2xrQ(5B|V-``(7VCi4>-7%*pwU_j1Oi8PyFJYyKW}2c-(M|c zzkv^c47>;KG0I;FfI_Y-vBdkC_&)*I=|Zts)cfIZSa7*qO!8~f=x8(&a=BbmRaF;o zC!5Xwq(Z_Pzmz#w-oPck@DiV@o{}`}1@2QBR2bvu#mq#CWyWOsCU*W&wkx0aR9iK|21XT0$9VSmkPQM?G zMt2%_tpLiq@ZQJhp3!xq(RdsRg}#x6UB}bxVD=w?+C>08^C8CnvF*6@_SP0M?D7j) zmgn{r&QG_mn|OdW*ZJZzwgCe9wad6mcDh=vF4<|g)5A)oqT5%$-+yGY+0xhW1C;t( zwOUQv)>F|e`h32-Sl5*u#{HLtaC2WfeFA);!M0pMcHk`#-^)&y%VoaPD5@N-K`w)* z*d^?2#q0GR@F)O9xM3=lN=b+icskfntQ0e1Kcz~X$mjDi@O;sxGTta*d<7Ds@i(g> lzz|>vFa#I^cy50M7y$d=)#7A2T_ykk002ovPDHLkV1nlod^`XE diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_mic_dialog.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_mic_dialog.png deleted file mode 100644 index 349dc4b37c6a5530cd2846eeba3024f976cab75a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3634 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 Eg7g2=lmGw# diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_subtype_keyboard.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_subtype_keyboard.png deleted file mode 100644 index 7015e266a297927bd2275c633fcffe724c4a8eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 zcmV+{1k?M8P)0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#&PhZ;RCwC#TT5$GK@`4|Yg=nIjrF;b zstd)9D58j>3q?hgg5Vnp)^=4Wf`|)|A}+*@3q@D@1H`5HTDVa}S0aKNmo9XnZPQe( zX_{Qm!EfL&G^x3n3CYbI_}V0sxp%%f&pAm{6h%QRNh)YD@q|5LPuLUoggs$T*c0}I zU5O&J6EeVpgz_v9vV=)~vX=0a5G5Ez!Xv^4Cj2nrWF=lJJZKp)efBEhF>F2w(njbb zT$3+KmG8xyk|H5tv*c)|rCCBLL4=E@wfe%N)q>Xl7AuPg%P@bOFa`6`V?Brkoa}RO z6}`cWF&<#SoJZFqB4gcf0OE5RW*snM)D1+86+_aJ`Bf+%mq5XQJ-I*rYpPc|7Gt0v3@UWqxp z@Lr6u_O2V(+%GI?HQ~K11PCjIwe2(JUJ|5waW6gg92-;>;Z#hMR#jS1HP?17)oQqt za0DjJetQPKrA>Mp;WMsx8NRNB1)PW9X6G+65&s^Xt>#= zW*_!>*ymxNhkYLQdD!P+pND-OZiqZA&5}*8J?6UdxNc5dw;}UzfCb$SYVRRm!KMX` zoQGM~8TqmntQXg9nmk;KSiesk!tAd%@t^%?5dNfvQ_+13Yr9LB5YH!2d6nSb51{d? zchF`YwiUEyKrkoz%2x7loG2YZyHjPx3()wOWos-VSWWuAbPa@4bqq-LkT5VlD>F@c zyWuy@E==}lrJ&UkCjGXB_`cyk8woFhV=?*l_x`X6?i)R+;EE{<7k}OfS zf7POt{kp~G8eIk{zIG?7ojg#ga3JYGbAjJ8?W*{3MOY#7j}X=no)BIlN|xrR1=8rE zoFjZA+#q~+QWUYd*o4@~14suEj&VcigM|iJK4uQ!^rds=L8%Oz>vMTpD&brkp!dXm zu2VSAh5$c4LAZmnu0963>#8`?umYJuXjf}44>Ml{jNmmneo-_Rtgq1(VQH@YqQe)eqX#p6hr{V*DHp(~}hB&s?yvk5kil&PTRC m^A#92*Qoq2#1k%m1sDLbf}Lm^V1F3^0000~KI=mg0I$p*yknV!!l1GYp-uF{<@4{S>xmSjmzhha!=neLJs zCkDU(7ytv zW})((?VM(f12Aq!)>`zK(H>~Y>=J)}RR3QAR_xn7K?$Jp2-$gDt2A>)E(%cE7J#t% z5HPm+vkMLb;*{Vr(cq9tdP8G;qD3nH)0*GBhq48m^e^=%O9<)#OJ4NZ!89 zXYZWE@$v})*wg}9YwAlTxhuf{uDPwUfGXp-$xM0J0_Ea6vLsEgA+$oC1I?ykR7D^t z+JwHqbW0yNBj@*M14f!q9+byBKXKIo|8N< P00000NkvXXu0mjf%Rwia diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_suggest_strip_microphone.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ic_suggest_strip_microphone.png deleted file mode 100644 index c00b4aaa645b244f89b209b540668737795f29f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmV+<0^9wGP)Qbr4?NbAC_iWm?CIEC93Ze4hRxD604pbVe|G=T?Dj=%{xTqK92J~o6qfDlAd z^uzJKo|a`fxfZ#ZT#*QjzzB@M2+XDAw#~_l} z3dS2iorb!meFKOVt*!S#YzDLvva6{Df_?rFnt3qX7YqS2mpCIZ0wXY^%-RsrV~nH< z65qB(cHdwMIl?&yYt3M8i7?_uF1ZHJ(FwK6XR+%wc@6KjrNO)lo5|U`PwEvDsfw%x znL9bbU~yECsTX{H*MR;3Ar)U(1L)*UN2(cJW+LSJ43Pf8723;^UAJ;BJF&d{V)pV1 zKshP20$kTx{DHMkvbG_|6|nZ)ss@HbBjyDfXm`#y@GF4D;N?dLN;CCHD<)y zDmUhysNr{=bq5VVCSn9)-Kt=p6dT44t+};LALZINRffA@U^x!;pM7)&!$SR@#HRbv zWNmBBu>N|+jG7v%s^U>EjX!|Qu*Yr^8e4RHdg}9P^GDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42%(;E{-7;x8B^a1+rFks3r|)(xXRNY%zf@1Y z18ew{rGgpFoD+M?rzNdsIvwnwe3|73|FT=(CM>l*P!zN84{Ps1cAt+6o@B~Q)K2;Q zE+(pC?vxlK-JL5pNo1+lgvAGKZttIUe14f6_uGbf4%A9Z>& z(YV2GRk?Jc`dt?Fb8p_Us%-u8_T0T)&koAZLh~$;d!zr6&H;wvCn?t)v^G2gMg)VW LtDnm{r-UW|Fh{jU diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_background.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_background.9.png deleted file mode 100644 index edffac5b8d236ab776b4f64ad80240b58a58a879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Ew!3HE54((L}l9DB^5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jin2Ui978H@y_sgn$Dqi;BJS+`qxt`T1=Caf?}R4jmT_q> zR?ZfAomX@8%)2jUHYs5)X=WTDQ-9iue!G|O(Ab3~^>b%QV-Jgp0wbqK!rz~LqKzyn vA7*71{1lzBEJRgTe~DWM4fyjw$6 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_dark_background.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_dark_background.9.png deleted file mode 100644 index f315cbdd4181a18947ec0e73cafc18c25aca051a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmaJ=O-K|`93M%V<9RhbgcJ_1FRcCkH+-OwR1s6+joO$aG>wGx#Y{xxR zNF7?LYjg^Phzzob4kaN39->>+r9(s=IusdQ>{9e*-PI0l1M}YdKYst;|LgazPK=%E z@E!3H1ksTh6|;B;`0s6R!z=OPIf>UEG?GV?W&xFD8xn$Q&OwmT<$0KevbwzZ62=MQ z0IB8jC@-Di6;r2V4@0@S<&hBaA=i?X5=3AQ&TB@3+}_wEfu<(NsgT4-Rtgri(TWWx zD`PpOQc_|nIW!33E{_Rxh-BdE3x>nH39`n^0@Dbt1^L@|Da z2{RzfQY;sYL?Qzqz_1L>1ZXzkXCpip;28$gKN3f?)dHUt)Ad-`N{~f_ES{#zjPN_l29jOB;q*5cMCd5CW+BZqfX67$nM)`^;!Jl-(5*dM!>P9k zH;i^=i)JatE2#mLr2j*8eGl!REZoocpTtgX*@AQyI_8qC;K3F8y-*gPvZ0JjJ7<~; zjV?|UO=LPn(*mi<5Rha=Gd#P7mn1%8I7l`Wm=O~sW}q}pM4tMQCg1p_;Z$9n?zZwdT2mn)20s z)#kZ`oBGl?8QL4{UxRL3VfA>&J=tPoPx#QlYPYehpFTX@gP+8ej40&XcVBM`KBBLE zWb^gv%>8c{ho@%1UA2=D)I-1TTprvMGHca!a&__C!J{E=`eW8t*^c%V(xr~aw}REP z%;#&#PE-S3tP9pSI6%? kyD_`7_TT8TGb3Z-gXHYWA6^GaFaQ7m diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_0.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_0.9.png deleted file mode 100644 index 271264e92c36f17b72b7ee910cee45c351fc0bf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42-g#E{-7;x8B^|%hzNeaNy%Lg9kSP-NN1D8^a5}yp*YB zjdyl;3v;{s>gpWN!$%T0+y8s(sm}7KFZ#>D_+BNcXI)6e`~CLsyyv=~d#Dv|vE=i; zsr@?&wL8B$c=h#1DrPPSh;nFPU}So7U-7Dtm0{Er>61~LPMgg$Q;>>2x!EbmMpb{( z-mRCiL<_I`Y?!?A(j|+m>d7)9qFdgsjhU!sE$8<3UQp)M#pn9_Bi*0%P2Z;YTPLFB zi`Cs{4HIh9v#wRWICJ%tD3_I=RrUmvx9?Q=Z#GrT-D5pt7i+{PG1a>)F)UBm>sicS zfSka>A)w&U@JCW*9qS`aT_6)K#=y8~(epa6*o?08$}%@!JBJFVdQ&MBb@0IFh_!~g&Q diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_1.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_1.9.png deleted file mode 100644 index eaf3742627b21cbdb8442de2a012044e0c11b336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9Mdv+T978H@y}7-S_mF`=>%(dd-s}xbx~ke66tph{8M%91 zvyeOC5mM4_@w$G}RK0KNcP+!FXv{g&v&y6DeoW}+ioS?N7IAwP+3oD~G~!>f$-a)O z(u`{DMw9-rZF+@9#dowX}bS z{I$R&>uvEs^)>Zky|IhUogVEK18HYqWCEFEt7ysXG6h)#C^hrN?szY5pzPXDzv5m$ h{=RVCMdt=ahR_0)jl5NPEDSr z1<%~X^wgl##FWaylc_cg42));E{-7;x8B@V>_6ln(DpF4$uTTx;*H63j(pOdnC`E% zaq3nNKc$1Z_a|gtTHv7b^2v)fZz-W@*kPAsS>Xi8Af+7p)F^XFy9x?lJB9Aatm zW6mr0nM*s5lqi@!Kklw*7O0`C;LyOp`02jlXG31M*`H7G|1UXS$jdJHAo{Lb?!)El ztjYzJ@digpeK;g2=DzisqjkNmo7Hb!j(@c#vaQbfopRren=ygEE6ab*?G@NqzkG?C@y*r@w$G2!jyLD8y}P>l zq(s=-v<+US_kLOI{nPm4llU*Y({(IQ-idPvfE~xg!ZBgO1S3(8Wm|ww1@d6RCtBwH rUJ4Qu(vs^h;Q41KV)`kzfssL9-0ybAyCgMWFf(|%`njxgN@xNA2DYYa diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_3.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_3.9.png deleted file mode 100644 index 34b5011091f55725d5f63f7f60bd7e9f3c7eaa75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42<@kE{-7;x8BTNxbBdHfNQxYtA~n*${!}7ZkJE3C(<|i zD{Y*rF!8~(-6^w7LTx71zMN7#`DB~g1zYRl^x3|hj$WFrL0yJs_Hy2L-M@2$YUudd zwSDqhY#_kPzGR90KT#Fw)=Nw*0uBs}Pi{M|+UMgU{n_R48N0ZzM+(bXlNhXzE-L=( zZlG?yG*x^4;xHM}vro1+&D^D>dr-#eW<=JBnWq%Yr>BV@xufuoX^riy+Qo@^ahBS3 zv1MzgZHf=;YJc?Uo6{7#njagw-|AZDm#(WhaM8LyLOh$t?&FsJ6#q4A|EBe>-Qx6m z7I(i*j(dDbO;JeMpUNXfm#2jPJ^p^#y_tUxyFO^(1Gx|ENR|ou%%0ASom0dV8W@;3 vkO=0g_tU{XiFx^z%l-9x=Qz>%Ogs!?JHqW1w==l{!<)g=)z4*}Q$iB}aOa<2 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_4.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_4.9.png deleted file mode 100644 index d4cc250dd60f767fcbd24a7745eca1500433439f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9Mc+ML978H@y}7-YugO59?cuZ?7MqNARdHJFvf5QOwXbJg z&z+{#i}Su3%LzM~IQlH~y*GKzoF&dLFUuz|ycbbq5!c@H{r$PxHLqVtojcyvkUsPv{Tm>&TV(_R~;Ax44$rjF6*2UngHvggLnV{ diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_5.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_5.9.png deleted file mode 100644 index 6a054b42f3e54ba92238f30bef827e062d1f7150..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42)`?E{-7;x8B^|$k${b(D3k@!HXBCPP}^Y>P4}|uLK)* z<@FCvoj7%CZJej4lv>Zqhp*~AgPoYZEG}R6gJ(prOA$mUlQ-TETag`;w|z-eh5m+a$%zNQ zt!|WEy4z#*;j7-CYhB`dTOLh&CwG2N_sXqzg5zd&-90L@YI14t9ufalUA8l4N~%4U zw7+xhJ=>?Jo)1`M!LDIsV&Rxz-~1y;VcHcYAR8_ypuk%D-8+ksk;x_W%=`kCdihII c-*gW!1ZjH9du_5+1qLgFr>mdKI;Vst0G>vjdjJ3c diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_6.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_6.9.png deleted file mode 100644 index 66e91400a7fbc99b5ca1c5d9798fbc52ad46dd16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42<@kE{-7;x8B@d*muZ5;Mm95CWcPeu%;tQm8@|O!#0rrg|`@vYB(9dy?LhQ_4$1HQ!F%dBks9{wvNR-MQB|ru3b^6MHk)N&e0Auo=BmBl{L_ z56wDSr z1<%~X^wgl##FWaylc_cg42*)FE{-7;x8B^g=Q?B{a{Qys%S#t8_O0ua-P;}hL2usi zi&wWUPF^3d{YUVk4uvaTCY<-#6&GZDep$V~e#xxhiubW=3^xCs9=+ymhV;6kiO${T z;`V>ehzdP*Ncwi%U-7!z!YvI9j7%&X6PyuEnvMiSK{MLmG|ypiSLdn1m%4zozZ_&Zfl5A?u*{In=gv( z{%i~0G*QImW`>FB!jrq__;>W@)LeSv={TkL*X&JRpKOc@-9PLW6Hst~SS_GX=~SaB zuo&tRn7D`I`M*I?Ks6_|^7@(V{?=+--_Xs#%rHH~wsG-8ms`LPWbkzLb6Mw<&;$U~ CO_((R diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_8.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_8.9.png deleted file mode 100644 index ea7f512fd6b4e0a7c538ffd9b422623e162f221d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42;g6E{-7;x8B@V>_226aqQ!?gb5K(YFVEsrcYFVc(_oW zvD>Eln@W+#la%+Gm9r(_ZohvHe*d`Qz%o*I#!xP7(TbMJFexENbDo=F^+MEq%vq zc{4lw(7mkRa#BBPEN!JdZ(MKNA*Iy5zi?|`#DeYLzD-C!!b%~$?~9GQI=b; zZU3;PFXq$&-50U?+I5HWRIhwVOZd<<72TIzkScPANmIv8c)WtiSDnE1%^3;r>mdKI;Vst E0CAeGE&u=k diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_9.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_hint_9.9.png deleted file mode 100644 index 0bf85de931823f0cefe4727c2c3e053cdaec786b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^MnLSs!3HD`yQJj;DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg42;g6E{-7;x8BU&n0LrP#Px00!k$RuO-7%%*T`CbVptRpoo`<*y&Xb@F8Gd9}a}M=#CRpe{qccsXxb_v0L^10t+` zN}ST(+tQk0si6A%alB*E;((|I1||-L1_mSL%))z5cBJ3G>cbGVl>g|h`PNID>+E8) zil5vSNI&X%v0{y!`y02%)zc3LBzdj<6qfuvN~W^(om=wZvf$wUJAP4oZ>Fs8I?4OL zz&*rj?r){nXZL=LeY!?<#^Urp-isTkXr_S#Q>SthP(6$Yla%JLsdtjI|c)I$ztaD0e0swt# Bt2h7v diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_key_feedback_background.9.png deleted file mode 100644 index 762a25704f20d449178579c6f83b212f8d1f953f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1099 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_suggest_strip.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_suggest_strip.9.png deleted file mode 100644 index 0ccdb6ab293eaaa169f335a05e1729d964e9aeeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^ia>0~!3HFkrWAoVk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XDm`5sLn>~)xp9&6fB}bVpzh5BhIi_9(l;1tdlvfEFQ4W1+ypv;!PC{xWt~$(6978}NZ$Ye diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/keyboard_suggest_strip_divider.png deleted file mode 100644 index 7ca3e6131b03adfd1b2d2fa7a29ce314d086a981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmbVL%Wl&^6m^MIRW0qltVV9d0ueu(_@SD}Pa1?vl|~{f#KfL7R%?$LPl?+Vf(=za z0R(@*2f%_gUx36#_X?`?RG+ z_P@RG#$?+%^#^nxkLUyv#Mv<(BG66Y0qP+bpFI15wmGgbO8Nsj2p^geP6b%$2xXcx zG{IhlGx%Ow?Zk*T{KR1P6^sS-R(!GhmjHUoqJ%rG#NpP zCd+FhVXvLs51 zC@W1_GgZZuBrsn*vqs{P+4F+AEhbs~n9|%7#mQtMOjH4r15q{%qvBAMCevsZCmDrh zGb=V~1`ibxNphOt3{;G8h>xkoGf!tBqr zYbICOZ@XKz=O}^tuefK}_8{%m16SnuC_@`7t{ciuku>ey*D#$4Cm^*%UH GU;YMn*)?AP diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/list_selector_background_pressed.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/list_selector_background_pressed.9.png deleted file mode 100644 index ba79cf7f85d3cf1709ef6332322fb6543555fab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4203 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 z 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ok_cancel.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/ok_cancel.png deleted file mode 100644 index f11e57a38991396ccff91cd61604d01888b95eff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmeAS@N?(olHy`uVBq!ia0y~yV7vunyKt}pNwxo9G=P+3iEBhjaDG}zd16s2gJVj5 zQmTSyZen_BP-apKaBlGnEaPTUj!kh@Fk ziBRLTY2V~p*HlT}KM*a>r5Y=xexk_zSXmFZVs9Ex<97!^&dAKqAHBPReU@KlVE8lt zX3n=Y_qCHUURV5+>F58rqv$2Wg6;D^?&v+fU90ZruQHQel6>t8b-bsuF~qIV=*snG zZ$5Z+{_frV-A5O_ajO3N?32-*^?-pY) z(z#U|z51?yj3|Rg_$}vX-6)0=doxnS7=+rstyn9j%kU&_%e;$B4wo*?vsql~$)FIM z-W+|LVM5`Bs@D<>o7&3a!{+m_GDt>lVVID75iBk|+`1M(i!6WKc{r{B?f_rLt7*0m*wzk*1wP-^Qqr%fwwsBj8 zxEW@Oz5VDM&7g2}fo-j%R|ca(YG%J!ZUNBZNo8f_+cFprEMjd4-;=Qy=z^8(Yo{+{ zP)NsA!2tB;h786BH9A1Q$wdKqlWxsvy9U%cWvOkY8#lv}_$|!SnHWA<)?71Wm{4%> z-L0&PObtM{0=-}01hiIpdmp0$Gmv<|(*g{#sz1w_7#ytfWSJf6oVXbvh(nhFf28(ZN48vh8Wn&C;*iy5jd8IdN^{f%nOc_jlSbT=36%z5Z&}S7o;E!G<$^4!tan nVtA1G`RAX={olhI7#Ws6E>ylAb2b>5uo*mE{an^LB{Ts5o$gAp diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level0.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level0.png deleted file mode 100644 index 342849cfeb13cd8f3a6dcd6befe53f3a6abca5d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6017 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 vNxU(cr7=-7EP)fTy-05+Hay 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

&VEOj!+2e!FRRxb_A}DzM{rxgyuS?zPr1dnHXzR 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level6.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/speak_now_level6.png deleted file mode 100644 index 9f4481eb4fabb88514141d4251122e1add120bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6782 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png deleted file mode 100644 index 3e4eff698b2e8ee2edfe92e3b5c31d199f51503e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2576 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num0.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num0.png deleted file mode 100644 index 678a790ded5d6dfccdb79fa5470e371ce893f498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1903 zcmV-#2ax!QP)DwKc{QIIQAWznQm$s(U!y9iQIBV|o@sVY@!7m1o~vO(&i3fn-Xs8uMX zqC|C7goz@4B?$%s{u|r9*SbR=4`T)+rA+d!bTp&!edC$)?z^9NM@pqqdxZQyA_?*Z z`GR~Qf_y=~5JA2mUx*-IkT2xLlP__Q1qUaY^XxZ~q!;>fyWOz1B40z$0`veKK_b#u z32{Jzt|bNeJ0o8r(vfH*zznd^F^?t#$&LX+fFK>CG#SZED?yOIHTg2}XzBR?J76!M z==SZ~N5;m+4$jTZ6_%8gEV|w9$DN&>f5UHn!gHF47)_2Kf2#-NpaGZw`v6A(ZC9>b z`OapuJtu2khoYjQ`Kwp2egk^%0S*I-0YJC;OEUFXP;~b3eei z7C;3cpSS)T$d`z0TuC;7oq*41px>mIh5S5n8*ksabLVr7Mw8?THk-{cr_(u~pPwJ) zf75EUs{;cApTPKffP?P06Y{m>0{7B{)&gn(<+Qpox;HhFj}~O6mppa!=+Pmb+=_~d zd7sbs1^oWmUjmF5#%uFW*UmI(gIgpR> zXFsmQ+S=Ot@_!sVb`0IyTeM2^)JndFE2uENG~c>)t3DhKn^=;Hi;I^oUApuuoK6BB z1ExAUI{qjtE1PHaB9VvzTvk2R1O~cqt|C8^1t!%XUj)}@qPj!JRoto)4VT}ii>lGl z(Q00?va)gp4vT;VCa+&`xm=HV-I0-zS~!@fAX7>{TiEGo;!HG&);thd(Evg2eS>a9rDqN3#h6_;;lsT0WkbE^1%h6UKx$E(Ig<20Lw&rOih+AFMDk~9@q1V zcDp^mZJwpi3knK?ye^DqiI)_TpSE&xmn+e0*&+4i67I+uPeO#$vH3 z3LIk)Yoce)ocX?|r{`zJ`c-53YZCy$)|e?VVUF^760)KQuSnxH+YGkp;0h_M%j@;F zXH$Ii=#d@4UvFq=_z4a}H1WIM?`w8?18@f^1y-$it0|dG=4`DncGvs)Y?d$Q>KpuJ zB9YK=jg|EI^78VARRRHVmCOH?2)eOIQ&ZD#z~R>xi^YrrE6WV$*1LD_y2r-Gicqn! zvGJdlmX<$Zg#|(+fj}Sx`Ts*^TRWvD^5w2n0<3uh`70|c7S4~S;{y<2;B|4Efr$@F zNJx^84qm%6cd9f2JeG|gM;NV`Bha_(>HG1=!4T4N_hj6@hsDpw(7{2gJ`_4 zuyB!A1Piw^8H}73>imAcJwtF_%GOlLV)OmQNcG)I;#|D zGxieHKz{lKprD%O6=!E>_fh_>XNnpl)C48GZfR-hQzk72mi)^yfs+xeCk_#2L+wJ2Or>3ULm>hf!KA*3G*R8Iuo+RHJS4jRkx3}lN zzHp3)4YK58YDw-T!u-#6UEQuCKPmTQFI>3r5Q649zYiAfxOeZ~8(8pQ!HY!>ZX-a- zSH|BI_k73|#I`~HX0aemH0JU0MToCqHTia>0T*8;1XZiQzP^5RXlUpiR{8q%>t|bA zTm3|=sjI826EYKt+lH8KYisinIXf+MQe@qW$B!THbvm8D&--{bN8<#M^6X7aP$-QC#FeHTzd-6lyiQ(izD5iD~Y#(9XO0>059+K9>< z=&uKZ!4D1{I^i{`_EbbMpl5BvYehWwR1L(??UU@`t)xeJ+?sd+Zk4TW4E?DI!_^TrfaIkz8Sl z&joWNe?xnx3-W~s@&)-q6v)2<3;-<9{-f0=)gu4^002ovPDHLkV1oFfkDvem diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num1.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num1.png deleted file mode 100644 index 4e68e35b353a9279a835b5ba6d2d3f32f9e08077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 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 bj{pMz=XRrFDd<8s00000NkvXXu0mjfw6-Mm diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num3.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num3.png deleted file mode 100644 index 57f9a8d8ebe93657ad2c8c514d8ceffeae6dde1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2829 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%0AQQr(ouI!PFtX(#F2uwg@;dNEK`rPS9?B=~HA|S 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num7.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num7.png deleted file mode 100644 index fff6f27bfb23d3767ef3323209256a280c64ae00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3687 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 FV1h7%Dslh- diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num8.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_num8.png deleted file mode 100644 index 8cc1a955ee5b2d91039f5af5292acbeb7971e45f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2952 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 Rg0cVr002ovPDHLkV1h%v+3)}W diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_numpound.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_numpound.png deleted file mode 100644 index 0a46122b2ba72f4b100efdd11c8add1eb8bc4de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1577 zcmV+^2G;qBP);?5JgeJ+yB#)oB~chC!aS? zJ|~|yPCh4}H%>k$pEpkaThY{M@;LLN*mLUx@7R08|ZBPai!O$E>ZbO-@S zjRIoWM~nAVNcIhav^XdK{!vc|H3BjLW;~AoE&*ZelL5#A=#lIzyq}P*6t4OAAfH5Z z=Gxj?nNq1-5d>kmu&{6v$u=PIxwW;m&*9z+z%RqY!!0;r%m$b`O(cg%N~Xu-X%a(b3Tpye@FJ^RUP#u)DkKq!;`8`u34j@;~UOr>9-`^zggQU zsf2VBzP8WK&b~)GHa0e%6T)S(nR{?>AnCnMr;BxTbP$4VNH`hy9IaoTV6US(0%4V`ezEW1hp&s9aw$pfYbo7LD zvREuvb#-;uvRuHhyu9q7gVfj8ALBR_f-K8ruCC7#`8p)qg1Vmr$lu!9a$R0tO0rT` zRu)8mpTvl^?C?xJv*x1;I(P;Gj@LwiBY`5EA%+1YBVzL!ujeJ%- zz7~)Nr~${a_gMbk;c)x_W4ZuV%p+LJYnbx+(s#0t>G5GBW>V`}D=CX;Ghc(g_XGbV zBYg&NXJ=;<=c9nEHwfon1HJ%!4j3C58TpY8;C8#eg=<5Ar}+L4U_bbhHE++N<|j~> zukf5~mincorFS4{GGHZB?%zq!#1|G8?)HPWwzd^G_y8xk$wtw#MsQ-2ocw?G_mm*A z`C5pFryVLPDz@O@$8422Bje`gCdq&mX0tie+}up=A7XYJlKJ`stJ1>~`IICj%0$fT z^%l#@$iJd>d`%|F=kuu`vy~>NsHkWc?@?x1|)cn-XBz^a~v$InqMTlA*8yFZ^ zM+uSidunQ`oPL>JQc|*m+I}M|ODH(`52*9_{r*yNVzpZLa&mG47}3(In4h1&%WPdP z*9z_zHwuQovt_-ub4R?#;~|BzIf#07d3pIV)@*2|dMyaTk<;n?p1h&IzkeR(CauU9 z82l+HsoUtW)L_B@xkXu_T23}xGaf~}9+IsLkw^Z+Y$tu*l0KIiQ~dp0COucnoYF1J z301m~FSngHDRLyrUdL0j<8&gPW%9*;q1_2Znm7LA2u?mHpEpiEC!aS?J|~|yPX621 b{uE#US~VAG)0yuL00000NkvXXu0mjf=4k^% diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_numstar.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_numstar.png deleted file mode 100644 index ca22bd53509a2feddcc2a22fa872c14f249e7174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1742 zcmV;<1~K`GP)347+aJLCM)6}3N0;kzeCQ=ZU{OdS^B2;B)`y}-gjw#@7#0G`Ms+}qfv{p z*qBvOpvYI`D^uhv@|7v_75T~(`HFmHiu^~y;!XO!Gzr3@5*8XSUl*NsjUs;$#MAeR z19XYZFfao|<`Js#3Krw(@2oU-hTkjlA2JmZiB7=5uZhG-MwH*nGm6g@n-rl|r@0at< zGw;4elCp`Q0S1uP*x0z+;c)orE2gKX55Tt#cotX==sY$aNCdKg%_SuzU($5 z6}9j^4LAX-$$sY?%o-J1RaMm}NSsSABO@bg4jnr58b|*!z{U};^J+-x=;$cy?d^Sq z#z!I%yU*vlZTf1?gb_hey%H#BXlSSx`P$`j-MxJI@;>qdselXc06D?Z7j@6ToU<3s%V&VoY*!vVU-J z@Gbb)0xP5xrO01I-lyn(?!tu&hix`nh=|oRZKkcQtq%Sdcm_F0x#~`wd-3!ZbnANZ}3$CyMevy*RTIcd{$6U&<9@`uZ$!! zN4;6dw=&s8lnthAsIsrG z?@7848|(C~TeoPO1*vDazrVi&FNc7?fO{-QSh(AzJtF{6`FV#s-|1M(4zZROG$z`O zN~R_d2&^^?!xjg_<~kRd^cowk4SqXZy0}mfKldYGWo2bAg+ig=G;9VYKAVN1?vDh6 z!BAmg;WyZ@&+&~3KknL&h;BQ|!_A|kqrRm~a_Q2gmApD0XsM~GKjTjqr@NS^9W!)* zl=o&3p#ORPqgBAE#uOr3ya|Y>+&fuYTYDVbq@j~_>bh>z*znpwCF4#=NbsCLe|~Li zYisWON%rj7Ggw(!*^jj4pPHJw8xDskU_E z@DAQsoxB0ZOZx$B!s$0}-dvNLoBN*M?{{(v3BpHJlEvwChEQgM21Cabu!v-1NKJ>m&gw7I#t9sc*v zoH_HU>_^k}u_P_Hq^2rPnqN~L?t^cJ&bqyi6icL&Uj)G@7fC{R6DS8>FE20uUVN68 zmiEWwu<*KgXeVZ#qny6GW(pB2mHESN20O@G^t9Xq}gV^J0La_)ahJxo~~ z`IK@p8X6k*k$z8PBKpU!UcLIZ^c2hBbYkNbuojij?v#|28H4`=k4Wcos7xL6cs$pS9Xr-!wOS*FVT=cZ!D-W!l>f8S z3zVy~k>e}!^77g^e`j!-kt-Pa1Oug*+^t);9zT8h^iEDkD|kLrrkz-Kxc3v<4DNdE z+z5uaITD@e>;l(_@j9oT5Rac;;FOy>v35U^jfoSd)HEr@%r2n8i)*I%x;XZWV}dgl zlb+W!<8i@RiBJ*Q|90F@Rw^~=rdTZMpzM-XKy(S$n3`-e>iLhYDe@KhihN~?d_}%8 kMZO|mnIiwuv%dux0N#8ijHTuha{vGU07*qoM6N<$f~G=Oa{vGU diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_return.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_return.png deleted file mode 100644 index 426e1599ee26dcb27c8129fbea70f6df334d0746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1111 zcmV-d1gQIoP)b`DT0 zwl7tM+I?**l{%W+u)4ZxLG?UXHXDOe;tgJd22X6@4>5R9*FvtAjAd0IxebX#LWlFK z%R&rEY0x%~purPk|4xh@+LHy6%V)T1k#>3FSQaUwI;O6!t_Lj3ey~_9Pa}~?6MW-n zHX^%7bRG;q3pfe5Y_r*X*~UIPI_iS&O#rrl_3Hqa3GJa>Z>o)z{Z|cV=ehnut1)HCWL5G{xK`KItJ|odCykY==8k ztJ4@pHsvJ7lOpci;B-3g1cSlBd;@Ag;7vC23yGBUAOq;xu6G#m~)FlMrH5jzAh zx3sh@?G>^9{{9!RhqC}ZCI(fP-R}^q)w(b_Ir)s3Es6UyE}xbdG1h2%dwZaqgftpW za%gDC6AFdy!Ot)Ff=*Knu0-cyG#WpF>b(NbJBaGnfOgK%=CKUrE0}lpb?EMI`+U9| zVuOZTo#Tikd44w-@6t}_rk^)xuvX002ovPDHLkV1lx1|FQr8 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_search.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_search.png deleted file mode 100644 index 1b6f884fa39a191cf08aca04df2bae8d77bb08de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1612 zcmV-S2DABzP)-s{8k1Z^_wzkDrk(NfpYK4LdS}arx^-rvIRiveCi?;itR4i0WUw`~pQ0VH? zVuhkuUnpz+;i|>@enj2$oN@+kheVCZCRxeAhvPkW&fM=l&iU@0a5kGwauF}7f#S?QtN+5driS$RL36e*`!H>@heZ!Zu$dhNKh# z6+jCJ85|rm^z`&xpPikJvs$fKE>S2HyGEmNy1cynZgzI|eJEN3tOIrd)<;4PCDl10 z1*ia#fV8%@ws#E%!xS~rA!1@;X0R?kL(i(nm&BcLg_If)J3l}FVp3Alucr|b1E0ZX z(FggGdYc$Wy&O9*Fz{+*WaNEEjhD;ihX_Y@d=`BWITiW#8ZiYRVrgk9J32agUfftH z`>U?5?vt6Bnb)A+^9a1hGPK#LKaal9C;9dYF`O<>08%nDGk<0q$n*SBUS8f0+uPeO zfc+{U8W2vv`>SZn&(Hr6>$1kd-|iYUXV+FRAQ`TEY>%7G=3XKdN)6-eL|=|pj%62mESX=`iirc$Zg5gMe^>DE?OR&v1><%pCWa?$WiUT|>mmf#0{g6|vn z4tGpPXS5#!n=5?lVGt}K4g8MPbhzm z-obe~L8DN87G%*kY@;A_ua1q4y$&`bKqIIQQU1a*E!G(t8YQv=8(NX0 z9=%dqTiYg9>Zl}Om;5EF3aFC>NF`*guCC^nmX?0Sstp14_4VIDotFUykYf;E8}hf)i^=A{pD#((;Z> zCbK#s7Z@103+wTHsGCH}L~$B9w-a+x&hfN<;u{+qEhmvfTUAxn$0Pvs)L}kLOqjwr z#gZBt8gAJOJnW&5*=)Xz!HVRaZxR!c!%;}Csj2zsByu=%i;IgHv|fFhm_SZW>nEkM zvhuc6Dt&knh>6LiLVD=5N3N)-=nmMQc^syqy`+y?F%|OL7c8m5!osgfREL}vJX}rC zcnPs~ruPmH<#6<`3zwR7fLeJ+#$0000< KMNUMnLSTZ*I|x|- diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_settings.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_settings.png deleted file mode 100644 index 08ba18f28db90ae647f03e5ee4111cc29a2ebb27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmV;~0w(>5P)9K*yjX)QcaWw?E#+Y%5}#Bmpr4T2-D4MYt#Q!N3GcfV#1t)-0^kJt!t^qQ6x@ zQ=l5C4BEoJy100r(L5Jp_oe<=vp|!KlPI8HML|`|*e4y7AD~0a0%F&F()ek{1}2*U z61#pTjL&K2>=NTI@ict{2`3JN)(wV>pg|%nEP@^lb2mV<7#u91Ao{|y;dF$Pb~2(_ zL|BP9tqaUuR-h@uNKt`_;*PTjDo(UZ`hOf9*<>%p0oo=E3`>ipFxRMK#OaPmQG z{ zUbE#5Yy)@$(3J<-#}){CYaF12W#_UZhVZVF!5X%VnO=TXkA%Ghx0dAzBZthJ;GpHT zp86@Sqm~>~!V=S=0SV%3da~G<&;e1G{2Woy-`g!lTm?fojD8lh%sT)L`Mu;vu>{mx ztTNhe=z^AH9K9dabXnf-B|m9#POffDC8v?kpcwj8qcB+RMA43NL-+?jHn<TYtC9r#%8xifRW@6MSyXXdUV7!1ao#-fZl zr6npXDl952D(px_{Q_SgK><*F3GnZU7Dj^fKrEmIynq|niln$>yP`s&2nik`5@j10 z7`S4$+kcpunQ`FS0_gaDWC~>-$H4*pDgZt3>fGGi?SzDcIWniEr9FbJ07wFKTrVcv zh=?#It7Gy7nVFe?u-omRu&}Tn_N%~oKpP2hVHd_EwM_adi6FCDt@c(`RsAN2tE{a2 z9``Q;RzMwYabXq4|GLaXAG&D4{!}d-|Nyz|RV-5!D>+8RQ?Gj+-cCrQ>jg5`n=U2V*k1`p7zl?bB9XkfxOj`m5lNLwd#9T3EY7jrE;JNtK`kD8jAZ^SR=MF|t$Ha#?_wzl?L zfe_D=8{%~7f6}?Vw2M~Cq@<(;!IfKDT0Uo2HXS7l97PyCqAXSu- zAClhL+4-?fr`zNe&@(hN^d0OU0JLo10&eg^kii19q7gdJ!J6XRO|DPv?hOtOK0x61 zQNQu=@k^tlqi@5WDy*!L5Vn`t4i69CHJi;(#ffbw;LSfpo7Z{ds1NhV$VkCq+7c*` z&(6-?l)6$%j#uO3;~999PYz4WXf!Ufdz!hAa}yI2cMjX0keZtMQ0k~j-a)suwIyd| zW&L8YSd4nTUZ+Ia+qI&=J#{XZ>q2jD?{&e(J7*!5so-ilai7=${22%YTz(YM!m?95 z9*@`Qbh^vS%X9ks`$r;mG~ff_NBDirTYc5OT`*nSdU|?_1YwHZt@K&I%J(hMZWMRg z)z$R?8&K+V4cOlQOg>6j2mFx|=I4iaLTu})KOf%kGw~?mCxt~hNhIc7vbfRK*48q9 z{sxwwa}E+@vHnO23yQ?~#b+MkREdPc72SeuWo5;PI`M zudlnLG;+J$E_OND9>0;xcq=L@9>d)}MM$t{wOW0s%3iN`b9Hrf1?kk16gPWWC&9s# zloW4pceD2LKE6fZ%p)GzLZOs6MfExN4BLTDBt}dFH#{Sy0oT{a-4&JC6>B9;^xgVO zxeNPG8567Eq6+@@c;J{4bEu=-J8UIFOv#?RL$Ul^8r1AmC1=b8BWEKqNF**^?h=8MUTVb_^Yw8@qMIJ2HLZQs)(%Kv$nS8r24#L z2wPD^;4epN-dM)*S4-6abptHO&7W}nau%i#x%pu}#Rf(5D=24SvMA9%utbGLg++xO csr)Oz08I+^|Dt*_O#lD@07*qoM6N<$f?sgP(EtDd diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png deleted file mode 100644 index 5664491267bfe10b0660f1b0b0474b99cc174e0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmV-h1f=_kP)xl&P!d!$alsfC!a`h#izYZQnK0-?oE=CQG%>Kq1i^tsBa18=1_#8DFlZt~ zqEzS~dbFJ1pZtzAL`YxzPET_$`Q+NWcklf^cdz&UToql{Oa8~?DEUv5EoO_^VzyX8 zN&SNtkWc{iFInFH(_$p#0cF4iG>`-vX37=a6ct6;6TU+vRW&g&akj3m?%DkOd>G#Y zz|F_aNi^~(hJDIafCn63TwJ_fQ&Y1@yF;PSJM3!(M}V92mB_{vF%H(v!M8>tk++)^&i*Q*Ds@-qcXYy8B!F)vE}9EYZP1|QU)z8Ew52l3piYCH&CpUi-Wij zjYi)TBW2Lh(eWJRodZ>%v{1QXq)NH+a}U1j{t*=rsdt|Yz3w4Tb_#1;M_ zQs~CU#y4y}gO%R|t+Q-~k-nIt=g4Jp*F18kEhLVnm=qC9rBZYu))^@aJhImnDX7i0 zwY7xENy%i=XkwOKexoL%b#`{np@Y4LE+K%)q-U?pnx>^zS69DBB9Rr5X7;yMg7wNJS|f4u?PW_xInzkm>-<+4dRL zr(>~LobvOGL0VEw_{)*XuVlUa*3!98-Yg3x`4w))%3?}RGtcK$te*4x(yc6JKkjWY hTg(>wchgS+1_0s_B03J8U}fi7AzZCsS=07#KM`T^vIyZoQf1$aPpjz;*J32j_ehR?98C{`PEDm)>1Z zg|LIIEH0}vZhx@jVdk{hS6C8bA(h;woh7BGb%24H#{eJkhG~}Z0rBiZ)ywbB`u6X| zgddB3Xd0N$*s`ti{gO3%_gwEi*!6h%ftY1xnoo`YteCRvx8v5o;ikpbVWEF6*=}Q* z$)(zS>BYt*`Q!7AvSM6}Za#jX*=H}#Rw5Z~?6op1JLTvq|D!YV4!Y%ON*>ALPc#4g z_`dX)iw`~YC;EN8Aadj0!aH5NTINTGBtM!s!@|_#BeV9@s|$h?o@<}o{(hSKyQx`E iBIOerOs_^aFfwr6bvj~Sc{Ldra15TVelF{r5}E+NRg;GR diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_tab.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_bkeyboard_tab.png deleted file mode 100644 index 3466e127101007166179df2ea81967b68ccd10ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1008 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_123_mic.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_123_mic.png deleted file mode 100644 index 62669803d9c7c7b682ac2f0dfca532c3f9031f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2575 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_delete.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_delete.png deleted file mode 100644 index 459ebcff844ea408852f5593dfaca7940e5e4e22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599 zcmV-d0;v6oP)75wW&t(lLV8@*re?V4JtNFf6(4&W!7_ zy$25zX5IPe?wdC&u`DYQ$4Dk(8VExe!Vrcqgdq%J2t(MvgDtXe2qAvIj4aKyInMi= z<`dm=Jx(0~`!Oed!~)H&N~LmU%`wK~@jIQz4m)>u27%cqP17!{IfqQxQdCefVK%B- zttx&`{6V8wEFN{cUHz}Is;Ztth7Ajhf&dgfZZng~?0Mk;1fLJtY&NgLf~DYuwOZ{m z=%u3T`b|2W-lfN{0It{T-Mhy?0h*xJ^ZES2U@$PlfZ3=dln$I(Bx?I0lQg+M4l=O{UF1OECOF!$J%;F&p$D#^_!XdpH-r%wXln73w z+}k)sQBGx|*n3U{C%QlrUYr-oiB6|;%ZroIQgPv&wQ3s53Bxe%00jxJ!)}7PaP@j! z^+K_@ASl_}78_SCmrvrfZDAu4xLLq#T&Yw#jyjC6AfFF&5|fG->4!N4|6E5H!Vrcq lgdq%J2tydcViG?B3;=oCS>dVDA5j1R002ovPDHLkV1ith2nqlI diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_done.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_done.png deleted file mode 100644 index 471c5021b88acefdbdabd722c10e9761c54eb40f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1593 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 Iol`;+0LoA=`2YX_ diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_done.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_done.png deleted file mode 100644 index 7015e266a297927bd2275c633fcffe724c4a8eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png deleted file mode 100644 index b0f6d7feba34837e4c2a097cef541ef3ead6bf71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1329 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_numalt.png deleted file mode 100644 index 819236c8e598ef24edc57a9ce7b3d487cd8e9c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3797 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_return.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_return.png deleted file mode 100644 index f038d3abed4aab1590bf81a3157a259fe00323db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2018 zcmbVLdr%X19uE;EG6^D#3QF50!O9^d*(8uhlai24cm`w0H36j(k_|*iHYSS+FU4xL z3Q8qbd!X`ANAVONP_$a+dWAtUJs9g-QbkYi1OkL>O&u!gZB%Uk@a|@AXLf&&{d_;4 z?{m96Gno{)I1q=!ky2A21-7POFGQGweaSQ{A6vpvi5ks9^r%f^fpH=ok`Du^Moj^% zfHk_(bxs%q&C(l`YE&)D;As&fRpY}@?M5?Zjl=O1?PiU(2u6W?xWHf%kUbawLIw;v z0a+CVuVd-DkLCdf2cZx zj>l%QL~Ie8DU~o15;!0zl1d>C6Qsv;xe~U7EuP_co2?jPNEl2gK_p^AAP7m5Bn*j2 z!sI{@gDDkDq%*duCM&8jY2g`N1EveHI3SxPWr##r)&7$$Pi%oTC}L3}NbyVu$O{n^ zu@)j`K%5m1$TV7m$#?dZ=T)>2Y%#2dby5pr1YYKsXLyS~oAtlqer2ose{x2{oT2%e z<9E$6bA@%FZ~Lb8vBR6;flb)NSg_FuiVU&gaQ-2wkVt7C9IIcGlCv`6()A42*<Lhkv+*mOItEhFiBu%U41EH>!iXpr(0UHMi2|c^7K? zTEfo5zZ49LPsBH5KKUTeUQkxD_PKLt(S{%0T?gIV#_|Er^oB=$kEbe#N;^0|7@s60 z5d0zm|1DL)!GXTbo*ZGu`%L#He_I%KsUSwbQxSIUX+*>=R>`y|Yj3Autj5-oq2Hc! z(iBSYpUoPYB5a#=I+y-|aPqlo9;Z`%Q5Qo(jYebt->aL($Bh?n7ayFz9eUD~k$pa) z(Y~P*$GdU&?!oq>M<0dn35{%`4+c1OX9MJ&bVa%PHYaPrC%u<0dCf6=uMoW69=7hv z^R0WgTo`h>%HL78Dq1hh4NL3lvV6Vzt8c#H&wKBV#^o3h$L@&iqdb=$`k`?1w!z`y z;fB1^+3cRC-2r(+#5vtNu8yE`Pwwo$-sk5|75^lf=`h?gcb97vb`0lz~$7R9}i zz9IR->^qgq9Jn)?;Tcr*QchoIf4?k?b#?8H#{iD<@aL(zk&%%_J9q9p$!(Hv$`1LW z`@Z=nMNnU3_C6Ak*zt?k+l5a#GE#T*tU6Yo=I6J6`RBy6=9|N#Znx*#M>UQ9x8~x- zdlzq^P$;z>IVanW9UI0Eg(&5I2?{s?$ObQoc;i1Mp=JP4`frR_HC_y1ORiy zC*;v7 z_g#Ll_tzjoP}{Nge-ZqSgf;QA*Q|LlR=skPI9n~Mli}7|4Tcf1xpL6ux^AY`QX6XZ zg3qSEg&oerMJCfkRbF+dyWyJKTj`t-C|WztHaFj=MolcZ=1yoBFDfma5_58!bBA_Z z-W=onb-cHC>vdZ%i_hl|Z=C9IuR^QR3iNv7y*_>cX<&MKI=16f%w5UT{iCC!Pphk| zJzXDr8ryNb|FAs6VlPX+_xaqI`4<;QojN}1@!TArm@vVMgU`91xlHF=AE{J{y9MBj z%&lLx^`GGw$dR>|{(SJjfy!28%&KS0*PY2Ycg`_($Qd-c;xy%SC8IsmBr3`8d2qOu zERXr@YG=;LHTehrdDXl!u`P08T1AK|I3Tl^g>Ok^W753Xh2IC_TUMx-YPDL#xt@v- zbR4gOqM`^31}II!+Z7=pL=uU_iP+^KME^J|yoT{%>viJ`cq<1a*$#ng%?(InLpgKP5( w$F9lmu;EJs043qQPqER%|2Bv6=EtfkKb#i?d)%AOC*!auRgwv{CFOncZyh`u$p8QV diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_search.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_search.png deleted file mode 100644 index 337f9e4fe93f0226caf3c8b4f957b7a5ffcfa5f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2335 zcmbVOX;c&E8lD6b#VA3vf~aK-sTUQJOhO2W2_zv2n;-@R6j4GlK!9XIGVCA-)B+-l zxS*hd%dH@S(Bnc8S6nD6AW*T?A}+WUuvNC6VFVf&Re(vFSgnDVB%r+K3sE$XcCnhG+5?M4vA4!L}T&|IW$#lRp91O`?RFUMMHP}uv zNMM6fuhyYzL<<@j72!xcDxhGVeh5LM^YQsatTlX06qYi2l0rv^XbieWV~p#)wgHvH z|8?WD+J=B+9ZZ+Q1|(ju#Oe`YI|;^e_s@omikLUNm3lQ+6h*8AQO0XvE$S%|P_Q>N zm0HDCUh6I7IN(<2)2eSUfB&)9c^*diw<4wnHjImWm}GMU7g1u@uM zu9PF?xKTc0RsT=U=$JEfV{`mZvrHag9cUCkwLZ4_G(4~tn;1Pd8Y3^Fxd1>|=_wHf zB>nX3+E5SMpgB&mts{HlXG`DSwhljdMSJ(PXw4FNwO=*at4iJ%88ZEgD)I?Gk7{u4 zey;|PhFq5b?QiTCLXC+uQr_`uYs->VU=70X5qX9z5t)bkz`bs$b*p?@zvPUVS=Y zeh)FMurBqo?%(nIHwD}8%s8`tlr%tSJauX;RP2-8r;JNwax2j->$5*cW`icf__iFxBIC*kYgcACT3SPoH+5i z+}V7j%@Tb6{CQycjX$mp>S712S~okfSS-%+<;#mkH-&_Rtc;F{ab=g^ko~87(a`ls zM@L7#v$J#G~J>#Z3Jvvs2z)~tEMfuP?) zw>3#htQ@tesS~CH?RoR>&2aA)wV8I7SN;?>^38>f`W?bJ8)83X`V(%aMXs?A_N zzMDiMkq6h!iUHK=>FKWe$a76iZw!3*4OUA5JS9V=ddL}B8dh8Eb#sMRZQ#+bH+J2> zf1hvqqa6+ikAumgCy`1fc%h?!OcgEd=`_J|ka0=jeyuk1*e{PBJz{&{=cb>gOsU z@U8;p#K*^Tr+-ZWTV9Wi*=GJ_Ra-|2>|SuMUah`ERW{)K)~&1XB@3;`#6Ns@X(inR za4(**@0Lk%?{;0Tk|3OGV`F3PSG?8i_!DM+{e!)G7g`F;Nfxx0N6k+UcR%GHnrdNT zp=DgRfZE#Hyi$OE?-AjxI<@`i%J~;GyyH@x%GwyXjFEh#!3ZlngcrCM*5 zxfi*mhG%7$!i)S96B0JIA8QQ_4IL;U(tZ{P=C;h)^+b3hc|(DqrnzrI7ZMd)|FkCA z^Z{ES5DXap1*fH@<@)&yZTqpSOL6b4d4G%@YGaF-5&);oear{>damQiIfopAa(m^L z_?SI|w$Fx#hc_rYrtDeJszdYaV_Ql{%I+)az6df(&Y6~XinM8%b$iF#teG1^Li&Sr zchfsl58Y|bKG#*>CA3?ca5i<8`S;t)a)z$&h>nhSnI4fl@I~fq*DHnb8jXgK@s0Qe z7wn;mTJv!f(!Abh&z?0FFEn+uGM!;Ft)QfR)%~|_wMZO z_#H$2VBj_<+w5EAk5_pYRB!nsu>Rs+TCbN*_$03Uw*!5%7Ulpzbiv`6sk3MR4%A9# zWVUCWFW5Zna|q{bvT4U#K4A4q70KY;0xCA16hG)(orME!JRD0-<1MqS=FgwVezoFv z58`MQt6;Q<`Wa!V8m6h*UES9R{gqlFwmVqIO``);@UzLX(TQ&Yc?{^M*OEsXN#O1=VDB>gMlIDuFiXJ}*%4-fZ= z8L_*&yTbxJ@x)x2U0q#YN&#qUYWk3L4a|+=Lj@qEq@?6^v)TNz)J~3!j0{1K-bwc} zp9wCwxw*M6^#0!7-Y&Azz`($_Z;`-lLjmCG%F4>3cL9G30~9g}jHIDPUZ;`7(kymU z$0~7}Mx(g_1Eo%5dU|>i@uL*Lx$5fb_rw-L7J?2l7IF!By{)b76Qo%f+tSkVv0ksg ziIZWjXzK6p|3++HB#Zp~{8yl_1VAQ?5L;+)aPT(U`3G)-G>dHFFE)?_kcwdxPGWI! zab89yOI89PcYc0;PG|w-dR9fxqB=J>H{TMf3*KEt5oF{p8Gyt9jE|51KzffU0boYO zm0AG)osp68f|#yXHa0fyVD~{hX*?$sR}h>K>Eww4km?7{CL|xeHJ&b76*Wg%UfF44EB1=7%{Xs4ox_6q6{*SSL<_mFuE21ABy z?rkz=KnWCdX7Z&4w+ui zE#(o#sY~b~?fOMlr4MX2+aGcPjE#-`MjsBmtJP|gg!Jx{zy>7^&DEu)CA(0Np=lwV z9OiB}K%b?8cy@Lc#y{nK$6w0z%G})C@1*y%k|1`HQHw$kb8>QWiT9ueXvp1WYHMq6 zQKobY=~KZzpaA}ez9M!~8yg#+SF6?WLi)r2?65(}3FxVR{Y*}-X8Kv+O?JE8=8qaM zstjrohsunUDudiuwcVIP;6{$ z998r4Tq!!#J#jLQRg8Qo6=WsW zjy@8uYZU|TZ^8irttMiP1$|gAwhXw;3Z*-t;WAELC4V#Q)P94+fWf3u~;lt(q9KB!mXl`{|7<=;6K-o;4bXSJeoBv;Qlbu&4}3! zt+^k_A1grt;Qx_v02}}ZzyWXo8~_Kv0dN2u00;1YmwyBp0EPx@cVW8mL;wH)07*qo IM6N<$f=2q{9{>OV diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_shift.png deleted file mode 100644 index abf15f8f9e7ea27dd652e8446e02564f330195fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 zcmeAS@N?(olHy`uVBq!ia0vp^20-k>!3HFcZ`>9Dq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffh4$x;TbZ+4h$nm=d1_H_)la*AwUc8E*z#_}@ z=8EQrD;tx=_2<6T`O8=~eZk`J&b%&me#amcHLaE@0yCe!u1)3_+_n0*_tEdIi8JR` zzCYVOcjjDkF2SA4B8%5)PG{g~KtX5p8ma@D7isJ|7IjnRw*IH&souT6_e%9H6hA&q z{{V9|XZvC6qe&ly{MWJP{AOA3I=tuBrfJOw6Sf4cv?-dq>gp@uR~7jxZPz5~Ya=)h zM1A`GxB6+(&%S>grF-0eA7R>16Suy6dx)0kivACBZ(o=fGOS_MyZy7~-!zk!vMiRS&g}AE|;NMLx9!X zeG0-&e+>l67;=^dt^6Ff{(CMP!?zF2^?pn_YLicH))$LZ_|a(pqm(H@d7{UhvfX$6 zHwAoP-~SvQ7JS9f`xn)2o-~KdbAP z43m+(5q`wSOEWv+T78Q1T1IDkqnS=j3Jhq-?6rFXBg2d6tt$4et@nZHj=|H_&t;uc GLK6UtoF_{F diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png deleted file mode 100644 index 1fd822ea6d617e7bc768f334e7a7ddc211eadab7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmeAS@N?(olHy`uVBq!ia0vp^20-k>!3HFcZ`>9Dq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffi$Px;TbZ+zqeDM$nk1L8)eQWgI|u*o?duyPr=c- z*_T&{BiHQdwMUn-lACA$cgS|?&Q;9ab|WFgLxRJS#dFrvmo<-hIqfcf4}Mtl;M1P> z_lnQ`{vhyf?<#?dM=Xpj4WD&1aG;_@n=0n6MI~Q*b80M(iyW{0cFLURZ`SQ^Y(E;E zKUVx<2#=0ud{ed6@%hUmZJTbsv8-2%xw!qYLdWFAdC zUdWiHDAf7pde+u(BgRJ)*?-CiCp~v7r5WO-)?xfQM z{>q8>%^1_Jz5o7x%IT-on;4(C)?L}?oN(;<=iKRDORYBvK5>`5vNn-FTubmL9Sr=NdRcQU-n5|UfYq`fodT~iFp*N-xP zSw!}}m3qJA1KYJ7x?iQ9x89t(YE|53=~ZE?uYRf8yW8q;Xx{mViTr!j(*(XO*t$;N z>~wDA9z&P4(w1R@jDiAC)c$h&jLWu*pKn}HCi7@xhU}M9Z%>|h&)oGV*_*}10Tmrk dtz(s7@H(p{e{03tmB8f1;OXk;vd$@?2>`AjCpG{8 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_space.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_space.png deleted file mode 100644 index 70debca9b9257cd5c99a8c816a603ad9840543bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1336 zcmeAS@N?(olHy`uVBq!ia0vp^#z5@C!3HFC+IWM3lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#2IjQPkcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`Gtf;oFf&jvGt@IQ zHZeCh*HJJsFf`CNFw!?P(ls=Ff*{}HFUPHbapl}adZTRyrGMmldF-d zqpPuni;I!5o3pDMOs{8NaYT~doO%TiO^it=+6z~O6^iN$_rM?(IF=uIIf%=Ced z(FY|Cq{IRf0;WI^6Q1;e9C+qQ%>(9`B4E}Kd$egA0|R4*r;B4q#jQ8D4gC%qh%`Lh zr=m0W*1}U~I3+Bc&A0h&5fZA_zsS7dD~nD{!`k!*JUl)#U-St-ZkG|9z&$PFvf3a2 zt~)!5KJ8mlcJD&R*0KxJJ=koy3=$4BFfz08NZ@7s(^gw;|72%JcF_Ih9(S+rw+YQN z&eQ%|cUy33c;F5H9=;iV>(99_{+K#z+0LzIf)iKioKD(ZTYD=c7K7YBRY{+-&dqdrx^VH&f5~Upzt}U2v+LfW3kvu3 z-4D4uzk2@ao8<<_=Il({k=!I_b$p@y|2l)oo^^(^b@MjsRA>Lr(snt&-~3Egsd@R? zIa~~9?i+^9UlZ$f?|HWKjDDeo-V*ckMWYycu31GXT`|3&d4J+Av+QXRLHoHkEY7mK u`eSR>wtwE2ud+H+crydTU~fk`BO8O#y1uhbfqUPA$}&$^KbLh*2~7YN71Z?r diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png deleted file mode 100644 index d2efb16190a4f3da5e0fa39a963c82feb3029cf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1707 zcmaJ?Yfuwc7!9B_wGkPt7NONmP>Pzz<^eQ;pm|~-p}fQZifodF1V}bb772($l^PVZ zf>s8IXcZi%q9Rd*imi`;z}SiiRuLJ%RvC(&Sb?IpYBvb9KT3CI_ulW$Ip_QCch8;O z9T^cif1cMo91b^MvQ8L{jZEwn;$5*X**rf684%| zAyxKg?Qk#-=R(rN%2ByY%26U(D&)XWOy#!JuFWiZNSBdaq`wFzq&%>?ObbSmiB(lk&e`+ulbJA*c& z(eOX@{->}pHd_zVqG2PFX;5MZm*V3{rRN9?FoYt8SOm$K?qZ}GK@p=G(F1}Qe?SH) zH9AK;iI>SZ5}gr+bV^tvZeeY+NYPmx$}0^xVkGA&5>eoDo1Nm?tp@?o0fnHw(tWbCTM zVU*)!8{J55KUUc}jH-f{F4%tjdk~7U%RJ+L}Ttfe1UCvOVcZ7^VYQb zm)BUJn%QvU7b$)C{m;`o?%5|M%J%0jGuw#;#c7fNR^xsAPQG_##0e)GQs7PM%H>(N zm#gv*|Nb;|F$iwn97-yYp6fYf)wU`6Gu*r_d-iUtutgnGfqTVOiwLfWv7We+U@f`v z=rG@sx4>*~ykAT(!&R=f+FYdXWV5xTW9Ue$qAr-w|4btwcou4X-0{_kr{mV+y%kr+ z%(lUhANHp5d)-|gS9J^}(iRsT8F=+U-IxAzm@WV=ssgcb`4#uRjJp9O_zC_fvBo_uXA*lu+_(=aoex15G25_wv_1zs$nSbrme!wal4- XYg_|MN687}j^Bqw6d^prPu}r2=-HSz diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_kp2a.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_kp2a.png deleted file mode 100644 index f3cfbd4e4c54bcacfc6e661259e6d5616e1775a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3218 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 q{{auq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfgZOhD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Keo`G(%fti7VnW3Jc zv5C34xsHO7fuVuEfswwUk*=Y+m9dePfq?=PC;@FNN=dT{a&d#&1?1T(Wt5Z@Sn2DR zmzV368|&p4rRy77T3Uk4Ff!5ws?aU2%qvN((9J7WhMC}!TAW;zSx}OhpQivaF)=B> zw8T~k=u(ImatnNY;RfdwLjwvJWcn3}1^R}12Ku?VAb){X7ncO3BAkI$b#X{#L8^XG zYH@yPQ8F+-(v)GEfnkT=B9KC$Ypnc>GJ%njnB$V4T$-DjSK{ens|1wMOUX>JaxyY? zb}=?Fa5XV9H?uG_baZobu`o6?FtxOFHFq_4hM9p)ucNbpg_EVBtD}>lv7w=ho0F@N ztD~#2g^P=kv75828%(cfUU5lcUUDkT-b|pqP`xgA^;$U>r6!i-7lq{K=fF}xKt_H^ zesM;Afr4|ese*4}a%LWg4~ia$Z(UN0GRsm^+=}vZ6~N(Zm5IfEClf;chUiTpC(QJL zj?o7t4y42a69T3{5EGvCfgE_|NzDW1m?B`-2>;xCfPsOr$J50zq~cc6pa1{unROY3 znR^eeU|lR0z!%XGdg8&# z$;u&B&`^SF&AQm#-~OMOX`FxP@Zs!+8c~I`<;z(4mix{9RsZ$X)&J)C_x@bIdv~v- zMjG3ZnjKEfPdxs8e=mRd`}_Nnb^rdHeDnVO`_0AA|ec5I)6W?@dDSDDtYudl@q zUtb?D`Q*uykmqM-o7ChXSNG?~^9Ki;f2W_BagnL#&uWL2{0f;}It)!&6dHv<(<=qWQ=8ZpuH?7t@nepm?O69==2NYOO zgelDEc3f((@vK-zA+OepiiNFr(*yP`-o~oD;Z%yuCtvpl24;pkVgEku`Dn`zD(^g9 L{an^LB{Ts5$fW#T diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_mic.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_mic.png deleted file mode 100644 index c8dca62a08d1ac203b243a3e7a2a90ef0c030caf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmV-+1Bv{JP)DT&`uiHG8-2rMUaAsM3kb5q%%xvLG~EU zpV$5D3Sv6%XMEG&J8jY18nqNy(S)Qnnb2QHNW&9n zBz}%~UBnotiCbxGZ4oo1k3=H(TCLW0Fc`cklnr7KiyT}#H(x@htX8W{tJUf(7K>RZ zA;cgSIgsn0ENUDBBYm?(tl#es_$CJyF}S8V*hLWPwcG74xX|fzXEK@04vs1w(qafK zVn)jCXO7+?2r)!>eZU0~Vi$6`+-{*zc*_+846uly;te?%UNVy7v{xAnhO6WWzv2`R zg+dQEH#hHeI-UJ_Cq4Rr0T%a&MULqSIE?%-#pCg3NKRhi=KA{jbqKJ%y}g}jGH62| zFuvB;!dK7@pb{Ied9=W;X} zeXQ5(mr=CoboymJpUcE4w>QjEY*#b}gTQ)9QaplGp7<7FH#589}}w{Y#uiy}0(6U5iBQe#4NM%HMbs5ksD zM+Y;jE{N^$+HVfA56!Y=eBx|uY}}5;Vo%32w6(SM#Ow9mqMtu{QDciBw1)aAm&?V2 zzR7^0%O@$JRTS(&yY%F4O^bU~DniG|K68U%m~Sjk0~Rre+efB^>< z%{GS=MG+yELZ!6y5AEG|y6-l}L#Y>PCYPNr`Q_f+``z}Q-}%n>=X_U?Bq@)}>k*Mt zz{%(2bK&H3^0{#GIr&^T`J8+%uTJvi6G0HN=?M&EA?0zBI?pP+nqG$dEGvUR1JI#< zK2883eGw4{B=B02)0!Lk0+LSd8vrIi0UotD8HDT@APflMF^ZFsRI(B{`O6beEWHp= z1SkO%pEz;C<#akLD=I2BPEAeCdOV)7%asM(7(%#bTwRUh+Ktj)}I+Rgh06Zv)`1*4EZ9J3BkSCjdEytJ9J#T~-tM zA`WJ&(P;cM48jt7{P^*o;QnWT1Av2#jg8;2ItvR65v$dD7=y2cw#-$KPvTEGS&75L z!*2OM`uh5adwUO8saCDzi%gb725UNb^5k}y03$sRpU)R)YisL=)5m}@!1&dxSBEAh zCZ=gUgTbIbdi3aaw0eDxTNv^?6+|Kty?hbu!iaT8{>y@{TK0C*!EM{NZPlzIxSR<% z%mQYpynY7!{}`)VS68my79Kr%L?)%4)~&3pv{KoKsE~LKMZ5vur4U_9Nh}uA z$;xo9#~?h9&xUb}BZ389Tn$w=OMZ%g^78UhR&j1_E{FqL#OjqCV>2@|&sp8Fva(WY z8)7Bo8!^BZA@OD;*$S4QCLdf7(X-)m7Muiv0C`m;J*FnhPZu*1_FV3X7em{ z4ux-MNs0oZv=E~HJ7wwT&!6A9XV0F`iH|4l1!1VItxd1S`ucjuwQJXo>2$iNUaybB zF$S?F+R@R`cKY<`9?JSvWBKU`fLLqDlsr&J`8-Lo8&(mY7grc;Q^B>Ws;b82a_!5e zSY2IRM8IAj931=&4!3aP*Sz1)xtRj)KvH1Uinn7#QCzjP!n3N{P0i0>-4ZPMCH_*Q z(TGfAC3SAGSeC332#AZ+3Qn)EvM-*1x_b0<(?70)i}wGgDabO{2~t z23pnh5?Jz61Av0+39D$eS~p?-t)q$>1Jnc+tnTFGE6A2-yw?tw{&e} z8v#;28~dYV&j(#WEHAf)y8KQdlE=#zA;2!E$+s&FxMVP4s9OC)Lqm6V?AY-kt$gOp znS(cO-0&l@#+H_r!;qN>%r?Z6>({S)k(^u$9SN;_wx_43eROnmkX#%d9=?OYHL7Ov zmu;pTI&`QxQ!@oJ4S#26=U*cuBhNB*v(BA6NBX%9fC`Kax$NivZ<;CcU{~En^m@G` z@Z5eRX#-nF@HV3I2Kw9JTbu6PyZ5IO;(b2fGswk{<^9`2EN88LmE^y$=aje38|ZQn zHX?!V0uEfca-|~*l8JQUntFSC-42I?bhtjifGihed9Q%{oL%Z#g&-3^eXA*N@5&!d zk*c!P<#JV>I(6!!;^N{mAi5H2fv3S>FmUP8r9QXYJqkKLY_tTIEAcat{gQ7)b0&W+ zOD6K^rLM(QP=J1xZVgIEvi!N=JQhWAg(<0xjI~1kk_HQ|1RdpX)7uf${&^x>b;-$J z8Tsr=5HbWg`paZV&2Heek+pHMzW&~iAG0jW2i=Y&AOL*8hX5b&A;1TG2=D>l9yzYyb^}?1fPlf1LUBvD$a4>Gx7!5ATI!a zfAA%7FNYl_-;YM4u|lEn)HF>w5D3h};jmt>*FTTP<8$#An83S5d|h_i743cz?Gf@5 z^7C{${dzbYezjamrBWHXeoVg0$F6%e{M*ts*7pPQJ#vhEQYw`)&1SP2kH-`40fu3O z#YFiL*1In|&WJxGACVtbtJRm~a`}~_C~L>j5~PX`F$3D&;Y$KyNJRWGMf;mKcX&TR9e3QxKd#zUcG#CsPkw_$#&*x8oaR2amzPTXSIz|86R;%@%-heN~ zV)5f>G~)UDVWm=e0el|9C+ppA_mnnNIY$|RXFx}^u`+FCCM>#5ud5W-`W5yYcXYYYDGho3E?ieiHC`muhY*JFrkFbO-ou9zJx- z@KHWMM2jhqol6Q!FQ^4g*iy@w2*Z=wN86w}C$hV{4wzF4r<@>Ww(?aC$03Sl05BLz^13m=! nfDZva;6s29_|WzBQ-A>g={CR>ly%B`00000NkvXXu0mjfsV$7# diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num2.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num2.png deleted file mode 100644 index 283560b3534377e6f41fbcb5539649f70bcf525b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3214 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 A`~Uy| diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num3.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num3.png deleted file mode 100644 index 9a3b3294b90d521f26ead3af4e1e2c6e7d1726ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2805 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 Hu0mjff!$wP diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num4.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num4.png deleted file mode 100644 index f13ff1ae91dbd24a1b557815d0d517e6a890be05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2647 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num7.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_num7.png deleted file mode 100644 index 14931c18c53f6c781a61aee23c30030e7efd19ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3684 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_numpound.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_numpound.png deleted file mode 100644 index d091339296eca631931f1004e1e46967783eb9f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1600 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 F2>^5^ii`jN diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_space_led.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/sym_keyboard_space_led.9.png deleted file mode 100644 index 2c6f4a925528add52aadddbf81d566b60fd0ccdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3249 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/voice_swipe_hint.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/voice_swipe_hint.png deleted file mode 100644 index 130f83a9cfa12a280db1fd3db0c29e28c814ca88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5965 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/working.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-hdpi/working.png deleted file mode 100644 index 5ea702307e93817de2905e5d012e86ec6b75e75f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1180 zcmeAS@N?(olHy`uVBq!ia0y~yV7vun-{N2cl8lp^rGb=WiEBhjaDG}zd16s2gJVj5 zQmTSyZen_BP-v4wPtn_|kjQxwZN)Ib39nnnD$B zuoR_zV-OOXSoq+g$h=6#%^Wd7jt!o(daT*bsKk~&s9aUWyub3b^;OU7rQr+*SWCiJ zKl%6i@8{XKXPf{2`|s+*f{JHa3?ED)r`778{`5I*bLIRs*I)DRzWZ+LW`+ZmS4;mI zMy?IB-@Q(I4l~0!ZO=*ZKR;H8L^AAXIIcL`ikTtC@7?-j27xGsj!DZQ^kg8tA%pS2 zB31^SC>ZOXUZmc1HC={?Eerw=7v!@kAtE`{9L1Joe^BIM0cj!M4@xd@+)l zX_0DR=K)>lAaTpYw-x3epd(*sZcztnfglcDhA$$wE~~>-18s&Ns60>=PzeM94TB(< zB4AkKkYOUMov;c}C?Go&XcycG2j)9fDnr_O}?CNbl) z4J2Y9(Uf2Si7^PTzydi6GfaeFQRo^7_q{+{nT;GbI4oQwZk3gicq7FQQsQ~NOAKb0?`4QxK+}&VDZd5%j{<@`&qPoXZ82!21bVc(VwO+f8FK+EN&P)UHx3vIVCg!0QW77hX4Qo diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-land/btn_keyboard_key.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable-land/btn_keyboard_key.xml deleted file mode 100644 index 45578e58..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable-land/btn_keyboard_key.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png deleted file mode 100644 index 4e337fa0836e56404e74b1c9e250e9088dfc1794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmV-<0fzpGP)oj+SnzM^g>Aa@o)Jk0Q)rB>Ok$~Xe-AFa)SIXNZTR67x&BBd#TLM&RBujy~_2?%lGKte@A;;q*zRht+{&fiSW;Z}Pi%cDOZ8z~>%x1GeJejD_==|4!kPymD*5~1Xe!q_>iqtbR!XY{D>-^V&w7|$q zr-MR<_qU%wCMWM-Vq6~@Lq-OJ0h0Y5zGQ)!V1KMa&Jhlq&cCl?#MD?7uW`&0QTf3N znaKRe^Ze(`ZAK(oQ%3kgW`Zy8$Z#+Vd&$tbZiuEi(nbwoCfKxH)V)-5vz=?gNE>zJ z)@oKqNGP+)2sOzOLCWlghTI4ZX%g0&YOaTd?k8VkApCiDLcWh=gldUoxlz{n55F5| za;~yIk`Z@R1Is{k{+}bKvp{M&a*_iUo9#)j+Ah|B@F2wVh%F#I-18mP+1izVXz+Az jF6kr7b;PUgeF-oCx(#{AQVPpF00000NkvXXu0mjfDY*7@ diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png deleted file mode 100644 index 00aab3d5af5cb97ad0bf3989b2a6f027887a3b40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806 zcmV+>1KIqEP)fA_JbA>p^5S1 zhcPKXh>;kL#s{cx;CuLf@)iQoH2%ece6)qOz`8qgy)!KZ+l6)u8&~6`(>9rzJ7>>5 z=VoSsyJ>ve0CZP@Zi_>qAgwS!{33w(@bUFO%m`8ci)h?e&JoP^Gubt@S`9DO*P)b} z8HBPxl>K{&hGlnS`XIKqwy^PO<7P&xtE*@>o6uTk20=CQ%M*KcMJ#%g|=rFh>OThq{}OZc=;;C(`TU@ zT3YfEh7nHBnmFyOfHeOm#=ceIVkDNMmo8vAy{Q zt!7=)bd1A;3cl~Gp>=fboa2*rnY_BqI3vPFRz`49G2^~YI&AQ*K97U_x1x;@(RqY+ zOI*}BcR(T5&4rQv1IXG$J3y{(BwcildoFKIcfwX8T_+5WtRW_7WG2^Kq{on3tF;uj zn4B{%48>+p;_a`eCo?ij9l4qwi-I>v8JHp$*JP8@R2nG=5LcLt$yp<&*o^R)ka9k;^EIbl)+?BrX2`w*i08YYBV%vOO=s+QU+kBxA?XF(8dbLyrCB+<@52z1?HyL<%i+RJ#s}mB^75%k z(-h)32Bnn#JxvqL^Q`UA0~|-2>$*?9q9`ECvTcw&&tV+LA0`3fd7g&B4f?(hNs>U@ zw$J}5dtuWw&~+UQ!=Md!Kwdctf&c`87KWjoH$m`$ecx+OAPCM9Am|a&M+jSQ0YaWY z00NQ#F>?(y?Xdu%P!NCw2(6`jK|L0TovczIYXuOyjdvd(w$h{J{XmpQUqDqaop+sjYwT|#EfdGHev4t>USfQbI)2yr{`Wk{^UGa5Y>rM}Q8tG0CA%Y;#TByAVQkEq| zQ6v%;8wLl$R8^%nddF{Q;H>TTv4cy&9?x7H!7l*@0HE;~3EgH|l>h($07*qoM6N<$ Eg3H0##{d8T diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png deleted file mode 100644 index ea2f357895aa2c321234be50fe45c019bd8eb31e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmV;g0#N;lP)G%88>-ETS9C|z+?5^vwzx4piVz+IZ9dU-kAq@rte~|HbO!xbp zPNx&yZZ|##jFIe5fK)2Q$z`)y%49Os?RM#WKEJMU)SE7s3+?xNz6i&Fi30=>>2#WM zxf~S=1wQu$xn8e)f$(=h7K;VVW;5DsHdLupsNHT;tybe@f+DK@1Hpp<12u#qSe_`h z-EL_U27+4&n!bAbUJqIBtrn$ZEBsa=A>!Vv)~L7pRfta!L7o zUYpoI5YZv3M=?k*x=nNrY6IVU#j?FXMC-oeP~&(!vYN;qwT3P%l}fK`0zu?=hx{4E zu?&qyg8|m-HN!NUP2YD?B1?nXLaVk~EpAhQi0+FFqGlP@MEi^P2*6OZa_uCpNKj0j zX+d=BZff$f=;AqEHzWb#_ao|fNvXOcpj<}&fFgw7-kc*p5c6xG53`)A>v>+IAWr#R7SYj|j>`)-P-H!J&n65DV!cDsd zs)!hXI2;ZI?t?002ovPDHLkV1kbkI8Xop diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png deleted file mode 100644 index 6195ac0d4f52af9ae965d5a31e1ad9b88f1e3b84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)=j#J<;1&6eCC_~TxP~VJC|uNSW$E{-Cq^{f*Yzl4~sD^n3# z^G|iv?Ck7ddwUy7DWqv?Oq+-G-+_$13j-zKP+bTztyApn?O}KK?QD>Pg99Wt!HM8($I`XBLqQ!;c#d^GfW*23n8Tg zsn|#b=}bWA8{H+M$b-MULNE#$j%ko6iVTFcx*)8ABL$QznFiKsNJih$>%Yh2rxLeruj1R+Gkp2{ z4!-|}a^x!FBpxe;N#ag{@a%bTYYbJTh;hhaa5QAfBOGJ%fs3_u&-|_1Rq(ta&VC$W zrSk|0`4gf-5nCa7t6cRm|Lgk>u3eXt5~du*ja7;MF9n_IdVRz?v!!dTDm3(zN!BDz zAoM+)oqod7QVQ1-lxrHNKS>?jy{JO6{NxHlV|z#TUM-10LO>CPC+JaCoW4XDe8jSU zg0Qznj-Q|(QVI$7f6>&kEUkscD4q~-q%jDGIM+Afue?GOD3hF{VMJkx;VMarq*Ebk zCo~)#o*^Y_N|w+-agO+isjC2%rYYLB+6Gi5ftURDLA!2TxwQcnbq7;9o{E)>y z3qkT~)NS$Ea!$-bW1F300F_jw{tA=zGNGBN79}vRH5{_CMO2mbgnXzPfsCJ@73$LR zZBvnaTc`z6mat6~sq&}l$k;YW?XBXx6v^k`+{?ErN6N}qFG`MxEKFX;f0`rnPS$!= zQ({eD6;%0Cg{#-tMD}~rR}LA!sG|rkP+60-BX4@KkF1$Runq_xfY|Krogcnzo|sc! z#wVX3izZhH;(6X55Ka4t1?hA;#&<1{Uax1)Gkmz>qXb*is$o^E4~7WC&>U4}g6!|_ zV`F1u(gBl#9rtBH*cVUo@bJ*w7x5h$?PUvQE6nC|eix0Ie|v)80t^61Au?930obwt O0000Cdyj*pL@<#}H5bD1Pb z#UO@5@4W|_FYvzGYl+&P;j5|wob(C*E1l2h$<@`>&$F|$PyBp=@tK+9@aX91>2Geg zx3>iwDuqM~7*{fY8g1p3-;@M;A<%+(BlgiRKEGZexlVur6G>#J~ zih^W$sKYPT`bVHly)>duz2veiYl&1$q(YAtI;W~K_y98MC>f|Lb4Pt70|_`Rlqt)y zD{gG!tes?d>yjao^(q1|k;~8z0>G{T0!6lG^6)IEw=e9(h@?tF35{~xv(KrG zsE^2*phSi)iQgbytRu79i7H}9kagA_=Bo$?wF?N5ZbcCMBm!14aObUR;(a0~d|VMF zF(MIXKD0Z;iyEY=j6noysEsHQLt;!tS{uEJ*fx?PcK&W68u>JT7*UZ2HkAlTEJ&>q zqcOS9QC1Z3h8?MTW7V@}?*65bpfehgVD9dKW@;7+v$1UtzK+_bwGjcu<4`Cw98Yj_7yd`pdet!PyVh{=3B-G#v8`|$k&_r&@YUSjL#vFDdPp>Ib$+1kp<%i m<2$1WiTuq={uR4_1Q-CQf;$OhFDJ?X0000j1CTmt1#wCn3(36|QL9wJxP3rK<*Y)2UjcwV$qF8*gAgJ2IzhzrC2BbDR3bHv z?PnRI3nW*N0;(ibpq`3&6Q&A86b>OsvSikOO%VaW%qe8jM?!%-=~}U?jQ;~xLNQ2& zADL1l6E!qX3Qeq7PW0LG$!;HpNfeQ|d%3GB#~?bzBs}F*i-h1lbq6)}vMMy9hEC-q z2&S*Iik!G$@@9#Mf&^Xt2tbL@+@FSOJe7}Rj$kjq^i2%(sLS|Bh9=+vzzk9VvASmS ziz|W+3D*!HSXR{1iWr8WK)i7hxMc&$F8JZ>quvgm|B#&>e3Scr57|*PpBzRt&Hxz9tXDM zf`*DrOSxKAc8a5|f{-~I#Y3ZI9QGNC6-0eiGD+#}OoR_D%HtsV0P#ImwLcW3RzM>( z;;RkB<#}G!45_nB&*C|H#t{hdA--A_;fJuq*ACtfDUg~+37l)hN1Gy1J!>>94hM0}pqMK9-Q!mygjNN+?Q2V-9M_~kS`nO0we)X=NvJ|8 z2)Se2Hbt`0XypCfQQdX}qA-06APZr-0iG4{$PN&oFYeaC`Fy+ZVP^Y@eGTPuMQlUa*Y@ r2HCNFW4mFyZG!yGCjXJ&-vSH(|7gIQIg)y;00000NkvXXu0mjfnsvxA diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png deleted file mode 100644 index 50cd06ae3685154ecdf450fe3055e3bc4adf5035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmV-p0i6DcP)j!P=w*N?2x<_U?TKqJRjJ;#{(Kc-1LBhIf35k@QmSGr@7A~$>9mHjSbVIf z74Ze4&%xIkA3KJXH38%dh~xqieZvH6xPS;SsQ_{c#P^}dne@~{897yNJ!BamZQCNt zGBQ;ZNY`~+zCH}$kKIeyR{lQ0OXB~C5fNSj3;;~*88Nb&@Uj2^002ovPDHLkV1h57 Blmh?& diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_popup_normal.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_popup_normal.9.png deleted file mode 100644 index 02d0fcf93a719c37fb7596fe349cd71d7bc16ef3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^N8U}fi7AzZCsS>JispH`IEGZ*dUGS1t3g44^}@_a)9y0ea=0KA?Idxz+0JE4 zQw>jv{+ac1TP9A?@O|={p{7sC$@K7lPnO#-PssBr- yu$*(fkZ`5N&)n+<=LEM-xZyu>%Di&n1O~0saVm!bnJxic%HZkh=d#Wzp$Py_gj<^c diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png deleted file mode 100644 index 125ff13350e09b4e109b075f02bcf801bef12e44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmV;00eb$4P)RCwBAV4x28PpJWnU{n78XBbGp z$jHdR#4tzz3$Y467c)|15pOU4P#-iQGH4uvl30Pk?+2txf!KzIcK!w8BS72)jIMpK z#0qx^)Dau$91zYR#{eDjA33oWfr#2e3=9*`(9ULNpx4VS85k-oz}y@l-iMw>z|k?~ zENz3}FEAC%IuGaCVoR*dFom=Rzy86QY@^wC)FGn|8Fk30Lq;7k>X1=~3?_&CA1n@G z9F3Y$hm1O8)FD)I$X{6Bbf6sq8Y*B&)~Bsw*nl0|L|r)dFpPmbED;W5uAp;3`1AJu z-vk<#fQJZBU?q@>0OEtNXrdAL4IPRAI|3s_2mx9S=Aneh00YL+as(qth)p9jbp&iw j5exWFj{rah009O71OQ5nlW8rM00000NkvXXu0mjfXhM^* diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png deleted file mode 100644 index 7ce52f0f585605e632f2e9810677c62098b77419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)rSO7_npa#NNAQlL2j}#1z z4XeZQ2;CCuosVzBe@{?t-=e%8af3Am#Fxgbt#QdEV#I#G+9R$vVq=76OGr<1ydmKg z*E6hOwQ(YyHS|1TXU$d~3F&BG`8ke*V=*Agn3{^gSqn_h2-fk%;WVHK#B QqW}N^07*qoM6N<$g0T|k#Q*>R diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png deleted file mode 100644 index 7ba18dd25ac8f79d769a2291c77ab2844e3d21b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)|~}QHR?F+B{&|9r6>rT?n+g8YfM#Dl-i6jzhNqq6azpOi$yw`gmyZe zOhNyo{Tm=9e}F{y`<-RN?;(ChWe!o*-OsM%PpRMfv;TB zfDz8&WJH4SF%n`)las&W*fy9JBTSndHC@2?KuCGKj7a@_ti<@n8lIoKG;46wfDK$4 zkXZA&fXF;5BWMgDHxQ2Rl?EN8M^cBe4FY%05iLzu7Gl{6N@JTf2M{fOaMa`i5+x0H zvJt0vL_Qm2#3xN3i(O}Fq(r&40roQDoZ_`bsjsGisCV&fB$-?;N;xh&UyG4gol{1Q z?>JGprg0yDE~~HHow=3^05J^4mnfDMyPpK+i&5BbuL1bhJDL|-KBXMalL^JAmuob zlizK*r-SozLgGm^YbB8YjJPOzV0UKv2*-9*=d-79+FSjQ0CI zZMWNO`&9`DAds^K1U~>RYG{AaxVqS=#Vd%jR(!QT5Pk$00H6jinGC{w^8f$<07*qo IM6N<$g8zO#O#lD@ diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png deleted file mode 100644 index bda9b83941ff20ac6ce4a46912dfd292957be711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 860 zcmV-i1Ec(jP)&7NR45e0M1*^Y2E^)0ZzVl{uCiF2Spz3%5NWsDrQL2P zbb+kFf6#?VFAfmdk2WGO2EYv|ixp#%SpxvL?;}bR5FX!34La}@2B&Co*BuoE zuI$5`8g(*Cve?PLoz$peO#_H-d}r3A1;mRQ?xZ44q7nIBXGCn&Br){^ys42XN^2V+ z`?5~)x<%<*rURi}^wi&J0MYpf=#vMK9P}^a^147>ud5OfSAs#>YzRj zUHxqDg}Nx1UjCFKc@B~3(fP{wY9o$LK6yWMEl@5Rd_}3-7Fel~cT(~*{;&3nvqRJQ z4AqzAX5!ivX4|GnH@!~Za@ mE=D4vEApoaLbnY diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_off_stone.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_off_stone.9.png deleted file mode 100644 index fad0ec4586104a5cc559efe898d72ce436cd1df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2389 zcmV-b399yqP)`KK~{T<&7$h6fxPK2 z_|Ng<$KC1Er`?$|XM)b2JsWiH+&Opt{CRib!iDgY-}P_$F4v_xb?Q__Cr_TN=){Q= z6%n&c$BrEforgE?@oleP7?@I!R|LO!@uItQ=~6|PFJE?7u3T|fuU>W6u3dB2uU`*8 z`5p0ZR(#(|?a(fwGt?mx9aAJa3Lw0Bk1f33F)*bd-w*(!=*Ep3K{s#SbhmEZa<^~a zc6aXFarf@stLX0CyFvWD72lP(R-!Gns}8Z9Qq(!XM37&4y=P#GS0_MdL}p|X!}sss zcMl#sa7T|G4ZZy2$rJbV>C^BNJ%0SSfgU}2)Ibj(J`AD_+Cu7xYT$@?5u}Y*Yp<3u z&0G;k9U$}+!6bqcXv&l+u1l9Lu6y_Hu4~t>u1}vnVe-Fx`7-Fmix=P1^XJbidiLyD z5b){%0T%&UF>>D9x8CFLy*~1KKaNUu5H(2S^iZ!}yG63*F?& zlU>iAJ>A;1Yb!9d0$G?MkQ4?GziI(e@6|S@*t=ChxX3m*apFWbY}l}1e)a0rZvFc8 zLHv2{+_|oA-@YM_e+Y~n6=gu#hx|p;U-L&;O5VtUueFu6cdOYk)nl!#lVBG{Qfzn*N1VQl!I`Q8sOeA zaNxku^Nav#WMNjVTIHrspB~Z-ld0(;;!1ifB%p^7+V4GTe= zb_al`Y!LQ6+D~blLgP%h&6_ueiO+mtBc~N7NA_l01Yx%?+QQ%|8-$IT_B+}K(I7pf zeU`mx*?W$?k*0=IrE@|fP_+NTQ#BA*1j3T5-L7`LNTWkQEd+Kyraf6TrORp&M7n9j z3!bt;I5$+=!l%1oDc${+DP55Sp%IXI>j6*MARKgbUeNi$0x8u5WLLOaWhb*z$pWP3 z7CdExa3a%bP!beD(gT(~x6~>-ku?eeC^~R)3&;jJa^y&ZBd$H>rlXTC3bo4413L=o z5n9J+&Oq59EUV;GLb%dO>g#v*Q#1SaE zr)&^*xD2K0v*f41QXr*)Bx7Ytzh4BPy0NVf<0%`2v-pl3JKWBlJA+h67L*0DMebbL z)S*q8S3JeX3!bt;C@yTcL(c)?RP$n4p( zLwQscMH&)V3Y4Z`j&!{Rka48=c)?RP$cz~?!m|+aQcA%rlw{MPG3grH`!Y`~8yhb? z*2o5#Hf>sX-a%eUG$uGf*^x>mgQ?Q*+1?ibacpe7@aQ5NgrYP#i6~S{g0rJVa64K# z(zVt+F_4Xm4?JaqOqw()JP#o+dF~-uFbiczD@VFc05XkiTzudu8-!;e%oFkw0VOcO zrBGHjEvm`(zRW9zVj?`?DI0`G2Fw%k5+EyqStx;7+0-bL?R{&W7&az8@RSWQX3Q8j zb?Ve0fUGQB(P&xO^e9si05Ona;$!UCvH2i8YU2S86D*YlR6q+>B%3Cw^c?}nxI|36 zj2=BYAB3k;JX>diS<#@BLfH{3QktS^>R14omxxX0W`hhLK0G{LV}eP5S*394h!rVK zQ>zrfb|CTS+-wk@4KlfaDN+$&*~q0TOI1P0xD|2e++2`XLxv1-On4?3KxHa}D;vee zpe=-LhxQ}LcR3*64jw!>Os+BknF{DsIUQilry0OC2BdRM4@3QzH+1XP%?%nfC|h(u zv4%KC*^2a)cwq;l62GVF(W8fJ*RI_a@9~dbpTw7HT9&&*R&juMn>n zk)QO4*MFNr?c2BiSKGF2Cwq^dd;K=PeAc2A#Op1u=3cG5eiP}x@cOIQKfDHb4g3l9 zwbwtr{_gb$ug~IJbRWd`wMs#n#aHZFMCvy2wW9j?u2knZ;eIN0j_LGyg!nk7Rjb(H zrEgp}i!VLC6TjR#zIyj@eBtZUCeSA_o!Uf*_v2{1UG4Spx&-FEcwy_<$cIfJ;{Gb8 zQ!4}UR%7qMTbSk%=-rrZEt^O!qKD=NqFGb^H>3aie@*%y4<8gi(ieqN00000NkvXX Hu0mjf(1wtX diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png deleted file mode 100644 index 0c16ed5093dfcac53807d9d9663c516e52bb07ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmV;P17ZA$P)f`xPoyonGAWz zi+N}hP%}OV`G`E_GehzVSsoljn9(SVl35Z017=ki+}n;<;Rrj7g z=T=wsRV>RwSW^^b<;GG%`5+*LLLoew5Z3K>6%}{H?hFu}U64ex*$j)t0{h4tFN?)u zh{xlUU)w+?lL@NTDh$JbuIpGXmwN|9K~+^<_w9BYjYb2hRB9W@d_G61RKj#R#dti1 zX_}ERp=sKhjdHn+TCHXWLPpY1BT!KSA*PumZ252H2nDAcAs{3T*&#x;TjC2K59Y{K(IKD ztA-6=U=E-DK+Le|%3(1a8R0=tU#=K1^fmab<+pkJ@$1M4@;LQ~Qm%HAGCwLNjxyoqhFO-oo1*`MIL#hgv;|jPERgT|M=NgF35oJaiolpF#xO);*l8fdNSfBO&Aj& zz_&EKL{S(Y!}Ap{+m!ZYG7!>DPrQx-h%AO4MCUN8#__v`&WmC&Kg{r3xolgPjdhB% z2IBP1DmwKO&}*FAJYB|u)8t(x;@=^>JhE7--`oh2C%eqoy*4N>8T=-t>{#F`4S$m2 z@3G(FxF9DqSxjA=%r_^ky=Znj6v_PiX2dP=f&y}7#OVn{0J|`<*BlY$@XLs7tnVBN z^O_Fx+LuZr%aMHo@RUYeHDVnj?5->GFJ**kTI}@BzH9akgbFnjhnk}_thh!+lqf4k z6o<-J97tsYB#}s<*Xyl|dC6pQ!${Dib(%{+sG!&Bbk;F#jASwyG@DJ->-EUat2`hA zK{0JW=mw#s8ruIbR$bhx#Y+%JTJe<~#{LR007x($d)Rj$0{{R307*qoM6N<$f>02w ASpWb4 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_on_stone.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_on_stone.9.png deleted file mode 100644 index 215f8157c3b7306760178bc0e1715afd675fbd76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2408 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png deleted file mode 100644 index 88acdd7483f4eaf257c1b64331c7ae3046ff53f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2213 zcmV;W2wL}vP)E_-0onO^=r}EmOMdgosLwNgn`+56$`>FoZ@(rc@ zr(eH*-}LFz=WyS?eV@NcAd}~NAF)+cLVlx_o>%+#?|0{H~8z=v19JksZ;Ls z>C=HTXU+u9o;~Z%ojd2wpFbad;&=WVzl-fGCr_R%apJ^@6334pFM*mx96fq83?8!i zjPH8h5t%}f7bt$=!UcEn;>8k|E?sgB4Gr${<;(8Ml`HP*)vMtreh2tB1>aY=AM6)k zFgPFt1Cs&+1tDbf8EZW4M5a*WISL>sxOVMY;QICJ?#7K9?&i&#?$)ha?#`V%C2rro z9l+lee3xKbf_-tn91tCp)ZjoSioEaXC^DscsU~M9h+roS!;lDk_wHSH@7_K4;K2j; z@Zm%E=+Pth`0?ZL6X0(OzNg&3e?NeIU|)a(QBE9SR-;HaPZv*z*k&#z(h4FNDHJ0N z!0=C=JaLVUjqd5wr|#LaXC?5v1>Yms4nUp*K;e|2f|>K#Uiyrmc|P`Zjik}IRL!a*yV5ijzm&-kV1 zQ_qL-z%MVNJFzl4E0n23QHxPTXC!qZ!O6gj;Pm@#Y_G2II4KsvM%;lt(Cx9pnNcbI zJta`7wN!v70-S)N$akKeRf*tqr>D_MXDtm#G5a?wkZLP?7Sq!>GG&Y4RL5%uuNx|( z#|uxr8n6<2y4Kk!cPd7vY!O_6c>z?RA{iB`guTvaOR0ptfFe`22yP+timq36%INh) zFM9T(Snb6T`&0?mWe#M@7QuZF@27a1l9I94nQGCCZAwCKUw8|HOxYs1QRDp%?}I3$ z_ggAt(XjSHS9E*A8A#oKAyc*pZpV4I%R646vqKrZAEQ_~>}fS6VQ(6d1(~u%@Z3=D z7T&g+p53a!o{=cQ8DMzLfK1sUc+lbV0-qmLNLx)$207@#%vMqX``m&|*&=u%^)c7Zjy)+3Iy?4QqF@U9JzZSDJ}IE9D$IdQ*&PkY}>XitRULe zMoOs=r4;S&q6InIJ`~VZOoA-Plr6Gl%a*X@$)!+0F$$$xF9+K?Ma!^UibbYukxiR6 zg{kEFEc%mTR)}pt7_12U{geRLjdgt(nX*Od>+9Y2?c3ds9XkSCNT!qu=^}S7+B(=L z!?PaiBMUNRi>zC>&TZYgHS{H+mo+k%zQZ8-WG9<{VK zvLI8o$nxdO-TL+GLthe#Ss~kkwjFJo*p^8NpqAD~7G%m6S+ZnFn98+l*9Op^fO05= zqS}6xs|MYM`(b$0U_I7H7G%m6S+r=8TeWJH!?8jrW`%4EYAY(K?{Iq+U~sLCEXb5C zGJpPjw_?SL(3gZ_Dnu#UhSk9Bbo42JT3Q=f7A#nhFEV%TT(@-TQnzf`vHZHG#58y$UyM=h<5EHh`$%omw9ZJNVzg1#i!8RaOYGi6~wi~XLCJ_S%m zYa`3_>C^K?rc9XeQ(L2q`L;nk_}!qllCMY5>+m zj^QoM!50g$A<%qKuoc6cE(cJHdU;E4j}4baI-~*4I35? zF36-v2^P(qrKnXY!Qcw&U~tQcv`C1&7&>&Q!vT*23_?W|$ra6FC25t={b2u52Dx6ndNufrUweAQmuiYd>gwu#^s~|!-|ljJyE*9HyZ0Zp zwY8Id#{Qm9;>%|>g(99dp0=J&o{ysa7oHzHKYM=l{QesG&GU=rC(l=&&*NKk@5T4E z3PoDSSL|w{b+`ChQC)mjYCt^TUKaymJN1te-D6vIiUVHw#&zrX(qp^$Wc5_i(I89?0+Vmoybi8htqgIAfhQK)@vw+_uj nP0Y|%BwAPdg8%>Ge@*%aMPP3}F4_LX00000NkvXXu0mjfYo{tf diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png deleted file mode 100644 index 39b9314a1a699813ecc408a150b7ac8b7b4217d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmV;J0%!e+P)5}p$KU#PAP<=yto&siG^>%>4 zP`<&ckr2772D4Swe9a?n)#U8HygB-M(_{T#Z+eYOyxaJ4bzW&l^@t18WeeDLOX<^J zV!tSryD(brXfj>p-480|nYGD4>e(tsG~w7Kp5Jrxqjio*!I;Gj@3{HW=#d;CU6R#k zhC&c+fn-?ZZ=bF*MPuu8(DHgjgW)8LId*FDnl0m_l*V0!u?t#AhY2ZfQs}XDp(#-h_f~w?H>q#0t^6uKU&u06kO>50000X@A{( zv_L)pq}%NVM-#y2^SP$eFR@<(#Nanb(fxj>=krNn=*G$7@i-+C3FylVr^@>2x~LYPDj0+wFE>Ag&qN?RHeJ*D0Ayvj6k>JS#ao zZ?#&{F~S=Ma=BbsI>eVCG&~QYA+8VCj1-GSRz;%1@f+YEXt!T4o2Wrcjqr-W6+j@= zY&Of7z^HpX9+_Z+0KvQP=g0^z;aaW6XxwhMwBPTUMw-ngRVo!W=y}nEYmIQEVuKdS zmPC_0zHsI;T%CKw?_Ndn;dh7!zBNjg}=NDllARezu*e{;F7p6-qI{)0n~Il{W07~yI87lv4nf{78;A%Dd4%vVYN5nuqDuBQKIAT~At O0000)JiSw6o*v#l5sSFszBQ=lu46 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/caution.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/caution.png deleted file mode 100644 index eaef534254f1b5feef517949b559f5653b81fcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/highlight_pressed.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/highlight_pressed.png deleted file mode 100644 index d27f1061ae9757e45d602d9f1334beeed38889da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0dOt3|M8q{|r(Col)r zNx{$vNy@yz&Kd8YNS8C79+8$B##{!q1rs&VR~g?cUf+=JPk6jjU<^>Xw|E_91}2w# z0sHtuveMlO3=Tg9#tMmRJj8h7;cbL6umJg&U$TBOFdRpU8y8tAwBf0RsS?nT+t<(m zFsYyCvQ~YWZ1{1*kArBWhS>&SHla3}{8%^G)b$w^yR2lS=3nIa%xKtQwl9=2$pz0i zj3OELcN_;uG3rpVz47)@I_Xo2yMgL}pB>JeDrX)80W#|TV<=E5zKXqpb`Z6*2Z zrA`DU4Z5Pa1-gEf9A(;$MW>(R-A-fKW2VI+mA}zthCtPdnY*dBUL1)%-BEcgle2|f z*Ng0B+o-kL@vUCkd($gqF&;ZC##$0DrQwjSG4`OCk##|R%ozZ2cl`~>yBO^SA zNgan%O=?TdcEsDeMTOJfd;K+Pzft?_CI<^?(^Ykns-1K-m_)hJ4P`oZ9+V(&c_WSU f0v$f)jw;R%C|5)IM=p~`00000NkvXXu0mjfCbIy? diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/hint_popup.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/hint_popup.9.png deleted file mode 100644 index 444cc26ee69c1e754a95d8c977e7169fab1e9321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^NDSr z1<%~X^wgl##FWaylc_d9MLC`>jv*Dd-rR8HI-tPg61cp=<$e9skb_IN1&Ff!Vs2Xf zAwW6M)g_A8)6_RZ^Els$z8#Z185lo_-DJFYYW`YACKe6>1&0O(Mx*8}br%=qmsS*A zviZ*!^s8dl?{yrZ&R1)!l$Wpndy)T%?g56ES7dENwbS1L?Pc(E^>bP0l+XkKMlvC?9;k08Cd4~CT`|q zcV>uYQ51$wGiw3c?bdF!S`)zbopUEymQBsm>GTa`r0D=W6rlAEY5_vP`Fu8_D57A$ z-zTq`_~^eQ=s`0cvm@mSzmEEexL6L29`&3RtN2a)4A;$F&F z73X<{fJUP+IUEil4hX~;Q^|Q=6Q+^gE=bdq1SCmf_`XlU;c!S^CAaPCbrJkLo;yWRfc$5O_sIOKh*6k(^+dE`GRV^v%f;byZb7h!T;gFA7F_XS3M@ z`deIPvi-;*-)lucx7!sjDC7UQ%w+qK^St5;;8-Sc9Mh;ojIkTsljI*r_7fLfFrUwh zX0xef4Da`Qg9Sn0^?JP#ugZHFb{%w}$KXro8QMe3XF05C{m-Ztpk2U^00RK^^gI>O SB(i4!0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0006TNklIOgNOfH-l{8lz5)iSC5X=%R@)?A1 z3)`eSeJNt28U@=r4h%W}J`w~9r4FzoPlnfKc_@6CH7NaB$4 z00)+X13XN7DTKIFPqF}@1;7OG8$e$OVW+K?xYZ;RN5c0e$zO~~5Cr`!fIDs61Hfm3 z42Q$_+X8GA10+uY6q4Q-i^XREo*p^~OUE=k0vrK$20*ex(j{qad0w25ydrs(*8?p8 zrvTpQ=caNFpaP)M>2%)a0k{n(hGCrP!n28-gp>JvZls-_SpYx6Nwe832_e3(*Xy52 zANTwHZ+iMX)b)D3+pPUc8)l^1%>bAr&BbEzH(rQ5&$|I&IgWD?>ZFuo09LMQsFeB~ zE;t&Ez5qa@(Rggz_O+C9?0MczyWRc(z$%x^FQTPd>#Ml{qFx|L-}k@jhUAg1d{qDy z*L53F ztc}0aUfNwpRIAmV*tUHg1i>t7R4JvTl;e86Zfmz!qsDjIl7)Le7z{p!0NUs)ZMd-4 zo-neY6$7|ex^D%bGs4xwk4C)KUG5ve%?iS9xBGgZ0O!l)@=ucSNct5v1rTX_op3WU u0i4C7JR)-dHh{$@HzRSp9sl0000xt*`Q1UOu!1=0N!{^M__=WnhBZ>!d>NyPF8~5+O93?ldQB(lYTz`|6LR@3`3D} zhzytkGhhZhcfi~0x`N|7jEBV7)-c-3tE&1;5Due;agQ0KJ%0WEkuNEb0TXgOKm+K>U}oB(?! z+CI?SpM{!)(m=YSIhkt^n6NH)dYPHM(1#ms3^ipc;}*ke_M!%HXOsL-lbk|-6S5jj zQrd|3lnxHjNo*sUNe+2JiDDAlILahOKzNA#LIY`f8RtwI<@(aEwJ~8CQs6#Dbp&+#28Tx!vnuF?rfEFi z!?`vV;7%C}TUJAm3a%s5!Tizx~lS3GTy-i}O2b$M_Xs05(wrD8#Qi1poj507*qoM6N<$g0uY9y8r+H diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_subtype_mic.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_subtype_mic.png deleted file mode 100644 index 247d5b3a9cec75d14aac825139c52ab6207f1c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 483 zcmV<90UZ8`P)%nybc3(~$^@kozy`2^xvLC1os@7dA&M&5(vuLxm*@LF<5EhiCD+Sp;Z+C} z0x$vRoF{AvM?%VI31JiiE<-D5dBP8G>%j+N@6RSkpc!~M<4mY#A&^g>45$$TNDf$I z{I+xz_|gXofkNQ_6UYOnCd4VmO?GhK5Rjl^UWXg&aCvS~o|p9#6#37Q+riF9Br5+*uWq@eUu z9P%(%nxgUX8V(BzX=s_!iNo;4K=}Y9{%NAh7NDk`Aj6>+B|=>ni{!$^P#>*@6=uNj zb|M5b%VH|Dcjv77!30Ihj){}VRAmjD0&07*qoM6N<$f?DXJ6aWAK diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png deleted file mode 100644 index ff629b6744095c35ecc715ed6a91ff90c7b28e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8p!3HGPoUoh>q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6{Js>~|R+EiWk& z&}g~SpjaZ6KINjq?R3VKIy!ta+ujLCBrHr`#Mb(!WP!8UgJ2ha_S&|#6G=%Tmv1@# zZm2N4U^u_?>H&*efif_cE(m1rwd&Z#pm2aeaGzVJwa(-ZKrb?Qy85}Sb4q9e0D>xU A>Hq)$ diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_background.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_background.9.png deleted file mode 100644 index 2bd4b628dff64a051029a35a6f19925d730c47e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g+!3HF!RQ~M%QjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfO%7H8O=HR5jFv#5Fi#i95R21q zuWaN!puod=vA%w@%;W`4T3{pn3#YQ*+95SF*5Xnw&;|xiS3j3^P6F!Z>AXXH5l+PzwKBUz3kur#+jcQ*`hid8C6yp zO_Ub?`Q&5|#~sH{73?1;&67$Dbw?!ayR}{u>ji0;OXk;vd$@?2>|LgM-Tu2 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_0.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_0.9.png deleted file mode 100644 index 61ad1b50a299d8c80f0acfff7ef06a42cc0893c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N(!3HE1)R;tolw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqN|=Rjv*Dd-rTU~I%FWx{;=-R3k9x6i@MVb3JO09RVki- zP&?;}u!RLT-=hGL)*oR;B^#W4ou|b=SjzSHv&k)|>~lMHQf5f*F3?$Xt?cRJZJR$N zE>utCJ#*ywntyXU-2_s51e`bmnJ+Hnl-2Zad~vDEtz;qZ-F=Etk$W~Suv`1L=gjJ` zo=%AiGuM?YO5}1el&kysXKRqpk-1g>ia&1N6Qockw{eN#TkZc>ChA|5^nK|Neb=xR zXryA3;L-1D`S(5N9cTe@!Ni~2H>LfP3PM diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_2.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_2.9.png deleted file mode 100644 index fa5f8b79c11df4186fba35124c21a7020dfed6fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N(!3HE1)R;tolw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6Jlq7R-fjv*Dd-rTU|V+<5&duVx5#Hur*!AT>s!Dab2uI>pp zT5fcPExM3tYSr1~=ArVU=ldzuu9b6U?&M6Lq#s{?F8NN6yyqm9OEF51*gDeuWM1lD z+{bb9fuGIq+mdG8^pk-Rn&;Q7P``ei=w~!T9krVAQ zCo1lKm)T*_zr88dJ?kgqt)-0jCfM++HOO66O#UY0By&dZseo|V8)um_Y^F-mo4(E8 z5?nU7+vUm%vz-%-c22U~t@rJSNsA&+B8TXq`i~rKm5L$z7u2yQvR@WxGXRV89{O)D ed*-7+0>e(rXWQb|brk^p&fw|l=d#Wzp$PyLeS}{C diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_3.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_3.9.png deleted file mode 100644 index 0c7336cb75e620de28277728427cf146b7b077b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5B&P)>Rh zMcl!s3asI2}wvIwTpTuE7Rd6 ZzyNli=hL<$0r~&{002ovPDHLkV1gk!fG7X} diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_4.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_4.9.png deleted file mode 100644 index 73ef06c0e07dc621b4e48599ff2fa299a4926554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N(!3HE1)R;tolw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqSu}-jv*Dd-b^>-I^-bWYOJ_|<5ovRSAzC5vuo4h9BjJ6 zKQYZaeCU*u&YPoV`$Th9CMDg?VXA*%JR#}%+xsbM*_HFu?Gn@S7(Yj>iDt_`_xJh*Ngl71zsKcV6nwk#tH!KFjtcv_bUf2v z#nktHdLYpIb3V`x7R8RBj_}(i-S1jnTHN{X@`iEQdS`(qkj%w9n!k2-9o@re$11^4 X{8F#WebNa~Krwi_`njxgN@xNAH+O#G diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_5.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_5.9.png deleted file mode 100644 index aea460e1c33f8cc8bfdf5e9a5764b4a99765bb9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N(!3HE1)R;tolw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6Jlq7R-fjv*Dd-b}aVVlotPDF3risp;OqbB7LH60Tt4SE#Vn zzIf@7Fvqqqr5hSrO&x3W1x_DLn&y(qCin7?cbeK}?aWzfvjhaUH)ed(RQV z0C&&bjb?KzmmXH}dGvdi^5XAzA4&y$WZ!$y_4)!K7h$!4@BKHq#1^V{1vG2sJdj+h zc87P%Lgv~P$0qDJAoI?k#jrGpZx&zIha*OxU3aBRI&$+V?p}QQQnM^i0{8I?t(D*2 zzRXJE_0D@fQFHEbkw4wOX`M7-GYXR+yC?kO%sm!PC{xWt~$(697CJgoOYA diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_6.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_6.9.png deleted file mode 100644 index 16a9237e38a1a5b15e8f01e20e7dfcde56e04e1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N(!3HE1)R;tolw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqSu}-jv*Dd-b^>-I%FW?@cZc6EZG>B_Bh86LQNG+2cx;Z za`4SN5PI}rXvu_MN~LS~?0q%<9C$ogwf3a{Cuz;oMi)&43z<98=J+kjUo^LcpR@FJ z7W;)|m&2`m4yoKyJt#Zjpp06t+(mgN<3mF8Hnax^aI&zqh~_*z5c{cXVxNqhL6d1v zB~Pav&%w10QJqT`s=m9R%xj&*IP-P;y&3L141V(#@}%#$`c6@vbwygSA7}Tg5|Ntc zQQ@bgCuiLK-{Ls~h>pZ}p5Lk|RI7UA(nGJxH%w{E532yJ2e}~Hb-(|{8TtpeGcYr} XOEy`l=g@Kq=xqj1S3j3^P666QOizXvs-q%)_U{(e;vhoms>gvT7=I^H2cUGbYuw{DqJzV z!nYtdeNCA}i{qd9)^!#2KC>!6FW{Q`qI2@9a|#`zw-&O0a$vPuP%U89cAk0aj0w+P zgdX;}IB(~@g~FSsdKpCeoqFvlwj`Ki!Q@`f1Jg{LrcZenu~<7)W0FHaD{p4!InDE& z`_=nG9$w?P(`H@ubDjZ5GZ1C8d{CeEj9qlKP}18E`Dd<(&)9ibf#(ni{i^P++n=Oa e-z3k-#<20I!yVha`1L@)GkCiCxvXhqMOQFT^Qzwi4=?iq zX7+#`4H{dldi$EXKJqSJY`9zdk@?B#+mAlmn_stkrth^m#jP_^)AltU{h}%MX!_B- zLqQ&o;_Tl}?s6&VnKa?Zea{Ov3rijx=*fL2WU?;sSU{`QnwiG+>Jw9@6bV-uH1qN} z8LeMx>~)A=#*tfZL&`a=_bPuP`Od1r3K9Ka1xsIqq6fu{jY2} cb4E4>Jznv{j?K-#fIesNboFyt=akR{0357@yZ`_I diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_9.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_hint_9.9.png deleted file mode 100644 index 731d63b1bf11bc9abf7f9e575943770b2ae3f4ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N(!3HE1)R;tolw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqOYDVjv*Dd-b^>-I^-b0usJaBV4NVUwqwAC50d*1n*ZRg zf8ea6Q`6WR_HCcT1~ZR2%{QKIxe?=(Al{~OHnpg_diG=!UuEBp4rvFI$44gGx%?J% z^;ofZrL4p3bBit|3aJIkbH1`~Q{`!%zQTRM*;MA_ijOr*rmRmre}w1RhGye6f-k4( zUM&0_Q8vF}_RP4IFBS3%+I4LnGUn(1>bg;8`+CvQrTpA84$Ui9t>o3YawsPyJBdZx z;wfi~Uwbzv&x3{oPnVahD7o^k{*a0f5ItJoa(m-~PcsF)+g~pVH8)tzH`#y_gjVE> j|CKws%7(L!MS`K-&TMPqD%Wkm0ATQR^>bP0l+XkKuG5IH diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_key_feedback_background.9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_key_feedback_background.9.png deleted file mode 100644 index a84c19c39c386b252a783012e10b9b6f80fda3d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmV?*Bo6&6z4ov4j+A?f#38Cgk40@oKZwCL>+MXKtt^7g8f?docBChaKX&Hv zX4cEtoE2c*Zuj8+<#H+MIM2Es&O6z+!%DPcffr#GYq&L@0M|%^cknR=+`d439|0er zM!uX=1LM(XbUPRfDvy3TosK7yiGa=brzpVN?e>-Hx~t)E$QFwQ6GBv%+m^+8y&gjX zpnwazB;mhFDN_|dVjNEJaG=?2#^&>Rr34(uVf}s|H*JD)E_I3+2{>^aJIFE!f=Yu& z+itgPv)QPxEh52nXCXY%hM+HNGTB_F)vJ{;y|zFBuO*2fLseV0jd8o(O;$X9Q6hnW z2%tY7fIapt#UphUkaST4Ha^sU!{RQU2Q{Dj+CepMqB^M5ibas2P>WxO9zOq5>k3 zzMH)|cwWdUgQ!lh3bvKlwpdE1xF7}8B%+8!^eNbZCzY9xS@%$8;8{fE9+)lxZA*Jw uMc2-GTc!DZp`r&=?+6`HtgtlvC%^!f@cvE$=+;~S0000v-^L;Zr>-89gFmW7*cuB2RBSErSt@r@Ct}7&FVPpILU5&#@62QX>B{`R81QbO% z(%ca^A+MO;G5rbUlA?mYJ2pLQ=hnc-PN(y>-EI?ARa1-XZnvvWr_&FU$wXt9@BW2= zf_hsjmB@HJCYELSu2^viOkGXWNWET%%Uh=JrOX@zu&4pxuRv$B8JW-L5S3I2P)d2W zTdfvcRuG3RaEHl&0Dlb^rfKr%rzQLSp8GQlLzu4dXuAo}fchwBwYos2rEHfmprKbG znl%BJlral5DuK#{5U3y?>MC|8XbP1sgg`0k6cVeDdLaZv^pz+Cs2A&ub_|gSkW>Gh zp(tK>^1mBRQUR1i3?28s+61PTHLfn(|Qdi;5II2;~q-ENoL zpu5p*Ha%@;JwUr2qHmbK(RJNvG#Zh*YO*k3+{VZpYz(-kO;+#={s9N#aX+IwiDaPP z@AKnmG$M<|f}alt1Ac^SuzT4e23|=d1953k1^{nS#JL~o1mN-OG5Q60l9v{LFO2&R>(iZ)>U~ z*_NZp^cU0bOusSxN=|g8d9Q`-q*WjAFadW=0X+1%A0^|9|-dDYlBBYUI8eb0j1n@u5uYoo@3IRF#4@{S6H;{;yUFo5kxHM{MnmIF9I?Np-BSwBjVoVMY<2bZZOlmPSCGaa=)2V6Np$~uQkq} c=ll_10Ptz7v>8>H)Bpeg07*qoM6N<$fDSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yc06!V;*iRM zRQ;gT;{4L0WMIUlDTAykuyQU+O)SYT3dzsUfrVl~Mt(_taYlZDf^)E`f^TASW*&$S zR`2U;<(XGpl9-pA>gi&u1T;Y}Gc(1?&B@Hv)Y-zs$->0k(9p%r(bB-#5y-bNa&dHa zHnxQ6b;(aI%}vcKf$2>_=rzTu7nBro3xGDeq!wkCrKY$Q<>xAZy=;|<#VsZ#PHvXw zu1+}3gX&Ge;uff0XPkQVfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tP6iziU4zq zk*AAeNX4x;v(M&Tb`Ut8E^F=Eu|n9@Lq44&b8c3c)Xu)L>z`-;EYCSAymV_@F5l9S8pb_+ zO|m?$4iy)FEV=yhfL;H`3LZ9_4T*V0n}MKu?fdV)qo>~C-V(eeu2pD*Lv{Z*zPHDX zPNt^5`10h*lJc6G7|B@*9J3Z*d~vnFLS;jp;z?gM;j4Mu`=i!|<(thum|)PL(dE^y zC^~Z)=iNMWKC@px+q%?Od97zrl9-k_cS%KIA>;Jv(*@cRRU33pGllu|>blHVz}g z9u-fDPUe5Nkar!U+qx$!G;CB(UN!s6vhnD08RhjFOO}Rz<@w9*?ElT}SW~U!PRU!Z z6&;vVkWh&1f+ueeG&A11n$0(H4g==|Z0JHCTkS(--C3*Mc%74Haq;QcToaM7T)0Tg z#{R;CUkr{b5`%RsrI|MgJln8zLALbAjd`i(%WWE7+BB{1Jf_?r{_-v3LNVu8{@S-r zdg!hed-vtYx`VH$yBD@~_3RWsbi4olfkM-YI>Yvz_4-k(H7e$nZ;jBg6P}VN(Yo-2 zSY1owg`HxHF2>x76aDjUTFuAW`BIGbYqTwU1DIK=a&CY7yy)e>f6@!;>-H}5;5(Sb zP|{_(<>kwgUnfiNe*ThP>0qLGh^N+Z_rd-17uvdRezdche|ciZ+|(vs`77m10#d+ Wy28_KZ!;c)Y7|dbKbLh*2~7atwU`8U}fi7AzZCsS>Jit;^O978H@y}4@0cR+!I^#Xrl`L}=V#m|^7B?V2_Q@ghG zXT8af77GQz#;F}AH1@nsU1|4lPl%V}ds*wi&>g=k?#y#Gc3xY`owxSv%e3P^EV`T( zeP$RutUt6f?UBdv)z&@p-Demi9%|v-Ke_sgPy)loP0GRVOpeY3TFv0;>gTe~DWM4f Dy~|Ig diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_suggest_strip_divider.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/keyboard_suggest_strip_divider.png deleted file mode 100644 index 363936362f40906afd59b09cdbcd70693ab1b004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2812 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/mic_slash.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/mic_slash.png deleted file mode 100644 index d04b56344667f58cf07d4f964b37326c2168616f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7595 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ӬJdJYFo zP{9tX78P46ICKrpIJ|Cw;#J}yL_zsR`>c~c@1^~IP4&_k&41a_M8em|7b$Dv9U5+exW zj48CPhCyP=aafdmd9ZvsnlBr0Q_450EPAw}FXRat@L^OnieUkRse1(Sj$xLD1nIaz%w@Rfi5q_FHM z8w&uIP5zKuQeL&%ZCYtIi0Ne9+cDPrHd(U#iK11oZtZW#NZI@M26zeh353dpbaAP! zZj}8(LS*d3Kazt^=$HK9sBLQM*|G7^2kL;TVUKCyy;Fgv@nY_mysy$yhBvINkR~w@ zquHkaTO!Vz+1(Qgm}cvS)ZEtA*3YY}s~CH_bflB5a#zR!hNuknGLLC?=rUTf|6M!a zK}%roE|cHQpQF24QQ>Bu#-X3aQOB2L$W5ROF~4NNo!f$ceNz)bzmQv|wv$6}@J0I4 z(vktw@Hw=1kf^G*E7HC?(y;@$`z?f)6u7vTIDo}zbib^c{jg~lXhlWT&Ut3S688GG z-a`^=rq|<`%ZbYn8d}l@m`?P#b`PmYb3&L;Mno15F_@tr{8{=Q(nKe3lHz+ zzvO^{$@+UE@rl3T#D)jA60R;_9zXaE2J diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level1.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level1.png deleted file mode 100644 index ccb76b879e6defd0d6347c4798b1c28315430c05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6804 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level2.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level2.png deleted file mode 100644 index 715f900818e156e0eadb5fe1e6ebd6aabdbcf22e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6897 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level3.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level3.png deleted file mode 100644 index 725248a25c5a6b691cd397b415b2b0ca2fcbba52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7077 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 MWgVq@1)He<0PGNgfB*mh diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level5.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/speak_now_level5.png deleted file mode 100644 index a5d6b89d61f4d1a05d3efd33a4722175ced40bb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6933 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_123_mic.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_123_mic.png deleted file mode 100644 index 0749b5fc64a5ea60e92536000f36501b3be65f33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1520 zcmV#Mk~=a%J?KyQ7TphEh1=ZEyb5M4+?_fgT4eLsS8>yA}(!RP^47aYU_(8Mg+II zAn91OYD`*f(~09UPQN2(!q1?SF=^A1&V`Tr|L30n-gEB#?m1^hq}S`MUd3i@^@=u& zV;09Oj#(VDIQGAA%;qGaNF;jch8PtJwBZs!3Y=rv9-svdfTQPf>|bsoc18wxb5HFz zV1s*dQ2)%G`Ws*khyfc0y^D-=L}ut%@t7x|ijIyRV+Zu~Ofnv`d6rG)7){1V0cXG! za0F}x&e#L)KmefRUe0o{;CnZ~54gyB3ZB!}$U)M*oR^o^XmH8^lF=CJn6%r*45~T+ zZcGV!{~g!@{se3RccM&hZ*S=A?5v-wtLt`QVc|GrzW|SbL%<18OioTJ`}_ODY2wn- z(mPBo!Va)6So8e$_Vxv1V_0_HtSe-~Ya2eHa2T8u8X7u7>hbaMUqE&Va3WeXHa4dD z`uffbcQ!CEaA{&<;%$uk1G2upzH0#i0e4P0fhfR*8DPcpzLAlU@q@8G$!Lsqo|}qx zKwwW#&$|kRV#6?bN=nMtY>W)>iHeG9Cb?3n{D~H(6Qg&PN;QP>*8ne~pP!%KsK3Ae z0_j9VL_FPy?(Xh9nuj-1%(PaSa7@KI;#2OZNh(rgk_-$CcxGi~eX_s5Zx81-*Vos* zY|#WESc{XnnVp?|zpbr}j19=o&);imYI+m8L>oH}&5u`BRz5`U36R_yDW!}in4X^Y zO;1l3b9lF9%Db2#nJep1*xwaU*sKIiJETiWN_v2uZ|&^tycHK0w?G3&XskoM2H1pC zE$G#B_tw_doM})dlRe_a_gIg@^kaGlHN8kjDwS%>%gZNN@A$qZBqV&)-rj!wG_N{3 zI<7n>-dDlt*xz>hlhuc^~%c1TIqYv zIkbWLu&}Tj8ja@a^78UU&~X6)v|6pSprD{7IXQWp9Xm8)!tqH>O-+SV zRaM3Et`iN#OkJz7v9S=G%Fo6Ik!)^m&JZo7yrE}yOwT(>96rQB9i8wkIpu@JVz6ih z-ND4f#JlzN^YKHdRmIU2X5OLzL=L5hkKHN4Mn8GxljBeB^51rDK<8?ohGNA6Ex+L5K!tz zV*?Ce1C&KYMeiU>XoO?f`CZWPQ;c8Za*K?Va5)wOypL+8o^mLGo=L`Ia@IZ7Zjl-P zD@wQ|a^uTQ-2RnmKonCj%^U=G^9cuzO{N%)`BYa|NAK+H$S7qXYL4>wCYNc3d~_U) zP?qIyZEeLMDo1kQnDp@QxK~qC)5vAm6H^twIgVNL9XQ94OUK3@vD}Wwg!k1Dbawe! z!p=Fco{kOEu+E{tNQ!nIs8l{jPK*^Ag3@htb#*n1YgMhu-##ztpI{NgS`eaj0%{sF z#F48McYe0w)I$N|0Y4x77aTk5-xZP*m~hBU*)``^w8-+`y~Qz$V;09OjtSad0t^5` Wi?!l27&M3g0000=hT|3J+u7g0#) zIF3_e-$VC>m7&e(VDt`r@V$HQx%Yd{efPX4*KW7RM#*GjBW98yNsuIH*v9uUhGW8c zhK#js)~En}1#9egy&pleupCSR4NwE+fHK|EUpO3|DHe;TcvyQA z<(-4cU|(RhTCH9#m+!DFt$xoN=I#Oq1h5;J6N$tPrBb=V(mYULGhmOnHs2#N2UDrk ztk36LY&M%po6Yvd<#Ij4bz>bi4wK8}0+J?>BZ6*$HA;dY2nuxbbPsD0v^oNtP^nZq z1A%~}QmIVAZ97|UtXqbD%1knuye($NYPG&X+XZkE90y0i2{2nKm9D4L>ASeTMEAf6 zu6R72NBF(SvM|kj?BJ@wU|3=qItTWP8u}7ru~=TBZ5|u~8VVFlfW5I;%!zC)D-?=G zCX>0xL|rzU%`eE;WHLQrerlj#i_h!z`gcsw**^)QhjkZ4-9^kC(1A%H>j;1rnKl}Y z&uJ|A6bgkXw)QpMlgLmgbd4=2upOa*9Xg%vZ7)F-wJsWsE{bAkVzjw{;TJKTJ_o>p zC_;qh$mMbmDBC~_#{X6jEqF|=R)3^{TCKK<`EA`&E6m6DceXLq6c=4#to_taa~?Zzg23l*E_UIjixhj zr7eE{&%DdTZxwn2e+El#xBF?M(WnpOZI7l8p!uV}$J|@~J;e19?3R8pa?)RENsuJy ee-rdgfB^t1-yZ!LiDf_l00008)<)t=s zU>=-4ZqnwS+;`r+_tlJ|$k?WlGq!Bp5V|3>?yvw8$O8qS$T^>p|0xgx0q3bj=eL0x zvB$_o#3qJG%z#Va7cnxBhf09cZnvM7%jLd8Bol~F@hu#Li;0gaZak<|DqnoxKWH|a z-&?JgJDE&E+?#DAJf@kmZM)FvbewLtdmp4O27|#v-1=%!Gy6iOUa$XjUH1cQ7wB(z z$s`a?qtSTQ>-Fvl2jLQHNM@r{D*eWE4txVVYN)Ih9k-rP<(r3KE@|H?_ zhJk4a3;>_I?iO&suLPWnDeXR=AMhoI^f|ZflZGv!#hQN-1DZOa2F_C2kGZRYq&&28 z)M_>Vf7+`OBQZ2%;->Ufr z_8aCKZ4Fr|m%6}AYcENJ6Xu-EH1v)gLedyzsv#7|VbX6B*4Gt2a`PoHyyWZnOWF&>Y_!66@5V^!WE426J%eN3$^ z+YIuZI}7=4hc6OQgNO8Kki%8SD6EIllSmujIL>jF{gC(+-z>V}R(6cmHucm(Xsb>g zW{N)>V)C|<1VbfZE?%E%B}NELiw#~NJ~mZJ;F2At!L7VUB7I(;>i9@gI<5%8$wv}= zuapVtE}!uFQJjZ##ibje0vmJ(&R_7_XKv?5v|sb&A_s*~Cqiim#Y@&8sgs5KXC(83 z5z<<+T*{p>qC=MimXgV0$>y}g<*O>k9B+|~PK5pnFaTA7#}cCJrUw83002ovPDHLk FV1mm!XCnXr diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_kp2a.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_kp2a.png deleted file mode 100644 index 300d6b887082841872dce7c098cda371b0b88efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3165 zcmV-j45IUiP)|D^_ww@lRz|vCuzLs)$;-`! zo*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!& zC1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2hoGcOF60t^# zFqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl z*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY_n(^h55xYX z#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^bXThc7C4-yr zInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qjZ=)yBuQ3=5 z4Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK%>{;v(b^`kb zN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<)0>40zCTJ7v z2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01)S~6}jY?%U? zgEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j*2tcg9i<^O zEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfK zTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761jmyXF)a;mc z^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQqHZJR2&bcD4 z9Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^TY0bZ?)4%0 z1p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK8LKk71XR(_ zRKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS<&CX#T35dw zS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@qL5!WvekBL z-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW%ue3U;av{9 z4wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#o zSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%oZ=0JGnu?n~ z9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8No_-(u{qS+0 z<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-UsyQuty7Ua; zOu?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimkUAw*F_TX^n z@STz9kDQ$NC=!KfXWC z8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgUAAWQEt$#LR zcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6?<+s(e(3(_ z^YOu_)K8!O1p}D#{JO;G(*OVf24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV z0GgZ_00007bV*G`2i^e&1UC#~Q{_+q00E^*L_t(Y$L-e7i%wA(2k_6GxyTGdY@}o) zjZ#*!lVam9uo?ful$Dglq+}tK1!ZGlqXuO$3%gNln8noWH0do;D4~!t*XDWaG`;uS z_s(lC(%&=#D-zMzlBehUX1+VmvMHq`M)DBM_c2ebX&!IPxUz0iq$85gh# zyKx)uGk37L`woiS3?C4yaHWq_*Sn0wU&0VWtRH^>NW+nA>tF7Ng!`umA0GyZ&IRQO584ib^@A3H`5zJixM}R`ihTK=A28T+e z((%p-p69jcbb1<>I*L1l(@-7CK|SUbi5rOynx1lmN@p*5u?QdvIWN zb@eQZM?4;X)oI-0@st9AKxJ)h&0eWgEO?9e^!zWWTEtR*4ESv}+XgEK`F#Ek##gi1 z>=KN=b-7&SnVFfFxOW}gn3$M&!_4GzxjBqoKr2^^bl}*+!op4VpxJExw7k50j|>W2 z19MYTQ|oMv-|v5cv5z*VloL>aQE)06jouduo6qN4Po+|iA^ac~i#;=$Okda>T(f~{ zdlBpHw0llYfGyB~ad4WwiNoR8?5w6nqp=zag`Q%~dElhVtLU{{3nF7w^TXwG`Ig|4 zm6eqx+`9tK02>)scC#gxrEHf!K#h*e8eCCBJifBYNF?$ZT^;ODa`AtCJv|(mZOUv_ zFc`e7*XxfKi$yz|n4O&sRI61tzN#nl^YdF$)wGur&DH6D0k7A4mtr+2W<&1KXN7B* z9h>M6)9Jv5^4 QegFUf07*qoM6N<$f{;RzLI3~& diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num0.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num0.png deleted file mode 100644 index 7188f9ca54ce6fe689b4a23006ba736ae38eb8a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1148 zcmV-?1cUpDP)X)SWVDK5HrUA!({7k_GsL8VXP z{$OANM($q*9ER^iv6vJyyi6o>)QAdJW6zyufvvtY@00*+mwS!N_) z0vEuos;a8z@$vC47U-pRU0vN%jOBqi5GUnv29~62qY-}t8?X&D$ z4?Wavc=>^W0jtO3F)4#s?%z@UAb}2t;|uCy>YtjLqG%Ao;_2Kqm1_qIA=AjwBQ6+4 zxjgvIVRMzE#|mFdlPDq!bx><-Yl=7s!6O{v=InO+PjL*sA)AHCJ6Ree0vbVCuc7!X48Qy=sORZDdOzEUuR+Yi!a@o}ehlYj{#NX4?(`KGb z&G$Ub^g7Cxy*oHK7?GNqYUFmLI7SxRWq;ECovo>BzB@`Z?Fn&h zQc_alQQFFZxw*OTNeG|gZy}Kr6%`c?ZnvBK#~4rEk$9`4y=w(Gb8>QewtKPRl(z`P z^S<^sy`}4ibABJg>8|mprBes=e9Kq+nIt;TMxI(K-1cUg9@910!qc+|-bK z9$e-epYrzeeSLklwzf9P!U9T5OF!eKgdEf;@7Dz}t@Ztqa~%E*kyIX1=F~Klzv7sL zJv+~$SA6sN)rp2rvNV3sRb4kR;Xs O0000L8FJA4%^LS1wB z9{f0x-157-ymyyKWm(ol4Y?+8kUYtgJjn|a%L|@M*k=V;#d{MV2gbmZS9uwQ>wtzW z+Z3e002l%VkMc{v8qfgt9mhHIeZM`0&@}Ba48u#DeXiss6yE@LfCJmMFS_0C$xjCe zXtsf8-rjj8z6tC_QFPSlbgugS{^76D`IcYDzFcK{CRF!4@6 z7dRG0{)3e;5P!ksCyBJf8zZx&o{PA*FA+M}kUYtgyb$s%;pIh9%xC

Sy`?$g{ft zo~G$=b|Z&?<_-9)y1caDrv>|hvxUdo1`ZYzPk`5|?*SIc%QyfEBH@gWu$}NMPuZU2 jNuK0Mp5!YYUjhsO_^ftO71TET00000NkvXXu0mjfy$9y; diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num2.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num2.png deleted file mode 100644 index c1e9cc9b137f9f2cc255503e270b659482c90595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1785 zcmVjgE$DC)LgiWBU^O7(3-TTgc?|x?=keEy+i)ZzcT0Fy-nY@|2 znY@|&GjqviP>38*Fa#L`pl3V;CdHd163IVK=4s2en7oAN%K!&p1&`MJTmy^%w}DYW z2N?g;rYCJNWPl?O)YjIPmXwtAy_=ic5Qz}ze&^1ewRj!}ya1>GiLn1)#${d*Pn1OJ z@ZrPxN~KaOke&)3AD`E=x``H&Q_WJtwIdrC<79db6743|C6@W8f3s|udh{SSUCuMr@=)~)CmXq;2NbY&y zMfSdxfDJ!?Y9)xXJ;kr~^y$+_6bgklFfj1v?(Xh)J3BiI)M|Ax6fhG>cwHdcM^+_~sSnNOopaz&8Nqm)tt z^{A?etPPsE#4D%HrQO`E15(HgbTV_u<-ZyzYQyP|h$A(yv4$mZtRcDIFg9i`3COkyR8$NaF zR3+E?*~nW8Jp;TZ+}+*1FD@=lJuxw%fU9p2VpYQ35swr~awzDLqW%2*h}iPM!NE0- zj*deh-iUb@&;k4c{3arAS_<+KCQjDzNl8h`Zf$M#6CM^87M5V>W6M9B<=sTY{_54M z>qbXM-6A3))Cma*y*4&B_dqU!!$~ETN=Zo;$BrFKkBNyn3VehS#rwd418)jRjxNO4m%DfGCbt_Vx0^-V5)K)M zvuDpH(E>>8E?&Io1ro!zZr$1lm!?c@3-VGSB%-6E8wjMJ+S=L}c#Nx%$*rxewL)xz z_>y#0vT5cvfLBFD#r6{?PP`&K*t&IV3+9x4d)ey7Ib5C+nFGq@dRn0JBo?@E;X+hS zPEH-X{gLHSO|B!ET_=LD{I%@t?Dvq(!-9i@Ympap!^6X?xa8R)2Wj~GCLSjjVtwf} z2lhmQN!YVzPmb^)JUmMM^;sFGL!LqI+wRaq6;OLMXXlgz;6Jr0@-9)Wa=1F z4u~naF*0)O8gM_!Yc!5~dwc&hG&HpO#*G_+RO`79SPi(cv1E(2Jh_+C&6_tvV3D_U zI-OD=j#5*@ZtTt)G4JO* zp$QEQttRsDuplU+lZ5N)>f#?C3JMDg3oA`ePbZ~~qT#s>1$=-|%q=f3&z$m|q8Yqz z&PyWd%c-mdAqIb#&&IsGy!Q(V3O>i}An8N=d!BwIarUU5&<7cAp-!Ci$mSHYoY zjR*_w00000NkvXXu0mjfxZh^N diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num3.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num3.png deleted file mode 100644 index e9987668cc7eb1776775e1da6611be282b2e9e26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1675 zcmV;626Xv}P)`9X(>A8V;)^shvOZ+PXoV=ya^zqpOO22;Zpz+$gny;@LMSXdty7dJ?^g;9Uw#*Gc_?d|LETpTQz z=c%4|p(OV3v?hLNU}0OfZ24TL(><1ho@z^$EV_?zwQ@%Zr&#pFUl@bLY=?6fEZRc0Kn7}I-7)bqJ^^pc z$jJDkt*z|~Sp-6(qM~#wSFY?hb?Q_$JscDiWaAgkblwT9p`f7PJCn(j_~eBF0oLWq zm;btJ*RHSQ7?B2b*6Ki~fHQtin3l0u$KYR9U4o82^ zsgA%r=BtA}J)ff%+}hfjARf%j%=`_PagO42jiR&=V6|akVGkgdXFwn6%9Sf=H*Vbc zaPQu|i46@6MdWkuT%##rz>Wq5cvf*#1q%IY|Bg&Q|6Wm1QFD2Dd0}&Nb6#a--F~h z{QOSz2VnP^GIn2r7ZD3Nc<|s?^1;y1(6Ne&ipH&5w{|nT@@KoScO5P-~+qP}nrsKzt zQ{?X_B_-WsQF6_Oo`2f;dE)43L`1|*yWKvi@BmMMREG{7+C(PiwzRao&wG?`)I$y& zIFN6%*(_$W`B7wKWJ^g&Nu#eguaa%jh&^ZF`ud3zC*DP2lK@fr2rt%y`>8m>U-tF& zZQ`TKz#!9es_Q2U<*O z2L$f-+}zw&=Cz6EIS~jCB0W@FTU&$vAXCW1QFlKpc=1)I;ncK{bF-ekPLchaUIZl` zmQU>L?0l2?C(VLgVopa=-9&{{Sy|b7r_-sAiHW&RRA5aYiik`j3KvOG$K&x(e~1e! za)6P+&sp#Yd@w{Vt+=?@!sB8S#LK0nrKRcei7QsDxT_#YQ+2~Z8wa=bNNevo9FE5q zE?mg!?d{Dp7!18oddeCu;xSF=>FIgng-#D@__6Hl?7qRlLBpj>mzEOO#Uv_wQGj%DT`(PZa@@Gf<#OPNM^sl= zZ|4HZl$MrOUsY9AjV_%gH8@UbOV!lWv>KPyvNd)9{56~s2lr>IEuN~0+MakA1y7fq zKY#v{nI<6L+G=WQN|CSY(fy0lo>FbE;{r*Pw^}|8c3F9A=2JIQdFx?%c{#U_^BO*j zJn_kzo}PXgkxm^L7>H2+*HvHC)PuQ+lK8(W6J-Mmb6Xs6zS~+q`-6b^ascf$W3g3Fj3e|G)n)Lx7jq0a_Ng zd93&WGXC0_9yafE0{60j_y2Y62k!^(2k!^}vbBE%7yysa VKp-sFe8vC(002ovPDHLkV1lSbLp%Tg diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num4.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num4.png deleted file mode 100644 index 7f0f3cccc18a707ed940e095341d14777c205fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1530 zcmVAb zEf}>LwbcY2XA+~%`*!c?KH+9M#>Ye|ItLba?z#7zbJyPM?7fe2f*?rFYLiONaPyG& zkoS=HkUuj`egNah015&&E5JloJA0Aixc`mBQPcIS$Risba2^muS6syaSO+`;&PYkw>}v0V3<`>x*7u@Gp5EQpSFbqcxN?#+zaX65a)DlY-c{*eRA+$w<6t z9gfDzX*`ZIlKSkgi##r-280(E7vGqho4a_#EWtijO)(>IetupvG&FSCZnxV~Qc`}8 zi;J5h1K@lrfQ4eob28X@GMJ6#J4f^3{RYJz+fm6oBr1Xwa1QX6R;#_^<>iIm5kf*j z*2vmIOiauoJkJ6IiO0H_Qw|6OyxZK|T$7!htxHc&7sMzpFaI9b0$j!Wl9H02;dd;+ z7ZBFa&~Ov`8yg#M!~J#fScpUSp)VAmbmDMe$X&=C_j6QfY3WU)(dgyp=Vt&f&2)Bl zY7S{v^ju&|OUs9CZEfH2JZ~&0DEP_S+k4Yuv6x3jM&5zBmq>jVaDb1GkBU62Ly!AH zqkiBA4GA(?L99eS%no96@A9!UQtn@otT(-XlUpR^gYE7hAnlE(k8|NFB}Ah!S&yyJs+S}s{{*{##4fNl}N^fjz?3O6k ziW@4yoR*e03&BnTWHl5|biKX3U%~YX821~S%_gJm;V@Ekbo63PO-(!e{0jxs*VmVd zy!ckmhPI|~`jl_Zh;Ze(QS8thyB)YR0~)z#G~NSPK<@xlrw zDXa2KCesdF76BL^0=Kuf<3)2S$WRyn6{3Pk>TZ#P`&J(w9{x}X&G{wtyk4(&cpqay zSXkI&@cf_Tbyo``86>ivm6g@p)6?@c*<2zWot? zKA?QO*Wm`s&-JphvfuCqQr?&C?d@LxUc3+y5%G|!G{?sSS&Zgel)`qOL8E?*EjyW+ znH_jPIy#z_mzSr8Z_0P)ZxS3;XEIR@&Wk3*eHsZ1-R#2H&f^wTen$R^IB!aL;Mnkv(rCn4F%Y zCwP#(?u9#{Q9v^6bEFmMxt^4z1H#Jyo}L*+2OB{oU#lp6TAdCyJVAW0vAOGc$tzBG znCdj-Jt>i1B~m6=f63WnPIjE-PRfyXKk_UxD+wIikItp#0mz@Y#(Dl-+dl#f03`gP>uxc1TL1t607*qoM6N<$f{lIO`~Uy| diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num5.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num5.png deleted file mode 100644 index 5f748b416e94cd2ac0a55f3aaade64043a0b2d7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1411 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num7.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num7.png deleted file mode 100644 index 5bb874c472ff7e3897f34286328007d227b7c874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2040 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 QivR!s07*qoM6N<$f+{HftN;K2 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num9.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_num9.png deleted file mode 100644 index f348c92af468aa676ec39e4c0768100c08f97825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2167 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 Q;s5{u07*qoM6N<$f-K}G4gdfE diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_numpound.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_numpound.png deleted file mode 100644 index 9126eed0df3672c0f2dc95a9405cabc83dd051e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 910 zcmV;919AL`P)LdtRMN26igbXQk(Lr=_7P>eDSI2a4)IgS2Eh4d+z_9`zp6uEvZ+VN$TNdh&RL=;tlaV)B69z z_nCnLeuDP#HRd=qgu7+h<-thbV zk1#$C+`wnCSkfaSBT0@a-In$T;!~;A3=M+8;AeCWU`-?vv-Ns?KvmT;XMw5P#M7Q0 zEEbDC8ca+~eB`}u+1%U=@r2~q3-&u*yom){Ngx;oo@_Sjr-$Kicn{q%TIo`$KGh9f))b&(Sx3%uBv+1Q3yqz8=I?e>JtW~***Z$HGiKtjDyUI9+v2N%H2SS*&JuUuJKd4ll`u%N{j7Z;ym z90Or62He2hi7PL2PiFO#iTzFB2 z*RQMQoInMqVRm=f?CxXyh0QL`W_JhUm*744uA6{XryX^4e%m9F$aM%i??f}BRjXAi ziH}C3SF~Rw;T*e+=NC~2>?|)YKbV`FdxOU{k>W+|Cks$Rq0r-hb$Vice*PNo`96_* zUZmN%*tllE(jl{30=LQJbY^!8%z|^k0|tPp6Ah1yt^&UCC1pr6yUEGP4K89F>+9<$ zD2AFo%f$`#d%V}{LQ`JwQ77@rsUU)5zG$^tEBHAI&Voy*0p4=#DmW=R%?~5`_C!Zs zUox2-hLO2&W!>VE^`K_QF{hGvj#Y&hHEq7nllaEk+8SL}Bvg9Oxt`yP$Kz_PR8(y4zb*_x7gNP2y#)B^2(p_jWB^T)Vn9+MV{Y@xMAl kydmBYZ;0=K_D6sL0NR>bF!`{hzW@LL07*qoM6N<$g6(RvvH$=8 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_numstar.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_numstar.png deleted file mode 100644 index 9b9f1b9869ee3bdf98bb48df6ca3b01d1a72810d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 943 zcmV;g15o^lP)7xtrW*Nra6kQOC^LymL1?iStbGeG=T(trRaDqnA0{q~% z-|vr6?8wN-9HGxP#w4dj`Z(n?tXj=~MT19LZf!N7k*mD;T)pk!^xE2*7c2X)-EPk? zd3Sf$hDGjKAQ0fZ|HLNQ=C;8%kQ6`n-wO~8#8-h+0|Nu$jg5^#E6fZlPT1PoYRY6X zHu^T3Ez{cC`nfoshhRV0&1cOsEEcUUqnLOdS#{4Lhp z-0YTGKq;3BkEQ9((9qCx4DVPC%<{*q4u_*&Q55so*x1cfD%HSbEO_51CnsNE1m@G} z^p9LFmj$_PnA`3CAk|*JT*R|P-42Jt?{JLDG_Xn~cXo7ibdbV>!Qgu)udJ+e;m$W; z%j4n~2R~)b@5x+G%V(BNg~zSR0xD(CZUDYmEH;ce&IL_fU0r=b=(CM6=18th`dYNy z_DZqOQ$Q2wgT0|x9&vt)9BAv4T#H_coNCZHF){J5aF?Ue=v}$XKKg~xz#QgEA6+9=-jCFK$yk1yX2*`ttqL&97&f`vA1RUE$oLQjXF0u2HTUClXuaw{)n+n zFauhk34Q@-(t=q06W|OuO}}@*Ciq6ey6XuiNL2TvPN$`7LkSWns100>Mx)_m zGU;bIVKf@=d%fN_m=}8p((oR7lscrmCg#i~BaLJl)^o#8?7$^*Z_QnMWE# zkmAfT68LsF9DaybWK!Q$DwWvoxhsm|t|UqAE;WLngD;l|Y(GZX z*if;zQmNESe64}TKYi?wSH^nKS~{J6G76Vi43Ee2wp=dz5O)Pwczui^^f=@nZ1-F) zcPA2wJmw`elKr*I<=WyUHH(Wm2`+yR27_g)=-brg8&usj{Wzq!WT1|G4Wgd&oPzyX zT)zdbvQ403joi2h>|g;HdpYyJ<|@;+WI6Q7@AtnVM;>)L)o3(+;^Q-@g1sJbBtquq z%m9^IEouX`MF@pL2Q{f)ukW&tjuYV6&(vL_d_La>`dOM?Kw}kg*!n<%q>-I@`~2ss zG+8ShM=d1u3;0S&Dos+5`oKOz?(Na5YERms=^w?ZpsAo?#~%R(00fM{sqz{yw*UYD M07*qoM6N<$f{*2V{Qv*} diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_search.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_search.png deleted file mode 100644 index 1f180155de4ec28736757f86cb34aa322e1a6cb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1042 zcmV+t1nv8YP)_S}H zht(+Z!nAU^{!ct7PRH4%XAJ`n{5b46@6P*wpZ9(K@4E?+NMzk=x>V~{*|jDp)}>J} z5S3&=v=D#rJ(4Uz0=L(JbVkeZFqi|ge4l55|4fjYh3J717H8wWh#&>rEJr7K=AbLp_IBd7upGZ5as;YWCHa1p|XAW=zR5v#_cTjeunWC)H zfPgj;g6Jg$SQF=^V%%=`L&Q&k5|9r})D9dOA0PKfML8UfM~Ls`X;&;L1C-X()cC~? zXxb2S@&ZriEDF3%jNoWPL&JSp`(q$GUO|6z>J*THQEwIl6%`dPaC^h$O_^BW&Z)eo z!P};$rUzpCsi~@f-Mp%)FO*osbAYH2Sd7 zXq*-U!C)|lM;omZH9t$^%t+r8NrWJphFOcn@=6T&{eCNMdFyrL;N%-r{~~ge}Dfqxp@u@4BW)CgTTOBkf7A5)2PJBi=_S{mNXe8Ar&k_?mam< zd4tWf7;IvD5R?c~^XN)_KHn9&s92CF65H0+c8RxFVmbPU|d|C?Sqt9pb?(17racgcWvocOM7@0tGk^2@n#3M+ICi*K=w+ zF)>kMHk+?XUjk8I+uPf3Ih{^&{vaD^c#$P6<7lAb-JjON7O;b-VGpo^Ldm{nk9IoX zOnLddL|NCYWXj|S{30Fick6laYkAGl9#@E+-nEpd&d$!uXtSN$Di#z^A#9}60H*ZZ zQli)n^vMtuQxsKSvIYGi3Ps=+MNxKO0~eDyWzj?x4-O7GDl02}Jv}`xeBQ~$p;<}U zE4}Cxkj9&DDsS2|e2iIC_Ck{W{SbfU3M^oOS!{Z1f5-f9f_@4x04GMJTf5P)9K*yjX)QcaWw?E#+Y%5}#Bmpr4T2-D4MYt#Q!N3GcfV#1t)-0^kJt!t^qQ6x@ zQ=l5C4BEoJy100r(L5Jp_oe<=vp|!KlPI8HML|`|*e4y7AD~0a0%F&F()ek{1}2*U z61#pTjL&K2>=NTI@ict{2`3JN)(wV>pg|%nEP@^lb2mV<7#u91Ao{|y;dF$Pb~2(_ zL|BP9tqaUuR-h@uNKt`_;*PTjDo(UZ`hOf9*<>%p0oo=E3`>ipFxRMK#OaPmQG z{ zUbE#5Yy)@$(3J<-#}){CYaF12W#_UZhVZVF!5X%VnO=TXkA%Ghx0dAzBZthJ;GpHT zp86@Sqm~>~!V=S=0SV%3da~G<&;e1G{2Woy-`g!lTm?fojD8lh%sT)L`Mu;vu>{mx ztTNhe=z^AH9K9dabXnf-B|m9#POffDC8v?kpcwj8qcB+RMA43NL-+?jHn<2sK^VBXl9jaV%jhPQBBG*l3QB>55M*8Em4pVVAR1I4L>JL*c)b;c;0VRYoZIpy z%cfh+t^Z@sVjHIIY?>E7@Z+5Keb0H{|DNZ0KhA`3IGnbTOqRC6Y*Wx`CZ^~|349GP z;r}Hl9jL$-?#mD6K|rb~S(2V1AsV~gZmg-PX~(@D30u%xZg(o6re0=-{>Mk@lH$R~|64lq& zcMEmpU)?d9YR5<-JDG&IB~uPiFrPnb-mB~g_0 zD4zsn+%6;|hz8k4Zg)DJS1Dg;kk;1L=cqda_ORy^>_rt%c{8{YdERU`zef2ePlgqj zgVhAlKqYYdxk%?#RaI|Mcb5jFnZ`Mi%XvZxzYm-O*C!_@??v8gX=!;%`3G`VN^->1mO}AU} z>U25{E{gROMDHo-Mz7a@92*-O{Np;zJcLnXL9+D{6yiKe^Z9(r-rnArqz;8bVabPm ziAUHxa47nu7>(6xea8D-W}Gc&3R=BzYsb6J!$3BVqI3k4-^I+AjeH0OY}t UMiorL=>Px#07*qoM6N<$g7NjrSpWb4 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_shift_locked.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_shift_locked.png deleted file mode 100644 index b8cebd060d38b74b2c504e83008194da63fca8ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)jytrO@cq zAOF;*GkxFkgh9p~XS8V#KKSq(o%#Ld`+L9N`@N@vs;YA*$sBVh%w~d&%r&J+5du(v z%I$v<|7%MBVT zkw`qn=N%ve2?%D#wjzdJ;sqPvb}$(Hz{_()GMRja?{9%M;5IADiWm<#4|XGw$UChV zkH^y`ipAn1+}{Q(!1b>L2|Qz3j-7Nm{X#2dSXiM@*vE5QV9AUqvtm}k&1^RNWR#cz zKA*2ytJNOh`K#bGa86T@i`~DC4ogL`66ljy(>H1X1S;l}hEFRWSonsnm0fbptFPx1Wpz zk&CZjhOZ_OGa!@6Jj8hGKpgeXaZ-oUY&OqKBa=584YyH_6AUUw8i2&eU==KKLR|sp z1VPx->lBN{-j+(G*SP!yx}0pk0b2I2pauF?vV9Ny0EgfUKTk<>4O}zmODW|eznsdE zKj0UmSS>#k%^+H%!IwsLYPDKF(R^lFcGN@U?ruJxe=LfkXZWVy?|;u;RqQIzXxYSE zF1M?9GZYH-qS5FZD>ad8f=bg{uh%#9ZUzE@bq)x@u8Psg)uMiAy4?~Ba@ZwE2#>j@7TGi=@@9n(J~ig@yI3>?2|J@5fBgg!Wf}0RYS{?%)ZY R>IDD*002ovPDHLkV1l1CZ1Dg9 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_space.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_space.png deleted file mode 100644 index 4da7ee86eb85c43ec31a1ef0b24c91b73df0c0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8n!3HGFBdc41lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#21Z*?7srr_TW@AKdL4F;B}KmL7Sa$RPUyy?ZG`VTXn@b9TP`9%K2jAfZ>%a^=-a%71E z7b-ez^7#tS>*obWW;O4BkZ158CT3qy}8)% znWxV2pvPMSSf9#PId_|05uK#6^XP_$mv=ZQ%v{E69A#L2u=*?0rs5UaM+)~GDqxR4 zc-uii`}~ofuru3g8(pje%O^em=^QBX-FesYRjYp1?ck~1y=LyTUF%k_3z+uw?2NT% zbDn1l$WNGX{l|~EOD45_i%#@$KAv;iYulZ}->3DYe@{NepLaGa_T5_f=E?{B+y3n4 zKgFJMqi>qRX2I|;vf|FipZ)l0o$L0!z3)YM10%x>uf%_GSNP8XLz}_V)z4*}Q$iB} DhOWNL diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_tab.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_bkeyboard_tab.png deleted file mode 100644 index 2cb991cbf1918f6ec7604af8c6881a19e98ab6cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 627 zcmV-(0*w8MP)yK?#-O?XP znjC~uED1RWDipB^xg{4tO3pb-#X>JRi=;O}z2?|Jh*|=<$G;=qEHQ^9hnSz6=x)Cg zMp%oh5uT(e9r)mTE6n%3c{8(bg=JZ;QJUf!vHcf#d;yOnKW^Y0xAds z9o&L*&?Es_AsPddLWqNCH2MwWm%JlsXW#?RX`t(R06+eYZ$;u6JiCvTs`^+^`RlSs zVca}#GnOm?H^(->LRa7d7_thDQt@>x7F$mw5??V6gK>_%@(=-GD;Tv0wDPH1t+re$ zmC|2en9qfk%ilRvYCi#$SMoNK$t-G` z=10+VtqAF-dA;5)CzVQNA(cuU=kxiWPGR!c3gs1i?hl)Wg+k%8X_{^9X#Y{WDK)55 zyq`Y}3Q;zjU8>jX)1Buy>urQ+*H$0hMlXHf27d4cyaTgf?hihKwNNN@$i-!))9D>N zTL2%x3O$R*<3BK-2SM`fu~j7%&JFFvA#{{Qq6MQ#GMU`U<#L-C9&iTggDTmwm47dz zR6GiY!+ViP#K58MVEzl7fC;CTF-)tVmT*$7RyTUI3R6ZeYO}-ZQ8hc0Y5kMemNsXg z%P@>vt}9cf069FPL9^MUbGqyZ2uZhV&EeY8k|p4H@e)t|`{1_#0|2h1)~3BmGjad` N002ovPDHLkV1k4b6GQ+2 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard.png deleted file mode 100644 index 33d68cccfada6bc886222144bf4bab069db2b531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 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 KMNUMnLSTY9^kt3! diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_done.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_done.png deleted file mode 100644 index c0d6d1394b4912a2508055ec7979f4a6c2bbc4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmV+e1N{7nP)DN7IhR2Ags-S5F5wW^ zLF7VUlYs~bmxKW@;fEE1W!v`C(P%Uba~|xIeKQBtyb&4>$(@UTJ4w~eU;G69+T!Ao~@{$#%@VT%Rr!4V@~rjOVPv#~yqx5#n|Ky=aUo6?Slh2@g?~w*XBcz+s<4 zD{-5F-`QWucU$<75E?v!PYoOv9V4?Ib5Fu;fa5qPdGlYOJ;`i1NmWs!R7!ks!q zib*2!rji7GC1I}KpC?L;N&o#Ip-0E2ItW~%!_=^qcR*x_`|~6|WXcHbl9P`h_+BX! z++9Aw{l`%rO7y`gB4nUJx9GPoaPKp=^F!FLadP2002ovPDHLkV1krB BVQ>Hd diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_123_mic.png deleted file mode 100644 index c556c35cbce5da636cecb24ee5fe1a0a725cdc29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4640 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_kp2a.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_kp2a.png deleted file mode 100644 index c3dc5a9cac7840f006b8d44577cf69354d3ec14a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3336 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 S)<>EE0000X1^@s6)5{gA00009a7bBm000XU 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png deleted file mode 100644 index 7e10ae3af88ab3b22c5e0eec9891e9db3c478016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3121 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 LNkvXXu0mjfG2+IC diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_mic.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_mic.png deleted file mode 100644 index 3ed0782d3fe1a28c46c48ee5c55aa5e98e5eded4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3803 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 RFIE5m002ovPDHLkV1mq=9De`+ diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_numalt.png deleted file mode 100644 index bc8f1cfc30bf2dd4ff8b03c07fae9fa9566de9cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4679 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 C-RP76 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_return.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_return.png deleted file mode 100644 index dd99ff38190398205fd3a6ed8b3ce712baa9858a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3613 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_search.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_search.png deleted file mode 100644 index 6b8e01d901e1bccc648945afaf596563fea72fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3793 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 Hu0mjfoktVc diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_settings.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_settings.png deleted file mode 100644 index 03bad1843e0bd3a4ce1471b2b96d64582d0c1595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3839 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 BAj1Fv diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_shift.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_shift.png deleted file mode 100644 index d56357559552c922bdd72ba7bd1d25b837e9918f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3320 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 IM6N<$g22ZFf&c&j diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png deleted file mode 100644 index a10dc8fa21e497bbd3713c01d9a5936791b77eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3529 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 D2V|D^_ww@lRz|vCuzLs)$;-`! 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 RSl$2t002ovPDHLkV1n8FbbJ5+ diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num0.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num0.png deleted file mode 100644 index e7007c871bbfae7cd30c5ece1cbd817ecf3ce3ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmV;31b6$1P)T>n z8<}d6kYJN)qAs)~@B>`BP!?`X7Z6ssV1paOg0NP=r3ncJ(y*Z+ER4n=Ll_dpfr1Q` z5QY{ycuqYJZ=2UrqO{cZBwz34-uqtp&ir1vP$-m>slw-Euw=<+$!E!D$!Cm6@q^ zQo!w=o}QOWOH0ck5}bE-c6P&_4PYcCMcgOdz>-HVC<5FZ85wbfVn}y)cORU&4k!Rf zVv&!LU*v#X@+Jj)y_ivwNnQo0Y-wqE#*#&gvmSub(9rM%&YH+m5+yIEFuFw77O~f- zn!FCJJ~lS?K_EFlKmQrlo+5BAtPc+lkHeZ3pg9KlGk~he$;sC%D=U*Qx6pT{j6Bc8 zJ6c{>S65dd`~w360~0WOM2wD(&I#-F_4SqH_DZ@o5y7gV(`Yo+27|#2bA5E)NL98E zXZebX3WE|v*mS$yUtsu(1gEE`=V81Tb`hNptAU!x>j6^NrnWZEdY3VthPH1Ihqqa&z|nCR)D= zxJ=49jwk(7%k#ltFe3Xpoz5j{YJ~Zr`2BtvSvMAWOmKSeo>ypXI3ND5l9G~hI4&$K zJP5moL=uq8<@>$8y&Y|BZBA;Wf~jb7L~~D!gv1?TB~*&kXf#%dZJJD`3+&%otyUMW z^qnMm)O3*N`H0vpFE3Zm&CSVZu89a}u-FmtiSfJD)z#(jcs#nz&CLR@*PGwo-fk~0 zE;ckbH@^Uj?*ZuzwOYO9a=G3ny=$bhgc>h{g!hoG=MIPCIjm!B*W#Srv)kPv$LyU9j}n_RVtMM28>Y- ztaXu98r1qlvQ(`2#0ei)V>gFix%rko%*Ob^#j-g~CVs>!h5dmpHM6hve7$`}^P2)YOC< z9h=Q|ZD?r7E6jz1=^AW-anuE`$B4WWv8XL7g}6QK6bGuJ5-9rV!2NZN*-J45+KhB<&VI}E0xJ0 z&xJq!yvgB70hoEuo6TlZV`C$BVL5|?gVR$}Q<$LK6tBB%TN_O{>g~|qc;tymG$*$etVm#KUQXcw8)arlFuyp aCBOg(>3@^x>F(qJ0000izwp& diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num1.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num1.png deleted file mode 100644 index aaac11b0c7f4971ae611ac0fde0a6bf8b4b558e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 506 zcmVHUL%*QVC1VydIQa!Z(NNne?b9~#Ubul$`UAdq zFC0RWo8i2?-20M4M^eht_JO2Bat1Xs;wvu>JZmZs^8>$^X#i|O w&>f%P7OtHuBhLkoQDCAsfYz&1UQ(TRvGZ-^!nXN4cgWOs^m>Xue0X+soj9~$dQV@~p+^#}t zkclK-0|zR2AKq8LKl>kdB;Ht?dB5$q?|iRw&hP&|M`E>F?Vi?VZ}${88+jXf8+jY~ zr=~dy7ZQm?ED$LmV+ebUfPrBGEaDqIi7C@jbS>fW96$-o<=&aswZH(-2Mhvw!2Cq3 zo;1cn2iF&FHD+zp})WX`e?EP0|SHN zx#HsDQtXZ3Gn0{bU{@kHdKPd4oJ6t3mFG#AD(>g;yp;C|?nwK5fk3uCPv99|mrR$u zINFo{>b7s+zQ)_d@ndSxF9Mj>hR#;;2mLObaeDGbnZ-IvPOI6CM6}U z*tv6O8m<>GF-MLk^ML>$l!On20U>}7px`}jd@eXBC}?SBW@g&9ZQD{rdz@w)@QD1K zW5eSTK_z@FvagmF(GFd7mjj2*nQue4+s;KVn z?stzLKVHk(!#yi2D{14#jh~ATX|>vcvuDqKo1dRwLhnS{-LPT9%UiZ=$yF#6Dq$b) zsjaQ8%{X}Q;7=TYturNWVzLiFyq{BIn%6QN_f>#I0Vv`kkhxCiUslr#oX~V?$w)g|rVr z_ba&OpE8+Dw{qpmND#ls?`oZm=7n5t;{gfVscOMUNgm`VIQKtcb@_;aNq#N&zNd-@bjX3yU{z-n_MA$Bqil^%Id7 z0-X|8vjVB|dP75l+R4dD22)=n_$mUAgaf98T}cW7jR^Y6l`BNd)!W-U1VL8=;>{R$ z0lxu%0KFpe*2h6!!o*2CL6w!2*^!Zvp~B*>UAw+ScbzqFn&93D|)O zqCRorMEB6p&|Q#=Wp{G1SS%zYyWHH|ttU^OECli+A|fL3-0v=2xIot7=<4dKfUDhL zqU3VJ*r#JZH;%40XG&g>K4~Rj|Ni}%LXe{d|Eer6FDJ9RMP@gFv?c5^%JlT~WSRhJ zePUvwA4uE^4Gmoilcq@R2J-fTOPo4&s);}XTDNXp0xZT$h~!jz2)+&CkEND&9Aiv* z({IzJP3v=Va#Dqb`uh4dj4Aqdv)0X%m^=kCCDLUiO;CCgZ%9r~UUlHWfqIzxh~|+^ z&LfzeCxX!YxuT+?_Yuuw)M|Ad;)34O({mxGJU7H3EkEDNy=5law;$t$eGp(0OG-*| zgoQI_&Zwb@FWBTHT-?Zo;$j?=cSE3yCX=Q_Y2@Ddd{v(h}7*SxT>u$Q2bEIFD$9I2*;&3FMn zjD*n75nDTk`4f4kRcI!YN%uV(#=ijfse*$q*T=`lr-6(@I6x^5nqESL;VQ4u9IDH6 z=x&sim6aA06fE7lckhQ46&2-rz5cedv-2=wk!N;x_Gc`#2eTnhld?|l_ ze^0!`)<>90rADNgPw^d4$3bT-lQa1G`YzFEG_5FX)EM`0oY1zlwN(>&SlA*6qLVhS zUAy+xhXn@&*4o-yR$5w0LK{TE(+2^30$2QC^XAQOk9tngOurQ*LM;x7Q(9YuapP1D z78VwMw0rmNuPOVHsfufQ+)K{ouRB}CT~S>yhvx-z70O&0yPlc<8IX0|X3LUs+MN$~ z2|yfKfRw4nH^$HW{E<)W>Hbp~UEbcG>OpvgVS-d=WWs_=7)2>bD_XY~eYiOCwT0L9 zq8}%E#z1p(a}OXD6=OqFD7GfmybI^{g`9(($2ntQNo)AW1_{hOO7s8bZ#VHLu|-_k zPFM3{@(yfX&K&$4#yKNsMkmsY^*5rKik+=Q5wUM`xw~@Dzw~_yUw!Z}!0KlHd UCl*83r~m)}07*qoM6N<$f~Wdp>;M1& diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num3.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num3.png deleted file mode 100644 index 6f54c850f5aeb3b10c0c8c7fc2ff4f7abed361dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1676 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 XdL<4CY~@b$00000NkvXXu0mjfa?Y(` diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num6.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num6.png deleted file mode 100644 index ea88ceb94ea9b162632fb91bbba0d806ffaf0572..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1952 zcmV;R2VeM!P)y)8>gLQ%6WQFv5wZl#O+c9f#&FG%n#u&B zLBSEZgNNJU(C?w=+dh$V4z*e_&bK{$-}m0W_xD_W&+{InGcz-irFzLEOZc*aw}Q8V zw}M|XmxBICrP8_W)F6i_Au1LcOL=h;GRAiUw@DUb%2b%}1{;VIWEn)u&uRuc2>Bh- z3mFx_FUo6<#R#|^#0L_yZ{NQBn>TMZ_4oG=%!sbs+}w2Zdx(`s>nt{zYk4JGd*#)u zSM%cH;-cqMm`0<~GH|IWrOp#d|JEgCqeu&3H` zzk$E;jPKLt_NbU+b!|dILd2#`o8qYfAjdN@GD=RLK3#*?KFA1USQPI@3w)x1yv&;; zlGHJ0&^$+o8}rE&uWw*54!rqZ{+_@=!a91kvR7m4)NWyXV1sfzI*rXPw*Z{Yj57X zIRjqWDXc+)aMiGF_Pfm;KYcCh}v7XZjq&B z!^6X*Ov%vD5CQV=^YdH2W5#i)=jirlmsVIPplqOF>Bz{) zkd2LvDlIK70d1}XG%_+W(9_e?7n^*-FH^OF#aQ4X!E2w6B82@4ifBvLgFQK zy{}X%)g>h*MTLchKNJ@imz_CtrYtWn?6h;A?lxCf zS6}9i1%a0v3x7;L)Q;%_~-{2xO(X zBWpxcn`kV#rV-YhLYka8dGcf0SJw2TlFJ3HnaB$EZIB?)y7)H&+`j4GQWFq%8fYhE#3jke9 zMk7INHHrI}8*@ir)ti_!^4fiQ=TTv8$onI;)$0pUw+67 z8_kg21Y427JgKUxstXSfk8pH!bVfd=!l?(;qUZ7S{Rv8`Jcr_U7^&_y&KK9BqodZ{k(&0mhl5=oCLqo&YQBhH0^G%=(uxr<@FOUVkr*eQ5@WSB%YpOT~okhw} zaQP}>mo)Hq6{2E9&fz%9Yb$tPTFxv3tdtkZ+t$|BE~Lm-E^VK32ADGWTZ5=W${TwH z5?@|kUWtNYOnj6@YHA0|e}?|mycva=@>b3{)`7*2Q==1$a3HZ~vJ&3ySX81zjxCd# z3$JCvN~5{U`3U|hmBCy`*o#k{rpjBf<;9hrmh-sV{{8!-P<6@S=ADRhV&^VCIE;!; zX!BYAe}AN%3tmuwLSz9Umrt@A>X}5ItLy(m@PG9O8?)f&YE&j7MWZQ#Ta3TqNv;2@ mvx2vRw}Q8VUjo-30t^5}5C3SXOcKoi0000k;LBs diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num7.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num7.png deleted file mode 100644 index ce800ba429808e5fac3635b589dc4d41c17d86c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2051 zcmV+e2>kbnP)Ow&uoScUS4ov|+n^SPL0s{l1y1Tn&{Vg&zHP!6jzyFu5TelYBu?y7mDJxI8Z((a|>p5!F zsL{qOgaJn2V%}GJ{F_Ne4-+P-D7AXtBch~C!sb2te8lM~7j337Gc(f|yGuhugG#j4 z(4gos1zEC@pUd}wM8MnH5{VPzX zfK6{$oGbw^5yPP%XOM#LO?gv0kZVy<(VXz`@E}@r@7}#yA0MCZaeISvzegYNz|)-9 z5Tz$|#4tkMp8#L5VYlLg(pyu6&i^h;q83{lG8^#^vO z>~P@7?+y+Q{=%eItL;2~{P^D8yLV^vp7tpzDY0Q;VJqcwIVm7nzI?f)xw*M|)22-+ zFv4w`Tf27cTo`Akc!QRfmb>^SxvHv)6daPBot^IFu9fgI3vAcHdI?D#? zHI(x`Y)KU(xsZoL2>sWsTQ|W1gC@H$@cbukm4+CKVSyqD%9<&a%BHNWtP_5Ie$G>; zP7R5PiTSanrbby%P;fgbDJgpP?AhNvd-m+fv17+FWHOl+p7WkHYu18o+qV6@WXX~Q zN`v`aK9!o98bgYgm6es0mX=<#v9VDG2M2pW@p3~U zFX^Y83E)8`&w26U#i7FF`Sa(AStA=s`ycDg5N0MSm5RK5lc=q&O$~*j0|EkqpnO|s zXy`(XM$?s;nD{Gjq=KW##oF51G9)Bq&WaT)!VVukd>uS=QBhr8{U|>_|2F6@=EqE% zHZ3MCE$uqOoYF$FVZ(+(TGEqe85S^k?tyWVm z!!{~i#3m;v2a6D2!=!x|&r2CKhp%3}daf`@KzHWMnOh7(##9CZR2?Z43Ri@oV{B|} z1id(Y`gAGsoPdrbf5{#a=tX^feKWmtadGjWDuCXD(n#X%?d=Jf6bO4?V2R@D)vE;* ziARqf&6zlHVh}(%644ZL;lhPKwr}5lghO6qDD>t1)PFl)U*9oPrc8MabSF=qyvhjN z&diLe-)?Shp2+8)1i;J9%}u*;vAb z4<07ez!w#KG9%m|MnJrq)kWX&(a9hEB+zXkn6o4tbf&K&LV?)OAV` z-~o6tf$E6>vTz{%K}^@em^WF$Aq=iVnQT2gJg7uU9zJ|X>Ch#WO0}GJS(`U+&Y*iw zPfur|N8xC!hqto;flQR(96 zI##-c-%;AMT)uock4hh+AqlBLwcljq$dNusx7n?&t&QpF>2!YRu(GluT#&$qr>y^ z@_rL0Vf`a()~rdx?R^Hjx8vJzd#lS|o_fJTs6^Oe&hK^YZBS590NUost5&Uw1%Oq> z#l>yo7P^H?uO+vsUF;}Zc9yQEKneuFki&@izJ2>jcwH0kt$yo&2R)%_0}q5sZZ8jn z9`(gDsm*2MNcvJ%%jZo{#l`E6*{1o4H8d{Ha`bXkEkF)x6>MJj0?^=k?>KYC;b$_+}eU&#*eJnW= zta-l|oNDTU_yeOq@1Fnw diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num8.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_num8.png deleted file mode 100644 index 1a8ff94bf73aa7b846cabc12e331930218683136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1605 zcmV-L2Dx5tVF$r3`kZ!O~_E>*_Xf zM6!f#T~#}VVW!Wc&%b#)>u6^rjhH9-nRnjz`5(XcIp4wQ^?Jc&6`|k~i4THFS3&Ck#8^Y-@k-sR=x6+H=#aSqo|hjfMPeJ&bU@|J+BK<*Ap+E8!}bx@bC zd5QcvXQ`n)7ob+r+M@X=uIeuPb40#KKc$ay4dV25^BO@bEqNAf#I36Azwh9Re zLBaykksgyX*n3HdfCG(@819T3@B*+;NfYzN7GRskwkatoJ}xdUipt8$$E33Z_?`4n z>+5?1ikZ9OhkIT3cJ|guYiv$ONf*x1;}>FMc-p`oFN zwzjrw0|Ns~3WXww^wIsFlQ&5B_V)M+BcGj}{TVzh=pB&x`T1?ya7U1!g@uJ7D#s?5 zIwZ20m6i3KkB`p{ba5+?mX?+;a1qCRC=?eLcTl<8KjFS;p`EI#s$TfK9v>f%u`gI# zTia@DYa4^%GqkWyrxTGrAM@zO;)8<&{=GOb##104n3Rt3>zH-@-N7mD-wz1C{`^kEzvz! z3EM)U@T@r9ZftCPq}6IQ-rnBtp~VppDz|X1rl#frdEmaOp;fdZk?6=WKvu_C>JU0h!<@lU<>1R3Cc3S~#ldgJyDaauo7|GBq_7H(nqXi>;=nrbdbUuCdP-GM`A^IWjWx zHow@^)bvAPVPOxHyT;z$-Z6eYJw5$1vVzRW!;#LwS~gU=(4%B_c6N^F))ZQs=-&8U zsZ@G^N4n#9Gb7lS8xH#awT50JUJxfxSkUT{jx9!WqzfFr~f zHYuEwlas{AXJ{eOX~ z!Ob5*?Z1il!7!kCqg|do*oerDKivgk`}oYv%&!q_zmGbg8$;KKPU-FOX#8e=etsS_ zJo?(&+HdJlB%{vHFE1~zqOY%S7uR`!9+t>pYKmfOo0i7t^6gPV-@4{rrrKj1m|}pwkgKYr2P&4pRPv zt2D=**TKe;cKU<5y1GV)xy|EFbVWr)<)CwmYVKL5I*y21($uan4=q%v~LM9pN|7$E8bChPu^DkmSS=^c+rnP;lyJ{*yhwKZQK>oaclrfsT zVHsq9Owf~6bm#T(|64fo|LV--&E(DG&EzkE{3*Zy<>oq+#>v+C00000NkvXXu0mjf D@Kq#o7A|PuZ42mc& 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 TO`sLR00000NkvXXu0mjf*Ks`` diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_numpound.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_numpound.png deleted file mode 100644 index b2419d9abb1a6b27d54d58638ee7dec43c3cba92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 963 zcmV;!13dhRP)cZ6Qjb zR?$R^VX%>b#JH4*F~&GaOdME@CJqcHt_=qKEKnPm%NZbqTx1qv^V*3bI;?a-@WI2=ew_ZS(bIRIvR8}JnH1@Y6cpE!Qi0T zY;H=Y(>cz9hNDKFYP!YYaGaz?I2=xJty_9}dM@yWq*x1fwNAc)2{#f!pdIM+dcCLU z;o{=r7A7a1v?NI$ip|Zv$M0*61+sT zySuxiP$(3qrlvNrJ`Vh5@?wRL+Q?yphn0jZnM}Tx|8bPdWg>ruvp~paB#1nD+J&8^ zrKPutL}CM{?Qpx@lF#QmAB)9410;C5y)nDpo->(DY5HA0eVrChp4wF_KsA0DxIZ~L z`HD_PEaq=~Ts6#4Xp4ZR5K2zzT(xj8z0H*hYW&j%rF1*g;b1nX}kcF=^!E|*KP z*=zx<-vgh3pQ;UzwPtUrf7?Q#&>axFl+9*aA!25$)!InpXJ%%uD?doYId%=tufPXn z1A)NP>FMbh9+y}9 zDzSS23<5s(1Wk&~)tcau(B*+2yb*1R*ext9L@>ok?0S29Pf!e={tKoL0L@!m>t&%S zFSyky7MH~C#@gCi2Bl3Kauc`+T#d)$A31i5-JYRZpOGN?_CzhuFf=sO4k43pWlgeW zt$22{Id`#G%yXdkFt@oQGSz1dOS-gZ=PZ%X^6y%x#q*-MysR^Hpms-QF+lwMzcbL|HQqPb*)3 l*1xoZqNOYK1l^=7e$Tq*@? zsYGqGBu#bGUEc?9A&mv0B!S)Rz{kFM@6E8^%$u3Fvx2Vcj#@3EqlSx3-X?F8x5?K` zk;>hnAPE1cc#uVwwIVo*^mytewgaWy$FfwV0d638nBXoUNBG0`I<^D*YzI^;ggwZ$ zPEJlfOKJkm(WN! zM+5W7u=n@(Uqu^kTiJK5FnI?Pyf{BU{~F}h*492zJx1ta+<*=?_)z@!-rmlDdB>LI)ds;LB|+L0;rAj)1g5ls*rbk0k>nSnqn%OKz; zoQy`Jr)g)8=kxhJ_`BV1*TBHQi{<5I>;+#4c|PW{gdc?OEEmfDt`#6(PmdFGb946< zMHx|5Rn|1^Kp1y+cDA{wK;EOWv9a;>z&a5{O_pVKb#--iczF0ZsnUesW=L`nqE5fx z-w_A|&iv0AgV5XC+kKdAYip~6a{<8==`E+GyE8L0FDblJ*=*KZC=?`uoXh2!Y4*ga zsi~VjpRWbZnM~$qB9VAS5up>&z9~-kA3We_SEGv+WXn+rV zxs4^rBV)UiPNzSEARU2ks2=4!0BgDrI@sXDSzePB$m57=8X6kvTVG#)zq7ORjYAtB zH1)i;yCadv2yCfT>TN6*i}Ht!CBEuhypBT{1pc0HEV|u++{L!D>|0-rnXg2KSE_Py zdTZq9D&OMl7j1}!U1z&mWUtsYRyD|%E(84twu+Fi_U)~HM4LHoZ_V`M)Bb5;lefv& cR{1Ny0B8Cmg;M2e6951J07*qoM6N<$f<&#yaR2}S diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_return.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_return.png deleted file mode 100644 index 0c10f004adafdcb9c5c31f9bd6f1e0640225b03b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3380 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 diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_shift.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_shift.png deleted file mode 100644 index 5109b04717869cf5def3278b607388df1b8fb346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3217 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 D-ii9n diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_shift_lock.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/sym_keyboard_shift_lock.png deleted file mode 100644 index 244179c2def030160df47d4cf1a1b94bb0e498e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3188 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 B^}_%F diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/working.png b/src/java/KP2ASoftKeyboard2/java/res/drawable-mdpi/working.png deleted file mode 100644 index 4a930c52da3cd9ae05103b38463202db6ec6e80d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3367 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 H9V7k&Xw(f= diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key.xml deleted file mode 100644 index 45578e58..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key2.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key2.xml deleted file mode 100644 index bd745b76..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key2.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key3.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key3.xml deleted file mode 100644 index dbe82d5f..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key3.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_fulltrans.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_fulltrans.xml deleted file mode 100644 index bad2a931..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_fulltrans.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_gingerbread.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_gingerbread.xml deleted file mode 100644 index 4a113a8a..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_gingerbread.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_gingerbread_popup.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_gingerbread_popup.xml deleted file mode 100644 index 9b6d23be..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_gingerbread_popup.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_stone.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_stone.xml deleted file mode 100644 index a6040a04..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/btn_keyboard_key_stone.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/ic_suggest_scroll_background.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/ic_suggest_scroll_background.xml deleted file mode 100644 index 9d246e40..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/ic_suggest_scroll_background.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/src/java/KP2ASoftKeyboard2/java/res/drawable/keyboard_key_feedback.xml b/src/java/KP2ASoftKeyboard2/java/res/drawable/keyboard_key_feedback.xml deleted file mode 100644 index 159ba868..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/drawable/keyboard_key_feedback.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/bubble_text.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/bubble_text.xml deleted file mode 100644 index c3957b65..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/bubble_text.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/candidate_preview.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/candidate_preview.xml deleted file mode 100644 index fe2002d4..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/candidate_preview.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/candidates.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/candidates.xml deleted file mode 100644 index f30b817e..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/candidates.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/input_basic.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/input_basic.xml deleted file mode 100644 index 0176565a..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/input_basic.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/input_basic_highcontrast.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/input_basic_highcontrast.xml deleted file mode 100644 index b85eb2ba..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/input_basic_highcontrast.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/input_gingerbread.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/input_gingerbread.xml deleted file mode 100644 index 164fc0b7..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/input_gingerbread.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_bold.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_bold.xml deleted file mode 100644 index 1eac195c..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_bold.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_normal.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_normal.xml deleted file mode 100644 index 6669dfff..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_normal.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_popup.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_popup.xml deleted file mode 100644 index 7b876b66..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/input_stone_popup.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/key_preview.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/key_preview.xml deleted file mode 100644 index de03506a..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/key_preview.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/keyboard_popup.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/keyboard_popup.xml deleted file mode 100644 index ee997290..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/keyboard_popup.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/recognition_status.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/recognition_status.xml deleted file mode 100644 index 49af7736..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/recognition_status.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/voice_punctuation_hint.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/voice_punctuation_hint.xml deleted file mode 100644 index 629a7f2b..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/voice_punctuation_hint.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/layout/voice_swipe_hint.xml b/src/java/KP2ASoftKeyboard2/java/res/layout/voice_swipe_hint.xml deleted file mode 100644 index 4e8859a7..00000000 --- a/src/java/KP2ASoftKeyboard2/java/res/layout/voice_swipe_hint.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/java/KP2ASoftKeyboard2/java/res/raw/main.dict b/src/java/KP2ASoftKeyboard2/java/res/raw/main.dict deleted file mode 100644 index 472c23a22773bbc42b9929dc896993602836ed9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 841005 zcmYJccVN}k`S|bqW)L<6NFWdh0g{jqLPGW+PsrYTCnR^}=4NwmLI{dpaVze9TOE2xM zdG&-PgJP{1H%s6DYFgHR=ao&T+RfJck8_(HtpT4j9W!J6eN$7iXKAwR_m2d8e%XKC zKH2}msO*1ZQucqaSN8vXuG?4zKiMTT$18Jg@yR^=N?EfP}7}l+dJU3C*zL z#hMNV>9jp!oi!rXxvs!L%N_Uyf0tV$fs2FSe*N=yvAIUY_V`@DpBWJA-EpzLbBOhm zS8PFa&Y2Wj+LYKbr^VJ5><`=nrPrYPmMbs_mE)nd*9Oj?Y5T(BpU-Kz!J_4BYcycD z4Fpab3rtuuffKE5pacR#mP>54iq`~Qm4%SqN~+%)4D?w*dxK^I=g>L@$VE24*pBDNc}n%< zX`4Ubj2GKMs7LeHtqd<$>}!*4{l9A{~naK>-ChMM2Km2}qPRB|#TiP6@&jB+8`x<1P4G2d74Jp>QkgHo4~|Gku~R}$c1g%RK{F=!nTw$FqFX{N=2Y-= zz(odu@D9`OgMAYG84ddw#Na=-^Q#-11b+?pAL1}!@b{J{kY>382}m3=f7FB&PM~(k z64VZfD95crVtGvU2P~W_Bw+^KL)4?ZC>4?kg^)am>d4oieMp7nk&s&3Okg)ytwBiX z0B#Sm1r))fL`FxHhz}wgtuYgFoccsBe{m=ta)yGPV*~M01iBSU*-*L`1BBcJj7^2R z({cv3DL3{1kcYL&Fkm51GqY3l=>?VR6*RMH^E)<>{{-!C@$it(&t`}x;w9u?kSn#h zO{jI6S3*O0@-m*G^AI3(F>;2k@B*1RBB9Z`ee>Ews;Bcg5GXo(&MhcrO@&2kNn`!Sglf`$7aZ!xiKSb5Go z=H#5kVAOy=XC*R>Yx8<-j-xr32|gzU>(5EIre;mBIf&2zNCg7bz-AV)5yVQ|XO06A z{q&qjB$(sDt>=t;1CbEgfsk|dBGR1w1ma8r=bTfO>{$wUo_1cWZC7BdRQ!65`v2Cs zelzEV_s2}w+%tU=cC%CFX1itX1CuiMOOMR`aa885v&+0%j6a7}Y|aNb$eedDd5`}1 zljSyZK5s$X4*I`^_%QL|m>QF?=@ALL-XBN_ z_DWcqKX8s)!t(4AR*QMUve5Dxyeh0n<70cggjGT@+;T`*6CA_Z5k3kBxPK-vLgx@9 z#sC<^qG5i1L^A$ijDOf=K@d56z%OCvy9ki}KrHmyCIdOjggVYz+q&&3m$V@kYsKr0c>vHj6S>IQWoqBILFM~eO*w#p#y+JgsQoxLjFP& zwz&fRJ~Q{+C_uxN&t;a!%)Mq8kJ{8|O=6rGq6Ikj@(^PiFms>q?UA|9;v#dO0cIm6 zo%;&(-p7I?KAHPA2wQE?`U~9thTLr!A;B7yx&Kx&|H1J`u)@4xCkWjRnYRFkn70(} z^CAG4w;G~0Ms(grMs(h0BF4P!gmwB&F z$hvEneme>o~*U_R0Je5U{Y^{8(V(P^_DT zW&Tzlvwo64yUfo*ocZ~vR{&@lmY-ka56qzS{H9^Xb^b00JNzuCu0R0(^F0jb{87zJ z=1=(p=}6Ox>F1x29)x8M0(>P%H=)4%^I0nAU%C&nO^SFO+$#`ko6pR@Gnv-#xl=O# zt!cAh!MS!>&@m4SHOzKYrpzI|?lbL!_e6vB2qGS+Ie1!XXQ`(46a*1)9_>NI;I06fo6t%7RR5 zIM6}lSWu`k6oKl2+AcR|XS$GoWTX;qcK(^o!S$GYD_mWcc#{W{Ec^v{kNN{W_`(!ie(eN)m(qC>*IM{H2ZmYr{H&Mb0dISN{u4TNxdLfp zBpASbrf^@{l?{pwFg^=^>?bL=Gn>7#Xf6a6ErI}&%A(ag6yrRL);FTbqC^04A=koq z_{^frEU08abWtHnlpy4y$`YDlLqK&-nMIzB)8c8}UTvS@|mX5Ld7KW0WP`s>ZO;sukk==*qC95f({=cph*snfRd z*MdtdUVsS}FU3m|f_aJ`GmCE9GK_6DqbN(vl$*>cq@T{Fr&kUOZsQ@zsE4Vel#i*ZePsKV5E?TxPS&lIwxK*_vR1 zq5Cj!nr>S*hgtIIu@h!#QqvshGS^2C@$ZQB4I=&rseYW0r8>2iyoW)Se2iBu`Rf#@ zT`I>{$Z>SY8EAl(1|jCsFl*Q>U1S4@7$!?2L0q~9@TKb!bZNY1ycSb_X_i}-3ZAZA z`B17us_o2eyGNGRV7jG^ir$77SR`>v`-nnI2Wj4|2%{jxs2V}Q9PrE1^G0RqHP~e7 zY0B>)UBgP_Vl1%q3Tq(Xvbh7hrex_M*w?76ciX^x5P9EFu^#IoGAw--)E6}3x^Muv zX#T$)t817F*L-lHb6 zI()`NA9JEZqF4D$^zmM=tUI(;sl(4e z>ek@lz-=QY{MrjAP58emU9#+17V2vp68^xjguewo0X_V4(7sTPW?aIb#Z$wd(K(fG z?KReR1V zae!s*)|4!xQlSh`XM%d-S@LWFEnl{T9|B?;F@<`p1`UCs5FUEq#CTl{L zCnE6j6db#i6nc3+57pMVS-x``mdne5pH$EWvV!HU7-M;N3qzbrpA(g%g8XLrlp8+O zfR+LVQI$BsJA*34u~EVHgndg%#Zp zcQGC-D#(M|^+%&3wdVqxN&r~VKRb%Fd#y1dh+9_drvUG%FrU<^27g6^7|TcGLW6Hu$yWRqV|RHaB8WsgVgZ)Wv5r^@NSu#YxkVx<6iCFC)*gwtPJi8uaV`CEmoj4g4;;h( zA>y~;Q2)XnC{TZ$l!)Ieqn8x!b)rJVJ9jFF5B2%aiuXBqF-rYw!coMJZm&d!;GzjG zrr4N7&a*s$s5vxlb(_e+v;8LWD`VqjWoEEPBE@MUTijrDxFwQ0 zmqeDLdSvyTguO^DkLXgvnj7d~(nh-eH)%;fCVhbcSDsaw(5#$bZ_HeV>kM24t~rRk@>C1fX9dxG8IZq%$QwB2${Sdm?rTg|1%If zg_6XoQX2gGWYsh?sTZ=f=(0-pzpHdlwTji)ta9j#UNxjz`(@QQ=~xUTy0rf|%(Ci4 z47BQ0Mb!L9$Du7~)U3LeqFCwCWil1~TP!CPKG^*N|~^=n*w)#E}=vg$b=|9CVf zS@j1Z$*R|N2dt#>LXqIxo9z;Hsav8Bc_r$<7;8dS2eaLdntR%yL=DDE)VXwA7|cV| zghZu|N>t^5M0KG@)H-XzL~S}AkEF&ErTb5vs8PB~MdcBFqS*gSR4I1tV4o1x1Sd6r z5q}v9)2H1ol9Ab`QQMS6?ScL&*dmJj*F>E-2u%_v6LnTUzcf|ufErafiMop1IO>MW zXu6gvQPh2BjhLv{rd@#%9E~U%^%NYRN354HOwt>Nj@9lHvBK&h z9Cs@bVfCJ$m+^5~eFDqn>XY%4)n^`69U(5naH}sv?A2EzWdp;o`j9@|Zn@3sduB6H z%OR^DQlgI^)gur`o^$}1_r0R zsI|sAfw3J0axQk;VeOVR;ntL_(WGO|8f%itG-KApk@f_Vk$uhfF=3 z_ROw3YpS78Z*d+0U^ph7U?f^F>zaO~T;oQEHAC=RLrFED^_xg*(5%^i4(s8XGiiQ+ z{->#sjl$xJF|+2HHewXqci~iPZlUuo?3#RZm%rv-=<6``~&Dvf^S zZc5hOfH9))gVLKy;@8Ue@dJoIP1AF*e^nX&fu(XMa_m25aB2dtZkg#bs*r{E_5unAfT0s3hcF({8!fQw!oUEuxZxrFSiC|?Eyw( z?P-k5+Jnfhxx-rB|E#^jvYWNnX;!FH+NPB5RE`e}L+UZ4+?el{S z``SN(`yn7-1JbT*JHMI#vi5W3_9b4mRmIcuADd;DbvATgH-|a5ZUG|_4vBTqJfySv z$<{6sCbKSqRY=w)<1=l3qMHvVcA0fMbX8neOypQs!R*%1xULc6>)IHcbv@m|JhL}l zH-T*+IfGlxc2B{(f%v`dgbY;6V1Zb7);L)dFz4Yg>n_n_w{_R(;Ea&<`dKJP%(^?q zRknxxCdSt6m6#<#@c7-aY$qV}V;WDLlHAarP@o37x*7FWUxCc|jJdg;HIJ_a|=`7mbw;|mNyU~X+XX%c4U0J@( zTC1r>%qOTrkHmcCGV2@cD#>?al%?0tXR(`dBX8rOyh^Jb1Ssx9V z^|9!>J{}#{Z(+#RrxnqgLcm#HNK-MSvuu8|zQ*?d<#}eky*OUhvob`vWc~4qK7dN= zhxMNc#9zPX=p<1(@I4JW47;p92r*r?EhTvM$RssPx>&W>--&3Wx;X^umq0mfQvnZ~ z@W&M38O{CNX8rHmkWA;vda7Y;G?88FAL~E1#sZ1dch-ODkoD9);lTnMJZ@s=|JE(B zoN#Oyw3|&*9Xueh(S8$K*b*MWiY;L@ zV=2v1vG!8~1)dy0V!JJ;#OnShFNCLkP`J%5v9GvI>{od{*{}=4#GYWAF|lXd>y_9G zh@i3OKtQvb*h^WdW3Sbd$w3o)vsS}nZF?m4mq_>&y2d_uBOBFNqZKW}l~OvQkS}UF z9cvAn*thzLxv_tO)IXSfDh~C}*?N3;@TA!gymOyyh;zw?^fB4cKoHGw%Z4RbBANol zhEk&;_JrO_&X? zSwn?6Wy8TSv*Ek|?7ut4FB>^A-FUIbY$cBI50)_rSA|tWkSGdiF$AS8to)K(#3JIH!cI#2hhF5tmQIHQ2PV=7)n*R{Y z*v*0T^>!qS#=sjHpp8jrurU;^H!dcYLve(VfCN$4l5J+5ZS3De4BR-*#(+E=#N+7m!E3Ktr%frG zLci92+LgljKT`no+7YwyL0w5V-ee8R#@m$K-G01e<9*#U4C^+aH!b*?H9It)*|h4YpED}4 zSbS4FTZty_5~VX|HDD- zXqJ{u`;|27Um#)GsBC&`(!@W1jMF6i%`sv&cV9hWHh;unZ=%a>5SokocN$ zi9c^b;_sp)61VEE5s51qkhpVwChi8V1jHShl(@sLfM=h?y)q$j9}Y|0e{6#i7weR` zZI)f);_>~sElApwgCt}gKQ?*g|KjF&fBIR*8K_%`QIO?I1oxdS%z1wm~+?UadlnBUJDLl`y=dveHZF0RBgMT7dJ!Qo?$65Pa|><0RI$F%Wj9;f^!`hH zu!Uvj>aRr>w`|ZLevQk-Z*^H76CZmTqQAah12@l!Z}&fIwFeOF}5H^N>LEfCTP;NWyY_Ghr3>NLY(j z8UqsIvFm32v5o1Ukgcf%qzhPKz0gdkW^N~FO-{8+XaTs5jdTKq?*#Ingwtm@p>>m& z`b>f^87n0mOX~@!tabE+lYx)M>Ivu5b1@I9%P}g+H5SU;h!A-y+#SmE9#l@aA8Hy2 z6CT%po>HhI7W%%R(!Bwdzp!#8d;rN$Sp0NDq9+G7+ptOaH|uB-L1}Y{S2k~B$2lUK zb4aB&FT2!dHgB;r{Ta7w0aypX24vKt`er@<)RkYCgv}W|^rH9XV(Mp`tB7fJ#5*+D z-0YXl?erE}gMrKtrm>$|-sZbcfd2jDt(#wT$>#Tz`$;^UXP3>F>q#Yy4|coQcIYTT zMQzY-bI9f!JhJ(ARNQsx$n7{ZmDaFHT5BO(Qk<^iK9jVClnUxjNy^a9JjLcul1i*8Nh1F- zN%aJ>fG=oJlKMe>7ph+{Ig1mxWaTqJ<1tM9}D=Nub zv9#%NeA37J@R^}_Nz(eKW@kxXD~a!U%3UxMIAzjo+2$ISEtMX#<-AV6+445Ki{#KT zNnYcW|(v$ z!u;Q|J6^VMIue{)9EUP-WCeGTdv;)om)B50pw+7 zR}=eLJafyh=zF0;kEp@mZrB#izBv*1%a&($P#&sgFkT(Wi3jM-Y>ObGW(OY#v{Acg_@$O7mE zRfzGIRj?f^rR-u*Qk+~IOwlrD zDh5c|O`uAdKEz`hH||m{!KYI`42+m<3r`uBZCr`lcBV5>!t6;o1fM7T0j^7>ynyGW z`~t}P^uoo>>Iz(rFwfRPQd5$YS1@AAn-(H#{-bGn3g-aqLruyTr!jr0 z&8Peq+x^5~`%z|FFvGu1>wn>Finnc;G22pH$kK-_PKRvsv9)yrk;Jsr)uR4 zUzKg=679EX{blsS=n~v5UoD1q@Eb& zH`_ixYtp1f?siJ*=4naYX_wRnSD+|fQrT;z?jksD`%=08TmShF3{sELTSxr^k{V_~ zaUp>sRnK_YA7CdaYyCTQQ#CDmE|t0!#MJE=IW^lFG^snN0J4C#-IA7Wm$W>uN$Z}TkhEuk{XAK= zuL1WWl1B)ql{h3#Pdw5pF-;m7ePAz~)7mk`2x~~1pJRS{_d6x+RF|Y(JS}MtTON}( z>oyrZ z>?ksv%8mCQ%=T+9Ajoq_z5Q;8-3!l0V5M7#?GM7r539{8U{bo)nHD(2@je*vye&h5JX#c&LkzGO_&+32&0PtO>Ube7w6);NK7RWa;Fl4nlZIucT9TC+lJ3SO(%HXp zw8dgFF6sMVuBRU9?84LyfH^~9&QX3BYRBbibVMCpAJT7T=}P}4{RT$Ve6q|@KWAzOlHO!~h$u+gi98Ig9$SgmZB|C0U_Qm0^`j0Izo zv5ZusNK5A$)m%&=k7Vd2>5NTCl#!&G+ia5oZhG2mQ<6~#C5;v3M2(EfbbhG|W;9t& zlhMK1I8bEZT7kw_xz3(3b?&5O{K7ApNsMX$rl%m&8I1e|aMK!9#yPOARw9?8U&d9a zk#Rj*WgNnpGwx6?k7gEUJbKPdfS8x@6Gh)W+#(o}jF$!^<9&esrTIq2>x%w1;Jp@t zexd??R*Qi%zQ9}@O9!HGv;V4G3}0rLTQb*?5M+jr^DBa8oLDkf^P`C@Co^8x^-2Ed z-3G19%qqsQa6~e9(xU5OW;q&A(%=@k+hh)M$0PH}3CaAB*lL%||M(>HM-Ch__Z?5v z@R`hu`==%IF0{)$f!URLGQ;cy<)BhJAFkyjdzshsa9Bk_!b8|)7vy^wjm&!$=Rs@K zWInbT;3%9U^AEJY3gvebfgB+oX1;~H7115ZjL7^9TK`f)U(oGgnENJYcZA*0%L>we z!noR*6&^V%S*pJ-;I%{xQiqbwaXkwgx3D18W@QQf*c#U|z`@!n9dc zN~Rv4$!bBLEi~)>w=6runKfYP$p$3G;jiwVwHFI#?MLCP1Ms4PX|fKgRd>*G8MvH% zGU>p$9t=tqfsC+WllAVAx)@S`XJV&qBaqc8p-?IK>{h&^&6~pXMm}G>Eo9uO?ps@aA<5Sr;5Oz^7 zJAr4-U9yvBrDx)^H_b-UY<;^Ro3e$;u5>9t9SUVPqgr+cq+!i`GTH9g`-^y5w$CTo z7oltRUWXD6=#iscvQNROvd>~3N%na-XdBZroAqC^wf@sdYL~;X*j;j{LFrCr;P$Ht0z#^@cARFX9n+o0K@walKmMHCF+lVQMGW}FxfFa$tkss zO3vI7$yvkjJCpN?tKw$!L{F z7Atv;Ky6f{F6Mj`4{ag9Ow9!P89acvYms*$cF#M3sg`#tM(3tS7naF83oW!7(ZEc} zBgxIXj)p8KsOEWxYl5Kj0IVOTTd%m4GLiF)iuOz{LzMR%mdg7B9a~kHw^W$-6q^(; z@ADbSkHOXRzV=8ySAir?-+#>ekze^i7OOe5@)sa>{!+XqKf)R``D>2mK;x3H`sXLb zLd@dYOMV_m+`8S$UATN+e#t*>MDhvw`9=$r<0ik=hdsHTpKqsgFWTgDfg+!)5Ug$N zz$Ry-D~guj+4%?bRiOMc^_Cg&9mC{bmJ8|w)R9^!#=`DK73)?kov-hIM1(`l6!0Syxehf`IISNV{zJe-3 zYC(hMGg0_xfqh&GPNnZW;%~uFBk@;T_fQF^aX-V}aCEK}X#UG?$`l;b6hiBZ1zP{x zs6VdZM+sA*;1+923hrQ#3hq&c_iN|FD#R07$_`g4xd|%;FDjweytH*D; zG;f=b9Yu(@LkrY9NCeD|M(xO2IA(U7%_&3CCq5~?+ioiEId892ee9QNyHjeO7?s-Z z+@@i{luH^{@0P~q327Xel*Y^Exy+7VQw$XRgu8Kekv)DRpZKSwsAXJ=E_O@NF9xLO z<#;LjfPlE;c?x@8DSUoh3jgAh!mqd{wBwHl#-#8di3XR$cYHGZ`FKUEFvdqnon*p;zS*)%;Z|&1sD>z1 z$0#hoWm}kDg;hN8UbGa}174zC9sJPbs?fbp3cU?>2?U>8_`c~>}F3u{UWf2EQ?q-41NBZW`t;}IpGO)uNH z(FFJ(Rm}Gl@e{gYaE!u#*!fkhP2Uo}3V+a2N&#}oJh#Xq9!^6)S;h}5bkNAQ6DVdf z2I=u4+?EtpD)G_jv`vZ>I7M`!mYvofk#fdfYBg#~6Vry5Jw>{;&8|*e#-A32L}NfR zMoS}S6Bal5r9nS2FLx9XON*k%q-g!56lruT zn!69)oYWMpuuIV@_)_y?72;motjJt>#Eoje$_6W6v#FWcY@&!9Q;JkU?q8as29lq^ zHpOW(oE3Sf`xlKd#I5WGFhY?Zikbr!QU5SS2Q>BH=kb}pEGopWdOOrU&Hc9u-Z&ZcBe7ot^jNm5?%tLmc4gw@S=Ga z-P=LTqF3nA=(JPcf6#=&X4z$DB^-B>|FLcI$xgiry|c%HFjqZz8-W-#Z$frnxJQap zJW}j+O7RiDl$<&$C3jCsY0zF%+EP3&rK7`AdI9zGo!3F~0|;+5*1Us+CG z`iAOHUMY^G5>Tw?f5m$LuXqtQEna4E4G8^;x&J1`>$OSW&@N7boP}P+xU>}KFmH;B z-KN;l3bEoE;CUU(6gOSShDeb9OsYZXtEP8FXxYKk9lS%aqd zv^|_g6<3sAQ=WFWaT0 z4-YARdrV5=RkshUDJlLFrYUB(P!gfg|FW?DcPfR}ze}{{TB7%#N){l0Nw~&{Jt$YQ zmdp+oC3^nfK$)S0^Is`R#S|r(`b(X;L?BjDs^Il*Q_|6@ZL{ZpSRr~gtVxLr|124* zVVy7W1IT*?resDFWsO%Q2OzJfDkW#B4CgTxB^NVqO0Jy*_C}x@FvLy(ZwGL@4GkZJ z&>vNdN3CHgc~WKht!nan)#N3m`8uFO+VnnCvE(lRe9!2!@|S$6(Epz0jTAr4hF$!v zbjggAu5(MNUcxHnBA_Wr-#7d$8jlZpOUhZ$u+%!5+Xy{g45_+>5#HIq#OfdIkByam{}I* zHf068J5g4GbCsoxNm&k-Da)8fk_yyvqtm1s$!E%{`e{rc2$VHj>Nxz+-Flhs3Caer zKKHW9#_)l%X{VHF?yrT@vH%*ZQ&S{1W#{zrtAU8ZDS?z-sr}bsh_ailNeW$hYjh@H zBaJWn&A60%?56w%CRF*?A;|tFI(#x9<%F+tPT0zwDuBlSvu7xnA;(`Cy0U*D$64Ti zqjLOYm+~N}PO}!4&(*gM%axd3$&;t8#zCn#MG!@9_`%8%bCu6!KT<)G zU@=np3O#$Q(EH!fL3DAwhhkwxvqJ0yf}FO3^IxgZI{>H_T34NZT_gK_~cfnRF?Wo zgmEogO88I!D z`Z47)DM8#Ycyv^7R3!{Msc|VIxwth62O5R3$RCE1!Ye zvj{?|TPk1vIeDk?ZI$%{LS&`ZKPo>{4Zm!GswN+m-{bX_Kk?dBI= zaIfMm58b+By!8xLRUA*;ewL~f)|4tu>1;umyUcB>MybqH>8l=9)%p)*OjFh7QuiN_ zDt!&Kim7O-yn2R`LVjK~(}8=sc<)KKd}C5Y{5Msn>&5J8q~Pf3DN^ zn=wkHQm1BUs_xU3RZ|K*q)CDMQ!3OE#e0EPi$7hytKP;aN7ECK{(1}Hae7KL`>o#U zkm^#mR5L@Xds!i>=h>xt9n-3M`EGu#hOR@8wnrF>5mUXX9U-a{5l-(0RcG;#2W=`D zrn+btc5Y;=*7{#{y)|sATSsXd$1ikf!^v)|hi~yq%>|*bKHv|W=aw3(&^7VnQZq3V zsAZp0ea)y;-#Q@GFZlztPO1KGL~7;$HXqwm-*h=-^kp~RFaq?K%m{Yd)eo^0R{sVq zo>v)+)gd(=2-mO@NX-t$qo!mplGIQYFT;mw8lhCd za#7RE7eH{i8mBG{96(FW2*XGSk(wz+wq~DF(fV)A$>>&dhSEC+2&cARs_<9oKi69j zKcon^6SQmY^GeNwm{#lZHIG_+w}iP@^W0UFQu_g$iW<&7IMk_qgX(O}C;Z^9LhVyT zpqjrsr8Y;AzG7{u`IdX9wbo4l%(LR9HWU$C*`L=&0=3#NwS>sP1#qrqAv3jc6G&2< zgl3#+nA!{t2c1Y>tJTZeVn(>O)&{1g-+FXj+lCIc-8@;WAGO}f-BSB2j8sd}zV;fW zxc3TnAhjp+c)A*ACU7ho)}GDKQjM#+PwzZ!rz!w%`eocFhZNk*q_PVA1dmOE9 z{kW<7ws%D8nokULh3Y9 z)}4iI>&_pi)>?s_uhQ1=aXhNBvjozCZ%a`4X7*bw9BJ!L2^bEA{C#)Q69l`lJa4;S5@$ z@S6G!7)am!+z-wUWU1fAgWg@J*ZjYp{J*|N_d@lW4ke&hB=l{x_MQe|{f-h>?CRZM zr!q+OW0<3U@G4)UD`C9$6NTw0H{uLChe-rKN-;2`cj{#P5*Z&O}3mBF9e_M7o zul&&OUo-^4wqf@BA9MJzdCW9icp?cIJztKRhVL^d)KQ-a4;nNLS*N|vv>}cO0 zJm`h9hEfP?{IN0L8=5PXs2;X9^wM6a)CVlPGz>GM4ZEW;YXe7`4QC)*1M}ZBoDwsu z4!_RTR4|PF5>(%jOxh{ncwG*;qVI(2x9#mycU zh!{dyb}IuUH}VwoxN1h%`DZyJ;NM zAZWvAjZ=W1L#eRw*iPjdP;@4-H0u2q#59c;>DDNQO-Um!?lm6qN#h#|bQonCf6-2q zYJ3Db+R^8&-aRZvs*^e$7Lc712wTmHD&sxNvBcM7M!gq?Jme`2GNwq zhMbI@g8aAYMC@$>I)Etnppc;Jz;*GwMUv*|E1|Ld@Vw4)32}eo95vb!dBC(aQuE+ znsEltOn|QkHM4VW)&oAi_t^BVk3_5K(>?Lh^lxiWn*OE&{?nRZlyv`spg$t$5Nw*~ zV3+0vxN7rKAe$qI0qj?r*RtL>$GfFD0}1rQF4CL|E^mBDbHUH4)|50;|1`}tSqjbT zz0JCWHIt=CvleAy@RBIS($)z??bHuX44UTsR}i>H5c&*+zT1M%IZEfEUHDh?)zG>g z%yz{(q_l2_29Cyc>tWOU*#j)iW9Na4{i!Hmfgy4@Y^R*hNR%uxdq6(bHUoXAc-XY`P}FOotlM%wz%Qd7b;FiHuy-r=D1_5++Hj(7 z%khKKaw`^ZIf;1La&{4beEW!duLySqz&8>8TCNjhhypEIMYxlpYWbx#HoMPkd06qD zrYhBP1iV;f@WL!4EpI5K?tfZ7ii5&tYr?erZHT$k!neOj`&zei<+n9t*e9(iTp1+d zINj2^f{s|cF%GM>t}S%w;T08mJvSVa)+C6>p|E;@XhS~6Xf5k>N^2EOS`kd6Ow!tn zWm-Edw`twgPJ0Q_tJQ<7t-DE9TlMbuEVh3CCxdZqJ;@q1t!HEcs+ApU(H?1i!7FV? zT+;sTfONd+l+MU8(^bvOk&gE~;*6d!&eQkL7}w&dDRC_uHLlv;A#we2THL{C*!uRk zv>mid+s$n5TmO2KPug1i(&nea)XKfrV@ITommS-ZfKoZyY|QGmu(M&U@u`gsblX~O zSF7*C5N+|J`dJb!lk<>H#f|+-U@BhP^!5|`JZUSnrlgJipJ{7IrcL*kZF+3m=Cng` zi0McHtXzre`8Ux*+V(QTxZBjG@vrTaqYGy^hHE=td)fb)wyU~G&DySqpypIV%jsf1lE3~YeL$eMCUf%glj*BDPouQwWHF$ zMUlQyo&WD9NVk#bp6oO2izeNsJxXt1Ipd{0f*xIznk|R4Z$PYe_P^xd&`8DoBDulc zUWyUC((VCb0?V}5oyuk$>39>Oy^DS)jN1EZ+ z;{pp3=M=$H(~0&=0p&HY0AG=9zfrqx>t)im{|b>1?=fpi+8+Y8l|Qw1`)?V#_CG-D zEyaEfZ0*vIZMJ`Yy;nMpo05(rd<(S$S{;eU`AtXW6t9#eONSp>IzkD59rLYW)3Nk8 zR5;cx9efk2V?B~@gJ4G-1ht06sCVejFpC;vN8yBYbR&NUAH(RV!7Rjn)6rDLsCB60 zYckTI@BeqWS&=*Rl0=8T|GSmZ?AQyuzW>v4%A|Ch%W!m@buKu%N$I#qaV}S4*B-Dz z`xY28_#JniMPTf>ABcyTYh&o$@i;3_$J07geCkv>Ua;Jz13_yBn|02UMbZ;=^(Dq*}0eFC#dvUcIo8%uhQwUhNW|4 zwh7EBMDN_klg^+Rg3ly*9iSJ0`#=*u*Lf+Lc3uasn=qJu_n=e1|Im3ClcV!ql+R$4 z+Nl%MruEOx-$E#ggN@F&X<@}5gxWtC>&_3y>Cw+Fb$*7$hm`iel=lCj&@s@~1iLE) z+FkRY-L)9nnpk$Nv^=J3?EuJn($y7jvzx9|-XiMCwvBLM45tRV0J>c}*?o7FAC*bE zI-KHg?iR=B;sNR6rGxGd?9#h?M0$Vkm0c%|N?)#1`mH_E|CLMZ*&eY|tg~O~7W;4f zVt;vD980Ifk-+@w;$mm_qABU7`qX_2s&w6PDIbCD;_RR6&|NPB@h#5R^)#Yu{MRi+ zm&X4+=-BlJI(B_P*C*)6NxXFZRdxJ_O8qZnjl=cye5!k1zU7qeP@u}ygv^8PW!9+a zUNsSHmu_;Q?kdI+5!h--x4LfkcC_x!#yz`tOfx5T0mu3usAJ^2oB6ng?!x^@)7^tK zJq&fX8;9#2huiV`Zc_K8;_lOLJL-2I`F@?v=8^7m_nPi!^-EXX7pWANQ)lbu1Jd0O zg@gQra=$~l-=h>b{|)Q_mpYt|R`)Y-iozP*uK@7|*3efoy5FHSoJ0EVf7_*p?5pQf zuk^-GNpCOTpVDjdJriTn!^e0`PuSV0+q2RwJ?uYwJh%*Jd_C(O(xX=kdUO}rlZ4nk zspm7jdvvi1$HYCwbe3bhWK7&sqo9pQ+B5t8E94vYnI5M`BF!s$H2&%9LOuKV?nck? zh*_#!PNVBeMLnoo&Q~s%)`1fXcrrt7?$-QA4`X^Bw4n2tmKuA0!!q3S zJQ-%s>ng>|3~w5%%NP{jQ%v3ev{|V4H--MEs{8FQ>h{jz=DS;Zqp-?ar0!jS5WPzg zqBjEjI+2gp_oa6Oau7GAcMIXPH&?(c0#G+&ybQikG0POQS}}=%v!{H$djCB^`y9y7 z>p}Y7(b=5{g@WFFwBL;&y@7hN>|XYPy|-&zg22UayagNdUU>%2bu!Fuv_=9&P}_k( zwP@ITAIkLpT19(I8T>|>|ITs-dU2WFx29y*R_0ozcJZo_>HU)6)%)$Z?BWfVT`@>~ z1|AKoUB`^cu6eN96?!@*;$k|RYoFP*d>F=DC)>4#RIvARl4nqB9g z=$5`Ye(8$~2K;&;|HCpvTM+BsuDkZguGhf)My0*)GzM?iQv^96e+S{0FwmgNqjx|Y zSgF!-n_X{L;h?)dq4_U}r}^WqzcU$keT7yQfUzp(Pju-g+;n~JTYw|=Mew3PUn~~j z)xEy8bQhsFSNo+eiSg~*hK2ev?abxFLPVLO7KP(03XgByN4&81B2?E`5iw3*UI`yV?zCze=X} zA6;mfjm&-bTEIN05Z}Zi%D~|=@0lo-+OM;_s=-`^p;oO#|rfqh59>C*%04; zG;H+!0NE&FLI0w0>8EPle>$N3%WMKcItm(XWwt^ z19{AHyMJ8lXVQKVeqle3WsfDx*bnI5L4ySqcw;|L4Vc0Z<>*P2UF_GXAUCTZhq1r? zZY*cl`EUO<>f0Z02Ha*%i2Zkrm7O~Q`Z^&z-X0YD*BnaP_59cVCq?*75x!LUla<`} ziuEIFw<8E)9bpi5EVL%Mr!s0BtGVUiSO;h%pbp*>XXZP^L2@sSG$e9lLD8X$jH5^& zHU2sD;<7`Ndxu_%a&#fDg8)iCpS|6Ge^Y1t1gb0F|^~t zed4$j`?IEq<0>rTxPcL(OvfwRz}`j9?6?=tb397ab{xS_Q9f}z4T#QQhpzvTENqTH z{=7LKG>%UWkWM(h2L8V@ff}bcmxHE<5crjoE@v26`VP2r$N;+{$ro*H*rN=G46@S-x?W>6UOad8V^rlKJQCL7Z`MYQf9ts9~-UI4`4w&-2qRap{|f&g+4=A7Q6`#(B8rXjFFo5@_8cIQ2aW z=M$Pnlwua=vq5g-e6s_-?|}B@Y*6FJhs-DEr`+2T=iiuT+iX+f8@XJ zaE0nW^DX^4oT@Y`u9cSExYmv{CNAE8)OhAfvN;2eed0oY+(2p2kCzr&EO=jo48bUpvKY0LY}P}e8;r0cJ$ zA}O)B{>3=9K;XXsxQ{{MYACtqo=;5(znEBidgdpLL83}sC1k)fOs89F>5!!?sKeAbu@-!Lr0pZjEl z@8gcF;MHZUK6fh7P8M0C+X?Kn`$%d>ojX8)KBB>QBb4E6(Q4AOwk|ABn$ zHn1}nSQ~#a+@c=f7if6;Lc(QQOf#XgA|B4wi@Om`V zdne7n*%f=u!1)zNt6Q2v3|s=ef*_|1+yX;BZ#M9v^1Fj^9JmMX8+e#3b>K;cKJut{ z4E)y80oNoLVYH3@w^iB?v;z|i{2eN!4>G{{54&&|>$l5zf+$Sr%>uPZ5zgUR0uRp$ z&^=N5YaK?&;hiFn-qG+RTZ6{4eG9P4z>}{CqzB^BxNA}W^7NkQHl9bTK=}K(3@#1v z8;|c;zJWg?9!lpPc61)q!ZWQ{#}VH=2TH-!3kRO_K)t*J5j}eUlP~fH+F4BbPZw-% zC4i{wdwxa#uPqC!MgB1J+FGG|%h+jl&9KJPpjaEzf7|q}zTB0mKNSbBvK8!#3YZdV^ymjy?UDeAK z{)JKP(esbNHwkayD&&XQXz;T=;?>WW41RfRuwA^AgSy?~jr59lHH&~ZjNKdSr+1M9 z<-N-=wO&%JXDGZHB6mX7tIM-DMJt!yEG-UAikD0xkVR3&+d>S1-VDgxyzyRwUA&w^ zdbRT90d1fj33n(t>R-k?rRTz&mxz~_GR1ommhhgggw=sl$K z%NFDj?*p))zBe>qaUM~eC#Q*9-WO(Hv-7@;*qUZ}-$3k6{MP#cL+;h{FE8i+;{8HZ z`I_a&`@Q8h-k*fe=nSzB(j-K0XbvsGtV1g>+>o9f4RIG*hIkuLhBh;9jb0hz`|nh; z!C>tkDznSbg@7Hh>}IHjQ&Kb3>FEjM^5cJw$qTjBGWrscVr9+0k#=3nNVMy=43~~S638iF8QPm`jo>DTQLI>cbHpMZ5A%B4@Lm)i z?qhp0Jg#*bKHusy!^0Z^iB>|B2<2v6hW9I-1E@QE8httuhA-yaZTNCa6A>6)gBR!i zKbp=vAnK#}|M{RXruUd;VoWjB=SelqWHf4ek1-}O@qiOh?hcMSnka~hh>D5@P*G8_ zVK3Nqttb{$#ER*8p42D($&>zjy~*$Uhj^de+1c6I-Pzfh+1(fxk7`nJ_}YMFjMD)% zuLI7dqc&iRh}}V-4bc4;0}kj{gAg89@zW~tk*fSRLlu?64fyFEF#S$9-1PUHPu5mQ zOJ(vobb9iIp5G;3E`})RE%`dAOuiA!$+xQKNcktsj3Hbi`CY#YG;+5{@QR=Xmk)5E z$2fN#dN1xRWjR<2mgh%R|!fL}emSWDhXi<9eUVy~E} zB_9h}pe=k!ZsMVkAbps+0(Vna07=Vyj#}VxAn$J(umFC_0A`c!Wa^6lfEMBa z{y!Ip(_;D-4deNr1R_)6Te>WiF*xS}LxGa&5@7yYU<~2*J}N2)!4{#12`(^4{-D5O z5a{kx=>mZoghyZlcySn7Ur#TX-ohc((dnZjRt3P|5Qg7VHpf!Dq-1MJ+f)Id>vAf_JOP10HF(hg`5r z9t{olfUux`yvT$O_V&AAqE98b|JMcMBcQ&TX`cvxFp>qcxF#Z~Zp1E$A%KqpAsr>8 zJ^C3C7m@;ixwu2jT<1BPGt84IJZdP8u4i@CjyC9bS5L-D5 z>ilO=>tFDFeSQLOgIfQzxsui&{FPMs{(6XCnrpIiC%Vvudb}faZIXp}{30YHYf{*S zZY5kvlULeT=x&PLuOAP45w@ft9AKdyG&{smm=N~xJe~vy^#V$Eg*Jpqg#u|VG^1<8 zLi0Vavj4YG2F(l&l4&G_UJx29grg|)I8{DQl~Xx4Dm_C>dT0(mo`Fpv;vZaSrM4aS z=yRh!xAlRudILi#2N-%G);||Ifdk4y?~&J@!J&FM5SVfM}nn3M>#H4P7Tn>DZ_l0+6uvx zQd~+ce{f1PWkyzfUS_~jKImX6zc5Ks=0k)WdMS$$@F}Zxk#xkRYUz6uhH(~(GHe+BaqT;v>Qylk48ME?1yE$PXuS`6I7APp)iI;qDy^68?q;8QEFfO zTdDDU=}b?m&VVS)IW?>@G8{vx?uSbqmP)6WkT?$bDkey3Imb2c1fnmsSAw9K&V?Yj z3*%U-OSIGv{4U(GW5~j-W8z$D9aqPsHX)``56fVb>{5>_yz(_x4|dKj^@})){f}-; zMgO-{#eYfUr~W}5IHT3Ldl;4B^Su-cU*aWNxDDCiYneCU8$7D&@VCyJ?80{^Kti|+ zx!A=!LqG_O;T~X&rKa$!Tw|n3@kXqL^^9M*FM~1MPhu)8AEM4Ah9eBeFfp}Z+3dsl z&D05ei58VyOPkLH3t^_x zzxr9^x;TsIjiI#V%&Gm*pSDJK@TYA7Kb@MkL-g-~{wL_Lw8Kg|2A|WK1p3kKB10Kp zD&t$V;3uSj8pKvBgB1ZWq9ZbmdzD|Du@>A&dNg9vAr^>MW;0qWHipdL~(IkuA|nq87akTB6tR zaXq5}`<08{j1z~26E6l+EZQmLqT3Y@6MdAWB-$h5qH7XaxH--leT8Dh>|3LR9Y(ns zJemOsQ7pGE+W!Tb9#srv-pN(}{Z-j#``>GcMHn2^^4gB?uB+Gd#&T_I6T+WL4 zWXt)epXL0L=>}c!GB2pMkGDag^MWotcXmIQF+LcvjD-Qq_;7$_ULI?iH-;_qgx@m1 zO|{HlQY@=YyvusFM}lR&*xGODl}VPqIL)P>938UsuTw1JW{N-Lvy4{;SVlf$p%Ri7 zK-=9gJbg`yOW*pYm*CPjjVDcuG&*zoeh?j1YYxK&E$BM=ldkh`>D+%{>7Uc?o-JtT zuj!U?UO&sYhS8UCMn4$Yvx8-{29>6M#>MbDqm9INPmiYDpx)9f%ebAHox$*Q8TZGM zrool*m=|jqPk=t-DP_DMIrIjm<&3vTkHGSbzFyQa{Lq!rA46P5iiXmY%E(d%Gk`q= zwT|E#lZ-LVUM~h_d#Wo}@^q|{8FRHx=uQo)S*mJQ%R$o@l$!*zjp>kV)j`(JNC zOE{VP3dyIbNb*eQf-chfJbU zEmJn&el4Sxc^?2T`YbawWSK*uB=aG`Xiu9-{A*snILmw%4*Te#%--=XGfoW2d{=zb zMe>=6^hRcY(a+3rnHkSOK{pWS4!~Q_jO5)-`N_=q6w9pXZ<%#W=uGW@GiNe&Gpm@f znG03nQbxl+!|Vr1-2fXing1?xmsYT5qU-6@%*N*JvcTWd=O>ElAR;64D=O2rCi5qz zMo*7c{RxV!7SNYP|63OOKbLi>Hhk?6w^{8-m!B)^W{A(yy**j~&?lY%ij$-`+$;=q zmL(tP{ghLrN|xAue=AUhi6hPW3~w7?-}zkDU(dx_b_@Ld*WM4#q?8_N$F=zQ*cBj0c zWn;X}KJ0VZUnIm^_HPL`kOp*QhrxZzsbQD>qQ9SIznW~>sZq<$r7EsKvTXK0F8dv$ z*6cXpO%z^HEL9*oU0(zFx*AE8Jxs|kJbRoDkW+55s_;?mT+ps2W3TX3dkHRk`BMOE z<<92*w`|;Amc5-;-3QC{dS6@S3PUivDb8j8>jf3~DA-($Vpd@O_Y##L{h9tkjkAGg zcs{IwX*N*j{{~(FaRa&kA@6OT&lz}ctPSiQwSm)+fhUt}AP?%cCI2H-w1J(o$k3)S z1Q&g1vIAcL+XTe=z&Fsg1{Sr9cLV$TfXsY0!v^Lkjslb+j}QF+P?4s+pbZ?NKLwC4 zUJV>eTVmW*+BU}{+4|T zMa5tPUe0po1l|v9^&ZAMw>4ntGIX{YSmqQbCc5 zcR9BNE$5%~O3t0y$6>(AO989Y=Z?^q)5Qa(2j-QW7sHmLvtJKT@x5fXg`+urX-tmJ zN96Qp;^(C30^gh{xvzNxTu!bZO(cgCSvd=s{PbU6aKJ>%nMT@7>XC%WVgA!Bek|d~ zSvK@W#)&|@I! z30ns}K}!Zb-5yX~BRGiIhC$l$%bYey@m~s@B2;?N07z4?a=+1 zJi?#`FHEO{w28~t&R}5~^sh4r+BqYQk4WAb+=w?gzCLUdYt!7UyBm|;(tlJ%+{T`V zVr|=({p`T?3D&SM;7(k*I?g`I&am%t)9nXD`hOFrCv|BtETzj?A4a!c>Mu&%dd<|r z%&phd_s`mTZ9@8hF4va$yIfnH+U2^@p)S`~_wRE3k?bzlpZ0ZW*Y3i2H+b%Uvs~_l zJ42THX`0LX{S2QC;Q{est&?0qADjRq9!ZO{aRU-;d_|^}{4u~L-0!yu{nBmX#HdYN zOXSbs8Z=a&4gOD(4gQ@T9=w5$9lRsK1|MK$9b6~(hn`&=d@RcbWBboj%*o&n1o^2K zwZYQ=q-YKP0j>`I9}K+*Cgtj;k=$0K=bkHovob9A&WPpqCABzUxwB#|cUhw4V$jMx z+`?zM5ApFtlI8Y-vAK^gr_2-vP3}{|^}OeIxv!Ry#%Qoyv@aAr;0Yzp9Zp~822~H| zzg=$D5)4ndL$qu$0_o4(BA`o^KS5Z^XE0H6vHvjRAZ4D=F9M=mU#l6Rxx~P^TvsYE z&Hp529H7UEA-3FO420Y!FV1p5q|jRg_UCcUXx_E)0n6hiti1eq%bOjxJeOj5pD+~j zTGNQU^BG8am#zk7-j$$aM`z7%WI!HwUxZAzun~eBHCcdNUT2vuv5s@iKP<(Krq$hN zjC_)NqY}pg?x$E#$oqp)Tf#g#%H^?00yLN+GKuO4i_04$16*bv8NWk^B94JjJocS9!YtRK2w9--<(O8DJXzuA4z@*(p$G&Drlp%4->WF`J8 zt$=b94blB43AA_!=fB;Mz3(8chcpl~>Os?qutmjF>>oP$cTp)EZG(McF2$ZxfbU7&~-d3?+}^Y#n-%(zhrb|2I2ZYW@l|KM4r? z2dfZ;e-)a)02-$DduK*%7-vd{tw^%rnLZo-qu+-AfxsJf2N0c;-7vhr{Jp!Bp)!o< z6m@nMycpJ%iS7sH1z=@381^cazYS%>-lnC)VsGNJ9jBd!@dCuKVbn4uV8d`Kw`0x? z!}2C|j#6Vlq4x!+ zb|eQhzvEXPMJ1o0BU8u!z9~gjEA(*rKf>re!wGyJej5#Mj$$H% z_;)wFoy^Ftnp-qPvhTlVF!#jC?H@vefTDl-=cn=sc{8@aZ!+YcA8qVDx!y|&H z1BY{4+wc^0pW(^s(>SW5<(w5ux8Xw)Z8)OLh8NHm!|{LF@Nq&nNuN`&rwyMo6m)u6 zZn*ZpV#n|m{7`_+@C_o(34W)lSNzBD<0$gO->24ZQE2+$+ZF|%K>@LkTpcRYwJ!6c z;4h#_ipg{ZXC?To;4umpT;7Ra7{3d2g<8Ch=SHmH2C6Dh{AYpUKMU^eMLBII3LXX< za?llY>&Toh;Qp_I*OjhX6dU;z>J*-l0`6QHaappBU`~y=lW|ax@6SsI-HE6b{6fJ$ zV!$!Fl&a+aoz%e!CQ`-Q2*`rD5VZ-LN5Ci>l&vS6YW?@4oG*C+aHY(uh* zvyhGJby1ufG5wxcD?FHLBReM8$kKEhIXBIXti2>+MbUm%^hu(P;$i7gu_-ocK)^qMvoX3BWW)*>_+P|zvK2n%vqC-kIAV?Gvk@C<*odw4+=zNkB8)f+ z+}AKZi^<6zXavJx#K&-n&`3Ap^8}jn4C89V_ps@H;`c{z|3Tr+h|NOTe+tj0m4z43 z-oi`aT;Y`n$-*063m~_(1|(SF?ShiGrtm&0FMLSwk1?MLxd;S-OMeyO`z##lx5AmA zFC+$_FiVheF`0P;OBD`)+(J3W3ZpQY?Yb+>m0ej;35A7NR|?0lAQzShqEs|YgXi+b z7ApR&aG}7Ee^$6kM67G3i#lZgD6FMZ3io+oqDG+MG~hq@Y~*=}%)*c8`7{z_|1bQ8 zQYj4PLis-m<^LFoQQnPg?I$A$rjZwuG4cvvM-u;FBijk&W@;UIyO)f56Sa}|!ts$^ zKsl1`7%5vyKOQH;AUl#+_K_$}dKGCTdkh;Xdyv+^`;;33U8Yhc8gxv1WFCQrEZQUS zhK`&-FO3{4aVVa272Gr>&C;e>4?B;n7Cp;ipkN(kHjx})`iIh-v>ZjBn7mc2l%;Oz!hEG9LfSC zimq1X^|ZX`CR*N0Kko9=L0| z4MFk-6m9kfAjP3w>tE46FM<-9X+@2K$NuSxK6s4cZLr7{@hrwD8GDPq*Pow>m@E1n zQV?f0>P*@@>KqDJBCUlln*9Pvb^CEO`0MMs@T2 zZqzec_Fkv0qqqpnjp{9P)F}0Tj7kvy&FjV?8_u%9{%;#qChQfA)KRl&$Ef+*Z_7q9YBdNn_8+A0M{SWBA2TpI627rYo9G4eV$P<}Ch|T6-|ul& z%)3RM<6ZGfyyjCpDanc#`>ePIF+XM()iiiMH)dZZJ(1{d)={&cT2xjQd9AQ}i!M6!u1ppeG#T!(!gMY=^|8myN zijVT~dC10&i3zyk4^jS#Kb6YZUH=#m#ox0$XQ;tHtLeWp|Hhsju(6$zY^=C4_5v2V zvAhkg>xjo*!%2;?H>KIwyC8ck;~$q`#EreTGuX6a8H-V8Y+vdh+Z~i+pJAGfeUWC4 zeJv&~4?po(w)IHXh>i6NsK2s8UL1-oW@zEg%|u+0I7~1j8MJaajx7-(r6Ob+gb*q> zb`E_qb}p==Y@6oqPx{Scmw{g3+*7&p4n6}h6p81a>HDu$jVT_M&r=*)TA*p$MM`#(3*}=xknmZo(*KCU(|8$m) ziP(5a7;J_%z8AeT{%r=yct0gF;LrF0u{1Bz!N#WnbW=-qrC=UGADl1YW}ze($k!mJMDdR$#r+suC0hSV%4pEljEa(3I(k(y4|bO0G^kao+YyXl*n&f!u`*#a2;^u*cED;HWI)w~JP{hC+HR&h3AaGFh+ks)W$#G3*(kyrmFV)wTR zLuuQDLRB5RY{FD9B-2ChDtQi_Ghu-$U&0igu!f{BMEOQc2eFjhA!>F1#RTmC zHlYD>pCkJeOqlQiJe=?^sg&}jPxuDA#DqVvOR&eXiQ>Ui^vT3?l5FC|O!O{)FUAwE zXr?>jCbs)~eTG!I#V6jAWfO6F*hJ*No7h=y zm_&2aJinV5GC=O7B@;7g*u+8lh5Z|mNQqGpIB^^!LzGS|_mbVj880x*Fvm@-25=P| zov8Sa|L@^&6E{nto46gEXI$WSlg=daZ_-^6H)(EFf|b1!aOJm+58IU0ac;f}# zVr}L#X;yhhyj6yMu5$5fDK_iE0XFNd7@wPT;fkP5($!DXI@qK(;Cvkm?WCK@xlL}` zGE$yv5w%GVr`aSLG$}yKCOyH&laRcIJ;9`&7_}$8on({xg5|+@%${qCJx)Fi0nrdElyG;7*#wFnsoGK=-D((tk|O zuu`tzDSbQ9N)Pt4va^wk9jxph$yRnR4_8n6Ak8M@kekeL&r*ErrFXE#P5L@&ld(fj zewjX)^ut_uI+LdT8Q&cGPUN&rK8xxmbNd^DE{I{AGvKBjaMLv6Co0RDq+c_Qp4|MVbO9#i2znH{Aq`|>Hb zXes_*E7gv(v<=4f(za==0Hy6gTiU@3B9@61WNr~oRH}|DeU#Z)iq{BjgnuC`eO^Uh z@dmikHzee{u{w3doa$G ze#eFfVpFX2SE1$&AXj###KXN_)XFY^du5mPf_r7$j$3vEOk;CnWzw?C?f^>S;6o2YA1*d3NJNXrh=f->#@%NAlWD_aS!eK4SGoeY0vn^lte zZ)Llw(W8@O{JjN9#{5!bTA9v&WO=bx_Bo6#)BTSLiUUcr@|a-W3lUd-=_RD$5-C3i zT;=Tlnq9Lx1yO#j=Vx38t^8&>_}TNbT=_dwnmq*N3BV5sS$Vn7%8$g^6mA=wf-srF zOA%9emv_p*SewGRwkgxG+?B_HQy~Eb^nQ6J=yIq%kHmCn!$xZ5@(q<2(UIk2XB@KaLyVUn%wkLsI>lve(hT=6wc<;dTmGFa3~wXv%Kt*OoYI0X8PBG))*tTwb5ok*A0F|dHbwD&Q*K~Q znsNu{rKZSSev1~jpiR+~=ixM)VxG^Ybcg;a7?<3XmwJOx>h?=Y;{30h688X~G8#-l z`?4viO3TnH+Sa2E?5l1{fj-*^(^w&&$e^4uVFe$TE3TVQ|gh!Q%)C>^$8$)Gq;3j3)S&O5d{;3p7^i4yp}=YU&dl#W9~vCCdmPZKV)Wb+HiXSEQeF_ax zA>IG;uIQ3pG!^{^y23W~dr-X9BEwBPQ+RTp&=EY`E2^b@iu*7hE4w?*=F#N&y0)u*^KL2rrWeH zB398p#VU$}RIj6++*DxyunMjJ6%~w7vv|@cK4ZKSMhs)9*O7dYsjXb z8?ouS-Jfy&QU{xU7O*tdrtAFA^vkJtx^5*@-%P*JOR?#<(zxmOJPflno$rG$|74Re z{Yk$~?;W)1#W7qzkY>|g^a5^rPc2Sugh*GiPmj~DM4{C2tm$F4zS9Q+JB%hyXZ{n8 z5pmP87)lfYHG!s1C;r7vpRO%sN64E?9^P&G! zdL$GQZ6^LN9!&tWSIB1mCu)_7{h9eT`p-;1g+CGI{y0`=W{^CEHr7HX*HX-sqBgTI zXfsEHIuWX7j)zqzP{r5qoat7ta97&HQfW|N2AVRm|#2LSpX2Qd)VQ&nhq1kR{_{ zFF=Tc?8`V4Xho$CtygxSuuNl>+>BQ#=X<5@f2{0E!5(n7A6%<^PObnh%CD48jM2|k zzT<m|Zvfb=>jZHl0%+E4G6`!+Tz$a+H!E05 z?9jBaNj7g?iktUcB-s`WPIL>(Gb6UJQB&KJ&W^yd7aM+*{pR*Hk%V3a~4Ex?v*~9 zyE)P3Rd%p>s|lN&#o5={=Lc6mSEQsZq7dq_7sG_oboxuD~8 z!|Yi|V-+06^qpNycFA~3Pl7%!4V^uOTI6QT7RWqm%7FaY%hOv?dJoi{0K-q%B0@I% zPoK?c%{FZ$O>XQXE1;SN+d^l*Mp#6?K*>q)5Q$ps^wI$fyQp3Gpg2v0n`;M zco|*QPOUptb)uslSx|L^%#MtlfG~ZO$Z)PAXs+se8NBp{9>70SR*vksXRwIOJ=0@i z>He>|7b@*CpxU67&b^tuSh8lZBF(**2#vW9r`TMM-{ckieZ|$>$GrqMw>yywbS1@K zV0_HQ|7CNLk#6oggUE=ea7q?vhLc&2%YJTFF8UE7Z0-=P!Gw=M(p>F-=4$^lcTzUR zq$vm#;nR5+A&=gKrE?o;_}o*2 zSqWlk4!2&-{gP6BRq9(x>6X5Dzs)-Xcm;mG9A@bc+Pw3~>jVSm>HPmZN$`2?UT@*E zdDy>SMC8cyKJRX1%e+VYZr&@p-)CMo%CSdu^PUMnwC-_HpolCA53wf9>-!87eqIWd zO{5t2d;9}Mb6!@g%^L-c^KuoMF4Q9^&=%6?jccAFocR|)=zkDIEpwGs?NRIUR3N2{ zb4iTN+Xj%f!}E5JAxU@6&O4-nM`PIJ^6{Q1*8YDU_HUc_H9#Jo;`!{K=3_yc|E-8qB!q4L&B-?Z4XB&nR#Xk=-z~Ixe#bPM-wk~8?`7@g3dZ@0f0{4T zjO=yupN39eX$Hw_w~^M-#7j(9M<=2=$Se{P?`brKX16{IyslH00d;ZA?vg4dA}G zm;}YV$e}s^IQ=;Pw8;I45kCLl9yNcZGW6&CKeB8=tB@@)*t$U0n^?TY3(lq7f{Q$# zTW|#@n{2@~jJX9jze3_|nh+4R;GUo@c$B&pJlGywIyuPIleVBcoLGSW(=B*O+f!MP z7W9sRx3Qo}Vf-#g@S?VW{V&k~BuCM~7G%@YcO!Nduwz(2x7&izUP|6jx^KZGNV=6n z)(f_hT2H-4!Sg;3b%FPX4z}R;WLwDKU3g)fExc8@cB%MYsMG=blpxXt$Wv6{*AJ;* z3qD89UGR-ew72S0{=YlHxK zM%$`x2PYTe2Vb}j(iaY46B3~TAh-foiI6hKtp=d;K`qnU(iWva9a&JXtaDs=8ae zRb$?@>Zj>~YFUe_Uu6qi-KPf#q$udw0JJJXI>`!yY_0HTsHPk*(N*X7Kt5NG4OlgS zuhnxH<0&$#lg9nuRy~uUpc@^k7kCM-dMQ^5S@kMVN|USJgx*%Yy(g2Wx}E|bOEQpr zM4%^iDR}k!fJ#5^1FNgQ@_erP`w(Nh`ezaGJM3N*)4UwQj78@?)shapCYbkh$QE_d zb~ViwwetqJMYr^a!(7F+s3YhX-OJF>99#4#)i3HQ78*DgasJ0GdihP-xu~}W4Woki z2U{fj*R5Dr7KOr?Cj+)9LLV$r?BJroLNioAgi)U%%AyMS^O%x!s6cY4Il51jQab-2OTgka`Xc^|7`<3qtosiZv;ODZ z-6GyCKHWFsmRuR1W=pQ6Ll<-L&0@mGp7+_3vsCJPaD*6UN&NoPi?byyAo6K)mYjzk zy5zD5$_`IBz!*JrwB!cbwd58^TXLsHilTy++z)q_Jn|eIUh;(aM^#TDPkJlwi||7XcKRX52CGKXo!jILCv zk+fvKDp@SB6@pkpx~9bvhx}c#QxJ7t7?%naAIr2QzY4NR2tO39|9%`UFZoKAi*43PP(eKv81(R&eo;X`~yU*55OtJNsMs5A(1lzzZv>S5b zZG-Dz8@+VfcxFG_c;ngZjus@@GB$L}AINemCPkvQVs-~x`QTl)@=>3y{EqrAYL(%Z z?ktP5W!!49?8Q*TElcc`Zp)^p*s^(StClwMrW-V$faH%DFY>D|eGg6-Fd>(I8EZ>_ zRlC0R{BG%g(`inE+VvOAkENB%TEnnq=Oam$UE_Dl9`=*e1v$O!rl2i*fZktryB;Fw z)xnk_7BFWgaBPgbW+WwIZJE^dWz2tODkqWrwhSN1vUj0ECa-1jKzBs)FN*|hS&v~<}?kA{3uptS+2KLfZezXxhVMH$8aE&Bt6%VUsz%Uf$~ zE4+3&=Ra-v6@V<~fT%53{NM7M;l%Qe>9(Ba&?J9ed)|g#{#=$@{%dB~R$P^CD_%;r z6(i2{yXCQ%)t5&oJ_$TaD7O!dclm%k3H4-Kp27eNqZ%ydPOatRA$EB_#4aBJvCGFK zKtvl)=dY=GifWesXZalXzkFdlnZ6djyj~%l?_9o4Fsy&Je7j(FlPmM?@|^0P3vY@_#eLmw(MgXSQ7NpW4VjNLRg+VJlj7uoagBv*KJdgcTRRP8JeOU2H34 zAtcao#qEAu@mPzvya5069Kec)0l=c6E0WxbZrZ)DI;?oki)(hNujnasZ$jG&onTmz zdwbTfOf6+1zSP4gvz)&Z*6`xOoJ)(ZB8EAV=_6(4E&d4oRFE5$2*q~sqx z1^x@*Z?VZ)*_wy8C1U-yQWpWN)c$Mbm4pwY7$n)s8|bW+w?}QIG+LQASKga5v~o1XiOpI$Ki*azq}T~quu{`&Wpn(W(50{du8cyC&K<2B?15M+ z-^xO!f_B3z$HP_~)m=G-4p=#Zaldj-b5hW)T;efSR<5KMSFRQ8CWPY3Z33=En5<+c zKv8OIq>D8eR=%f7J{IU_s^shDO0wL_pI>58TE%Q%#obTZ6h1=sD(!zddMUO_`=3<` zXIrKF&+d;2vyX@c$IT%F$r$ftc8A# z03rS6soF(Cy&Q@Xp*ZaM+^Q`B&`5#r+}|zXA9c<+y6qtv~U6ei>fVw&8ti4o7Gj+a2Qwd>JM9_+iJoSR`1|rw<=z% zSgAqDw%Wnfu%~lCLAUyVtk|7VmR6reR$%BSv!81G_p31-Z1p$IYc*mH8OYA7=8RaY zxeUhEoC%>d=YXN+q97Pj7+^J5!RJfhMNNCK`ys4G{a>U0uaWXorrlRhl)D<< zf6_Ln=4C;>4#R5j|62|5ad`!hP}85sIP&n3)`W#2LwPxju$m#%(^k}Q+OB36%&M6{ zH`ieQb2ZaN4X5a=W}dJv(y!%0wnnaQ-H=t|gl#7sQd1`+hXXW^lw)38-U}E9YQFN@ znhSikrVR`7lU~5pd_PukQG79K*C6}W&~9uDLFTrO5|ME!<01uQYud%xntPc>Yi_2! zYmf-Grg=E&OE>YZVZm@~o{$bHr|6pJVnS}s>s>(cCP{4s|1N4#TMjR-Nu#DUD9Qm_ zvw`WbCTk2%w_$)X4AxAha8wK38_BhH6GgVlJ%jN^*}KSo+)Hw65B7y0Ya5lu z{*NshbhABO`>j&Gf^l!^2VoIz?Qf5vJFGhw+h3BcyUcIvbZ6MQi-36sn045{k)aaG z5nFeQm&k4y4&Iw+>(U6NS@&qVt<#Z9;t-PEx+ja6uj^iI4uf0gXUDOw53hBslk9kl z5fID&TrT0(g(NTA)6jL9tOM%?u~y?*Ux$sw))hh2x^dFGZ*LiP>*n2-=GMK>t>)`K zi?wyXc>%X>@d(v-M|C_4+eOTCezr^%r_!BEk}F{k7zA*ut%EpWh^$#V{;`QB;jieN|h;!>-?V4@t69AH5Z~YsvW&JzxP_#adx?W{CtxshIUO$kb zeF^l)N)2!xY?dA6@0c#MWch#BPgXrsA$k2wNM2usBwk-Fr9-;;`cFKjC&h8meZCE z(;#Ls3rh?z;A8!_4T^tPjZccS8g||rHg;+L1a>EGtqt|Pp!5fJ!yAriR}AV8$oht< zzTsbeh(p=%CE(1%W~c6k{~=^I`~eX?NR_!^<2j7xjTb`A#>=2<<5kGnjn~Vi>Vaz` zaRD12R_5J2tg(^EBjhE89>)r~@u@W1_#7#C!ffNqUMTP3b0W4eH(;)#-?`+Rkh#J{ z+xkq{ww;q@+lKjU+q@38?Z{oW?Ks|yjb$O*)ZnvCKPK7c55u;FNLP0~eArkOuuW-c zwyBiO!^V~IZsU(dQQIUAY+TE1+_;q;R09p%SX+UZ!7{Y59(py?Hl9erzP#}xko*hA zH8+s<+s1DJXvcPGQ_CdVbQP7hmsTC0SLk<}E`By_n=S`HhB^tfP1kt|dBgOh1KRYa zyCZJXBdK8D)F~GT-O%OlV4I%cw`^9Mu>aepml*+@-U23BG2)xzDVzw?m$pOr)GFo;$AQ*fPa#(uatkBb6g2Dr`V zPE2&0@6Tp@5BJ+9Y=7N9_axQc;Yr*D~ zAl#@Y%y?Yb^SjM+Bq%m75Voc7Qbbzb=CxpZOW3y3&ztKgb^wg83Uvd_*?b%}Z9Yxc z>nP0TZ{pmRwrLEl8@#A({*kf2`4=S8mKNM?vgJaW$nw19TyVbz?kyVsTdwkw(Ttm; zRo#{ji8Ss71_e`LODD=G^k55CVz;Gh1Y`P^*ZsDo1g}EKwoC?OCJNh@I6j7fjzcYO zOVVIu^_Fn5ZOMZ{TQV4nTXI0J@J4o(ZcCB8LK(EGH|@?~@@<)>o%U@iwjkEFtW;%K zB*ZeXtfjSH4Cy-~<}UW4wxy01Z&CcymeU!K@Cj6XPs<3>){7`x6#us6Ka_eGaku5K zpg9x<$BxIjGj&Yq0jg$7GmMhV>Hc4L4Z~Kvb~n)gce~7py1B^R3+?VfFU4GEgrn<9 zdmQ)Qo8yIV=U!(lJB7OA33o#L8p7Kprtm9jBA9vB9*{4eLx^o0b9R%CmyD z^|BNlb=+#qBUgzll(oezjb@uWoMu~FvFadL&Fv5$Xu9-Yoo99O|G5MDf(7ma51222 z{i8)#SDm6@Yaw^K|JMDeR{TQi+R?hLT7BA(w^jE4t36Kfz>h|x9)=lTMwz$qjbmCQ_B57xu2?KUr<0HvRi*pCiV~HH4@naU|TD` zIwG#NU7BRuGLd!Lu1&FRI?S?7?;mWtovcToYui22p!~M26UgGcsBL2oyKOysQ}ecG zVSZai#J1NsxxDQij+Jan7KS)@wM`Bj8S=KJGLwkq(oJXE@_Y!x0Ok%V8!1pCp>5j) zh}ty)oGA4TpfLRF61z5Qb$ zsG{`y7_OMI+u8qZKL!P-n6lf~4rMqbb+GL_fRgR!H8`<-KQdx_Lkyo9)U1Q3vMf1X zf^Gi{=4}63gnW+-+y1-X?P!G{aXVsS0dLR0KG3k^Lg3RFtvlK>CU@M#*u+b(&CL!@ z(eQ)Bdl(Qq9!awuvHDV6&JL`)ZpX6&^o_z`JGhAO?De z48i?mHUy_^K+maEfxbq;i5=sRX*p_&MEn{N`!HM~Dgk z%M{L&xeyhDRYPFN%tadwt<{t>MosWfWXEmdE z=acES6RVBwl>FQII_GkB4nh{}L>JyUAkFQ}x>~!qEP`A7wi7vMJEI_f4dS#t*;znB z5#&6}Fz(Dd_d+tYGe~B^smK0SM0RTbb2Y~8ovUNr&ZCNG-??5CZxM#w5O7#jACO)5 zR+@Aldd1F<=+h+Ibtc+P8l-#^cDuYD^vup*cm!kTAAq)Rp0R(w!@cVqs_4U3b=UP2 zn&PuvL|5+mh{3Y!)~M|o@5R}!yBJ@)?k#2CNW|MNV*hr%lWe=9LEDuD9lKuQ2m33x z>vh>~dw>u1(CtcmDb04J(w)0>|C>5R+~^25b`6FbyX61bRjAJ~6l3(-F7$sUIOt|5 z8T+U0T7XpAwVZ3f$%?1xyVk2F_XaK9wU5seGzW%tqm_-?kV+leCHwaytf0HT3|MVT zxVGzC75#~R-t{ZxYtQ&wj3!y_*`(E8;L*#MBGPKFlBloM`N!HDp{Q2+k6!<-y&u>- zXsLZX;%cAH@%*l~JF+|PC3Lmg-pN*ry|gw%0*;*6SgxyM@YeR%fgsR?5O=c5bP@I( zsJn?dSXEGt3?f{<>24{P2*a{KZwP(zv$1Op3m)W`4IV6Yvm8x?u)2( z_Z7PSZa3p#w?gUf`FpFjTkl^g4088>xw|Yg&URNa zUUpZ|I)bm)vyUg# z_BUeA1U~w+g*D3zhuj*>_g&i%gZ_I$a-chToWyII*e@c0WMICIa z`vf;g-5(L#+X^kN?i)-+3LXLCN0t7C(!KbxSKT3l=3eQ4doMyG-Ft;1SQI+E_j*B~ z|K{~-k?8hzYU6i%?H0gZ2hU#o-+526;oggZOI+Cdyr5qJaVPyCa7j8UPFb>e$a8N| z*!FU!*X_-Y&~kaEI5)C4pSq;6bf>5Gj?>kiT}Y+>ae-2>(o46!b46M;EZw_|QMPwA zqkr!fXgP43h};3!_SR`@B$rz+l!d+TM{Vz4Nw)7%l%Kty2pl)?URFKZ`@PWo>?O;i z%w_T9s<-PaCX=yq`LyG43@TblDY__=b@?R)U={UC+A zfNmf0zqU{D@B4Z_0hYHJ4XDg*gv1Y$Bx*8>Hz%Z1#S$-U`vyYWzC0Blju6~8Dgc@L zCMMgyg~C>@uS%T(1AZ>`bD9{hbb{?$sUm9yvkA8B+Xf5v)l!4Z^7{_5`0qOz2j-7e z@O=v2EBMc7@LPiXPUQdmCZWmu{vr=Sx4(6g?Y|b;zW<_lj;h7k{wpJx{Qb0)v>TxN z>N6v5|HGZawm&Y*_7~GQpY5-Ng8h%f?ER?a``G~Q=di!q|4L7)yiX<7|2<%su6Ej= z2od`OC?osR$tr^I{R1Iqe;)kZU+@%V=znxapeCqr86C5~0wTIJZwbJ@Bx?IVSE_b` z``5jUim|^A$OE8iBL7qPBh%vk2Kcc5I2h4nZ2yN)@wageD*nT~*#G+jK082XAGm^U z;xbijj1EZuIUxP#0HqjtK|62_C9gg!;tq7?3|oCe*bc7`+2O`yYk0wD4M|DXKs=`% z=t`>(Jhhc`7YDL3?7*ae9oU#=2kJn|gB$fklhyZ3u==<-tIzOTJwbr=v+lBbSuYL@ z)*t*|?!d@W2L6B!c7XWLyq6KK2d0y?7}gz_&60G0a4Ft2(B}$$u2r1XLvZWBR#Csp zOJqxyXa{sr(1GJ5{~JynIPDE^2R^<9&^NtwJMb0kyc6T*fnR)9uXi2~{OLulo-^Q9 z-T;CDGwau-+7v|I>8?C-GO|O4K+Qw_jko~9r zWk_iQGwa{PP*#sM1PKlcbpJzrz{_y;X%7e^q}S)Dko+HdHoCq@f5r;!L};%s7qaPq z>J^*%d4gXgLh*mO`Zes@=r>4q!n@OhKH?v&UiL4q6|n4G4*oM_2X`gep?i|;@a=Tp zP^MJ?Ki@RrWkxiN%yz2k_4&=6{F$X(9%|XS#Ji`1q z_)ypmG6CJe$HyS54{|Q&Aa<>RK07#r@jjY4agf;GgIsrXa4Ma9u-_njE<}MGTgKtm5M5w=yDVNxFtZW8!5 z@9&-L!M!M(2OCHD?a&!m_78pvzz^J!L)o9bSUdQID*6VTgP}2^lD|_4QqvB}{(b12 z7Ct+41ziKjZd1ZFRC}l$)gHQ;DM1K~9qK63S|!_|=fZYqV7wh-0v`G}(;fP=o6iob z+Yf1reMpg_htR*=AwRCBL&=P7o&?qv6Ngf1!l4YALwIM+9U2k`t%t@#G(L?(TeU@} zsLnqfn#wwSXbweIdLUXTv)Q4gFshp{tdm{)F!;6hvfr$ z0LC1?H)@A5YBPz(vti=s$;cesxN^Iq*>hy7G_HCP`O zuCP#N#ISaQCYS!`twKClet4O3*h#s=rQD@vhiB8x;GPHK`<2D`2ThhcTqBFoO$dp@ z+X350`ws60Xe@ns_>h-~PQz&bC}a&iqSo+?D*ZQF&fy;e)_??VxXq*FFDmsXrNZPl zC^D+yJb2V_G3gDme>GgAG{prp+zc4=+8R14T_y$o|#PmGO5A|N3}bs6bO1 zxTLh9FI6Xs`qaj6cf@gS;eQK z7B$TDLat#hYFBeWXhUPj9XY4k?~Y_ug{|?z1Up)gWXC%P?fA|_JN|9dj{li#Ct@&3 zHhj+Q&MDULKic$rx*cgnk2HMaU{S-5&?PrIR&jSEMmn4{oX3gNJaTo^j&u*(kr#-^ zVX%af>_~f_aXNB`-;Q))035lGABsIZ@{sqpJ>w0EKM&)MJmV$72cI2z)l0D>Iu>-K z4-GmJ>&4m;-T!nXImVZFOPo6rZI)g*|Bp;;K7==vyrvFz+mZj!{3Ac`#YDCvzkBddaTtxQyr?yv>!lD+bXGgCN+0nb;QR6M; z1pYTZ)O?tfK=wvVgN;ZpYt-$;jT}*MjZf?P&cPk5@nx_-PLsKWF4-Ct|I(P4nZ>3L zNUfKROi63Z07`qQM)|)|k*SSiDDt()C{ejmINCT(pOqqVF6(yVs^L_PlxTd9wl}T= z1BOr6xP2%xypb(%<3WT2ve6nFRr(|V=#|#^vFQ6;zN5}U_`T8;|JnFE1RTW?Wk*|) zc9gB7J9=>!eP02vJcdVg|I^W%=+&c$2ApeAJIdMrqff-y(RWl@3ZcQlqs0H&(dQX5 zST2r=h@-^+fFse4#tCDh@^$|2XxO80hEV1}{?U95hD%V#j*d;XW9#7m(HTBFhLU}3 za;SMVIy#?W{-aRp`N*R+)b<6U@hJCy9Q}aqIl6N&95{;o?Wpd)N>p{n1l|PZ2O0K9 z|CPuu?h$cEztz#qdsI34za9OP?m5<)@Z)200`!bWAcpMNl|ehkO5~1R=L7nFPwxb! z+cEs#$9xn$rv2}+hg9?lg1wGCgY5Jx3WB1q0@FuDd%r?aPWcj%8*j&SugS3i+&OkE zMa8mj;&TifIfneRWAZQ^8wtBKv5v|Auif0SsmStUGm+582o5~9j9R#cfqj=9TMdYG zl4ILKc3ftSW3{SapYjfg!lOz%1-FiULh(OXkdJ)_vY*J8-5WVf6$FdV-U49E3u(D4p_cl?2y=;PyDx#o^@|Dh})G>$DYPP*gI0Qg$69iQtZ zxZ^KH$&HBtL7x;mUM3{5sG7%9Kr-Sfa1_I(V%)FMnKdFDLW^$ke|p@MS~a{C-Ncw#0Z+Ki|bEJ3cC}lo@BDe~;6XeIQm>ot?zf?M^0hSho2(=~f^e4VLX; zJNZkpo#JH4ss2Gbg%{jTPNt%TFF^OnsSK!-mBm6l7lITMlNPX(t98r&@lUT)c zw%ktcgN|?2j6+QGlg9?ayEw3Y+`&$A?88oe<|VQ^X-ZP*PoTSt%dJl_PzjTOgtPSL zJX&<>V%Tu1jaHRY*EX{Y!fu99r)~!WL)A`cKY8jwFW^o+)=da{Xr%!_``=SN?*xZj zc+WGePQ_BVAKZBcMzj^;6ny%2Dhn9;9_t8Q!=Qt%zg5pzC;Kr%hB+Y}2 zyZLuX%b+{8iKkVXo=>)>eqn2>_1I#YuJ&0IR|+;g%|dnRV+yhPZ-NKtB2DKB zuj2nsea*N!^+OSp7k}re-@w@hDzeFHY7G_d&{a(r!-=LV=*Tv7bkmJw-3K8}cWCoX z1+t4P-b~%v)LF1y>D6}?ZzxAWqBXrjcwbX5TF`|4J!O)2odDe6I1 zHau&}6>g3#HcjaaznV&@ZZiDpP7Qhm`yR0th`C;zHC5}^GB0XP+<)J^%V|37x6=&D z)2OBI-4eF+DZf0U|o$RCq#r+517^tbW$ z|A>0;fGUsW@tfyR?5J1}6ct38AV`xc&(NesV{FkxJ-`u;9!d^HF`8gZ@1~jFd%o$( zO>%F_dD0VaZpux)iHZdk1+0kO-)HdN_x(dW&+hE(?Ck99?Ck9Bb{_?qM_t<%5$3eb z-rQ_%tA*Q@;6f3o0D87HYIxnYwTPhFC)?OOYFk}tZo37R>s6N9?tu~89s$wo`t_t1 zdA?eUyh0HSO>^5jOta|1Z6DGh+br3`bn9KybJ-*T0uJiVG zz0+xXHjrF&XKpX#$6Uo#rV(3;Pw!sbekC{?6_Z|wiqCrcDy^lSZ1qMMwi?g&jaN|o z4o$w1zE0BRAK34q!?tfxgpXxt)k?_obmw;M|Lt!WcF%TV580e&xNZMDjx@FXb>+DI zI|H+I0Hk(vwN8z>gX1>sUJkRpq~2`bi0Zx{Giv+k7N@zxk9|y=yA92=L&HZSY%9$j z!<)<<%aF$%L9L!0a~CjBcZ5}%I}&*w*lRc&@P8yh*>XE%4ugi$**K6r;f-;P2i zvmIqC$&J-C4KUuZ1Y!z|W^+d+4cdWK;@MHBcF0`j!yVUx{AUXGG01k@Tw(5b8)4j` zyx4J%;#d1`$D>$9J8(GfcwGy>QbFM`!wmr-cpuHP!ve!rt@^7u^N)K*=}kw+j+UUy%2=$0Wd3z((QpTw>=a?xLwyi zi|Eky>2+qiT2t-Gmw-USKnO1LwCCz6vJfPT3v0~wdGrL+Mf(bJocWDrJ5GMHUDrSA z;>v@jc3uCqufd7azCnxX+|zy|BHE7r^R#bfrtTjY?ZiLxd>UY%aA!{YE=ulgG{TIe_yV}1={r~ETr>HR74Emf>BcP{3eZNi<;B1k(c9G;ymItTBpHmW^4Yu6~W8w7E9q<3ztYO7ZR zmFjO)7(EfXbF&&ym?h@UhxPMGwT04+)o>NF<8Ki0Z+4V-b}GC+1hmtmRDPkqzC{ps zevk50kHF5~HEA0Qt~$zfpf5ELVJGn)=1%tib?}(GyqxB)L>j)!7a`c?&leklo?W9= zz;*?JWtYZ3;i~fNisEp)XV-M~y4k2_*GxwKE~)eEs#K5qF67_bRZ0!J&;;hL1&UNn zj9u!KR(UgM`7Rf1+jW)ZwIC2V!irn!8<`*RMDCWH`({cw_c(i^-m=w1S_! zU7lU-T&uC0OIvndMyK!UgpzL9{-(C`#5!~L0CW=Z3A@fi?QU=A3qvG!j|{MzyT_r5 zIAw}fFn8_c5D2{?q5N%g$ZEy?izZY z8K{;z4w4uQJ9hUe*{#g`P39giuO!GzPsk=paKan6PE{K( z7;(p&XHO!L1_UBj<89%~+z4_W1mB~>TNi`ZQ2ie5|2<2Xx%RARM$q;UsIaFN0M%fD z{EOvchdubb_I5bU{q%I_V7GZ-y~{i}m`DrXW^>Q;ZnI-Wt=WMidGFIMbFamWv*-0D zvjaoRv*+D6;Mx}G#{S)d3D7Yn((F)q-SaQ#x>aHStT6ZV!hk&;ZUpQIL@Etx|IVl7 zCG^l993>rU>~wh3%N=_Dsbd&zSI zwDNZ-@%}}lb%|E;5m1vA;g^bfD`R-?FL(_1{zZRhU5s1V+rR(8g&ccNH<yxA9wqZCH%n*=TQcvqPF66(x-mjSwn z0kn^M2=OUE`mJZ0 z=GG92CeOZ2_xb{|#cu9n`0ne$yr!Byp!@4(mAP*#i2tMYz6rql)O(%!dHB}-uYLHx z&3#`{?_#6U-1mdw@a+3lS-3zmcfk04dz6?1xumHQ*>?>3u4C}-J6BFpA~ftDu#OS6 zGSb{X-eK;a)NJmb!oXAy#(d}?wAb7pg`U};;9^za@a)ehB3o!fE(J{*9n{u$rVNwEV3UxeqG$->nV-wJmh} zyi!$)+q3_<6(n+a!`%OxqGbQe+)w7&e}Q7+k<9%X|DS+d z?AP`0ezkx0>-uN^vD=XjE}z+d#&CH$4Gm1`^n-nCh<)iC-)MGjs5K9;Cx2i8RCjX! zbLVo}-WgYEc3xsQJe^6m&=s9T!*}XI3}!O3vw*SMsTy9dhuq{eJ9YWkse-SwV`mjQ zpmUXmQg+tscaws*l8d*|(|MNz>@QQ*zbJT!1H7G&ZDhC8?dg2J5Jz9<(*OqZPu*;t zuN$?V&UY6v7&D2hw&fj5c=gtP+_wq@YK7@g?L3as z={&9Xvvppe33~SKfZqRiK<__4z?QXnAdo&fFxBBXkZ-Ry50o-U4kXr@2RQX`zy#re zG&SUlsqspXE}*Y!Rg1Vi2QD?q(Cv={OB5|zqUM1rMeEeGI!HU9+aL$lA}!OI8xGt6 z)GngP58O%qmzsYsy>#FqW?S>X^AvoUBt7h~S`oai0PiS*4?s{&YYu!06&en5;Cl+_ zfwu#!e>?~NQw$+`*K-Kd_JPBfgQ?GH9#r>4g<4%M&w+CnX{|F4`hlaA?mkHT=fAUp*d`QRq-;>tewn8M$zDDO~|_mHn)H-xOJv+v;3&}QT5 zfP?QlJY56Vw3=O$u$7W9HV=MLVIKSokW)zXb0GOnk^F?EcJOzmU^-O zod4nlBhSHJHH+g}rXM^{3%h)(_|&Tv@Gp0bz+UefV^Gz2wcXSl?g|HOS2QKN;&le+ zaTiZlc7CndwSo@pDy%cR<}p)rUGhJ#9Epn%@h+YJ)V<#2pdDSS7#oC6ceyoXjnQm& zttUTOk==T4o!LE@Jwp6zT@RDpNp7EaW!s7-v+MblX4lJzslJ%e^)}7_lWDN)Ln`^1 z_I2t0ZoTI>yt6?puu-v->UsYVKoZ z>gN7S&^|$~u8_K4r1jlz+RdIjP*dHXHJaT=n>;;nS2)a`%MrEi?>L##-RZ+^m3X=# z`A>Z$6$IM;?hfX6^(}Yz&_*4D-F;f)S$_5CV!dZ@i`g?83VTLeM}@4^Jw3sy$9pD$ zqX(YqnVF$GVdzLXJ^;AM%Pc6HI zJ=fze?qMUeTn$lj+AfCksb=iCg)&h}5b|&KY(Z*!9$Vl;J)D2&VdCrIe7g>3)pb33 z|6R{NluQdf>goAv1MYhxAs7Lzkiu^WnGdU~|;8?FtR~rB)|`bg0e%c_X|(v=&+qZ7?*B zyPn}q$^#ANArFbYz_Bjz9D1~kS?JKq)bLuP=g@~5G>JuJ9(o(j9(teJi>M~dV4?Jd zlJPA(Ii&vYLqBWUA86h~ynn92<%jlak%LP55jEcf73wtjAl5wWZRmyfb>`ur(0O>I zvBo^i`{(B2@tQfA8T9Z}l)~W{ICMB|gVQ{`sMb8Z0&naFYzBU+aeTN)5wH*FIegh= z)S#O~hp&JIPR-Que|VK$C4p2O`- z+2-L6Ep&i1U5e_P&4+dW>+o6XIO3!6;`rixn$06YZu3Y1>&!VWQ{M?Sk4%J7N2UOK zBntI+WV)VVU2Hdx=(|@(vKGOmBSK;PJ)R?_YNhBE7_gX9_^8=zXf=;i=$A$@9;uB2 zB8GIkeqF8V(KZBZuQ@zNSFc`a9{t;D^XOkS=CPsm<}se>JQhvJ(Xk?z=UCY+r+I8H zuX*~mdX9Yl24sE>=wPRLl(Sbyt3iYh!gJ)`cUO6i9Jzy0c4P0EmE=p|QSHXP**h@+Tp{aMS&s;3yiIZV=xo}*2{`u0)1d2~aQdGr~^ z#L??u#?hN^XGL^$v&%gC1QZ{A0E&-30{-c6S6%i;Uo@J{qpup3=Fzu|)#zZpc>m0E z)VdLC?C7@?*0UdKvmgDp7S{dW1&H#|orc{!x>r#g#0)!nq($LR1AiX)V&IRl{x^>e z1YXVfW4a_fHkM9mF;<($(0`s|Q!A0J0Gf6T-N*B|$JB~CmH`uvnQB6-2GrY9=ki-u zV8>Md1t8JKRyoY$rS)d-5U1Jus~-q9HJQhLr-FTM^EmrP$EP-$$JsjZ9J}Qzg?|X- zTLJrCnO$KXdmLhqvHx?7QNV$EKHg9o-$kU3{hj&rZazNMHn5msFkgIB;n>eqUqG{u zZNnlvw)+P1O7yc!X*&WBkDV}(vNMK*qcCcvsw4CGU^0#mM`7^N`*A&4a(sf(Y#t9K zpCy=iJjRGKkH@14jwgfcxSldQP5_E|obj&~ADg5!Xo1^v{I*MM6kGWWlbxp}dyH-P?kKbgl$qEOKKi=p${!wm|=lEYsz~8IYJ)=cmeVC%} zFtHO!&5nwB`~ynZnG}zIf!`c~I{vQ~^Z4%!#N$8fcpz@0EehE^z8{b-otHRVq2-QH zj=fv+_<8z7UC|n}**k#LczU=uXpN_LEq6Ed>dgSXQ|@w`y-QiV_a-^a-Yh&AcC**i z0>po`t)=uD8r@r5VfN00eZ6QKRDjFuUDVH$DzkS5JnVI#s(M$!(%yPF-HZL-md4c9 z%RSY-_%V8)QbDJ>J2hsY_g+K^2 z|5haB#IQWn8&|xX7y}Aja_Dkqk<&ae6%jiTL&AJmbRyGbp2#PG>Bl^wYoG%DO~wK| zG53EKV4ZnF$vVOO?>SLrP_ob;Ql5Ri#q2v)Yo7k1(R239ea+^%IrX0NsTeUAidLBy z-n5JHY>n7fIK}q8Tf74!#e4la@owX?u@fGL*+)n8O>b=5*lhNF>@xe>FJyEfX#09;TGg(BTwIzk82GTaEBNpPoHZs7*rwNfv)UZR}C-w*x&8@I~znSu=?%= z3%B0&{Y^1F)Ch2i7JEj;z3)ZZ+4m~#?0bt011yT zQpY~T^(2$z$@lKoD&MBchqyf8>9gyDh96T%WS8@AS^;9TJ0`1=-lQh zU1*+4Z}priS%wZdl?!|!r7H{f6RIumN(>KAgKi`Gfz+AD}AHWJk8~%r|Z!Rr>E*2eHeSl%W3t0o=)k9t@4~M zy_W3xoba$Ss5$a)o}LT0bd^)9a92XcY3!eV^YZj+=vmFcJKe;rb{a$S^hRiB>0q9| z5eiSU|6!iKoAQEGpMD5Foqik(?eq(LSqSCnH`fF8K74G(_o=AW|EFh)+zh4DKh>LO zpS7E3`+Vy>rw`oJ7#nijb`_0U1t%*GdSPQXmIwK z!6cm-4yH3agL{Tsyw2D!V_2SvX)({>?KxA*usoCSF#E!1($v7!3&;S<)xE1Tv!S98 zYUaVOGYfQw-3=U7F)LQJP1b%Uqplk5bY>k@Tyybm3w#0QnN5_dqM>K*qLczW3cxE+ z^bT{vnWt}6{4aoil>%%0hf9BO2Gl(Bu~P84YJ6naJfrLXGe036XYhZY!Rqy#*{KV< zRv3P!hrFZzW%wDjf6r+A$61a4nB@)MMmaoZ=MWuwb~zg;XG2@bOQ|r==ArV=a$ULA7}A@u({?k&lX`gxOrj~m2s8Zb9U(potU(db>>;_|MHw&rE}X^ z9sfCsvCUzgy$>vp7|rI{8<6_5x6+ogcdI=W1It)>sn7fDleD-0hrWMu_BGga_Ps{) z?C*5uSq}t!uT-%9@tobNU2>&j`k6|?jT+C{?Yb3nmis@>9#&jk;93aoVhsbSLx0tq z=e#Iz&KF1ex#1O_b5Xj#er_~XoeR?3i6A}~&Q6Bv2lHGq=|p>I*i>nqd5(eZIhU&w zi>{T=m4aUPSI)8iKF?b^o^usEd2{Xv+VG|t^IRPW^u*^m^?#jH+d+vvw~>drmjHG@ zi46C1zXG;{W}bT-l%FB?=UxmWnY)j;LK2vFN&ZC1`iD@l>NOm8o^#&>@TKGboR0r& zM&G$V`H^CCd(L&nG@9qS`HJITn6~f)d^vZ)VV>7(56}C+4Bg1kn2z&$|JnJmhTS}` z_g|dXTeHqb1DQw@&rhd1n?e$ObbdC_HvqiFWnKt`hV$hcVA6T^)y}U(BfzBF+@A9l z5x^%fkj`@m@%)As^ZZ7rKTp62`Ve$=h~yQ9!*l+&n;2T>@6}e|N@0#V|1xmjEhg){ z-DzI%w^85Qkn{(9L)>5|4~4x3lkVq7eX0l7xZqr3%dTlkU+m)$fzbw zoqo7fJs0xTQD*bL%Dk|k!Mt!aK=&KX<^^^8Tu|5Xg&LsOC}f>p_Hlvxullu?u9h!s zT!yYl1p6(_b{97P&w#2oFFcGCULc;{bK$uez$Ad}RfCr?S*Tw4)Gl5Z>ct3lh{5X} z=7ryy#4EE(ycX4o*N1NL+N!v>t>@0{3%w5U8U*}Ur+9_qN3Rzzb!S{St84`9|7Ur9rFE8gQ}T~!5N-p_2>@ag@h*d} zeFj*%6vI)xS%?@2&wwTn6o!uh8wZhO_!C92o|Lh4QH;$g#*}6;aw%p+bIYn2DFDvW zkWgS*{~^3pob_^x!RD`JlwamU{*|?2*nw@viX0P8jMY$TT%~hDgnq80JTI$? zu?Z>-{J&z{VYG;G4;(WdbzloW2`DdUu<_g=#+%h*%d8c`wZZaUtuI)&0`ohz@|b$D z&7ePQZp-+2JzKSu zku;rfSFug36B~kJ*}|Ek#TMPKRQs=tw`?=jjZ?@FTuQM#qaI__F19k7W#jyUWm|-6 zL~MFui=7a$VM2?o&Mme_wVFo7z8;z%RP5I|5t}&_ME{HJE(1vXpZyBD3QpLbcTnU@ z9{}Fzzd&#a2bOG=V*8kCKD`Y3b+vc7*1Q#luJ8eGJBao)i0ue8T_Cr{Xtrzzbf877 zrB8r3q1CYdZ7W02y?r3wdk~HH_J=<2QAQzNwMJ8$$}+}R zTgU*n<^9~tRn`F8eRVP*tkxPZ?WRTWDO@Q&Z#0R| z*)`%D*l77KujZ1s3i18YA%0Vx;ujq$e&uoEcWJHo-CiSpo+|PCnL*@zh{Apdt2gog zmiOs<;K$lX@lky~pT_wNp*cPy=o6o@&7@TW>NCkkMwCN*vLMuBd>KMkh5}!GM-D3mCVn7=e&oaHGV3XVOSshOiT{9H%j~U4FX=OuKd~QH-Qt}qY ziRuL(w!?LP5uYtaqvi7$j$!e68V35jpo#ydHTgi0MN59D7oR^UyI;xV{%gzUpBjIb zPxt!#LL_eyed4p7{_@$QUOytL#itvo^f_u&Sw1JTNn>9_d<|Qz_ztcXUw?YSWz>l8 zD7t1L?e?8qFTOKvt(I@h@)q&c*f0DU;+w<|rf%_N{uf`-B86D{G{l$nkNC2cBEC!i ztI2&D#J2&6+W>tSh!+)cD^OhfDZbZGCyqk#y$KFvDmix>4VLc%=~NM=RXm|-&l(M= z48UJCR$IPrvnwRN?0<^yM{vdWQ()O265rpz+(DV1X7LNu!hb2?PO5MiwC@0LOO0mn z#r_xHlSYl@d)|a-zX1r&2tfUY!hJnMAE<7uM)8|K9e$w{Q$Jx9J?od~62D?wwdI#} z1z9FpVG3Blk3eKSk^dJ$sNX_*!4DH%{8kux}o=(#d^_F7$gL1wm3;-v;7Ch1dIk)O&*l6TdGE3Vlnz`uzam zq`AfK53OW7-1OUHL(**x;@71Zm=68UD+Zna`!RregTopy-0747K^O!C7CGHCjG?IU zPu!g)133TIb|>0>09S=x1ze6x1{6{K)e5ElPyF060OM5#FsiKqiwO*q0awBkRz)&^ z+b^sE4b>D>-_Hsy)JmZ+pIRAk2dPi7e@OY470ErCyM-|_;4yU=;7OMO>i?Nd&m_8K z0QVoufcK0#Yrse9qv7a;4EVN225i&9`2S_V&-&*N`dv>Sdkt=|1`hMG%kY+Z8UClk z8u{81w~Rd0WCcv|a!SDJMhSSPMgm@S$*6*XE*ThGFN2coGI)$b27l|8p^rDqaEx9r zQ297zU{0$w@b~*2*1)~@+GWrH?@Ae1=8%CO*=6A8bi=?)y_;mJYvUH}Tft!JTkXhw=tV7r~@G-<=;M25b zpss&#t6Kx#)JLw@Q2YZ5mBErN_!?l*z;BSdf&W4e4E%WwSsS$IHqF=t@2;~oS_2QG z?FM-(jlB$mfn0|y124cOT|RL?zYH46z#TNU${G}m(b$H6Mg~PVWKg{B+11IQX&}T1tU6 zw}_UIcr%IIjVpuhZ;?R{QIj1K*v^+hPt%e?FTlS+{|EmDy|u`jYCZw=cclNQb$qUM zeA7Rn=w=fizk+~!CuGoWIuWBr26ffR;K7=5+`*w|kezFh!3N_D@2w2>qjue}G9Zh^ zs)0-mp5(FyKZXlc2FD@|tDQ3VdgvRRN^$|AW7gm-j%~|ep=TcP;Rjx)7=V`nSfMzV zz$)S|`faVj#6MC&lMHTv(Sw;@tie~K{A92$18`EvVDA5s!FSTk!S~Y4!4K(bPHa^6 zJR9MJBgo*l0RK|wDyVqRsI~@wgiA>Ve+mKmHt`j{kh!ByhBUim$jK%dnuYK-c)P8^ zJrBFAA(QTIlp%ROjcpHs=Db~oz>FbdDR)2kh73R$h7c%k4GGvx#SNM^9-8$|v}+wQ zWE#Nw*j;}{GL;X>AdFjvez84dMw$j~%; zcIa?;77DRL$Fv}+Do7NeUUtO#?C%x1u#PSqF@XcveBnP(iwemaLPZTsLG5 zoqH8|m!ijqUP&G%gf+BM!Icw3U68v7GKUiXFGJU9>1!3?4KwN9q1+u8Pq~K`@&O?A z=zKKu+R)b>GHi!k{C7EJcnqC9^z#-Odb&Y|#jTZLn<``&mtV=yZ;Tpi==WO`(_f(J z01kU!hHCs*8|~Skc5#IaJwn5Wo`8CGwya?T+w3xIxKoA&!A4Fau3)wqHs)?9wo`Z* z`rjHB&MlTQOzq!nCYE7|&^>G>Ef}Wr|1kJt4J*BuG#8^_*b>g^P;i-Es76c?+#iO= zM26LXvWRgvteISG^{}he9$MMoPzv8nrwzM9vEHLtwqGk~4JQ3UbVw&~%vE9hYV zd=05oeeGYaD}q*RFo*c7N$!u$E&erCmj7L90{GWLynhRb+Z5^gRUpOsvHWjbuBC4S z&2;pQ|094tp{sOmic&1kQWINH;{U25;h9|Ve@}~jRPEhp`G4!+nxsha-)_*%?-k-_ zqrvk3k8W&Tv{FghM<4iidE3SRw8I)cbOE9iN>>l}VrEcLA3hN1Y?Q_Dpp{i^mpNp( z%Dzf2I#PzKn*}3BhR4${!_(6!uD%5}y=8bVd6N;0;iZr`d@gMt&VH~AXZIwx3IeA8(WqcT~!VV@)zLy+KB{ zRm;fd=!W6voHC*ryKn^Y#4^I4y;FybnB%ifMoi{M2E}ICtr4ZkGy{Cpk@FX98}X8!qj5&ch&QPzP7(cG%YQ;! zFGtu%d~Gzyi0@#?h@TYvcU@b}N6JTZ(2_%%M68ysyzzD_O=q!zkN_EJ7_BnWkJ2ND zAgm)t!>4gD&kpvHAz+`S`4O5w4eTQmpmiiqMIexT&7wa>=Fz<)%j#vMTk|eO6hU7=(lM`#T7sSnG5{UgA!1NYygIxk1 z0M`>**+!bRf*uLDliYh?tPVQ$sRTR%wkQNm^-jP`*(3*}{R2LQI2L{ZN8K_CjH6<; zF3!J7z&|m7{PMp=K)`lQX8%V5_8YZUKu-!txJ1N~5$FDIv6X)F7HN zO4t9RMgc#H_djG*2pu{q3_%_h6%X8G`f3zcgv+Q@Es=>58znlNZA^HhE+Od(2FEDk z|74V2@)eIxA7wWxIJ!^D9aR$eU8MvS)Jf3h3JH2+tpt7CC_($HCHNkZlhTGWu_5+EK4PMOTdSG+Lt{yeCpdKTrD0zM%ePos3Rv zl+pEdGWu@2jK0si)f%;|oy@K%Az;?%!bSkf$yteRV54<0EgwBk zi!Opeqv3`%y5brtEP*ehSJRgjHj1_8QfvbXY=y#Kr|>r^{OwFwh5ed^IAey_Xtn=G z>-paW;BZq%8MVK~Z&7^Q|0JV53c~&8*66J*NYUt@oiauZ-qG7!GR9Y_-ban+IoBN*)axkAR`hZ*}~gN*&P zQUU|%nFWy&SnH6$tLWBdY92%XkNJ?A$1GYcV_v1B#?&~hF^?{=x8;)aj8COCX5G#F zy1P!s+}9{$9@IkD>7b$VoAl4^RIEH`gfhaNiM8h5D|L6)Sz}&OZ+|cyIOZ)RVa)p~ zk4v?-FDhgV5x+9#Te@+~_l%}%_3L*YbDlqA zy}>$``A^0UqxoYw_$y-r>5s7!poREN8O#0GGB$=yKqnumWS4+pY^Kp@jTLntjxB`p zSUO?sT#dR_Z_wB)?K1XZEnJ~>s55D-3wauQ6{>V>3%xt`YG$qqAU833#@<2U%{u3* zD{AZm=z%GCqH`OHi;+y%pHG#UbOaZ?eWcxdC-Ea6pTU^No~oAq_Gvl>LMz z8JAHj<1UGlan+z1HyFg@hC}bT(GWFG?>|-t4|kl%I1Y!%xM}cm9Q(i4xYPtP!W1fp z&KQTiXN@aSMW|l3ajO5uVSvauykyq6N`njo_Kb5W78VFHu0^XM{#C}cQH`2d<8FZo zU_uWPxxS{k>3Pv!H#=TK5ItztZ|=c*e!0Aaa*bFXGQY^ z9chQf3;BPgR=>-o7>=-UN$^Fa1bJ!ICyZKa+*xOTEA)IF*XYr>pka)cps`L3zfp#x zthxU}g2EYRL2>mGr2C&lG)Pb?q92r{Yp5Vy|3=Z`AnrerpgD+I5GzzGXvs~iHSq)l zt%B-CD!v2qg6biQ&~ORj9ik%03))yrWAn+rg(@fWF9kUb+HwQ!Lc;_-0|I=XSY4D+ z|0hRsCForSL(tzDo$5{t`b^3AT7P{9M}vOS%-8XXD2jze0^pHCM+w zY4rFy-2a&nH-3#Kt!KFeSI1uued9I$Ssj<-?@_=l42wA0IQ|uTTP5)Cf!Sih82`3D za8kuxvaQzmk5o)Kb1&n+RGh@W!#wcqbXXHo>RmD+t6nA)`ZQYOk6lgvS-VV_NNRtB zPWBhAwIZANIP9A+8ig_;II$nX)ju*OL_*XA&N|8j9Rp<)ap|Q@RFtb* zK_ys|6Xq6yT$x)8H4`{fCKK4bk_j3yU?4LSuBrt|GhcHwZ=FJ2s{q&QpIfwsJB=E3 zy{n6L!oxU#SJlddr;Q4kfd8v4#Fy$ljWRK~S|-k^mx+s;WMTykp1@u}2>SvdhuIK@ zNfZ7ECfOa&pc$-5Mmg_LU&UP=jB2pdC| zD*OtPE@KH1;-r&9i2s(5Mka<3;=d(?_-`v@(^4go^xI%V$ldzqet2wC(8n1#A&1AR=sn*l69>S?5y(?IoiTAJ8buf)6URnCbuiUVoP=~u3}*yPjMmTTP%$wHDki3D zSlm*(OcV&7sES~s-v6Di02gJT&YHMPmxU2FP@sz@HYpnJf4Ep#s}@nW@I>NYWa7;f zPNTIGH+$QyiBC8kGHJO}CfzWIT0eEm#2+hV;{IBh$wb}%nRrwi(x;!?|0I(PST+Z4O&Y9UD*uy4 z!^%lPq_fVGNjlF>iqxc78Zb%s;<3xLdnTz~o0N-CO)BaaD*e1vA(?$-lCFO^T_KZd zs$|ktnpaB-n~^f91<{yvwHDl1Mq0XUrA)e$x*pRS?xhPRJv5v2RHf!=Mfd{Lq$+`L zFc(ewfaI-+-lWg$)}*gkX`}o4XAhb51IjX9X(Rr>?Q(DGIsn`;yG$Oc#aRg>Gw|`G zl5q}JOh$oNlLxBZ7DaO>kA#HD#D7?mClrxJz?@9x4gi@PW3RoFP0lF< z#1^#Dn*2s@oi*j3?QSb_{GZJd*V7_1CpO9K(AC!LZ@gSmgtcqP;)lxa# zA(hK)RQ8X*H(67zs~zN&$vYhq`k70@)-_sT_uDIE%ETI(l4zGHW`j)0kCQ1^dRNNi zo;nGAw^2erK@Ckl`My&^XZpCU&_O)N%t9)3OpSyF(XVVvgpQ;|y6PodQbH%fkVMIBnQrAb1YneR6Pz69uH)K`r}w<(fJO!*Kk?m`EJ zV*m6T$f4Idtk9dY>D6vuuU_@Kl{>xPc8S9tOUhHtvC{W28Nxl`#KVp@%k8h67j}CXW6T%g? z8G^%zZU}q1LBhVQk+28@l~d)Fff=Gc>|J(vqKom0)xU+p0-FXwomV zHSACIuLjW8ust?%yZLd1N?eMjPt5|}y^|?k&@;tP*Oxk?rwnJ{P8qFf!P?EbB$zTq zGcfV2DbrP(_ruMknkjn!?-eLvUV@b=#ne89Gq5rR``4OsdA~VK#Zy+gWQy*1PFbyZ z8Ysi_elkV(Kd0#aFH@sTVS9MW2N*0em$#foT@8XpKbN)+!NC z)VIxTmWXHE67g1?L~QkIw8AGn7AfIzaS}emE#cqSN%*!V2|oz#aPBCV@Mt_pYSi7q zlo5W(8VO(7EaCNlG&V~3y$urncCCbeNu$CqGeEMK7Kf|XKfHoA>Y^@uHKJp%m^W;c zCjKLw(Ln;hHz@F}3Vc^TL%{l|Q^KFq%Ae8_^i;TRj)uSfU-pIT{&)CCsL}9GwTR;1 z`rqYhIOm@v{10fIr$D<9)NuU2XnAlRhGXH}f7zDEa@KOnRNs1;I-a36)!!jgS--Ts z1^m=Nn69!jb+WNqrcMRV)EEZ;)C3Ko%fxPbi@Yqx#nj?jnYsuzI~4j7#AhngeOm=} zO;vBuR6F9S*6UQlH)U$Q{%QgTH%VGkui1>TIQ1sV=>Fc++qLv&tmruueu%bBeVlep zeFhQB)N*S7PJI*XDGIIr ki(&tpM!I!UX0QI;e0(VnHRE9-89?|95a${{9W7UdyNnNcGuaU%YNQrolPKx-DnJeN`RjmypS}O8z#@+J%Hg>@!wLM3)kE1b>_XZzE1?P3-?lq>ug~{)=>{L~3kUWS}x@ zXq80L6;Z9#RvKT;yqldl>&@;0}VF$RB*%61j`7^Gy;p%wLptDIHT?Y_^=|p|5j$#sK*GfW^#>s;W1j`VW>sD&7=X`d(gib%O&bV zepF$~M*WL0w5VU8crSBLJ$`Q+Rc_~d7ewgcEo@>ds_PQSE@u2k5fg`D1I&5QM0>Mz zh#uvT=whct_a99qaYBVen@|-!m5eO75k0+5qSGKRI(Z{_bn8`xHWS?#T|j&Ed8D=A zjGjl1uK1#t!q;f~B7iUPrUuqDF+@mvu~dq_dPAectndN-Z3JOCB&H}*Vy^IBC(#d8 zTG2;tC3k?9c>xSR;J=IBuY~>|ERTK@A&%yVh!y?eLpTZU0P5>ViT)=_!cA3+*@C{+ zZAJe@6bqqtZ7%Y3{jX9T-3@8$NL)anQ%d4_{=|60#<}nyW_+y`lf24d#hB$yR!n{| zb;eAl&KTamlo*wSm;_zE>BQau!R%yU*i_+fQNsmH<@yJuYsD;1CJhq-F#+jHFE|-f zM-U07Dl@LcsI++z)EC3vRLnarE2jHeDpQ|i%stp>F^}HaEHO_4RHZ~bhaAPcto6U4 zavz8!$9x394h8+{dT{>=E6O41rz(0yr*=^5`3J7&keEGMyi*q*T9CM4J<_qnyI!UZ zaLTkC2K6Pu2*|Wyc6TV`3WX zUu)W3Ek0aR&#ow`k3+$i@NL?Q5co+UA~@|$ko`j|drzfm7VQg0;IX^3%>jz#do<^? zUv$BP6U>^nV>!RncR%f*u8f+jX-7C`D6yno?v&Ue4v8I&5{Vt4hD{E%#&Z6jY2Gcd zL8KVSU@So$vFiZdWUH0fB=lVi9T>|!yb34449~F z!LHcXw8D47AdUEbiTy~SKJ~7W*zeK7!>c9kGEMo}w$_T>&Nh7PF3_v9A$FhA(uJuT zd&=H6uhNPe!fve)~Ho#+7HcFg&JsA{M zT&haG+Jo@LOV;z=b;_cISCJIKK^ej?zw6>?BMHNYWy66zlJe!e>WUfoF|tGqhYPd z{~FI2_an1q+;3q@++U=r|30n*mc|`0n%jc?nyl%Awz{p$DjbqnP$`M_YDw%`BS~2+CFwo4Bwtq{DKSn-`PMEef7D6J z{u)Ug*CMGi;v{u;lcYLpCG{G7iqqFN$@J&yC4ORq#Lsp}{KnN1|9p+ae^4v&|Dl%Y z8`sJ7M`_0No1SBeoPPK6#{PRKsv~9kgV3(#+w`aSVPig+{+e5+|AAtk{$8t0=av_l z{vqw1Zo%Z~Uov%0*JmVT`j4=7et#JX?*ia744=M_`Dc0;Y@N;;K&ESO_&lS*iuX#! z#S=e}#WNirKhi1jW5`nLK0a877q&+H6a+P1qt)Z%7)kLn9ag-lF8z4D1*?$(Sfv!w z&bh!f8Z>eNb;K{B>*80~70{vI3`&W=xF+F?`(Gt~19fGvuMmIRa+k#4rBov*@%QWY zMLhGLnn&?ZQ;SMY{3}Wa?|(?V+W$)w=2L3@QGvdKi}By7R#HVD|10AwTx;MwnZ)nW zGM#8hEkgWbyv9Gq|9|n1zRi*lXqSY%dPyMGDd82DBy2aDtb~x;DYGh45~7==-|)=_ zK|(4ZswxsPAxvYUBCs+O$|@y6-O34<($<89n!i+W*ws9liJnfVXV)yD1$G6iRFZ!+ zxEcM?F!2y;uq7De@_LOn&-CcL0yGg>p=Fjh*!y9jl{-}Unoqt;6J zq6j*P9ZL9-LP!SVhl2kBeIPtY*v2_*R7H`lNQWaZ>+XvTz9=r$Yk9LtPS~|v86?3 zya~rFF8oEh3fs`ti|OGd|ZH)&}1-){Gr1os#I)Y9;#2 ztCPerjglCJ4|&ERcFDkWEK+8ir4pT!W}F0-P9i#g&xe9EN)9C>aiq4J(UllX7bH$X zXcN)3Og2qc;`DeLmYAfC(#$M{7vL)yy@{7>szMxUB~f*7B1=U{#3Rp{9KPIcN!)0c z#P?m2_?5yC7-c1HxE2ChSck0u1QRv!b%tc(z4?%X_a^ZXt>a0p<2hs?@s((x1C#)@ ze^V9zM@rOZYMh#MbmBiX4gDvHzcQK=aU3M>hSp$3v0s~ItG5zQEO1NGU`4I{pX3GV zBtNxkq8P$Sn1M-Y#u_Urh!fM2G?g<&PDzS4YOJJb>d(Unk|g5)=erKjD9vO)Xigql0Ce(bRXc9H@E{EZ zxd}ItBQFE#45uU~0ioTVtmohLOudfe6Tqz(s(36fOS|8!ctr0Qm4 zD%O^ya{k*&jZ@)Kzi4VIBATi`iByvwB=VO_K_#^e-JE(U%k9*K5SqFawxq65NajE2 zv0JJ2UQCavYy?=T>jFWRh?J$?1Q;uRNxfYW_WS>oiih><38mm!1MA`?{nP=L`nJjq zAOC<}3|}kti|aLy`;R4+_fI7CXZ=+F&t@k4)LnG?7MPrhFUv|jqBC$aa)oZPQZHnI zXePGG%rUg%Qnxj8q)M#LyEAqEk6<}JGudtxUbd)N3ZJi+!re|O>_Xkm%=x0uD$H(X z;+*+-ousX4k+i!Tt+Z$7S4!r-8p*n_MzWu5vS!sRb4ku+4Pxf36j@&(vcF1lUt2AC z%iNNO>nDGCv*bVGko;FyNx^NkQtXNKiIsM#b}I)-C2a{cr)j8In#KvIIgyaGI>oKdUyXoBTaSpQZKRLVZlp8PZr4Nm z8hw&>KlG+OjN(aq@>bH)2l4rhQ_{<8Bpt70MpA=heD9J>9PpVncFDY|Su!{K*sZj` zQXrvykxSBj>m+>wWjEmGPdki%Anh!Va5Ih&o<)(8ru&~tdAb4R3*lz^kbZqcEu%Df zTt6ooB|Q{^(sd&^eVYDCfQ#uV(3hT}U^)7WT`oy42BCpZBYnv_Nyh|E-$cXGX}^{3 z(34-mFfF}t5h&Kdan^V$Wa-!TSJNQrHzU32cW4dwFpAQ*&_(G_wOZ-lYiwEi%axM; zCdD|JW1~OP|EBbC|F5KbU~4+(pRM$*7dcPb&x-jE#cTt1Z@pwNv?cwZf*yve=_iuB zost3Kj3H`P)k%iNzbv9NXQNv)#&a7edGXMm5vuWS8QT9Ddj3J{2xr>M$OrCvfF5a< z42^oqC|@ZVEwnLXQ8Wc=A$C!%WT@veLyhGOC&N%T;xlyp7f2g3uGYLZD%E}Sj9ZM= zR>oZml_-vMgp(X=G*}r=%{S=m=Qa6t@V-sD?j>aC`JV-f#nL~jhBLO3$K%hE@t0dN z&NwA=f&%WeRaqGa7Bux+Ic#}m9M#l5iff!grWfqY^hGUa4#|V(nWNNYQ74(&|2mIl zYM5|lq~4kYBQlx)GIjpT)cFs$H2+8`U=fjd2|wo1NF_LPk>X-Gqn(^t1*~o*X4X=m z+_t7IzE(0@73>;K-K2<#e~`>O0OXZd$$Yp%GQUuOClugWTdS4%S_n|O;>l$GmrQNH zu0S&_dIT*fncu?2%qp>rK?tuN+p%;#hFj z@;b>PtSjqIZ-DFe{t>&YFE0 zWiFw=RhOX8vp9pCwGP@LCs=5|4)WZjBp z2}B68?wdz%XL0d}`qu*SI%K^>t*?^34ECyZne{hgjbx$!CCj6*=!UHC0M`A6ERFxt zsVD1Cc#+kPj>+m!IuD_+vQ9uJcgkuPXPp5s2YJaJYM1Oe&62%^QrRQDtE}wMwQehW zYI>8EovwQxi*Twjt7j)%ESa4`Nj)B%ol9vwaFeb2PsdLY(|tCM;cNmttn6jW6+Jf= zA$Qq&R(P?(YIt9=t=h`Iu8gYg)wfiLN6)@h^X?+=;=UdqkMbcz!(_h+mX3OvHQX(; zrog!DzabXc|1fH;Y-<@qIr}@(b`r#*C}_Wx{X6wb_BPC+YN~BiT6=&w3pcWlp_sBy z!b%OUpQS$US$_I!2-PLRvst6*g;~LisA$$CN-v=FEKY^Z((vqAyk=?5%9+QnJd$VnYdLkz!iU$EimPqb4Sd{3md7r$*pJJJVQQ2*$tl1t znMMCwv+iyJq1r~X9zv96Jq_j$(O9!ytnseXE|`T6Se4N%mH(O8;7b(t3w)}xeki1T z=Nvdb>n{M?6_AH{6u1N6MIc^kTP?Ht)>=8E34OM547*cuhJcuXn(Xd3WpmX3wFH^U zVYualYU@Fe({KN=Hp@wZ>TC$jN!JmwgsaFdg~v%mCb%>dYX3c3Kfvtj^ci?c&`qj{yb2IgDSnLX_(luVrW(c6qtei)dY4!{K!jYrz zzg(f&Z;-7K%sGE2{IY);mcvO9$-yPmR^r=WL=9sFN-od|Cy@)rZZT|SZmNaGm8GjR<_JUjSY!nq?noP z2!^rUV9u=<^MG9>%O&EV67zBr9%0pOR)C2pC(CqcvieFm3!pmDTnl~<3s~lL0jO5Z zWqE9F(X4y>vve^G@y|Ai`5oe9zJz)+Ut^{*-v{59YCxFk|1&>@vLrAEC}wbQ|EZY2 zA*$wI3bT_5+a&%4OMH!(#~MViQ^aKd+cM8DV(`ddhX`t4?Pp>C7cHW%y)}zWU<`@c zKkSkA`Lp7 z%UUJ1s*PKQL~a4c=cIjyybB@U@+R^w59;Ydd6slSKUERSOHiglas|Um{>HEpjeiyo zH5y9iH+ZIXbu2%j7UefMDmyfbqI)PB;8!oXG%6RBmAk?vxvh4|y~!!L&*9_E^><5d zAOPy>${j^5)d+j;Bt1c@5v{AO+-RKvL7JOFdA5BdH{*ZZq-ADPX>J+S=Mw*77piwk)=8d@f1HYv7jHCL zc`5TXZx)5Q_CfOU$YciQUyJ0;h3LG6{l*}K>q(eAu7j04jTy_U)0MxLT}N4(EqNF1 zKV1Zq`e3u&9tOMW>`&U*}9oA(OiIPZ17-lq=beBL`$sD@|WNByE-XXS0hf0(zE z@w-ZNsO#pugN*CEqwr+OMV{oT{Zj(F^VyM+eBOVs@<%MJvGQl?fzSL2 zPRXBqQAQUc2>H?VlF#06TONIz-yi>?Vw`URmQO3gsEgeqjzKXz^B2^im>pLB(kQYD zh=9ni0ahcu@_GMM^4-MsT?yPe7GWt`auZF-zZogYSO0(hJxFQ(mVSOVO8%3I>iH#* zz6gSRp!nmplK)Gi6hyFAVsKgcpX&sb|4*eCY(GLrtkSW)LGsnlm%m$+_ruTpZv8w8 zS!zV&pP@qwyu6#GV3uIF^mf?r`VPBO$ZyB3NHuBT|f z_M#~FUrB+ke+nLk&OCTg@C;p4@S;&;6}*YU`(G%2iQ zp0okiLSc4Bn0#DL1quq_GtWb;ROU}wr>K} zOr{O9{b|GOQ8an>I6!8HkRFTyHan3}HWc;j_kj6=*3agEk~KT~bM|FkTqCpDd7Qnb zPG(;XJ+l{5nzqSo_J7-+QG|MabheZJn5|B#*^O8XirKA*+7$8zzCsvLv+tqovx@pb zeRZ8($JtLpcL*{!`z59CHTqz-_J5Yr_@S1ys6~Uayu8W(l@h(wc#0Ln?Dh|6YL}wj zuUuqt2P0-5p)_aS^wK_S_Jsv}*?g<4qM&!2QuL%lig9QZU$;_S*CSlPHG_XkRe+?5ZdN7+M#cKY=xs zky7*zK-5)V^f@JSkc^@qLEi_*i+-hVi~iJl+i@=o!;*5$4pMZik}_(>H%Jlpe@n4W zp2dD_z5!C~4_U>d$VU#X;?M=~q8!?aBWO(VG%yz@Fpi3K{1<2FXAa~S=R-tsF+?Py zEQ=Qcu!_zurvIgQ1-)6k(gdZt%!}(4RHMO)TM@8g9UNiCDk;86zivl87H`%};z8Op zW~x|^$Q3_}tQWte>FWO~ew*H#<5Oo9Z+**QmH4(frDUkfDjDOX$BKVzY-6*wn5*rq z;`Rrs+6YaziVxfwDaG9QA;pK3h~tD*ZKUQJh$&J3hpyIJ{`;-||7+mz+(;==DUBWI zkdnLxDZQu3D(l?fluPE?<&syMWll_u%(<*y<~#>2C6}>1SF*1^hA{6O1YS4Mba*)l2t8)UrWGa+eMkE;dpk^!>vO63ehJ z%2HauP&Sl0W-!Fc#@{G2Y(m(i>;S21iZYbE^^(%)h|RCZ&Fl%eg*UQqP6Yfw@a zyhJj^& zHA`6s>?+#{fF4*(#KI~&<&g3t^-@j@NIJb-KBUqrH*0F8d{v#4cSA(^$VbrWPuitC z6woB6l+UEU%Ol&EfXe&NKei%p7zebvJPV?1sNM21T*`nhRnU353thelnl&P>e1#%i znF0}|-gc{e?GoVDH%mE_GIs~BlkyuHrTha$a<9WGf4+ij-Qq2Okd~A`hD4V$6LKvi zZ)>~T3RGgK_+2XIW;v_;)5W#@akS;%>S~w9{J{G2Rk^mue@>TED zvz%u?_0+TL*?af*{>0z!_4|Xc-}yd$W}caO=9&4vi5&3}h0a4CX-_~AnW;$cqE9{a zo5!NAqz0qThhn0x!yQH4B>39|KL+`t z#vxIZhL)(ww6E*?@I=yE)LOhm3l$!f?{T7*56fi|4>11Ei7MT|=+Vgg+MyP;Sk&r8 zd;yYa0ToX@-=tbCIfoyfIzy$B}xh1QBUN<<_*#eqh6w# zqF(Kt&Y-LgQ6P=x|5`3aeIjaKQala0n5kIwpZ*AcM)&LOl|hR>8wI1!)2l(CMqf&7 z>KaO}<~>{0PV~(zouUZ(DRiyJT(airXdNy4#x>0%6NI+(r6TM1yxRDBtZdHUOLN8eVSTx^+wCDp= zX!H?<8e-4Px9HEyET%GKG4BR#${L@=KjX2)bBio-hu0Dr5tGi&wxp|aEU7Tdl9*0g z^fyxSNAdZ+1y9)MwHWq2V>0{};~r`;rS#00!4SQx$YKcOIWbqyQO|Z+%ysm%n46G3 z<~9_~$M`W5YeA3IdrGz2$z?beqxL@)yJu3TMReF0@11}Uc<;R+M43~!pmYolIp$fc z60-o}o#+;`1Wysu#3yzvW&`Zi_gj!TM%!UA%6}g#@(0Dahm*%KkI`7}{UZS~<|!B| zfEDwifM2EA#JqJEDC(mzUj}T-&{CVCiAcX1-v3mWO&Nr+jJ!7G zdJ;VwPq_kBb?R@*2$B`1+>&imqM$M5j)*dw!ZOU6GJ*XAo1&qMNt`n!8MiSd z1G(@Q+Iya&_%Goin^Gv~U@R9LOqoUbT#8oe2$GV45T#KtOA&YoBUU7f(#pZy|SGFuRSZ1-+ zh|nsAmC6etu<`w%aL=^FkRsF}l3bL+yP@wMiNFYD=SlokB?Hf!M7fDJ++=VWSyNz#s zBn6$g0SP{fyCA?Q$yEj5jbm7hV;T^5GnOE+BJNs9$7!iB0+AH|j?*dmxN#UUjzB=~ zMoL@^=7>wpqMYPai*pApP6t5-sz!xU46%v4Rs1`y8e+Gxrj6tLf818;caX>8@1b|b zt-`c%N{xzZ^8u8L{Be81_(d-d&~@XE@EuW$`#WVnV0Y{r_k5YfeT=-{VBffZ>smz? zR&k7f7WY2Bl${DE?hAPh4FkGeCn=)X;v24E&fg@#E8!mj(ygq&%az>(X{1yQ#5h8vsjWE7Dr0GGJ z%cU&7M{ITfTl_z$f_tz@{A+$o__xavzCAV9;y)>|gy=F$s0&%bCh9%@Clcv2WlXpe zPPN)t=S@HG61V{;;aZQAaINt}BRoatJYxC9jwSBlhHYCds8gvUwTa(A!rh`A@C!V-1= zP2wR*eH?`nAI1SBKJFE(r=iR#04MRyahxz?2AXsRCQbYR2OzSaV8g^OCCZQF97*Qi zAgo=GB<+9pZs%bT7Q9IVktOM3q)oaU5N(MkasI=Sbp9>rW}0o%7`G*PsfDEb#sDuL zMnz!rB>bZ#B?({ie+6KZxPK8E@@&uv=v6t&CCw1AS~00dsH7zjTcblKN$Ag{z4sDq zB`_y#LF1&I5xJJMS19ykWt=N1*ke^V6yW#8RN z`GD_QTMBuAnn|X7!)Tx_x|Cm;(4_Xuw$ve@q@IBbNjV>h8(!6&RjXZS( z+hM8NW#QfnO{!CGgY*!@OP%1eR5q`j)CU)`a&iMUb*QB>mrQlD97u)8WEyU29=#{E zkY3Zd{V+{BlT8zKd;{+_qxP-TRRY`A29A1MoRsHK_m5B3G)-uPi5Sk z+Mjm>qDcTOwyEdk+EjJZse_=x{KTdXLEWi3|2}mDXj9c)rrxT@JHcV5=1iR+@5OO* zn;IpW2cCV zxxAKkyUWs2>2Q@kn>Gvlxmh-CJvf~pAE!yXaTwDYX%8Grn6^UH)<7r)$)~kp*lFA7 z0n>I*q>Nokn|7F6rD!Xv(P{X9oAwxQFt9W2#lk{M8-$(MgPisrn4dxL7bruk2r=09ng|JWb99KgFhXErLp|Bw8DrIOA82IZD0WZBKlTZ+6vzP z?y>ZYEK7F}we$dKL}{()@q*jZJ`neq!(!}u64pd6-^gV7$f-mLSnVYGR`WpjEPy6@og@LgF;UF&g`J2qh0!c z-Io57WZD;0_L-$01>+=Mx>PiD{!zPg>3sjf(w`IUmoZrSf7HIG>G6GRp8h}TDE-TH z>L~p?>PTmX(|_k}#;Fj=I2~B!Z)IHMvy7{XoQ!eGSj@Ow({GKH8Q0L0Gj2%5$;5>$ zgYnPFxZ8Mn3;zgzI2n_(PA#^KG~{m$T1HoyWxPo3WaI=aLxX$@7MGG8br_7is%`;6j09S>}APIo&U@@siH@P^8`3| zQ2Z}&GYYW)3`GKjM*~Ji(=-P zDgQUHU$JH0n&)IrNUpNXbf6YwTjmOX_!Q*HyekCrOqt;SW=CamIb3Ec!er|9o!;pb zEi1DChnUI9w=1l~$8lYut8iVX6`6|#hvWKlCS)@a3-|4~F4i|u6WKoCzmZJFki&I-gxg#< zV_w(oNbAC%IIi)^#JHLXvMV8AS!ehxD*+W<=>Tmca=j~wkMKkH{J2gERd>{ZM@3l4YEc>R$11am|54nW{sz05*;y~YR`HI(?#O?K3(L~|KUptgm8@5BJ)Gj=8l6HX>)Uw0KSYG%Pe7bvd zz}!)|J~qywp>u6ot-2pTc?dY}cqDb)shWyi5}9po)_?9Q#B%#+GVT&Yb(b+3Yl`C5 z`7gK5f4O!4v3n8K?OrY-YkJw9SLC?A`5@#R&3h~896Rt@j&q{@xk5YfRJJ|e8nBnz z-1ho+K6~SIkMq{##u$4mCfD97@jL%rU0G&tkB_&v16lU=9GAWQXqCNlRk6J@JkQ>_ zYf#9t({ilx9JkdD2|5ei71_4By3E@CT5Q`+dTslk@@>bEB4_82h7xOU%d=gj1BFp{}YiBo5-`R_?PWFn(EX!U``3}sH z-NuqEi475}D1XZ8_VWcEqHKT6}uCI=*2+0EH6kKm>9KghAwVkY|ozh(cA z%3&WToD>mqvcDZj)!fKD)6?JMc!mw|nn(NEo--lqIhShjT!1(5T&#mALxAG`1Lm69 z;URzIhQ~^gC2lLc!f*Z&+2$XgYsEx!i)Z?*xV_v;4u!1b<5CM;m1O~z zVCLD0=$;O~Z)cuk$l0Ux_H2TqMdtZiM6Tm`ay{1aJd3Z$>xa;vc`Rp9(8=j2@mkKK zg_iSLspWi*r940QoSaE3rR%TgnxpA_PJir}b0(9loB`XZnVd^O8ltg{r8@mR=h~p< zXiF#OW?m?A5~mIUBJq#jEzV zTF!YI36=X1jhS*@)+jfaR+aOXkl$0;|43e?BSZQd43(ocm-8EH=k~!-4P;cv#rNf= zdMr1aSGj{C%AMTHR^chw_|LtblG}z_ZX)DzRsS=X@stOg+=bM$75-hllva^ko$ER z&G0P0{g7+{AK5~>L}dBgNcGmZl0 zDgLRkAWvtN^6ufwYnJz*$MWU|xni!&@{&QSgvu-tO`nIq%)|fXDgLEVAy4tIJjK5v z&^vEt9lxf-kc`K0D!GJt>pbQ?!*AYfpLzcygjVs{R?LDuubapB;P+FIM39i>^<-I| za{TiCCQ+Y(JF8wN?*$R14ygsW|Cb+EV#y#{e3pk6acJ=!5Cds7UPSixhrb7?R2FF7 z^C)CFW!^zlj+d3Nd9R?6c!%Kww3_nXh-JOEVpZ>*Dj%!I35=Xx8iF@-fQVuPuX0ex z!(nJ(cwiRbEkvO;)R(vX0f1|eXc|FQ)bP#)McvV>@!w1S8*Mn3P6Tz%|Co0ZHuiRc z`S=Km{)w*MBcL$rbG$uT_}&P(u7Mw~nO&B7UqEl~ztJc{G~Ol`#QRAq7+(OZ<&O7T zk^M<8e@Bu0Q>mPI{7OEdkbJkx@_*n+b^eed%a5tDe4XRS*ZMbKX;t~RfS_HE{5#dO zQ<-7V>+|n}Z2n{l?xDK!6CdK&Fg!qh21nnAp9&h+p64&GaPprR7_|I1;h$e6l$jVf zf3|QMwAY)z7*XOPb1i=z{0^z46`SR^C%|Jbro@L^{sHvW7pn4)3*ccyNbvMtI-ma> zU@!eYu-5=%r^)i)l?ESS-2Bh5S^hV1NTg~KnK$b&a89_uDym1R&c(@3a%t# zLAs*HDHyETy_yf79hEaGxB&qQl>a^O)KV*W00fTA7Ld2&J3XS<3gmqX68MUr6}W)T zV;u@|WgtA9YAYxKmsO8bP+kaGMTc_fN(Hk;nDhTu!1zzHxz7q(vcplx@UsdxVXcDg zn4w^wM13YQ+bKBO>qsHjgB1(@hL#2YfTYr=3SOr8dvW>CFeV}e?_7<`Ecj47K8+}L z3cjYax5>zV`%Yo@2Q!CVeHZ=t&H zIfPKu$M;GIWX;G(ObtIMVLzg-eV<_{-`9Hlf$}LBrchZUh5g`Acm^B_&jF(Fd}JzA zx@zHN%nUCfpS$q3JS)1&V?|Y^=I`e<{}oh!;RA(EVRA~56*l^;h+)JE2@qIeJjw?m z3#}0EtvFkulF$qDMbD4$g&{Gj6c62hSvX4)5JC%&q<kotWQ07W3#PGe75m{ReRLey#}i>*G#-rMCGqBZ|$hEi=FB z->>{Hzv|y#DIVJY;ZTd?pJ!B{e+4u;G;3u}$o$v83qAasl39-Xx1&rvk`BZqcZlX; zW@G+`A@rU|KE`6+{}grT|Cb(LVus*&C~{%-{Lqu_p{thf*2 z6rYBoSJRh^2l4O#bI{y~GAq6m$YLdh7c2Z%JQD2UQ7Rj)N980Ho3JN>&4FJlj@Fa< zaB+%WrlWJQn?5u~Z90BVOE7YQ^9At%Mx260Vponagsy_z9@J%*oQ?XGHvYx>Ay)e_h1h_c+C$50tq7 z!+dd6JnoB3MJxU}!sC=g#4sheg`FELR&s8!l{^?(;FMf6snkktrbWv> zd*Lyhqeq2VntzJ@l7N-$q>YxW9R}xCL?xkEUb;l*zi&b2lD*eKe$;7Ovc^;odSb)AO$KH_Q`ev zzN(NDSP%|c;AMuzKm{;$+#!TF3e+saNWIW=fi5|fSIs^P{EfsGC_I6M0~=`qfvvg@ zxeU(xAmBv!oWP-6T3bMo;{e7;;(x{J1JB?K0*e1%BhCIh6N29|oCZFn_{#uV=`g-7 zdCTc7lV-VGvaQo3bT>BPyL>+P&C3c#GSD6PWyC zts4VQ(3oMMg3E#r&?D?%ogf^ z_hWk5B`HqA@{ufBXC6Q`9U&*d1{a2}#O>6bJdua@6m$Hkk6$mkp3`8kG_eJ_zbdi<%u|)-2|JRPn!3#s5khX_BQYAwujkd>`#c{j0Q1bhbr?oYGF_&ZS3Gc92FtL@0{?m9i3G z;t!RlVH?5fuJnyu(-pI2*U=wJ-x1)45pJjSvpmdDsyp#Zf6$*_k!})dmGwi1vU5C6 z*_FB+q>TJ0r|cq)T4jR)8A5aCh#X(FQXX{KP1w5ZE~qoFa>~Z(=Jc}r0MjvyvN+{H zc&scLQMlUN$~@UtwncCJA*ZbIHkwBnagnk*>{M2xidR-i*}PPKU5I}uTMZ~@KecXB zD7mZ^iw&VSm+fU=zU*Y5fKzrfg=xVbSK#%6DE>dGAF%%|v+{G@R(@BZl@o(1-xjp; zN9kf^A0x?tnvzn=&q9lVNMC*doXao5w&jB{Px)2M zqsy;#)8EQ(=Iw2OjYZx_NS99tSvjrH%9RaO9xd>A{nFl5c{=SqOFweyu;o6Lm(W@H zMpA?Tt0MzePX0@|!d~SIXv@jeTKNjSTO(lI|5&~WB4d!bT=DO6;@?(&5b4X0N=WAa zEEReAgg~FsujeTmO&crM+PM6`INI{w{onF0ph()El`H?3GlCeo&?+M7OciH%ts;SX ztvJtZ6$E;mic4|S6(jKw6~mPu6;`%SHnmrAYmrrqrS>ZBO27u13=0Z|El1Kokv6h~*QsN=aF3hA`qNhnsK^cIradt zFV`xbjR1eAX7nttIJiKOX2=!CFlq(EfmQrn5Km%L~JGhdHk0$Bo zXY{a&@BLQUPYAyj09>iWj0xydd8P+^>+g3euiNUgs=)!9LGJquQi*Er^V&?3TEj>1 zg_U;}TIFjYtNbmZ(5bXKA`_Ktd{q9;Yn9Kj1CDd3%Ev#Dk9<8eKV~O&41iZh&`&a&?9;!KRRUckd zod#CbS+s{Lwk3_rIe29LA5P$QsH$6ln(npfoMWBNw#IY@9IF~r5yr<`)wn)xtBMX; zmAA^O%4s@PDNPW}L?(8l%LU>=8ke{fiC+-4eGFn`Fk97ZIKIRPQnd`kqcOaG7;9BE zgVl|-s#?QXt7_*^tJ;qyReRBUDuO3K@m@G&Nrx<}dW@Q^V*cw?JvWWlxAlSSyB=ry z#pH-iR{*E#BXRpG%clQD^tm2j`l%3{ehLJ29%K6HaGQR13CPN7nf_NgkqZXde`LZ< z9|ptWm~lGsA7}b#H?C?rYK@gvy)FIoRo%qjT=lnVxzdq;80;u<5yADc(2T z7YX}PfL2qV(`zUpizFOXNi*fSK_H8%-03Tj>3Y#Em){TtL>|i~wzZPoJR8xPlH4!)wjtXR!ZmGe+W=W{eWbXqDZiM=p%F856Pm zjLCD5RZz-E-wiD&3!@Qix#+(LcL-~)h31hGV* zNifY=dPb{;2sP;$JJBOOqQqwG7u!PuJFfDF85(Cim5ERl0jKbKkc;3BKOGP202{_C7ltG*bv0siT{ z#&|gEvn|tE_*ahyEi+)%OG8$@4U~s9fVPaQZ zL)SL}O&3W{w8d9RHhV>t#Ry_VNztw2(uI65-3?NabW?G@u z^aQNtqma$)>$92HQZqFe9Ly?tEjlPajvj~?{Gl#mUX}(PZYKFJ&df^(;`4`K zxfDSS1&T$k&Ab6wX5NBxXqWm|Y@1#Sz-8bQuF6?Q9TRECQwIf*3Ch%z6So!JVFT)}O{N;BIfU&eZsSod~~9*PQuZVZE=%|IzAa{^)VS=iKQx+8KZF zTH!Nk3gOd~Pc@KMa63NlA*IFy9Cj}$WIxvl4}FM67QVr2Xo)JfQ2j)CdgrI~_&F=-#144I@!YBR2LZf<*=6_Povkn(maKjF7cj|3#k0kMRMkyTfm@ z^7EW|m5aSL?@7GTUm?gH~ICXtjATDbYS% zZ6U(!fYWLYXCX;#HPew=@}z3FQG>OOoQ$^Gm2lgHj_E(Q!qSF1X%w#b)^ew;B`o>saF*ys%t=+ zW;#{fVys@bf(|uHYeRl-q)O{J$x?TmK3cbj&Rut4l3pAJS9#2J5A%cZ$LgLGgJm>+i7xp$my`$m}Meb7^@~rO* z-8PG}?+S;8$LkVYS&q^=<^zX5UCZ#Ouwz z9jdbxjn$fP_I*NAmzhmgNH_)%y-thFv)MU8o4r6!>i@H8!Zy29)T)G{@Bhr64T?*v z5ne6PtCf1SREl=xVc{0Q_mD`}YgwIZ%cP@-@-Z zm@xZ2TKDXa1+ES7**^gO3s8#s&S680CQxc~{sj0O`TsfR!D7xJWSFD#KXa}CVsK=! z&AEZf3sSLjbPeO2JE-+J_j+uOW;%1YIM|sJ%L#@#+VE-6Z7Tp~QPor=(_QVU0`F&# zzMYOUCk*6PxH@PuXAX^a&VpL3K4%3OtEssF7MsKT-{!RS+Bnzdv`efGiPa^sj$pMU z4RA>IcZu+%-ao7Nnh4FIHH63XEweda2d$pt8*^_C+1%1xoBN4KEB-g`AS&vhH@eHPs8H%p?tbQ0WjUi93-iob$HyCe1jXOo=UW^;Ae<0iH ztC68zr|RnCMJ$E3R__i$QOn-?Jn%=-bTS|j5>O>-rRql=#;l)O^wwbqb}+l{leoo^-pPYu>N17N&B~Y>K_kNV)gF| z$U!`{}rxtBdHSI;5hdTUd}xS4|g}l`YU`D6PSCsUR{k<=U%JF8xVsJ zpxN9pJfuNn?zo6Dn|q(2CJSncpmeSxLlL=Bo129!b2W<3^$D^B0{1c!&#i;V`hd;V zBzEpxq?_BQUrP~yErhv>0mTTl4RPmg6a8JH-zoZ>e+%C!!%zVai|S*-e+o;^{g=RB z61&#~{+7VG|0>MBowfnyDiLt*cQnqqzcY;KW`}vFV!e5Pnnd%P_m?7@HxSjeV3@}o z*ydf16(gWI?;2|F9#BT<)o4nu(+?7vZJy45%zFUo=S5TN^HSp7Hcv5;dFhbSR-l~i zyaI%pS1eMc^wqnWq|R&b+q|Wec9q+_6STHP%B6DIye2_4)1~HZxrNuectx*Lq%Q$sd?ZL!UNs?6rUDfvDYHvQk3_v3uG z&HoEDXSi&B1Vh98{$7-yf3{{HI-BBg=JTaK22Sc}K1YJ)KQO>=^QSP?oPQhS#zB4} zzJ31P9)KP~KV`uTK*D?fn90mf(zY>ogV=m`F4ha!d_~^o7oygDrA*8ZLux*Rmn&90 ze@^d^5^&}(P6RIzLRUfv_2+M%2=F7Uj^^*p4p02U=JOAr$^66kjQJ-8f3+STM}j*s z@O-uZ`SO(WUt{_Hpo-q5D&~KrU(A1P{@3U@jQM)Q8O7F+7_S#E^js=m6hQIPm zI#PpnxEd~@X*DngI1R(9VN|VOqtY46G{!Y3|Di$k-!OruLE?4;rm%)sAT|AL(EeA0 z?tgFaV627$Is!^TzcS=BEIUQmHOSd83r!m4ry*p+B1BU@b;By5t<$eo8fU|{Qv|q6 zc!BQzT)>{gg456_0D}eWf3hnN!UYJk;36tu!Iizsb4|hk9Ens5Mxo4t+ipjK ziF!2nE||#EB|?<{TOj|pK>lxm+vm0gTES+bSaKxXLqKmu-UXFR!xqftPPzpPpt24T za_N){@c#=|(;Tu9B`G4{ENF`ceH2Dmuxql2qd!)J?1^GqpfPR1BO<5kF%~>G9&-Pt z`4E*D$*f?(+faNTO2~|}0QPgiej_?R!f`;~Vrv`_utq{vjj#G_;nk(K@Il}j2S#RD z<6yTnj-_KX4)>7PZ&c); zy^;agq*3$V!N}EE1?5)pnJHk#f2VN~ae&5U2&Gk7<0_2YxLyIqn-R8gE3K?i>z~FB zA#^b_Yb5^P_>!WCjgN!y6r{1c)A*e1#r|HH3wf;Zosccm)^_8EG@Hgx89Exj(j)6% zYy1UQ8|}7*r=pr>F$>Rv_(JV}vl8*!!i%A|aEQ9{T_7&JmYQC8114B_i-7N-z8Bu3 zN8+X7hbmbpgB>Gm-I2Rci^_!xNsi(hb_?f~+7jmK%Wo{U6%`&^X)bGe!)>c>@!P7k zdA8b*J6yO1+${lHbi!qeTWBo{TZ^f>?C^FnC>C}X*`o7(&Y~%|=Gr3N7qak}7&;hl z;gc)De34}i_ao%9%%LSMd;|D%rNO)N**%*FwJ(O+qO)*!3%}C@Y~jxlRkrAq2#>R< zUjmi%pvByw=L57|3!oKRkIwgExG~R@ujv%-??2xgx^_or#5^Sjin7p$#_h{ z_3b{!Xk<)M2x3t#cm))*<*99J4bO|T{!2jaMM?x-q+6jD&7yH?UvW{R%9rA07j1z4 z4pvl)cGCqGZBaYWQv4zGT67R9M?jefC1qDEdW7Dv=&3?me2pZ2E{`s~h=#xTJdZ8D znqDe`pBLF;BwySYgDm=1$!y#>z35lu4Mb9&o!z*&5uEV0i{^=}PsU_(BBHbdnHtE-P+QyRIxEL=FU4lOX5Q`9J$)f{dM0!U=-+(Q7E60{T z?6YMT6x*^DS+?xueu)2*$60z&C}2x(_uA5;LR(s%YfD>j9ZUOU+0p^D_N6!pXX&4} zK{FPfOPT+$z|D4+4zCJ0OGjpDn5SMabox+RDwn{pXiIf-?b3S@ZK<{wmOg|fmd0X< zrO7&eJ%OT3{LWI3Ao4*Ph>lCy!00`dvUCO&u(Vc1^#WKxA6U8sud;NdL|BUmI`Oe| zlOVP;oGjfp8Fm``k}<>`ygI?}$Ou$c{>##5Dfw9vY5!xXR)b656z;pi{j7`^-;1!u z|1tc_#HscU!^`@@blIPHx9n_O+1&)BS|RFEE;&19ns5^qW!2Ko)E+{ zg3$OsL884CwB=_D>b;0;Tc-VwWuIe@W#0&18)3_S!)(j@d3wj3<;?%XO6OdD9`BbA z0&@AKdb|R}<-=4q5`QtIZ?-L;m}|>xp#CP_d{B|C&<5r5m^R=%kpX9U3Zc$q8i0GK zEq7st(a5_zpW0qdS8$e>;wNo+71~}GnP$K1!cP zIAR}R^~M!1(e_tp{TG1(MH1jcrdun%D+K6QudTck`NGP;4B1Mhb*}7B4Xsopbmf3b z2Hur?ql91rC;f|T=oj=@GNZ>Quss1NKPu$38ZTiIA-O(YOCk?zv8 zHm%T_S{UMAK(Upcnb?0NdH5?!vvRfCv+CfuZ*+p|(c`_L}9|4s!LU&gz8@TGIun+H@K6m(cZ_hGkh(6wI4O zGK4niJaE%pjP0D#@mZ5WDN>Yl|H<{t7MmFMnw0;SQrR1jX>toy`F~A?fK1enGFsXQ znp4wEWNVtOU-Rj|P2|5?({gZKtThqlI-$z{HEkEnZs95kw&@r$JROM{oBqbjC+NAo z7tm3y1LYA5ou*fB1V57cYx*E$t8_6-)0fp?{v;OPA;>fl`{kte^Qxgpw`v5at8PSe_IhlUF3?(aZ>g=Si!8QPlX)*UziNtb5~+k$ z%7$I#lH1RL`zk*x*;SRy(eRK16^bshRW;N)TT-@4@sCxFVzN|Bn$&%X`>krvvDHHg zZS}RKwmP;C%np~?st-KQ>OR_oSakw>uX+r+FNnjl9=3|5wMhJ1a=anh@1T-Kt5u(f z<(D+FRX-;)_52-B-5jXs=4vj2A4@}9eSXMUJxHUsPM)n+{ChN_tscspAVY9BBZ!9P z)wf5uoYnV`>gTMUFua#3*ioD~h@wNUP7=s8VY*4Tp<-6Q4)TD=DqBrFU`=0~&Faqp{EE((DRSRSzF!cAb5`VO zVUsm~zC@?u)n&8>RlK^?)?9|aUUQXZhHI{&d?H?C&6p6-p21#Q)5FyZvfuFTdn(oELOQ+5MO zEN9I!_VH}ZDjA;E{17FZ35*iagux!UbY@z%rW=E zYx^*BT=PEH=HM%}AOQReMEXfn-8J9kKqp#!eus}z+Si^23GLRdJs0z=y?~lqdl4;c z?O>qRUPX_*gK!o{^4F$TIBT<;i*0Q+Z#!~q?em4!Om<)Me~WD0t!`U4FJ$ZaeAxPw zh-_zV?+H%j$*e7eb_k7F4CIMnB@8)rVQa|*vbA$@Yik?zxKxi#RLI(mO>SGeix$3i zyIgf8xda|+1@SchTYE(Gd-4VTH$DG@nbz8WqL_Af*S_Vl<{=(ymVMT~M~hfX{WqT{ z?5{Dw+8-71X{JRt_k*%hC7REGK=U~e7=q%>+W&0U{^vMwnicY&CgG!9-BD^)BI0Kq4i(0Biz5!lAGE8px0)zSf%6@(ftoL z)}f8&kExe)=|Rn()2N%jq46|p{?q&$pzHb|&^q#eZQWT2#Ia3VcY(@P|LX?BXx&x% zr6}yW>rr<~CHdqbXWd=*(S6s&cx+u3Ff_CwAjzSxOTfbGxD26p+wCSqx*uli6#rXS zjHK&IY4Yo)Yv1@*#9TKUF)v~4U$+KY2YCM}&4-1Ft!oj=CVI-cU1hee0|hm)nINRY zG?8_WuzX+lIyJeD{kV0{Qj>#OYpr`lmuhk05{4w(d)>Pja@|L8yF|ii|9jo{*kRo- z6pe(#dRB$DUi-i6&qmYr=b`EPK`_$h@%kYktslxJ(R%HFufI{Sw+i-7;$`c(^ld%9 ze|-$#55k|bf=1jzr~3g;CycV5{EzkIyx4jl#v7+i8IUWemi4u~nFH+2AP(NLEO|kE(1v>8~vpQJ_Su^*;{=k=SpGQtYCrn3hwa-f}u-Y56l29)f}` z+6o>JS;(ihot7(=0nkG7iyCq7E%Gg_JzDM+oYKEE2>#gZq)SUAJMGUaiurb$Z45r|<*X>I7>yj$i`^Z#O(4K;@Qg(Dz?9{0&KU2wN9% zZFo*VuX$`^AKL7Ow*>T__$pSoLGiy0#Q&TPKk2fH4f6j}X^I=q1VJ&*jXM9j@d9kU z@nW`%@lPRV;H|Lu)uAsPO#)gfI-AobhwMtL9K~y zYvpFh)|P;^o-DN1H)x%$)5-yXj(e{DHf zv&}aX#mF4BHpL3+slv9pkhQfTUYq8>ZH<_zP2WE!nY3+Tx!8RD<75i{8`%(DpLhv`ZpvUIK0vB5VGmyXPu`;mI_xO~*@ECWeOErpGnzD2aos zo9P6bUc``_i2pd7-nxx)#bY*oJQEAe2ly*W___epLeAz>JdC@W&+*&l@gCb;i?f9N zX7~wzgLE1MH{TeIPMdEtdCr!RSNd!V(|_AS z3~>vmeH5s=4#Hc;L73&0vt_c*iC)8GyC2kiLEG{uZ@Y1D{!@y;q*!(d!RI{!@T&q2FxzPDMY1u~j!(Y(3p; zTh9T*rE~(G&*$}4g$K4?28MPswkrQ~>qxA&b(G3SQ%_s@sHJV4gwlLzLpLpKodRG2 z<}e)S01-+Tf;$pEK9ClRS1C9oek${1xIk*fOYzUG3*e;?lqNe{SBvR-8uQjRmS9`A zn_zbXF_7iq)`xj`BVgMmXWKUIWo&&6C%^UCGTW-Gr>!qd$5MEouukS}{Q%E(JBx*_ zpH>mF=c3nbU~C&U)V47L*`_?oZT(PZ+c}dcRxJ5;VkW4wZLr_AU5PrwP)F6XO_Qp7 zAbmY`FI#N88xwB37tyv&f}28S+oq^I5tX-PK%zwNvT~rj$97i)`BpcxpRz+j>2<(P+1A!~ENJiFBt}9@N{TuuLX6x9xF?KcP2o zdq!VTVE19$OX$7rP4GSxg?FK+lw9^lY}=O-@;lM|nRnYy0dIT1G+2*fwzz#@iEV$p z(6)aI)OMZ!+I~4x%*2V@y^@t@!0litT8*X%C=8}j z$Tovo-M&kq6x~2J73xINSgAPMorxHiqnw&#Y=2s;o)goTiR&am<{b(?(W?)^l~3OO zB|pXsPWMUe=;O8>gHUtFX_$2fn`5>^X;BZVBT!2I57+;c+Ky{Iw&QJfkaye_v>mwc z9m}$9M+Zz6dYm2iW04(fH|m5_5-ws#n%{P~04jx7816e*Z#z4D9+5A>YImbVI%4jq zL69A@=#e|-q3aHI$J7jXT&1_`^tKht?bwR`J9a6bQSsj$ivR97qF*}yv*S^*ctR}x zIUe)wcmX|k{2TAQ;|(x$<;9K8|LHK?SLF^m{Ac4u9Kf0`a5}P1iYxfpdd&N*|ZxQ6Ad69*-bIM5D z$%%j4$)IUFr?Lc_1oNHQNV?ODMmvj8Ua^Rs)5~mUCt-n|vmvSp&d&L)=XNfi&ASb_ ziJi@=B?aj?N-c`p(Q)T)#EGU}b{-V5qqLlzPw?(TkF)dJ@eEu$UxMsg5PMhpysr61 zAp|sba$eEd`I&C-!tp379EZT|NYH*6)@tuh|7t%I((UKc5Zbl>-+mFOxro+&CBX^4 zKJ0heugC9M`)z2?#Z_TWdCDEPkB5FFt*M>+Z`w1d$o3>vb-VJvs2ipX`^ zL(0@;7H91wR9JgmM6tEc)i35hPW!TnP-eHaeJxPhD%3Z~+m-*{-r=!bIep-9JZSCT z@eoG?WZBgI4_Llmh0AK^2zWaQ|4#eAXG(%MkU-;DHExEDtoE;nJ!(W$rbzqG7;)Dr z5Z-mV-*(-_RBjh(F1v0*fn9%1huW^oeYT7A9ot1*%ywN1qJm&rAnww<;%emGHSR9t z9SxBOu--0$N_a--CL{GOzNBTlvM^&WzNXZ>N~HYN>?!VQ@Yrq!klp)BZTHW9+jAv8 za~Dh4T`wctuGIo=NhFVR*B%7;2Sv{?fs<6-z&Uz-Tr=fa=(+3f@X&I$K%zZQb?Aoo zUGJgDXVFmjO~oHmoQfS15&9<*BotLMYHfG_BHKM2Gwfy>wEHp|+wSveKD#gKl@t|s zUlj=`0R?CG^#l2(D8g>`FPz=uhJlrWOuHXYT>%iIh5l}>fxNWm-EI%>_M+|Xa{-S10{w?$Tia*T+4p?%5RN`@DG2fWbsoI{0k?V%yDNmwx=4gv~DGt%JwuwlBWX5 zGI3jl(3&ak*(mB;^k-*p5kK}*MSIA9b@rU-tr$A~o__{x?**l{ckHPZ;hIw0^Cr)I zT((zvjeFi@@Za-sK9gl?c@G_D&+jV!8SWZ^=)*W&5Y7Z{?*L8s#dG>h~`?7Vji7T>#* zMzXhKhFEn`Df+1R-V?N*y^jdwajIhP(|Y+FRWX54Xzx2^)^TZ}b>v5s*xnE6k9$8A z=IHO*utc&+1n)bF?u?S^B5j-iyqB2dQ&#OPrE!#WhU z>$sB^-Z9~JC`G}yL;FA3@WwM(M-rSmrXf>@OYd?hSEQ|j{ZH#4YGWPB|LCX@gnDoX z;~x#1BJF>4H0f8f*eUcgQ*~VJPk({?Vb!JUW#B+tGtI9Z&H76>0NNudrVL z=SC{4bpO)46Kk@kjQ;Zbl-#pH~L8BQ2 z_w}b;o)71JTL11l7gH$M&aNSCf`TDb_`ac3_&(MDz8j&p?^bNG?;gMHBh5P;g;e*d zRQYN9rU)`oR{ZAtZkq|zLD-&bBNz)Z*4_se+R>{s+sJ$wJ3L$?1K9O3@+bi?TWODMV=?~n@S z{;TCG1T+fIO#SS?6IS=5!v3)gar-BrpCUy2buHljrSctZMN$A`=3S^D#_XZavI~`{&y(t5}%?h`>fbZeF!nvrdX_KCXYe+P8_^FWYxai9VX4%AXUk5*gG`Ut%bEEM1} z0c!v28g3swaKLR{)p^#n-fvxxhOFyNmmO3B{Q<{kUEC_zl}w!Yz%%IZTefvwg%u7w zFDkD@Al!dwPzTbeh|x+bGTm(D-L|4}JjEUT<5OMjIA-Q^RI zR)k$;08P>v>{9Eh(|g6gy0rh>CI8pe#QSMF5kYC2fJjWTu3cEBt5cK?3i7BRb^dz_ zRoJET-(AnB{CSnX0tIpsM=`c^edx7=rwL8@k6m90@OuIN0^q?2eEuXICoHmq$Ah=P^g3uAyc$^GDckpRSiqk253{jYP0-{V!VS|za*-(l-7B$7K{e@Sl-n0CPCyC|2?Srk3JWDaJ}Gm^8PEAb&nRq zy;Ru2LtuU+G^NfT)cMbYPmySQ@D(ch;0u3vj(8Ze5AsHSM(e(*x6fr+x6TK2^Zk?X z{n~d5Io+{|K$anNcREz^B#F!E&L$N;JXRzX|L!LKj||z?Jsm4`hmodx4(9D{K>u#( z-!1)z)6KeD^vT}tZ4@0r-tJvky1P@T2Z7K&b)h*Gg1X+RyJ+u}NdPw)*7;6O_)gkVGIK%Fx6a474!+mfFhu#9_-Ad=shkR>|1ti(6T2)bq541zyLWb~`bLe-46y)I#lm9~A znad8J&poCZ=nmr%oWp}X;1v$F!vxwv3EE-KzlLKG_wXG^e;D%4;R*WG%VADUPR2Y5 z3{8i#+;+IN*bcv%V@Ixu%(cS>*><=_SjA$dkk#QTtgYC{;aMu0rqU=BKTQ134lDopu=1Y|EC2cMNx)tjiFFP?4*qkDT!){@M9P~`?iw^sjzj>4fFq~i zzYl*XX+IV6S0ebmc>aRUiIgAd3*{q!V*PdGFCjZ}G0cwqm3QjKM=qyt9J!jOarDR| z8f%Vd|L2G{w2#~^hvp+mYvhc`wI~Mk4KzCS*L)EVPZ#r7hW!-4y=~`H$?2D7PcsqH|1t9GXRZ zLRb93#jA>#_FS21ng)MJ?`i*$RE|p_Neloj@~sMc*cIh2!1tQCN0;_^?C1us9V5H`7%5!G8d#V76A>12OAL-;HL@OU zl1$BfUwd<8p>uQx+e$}Y0jw3KUC?wS~=tPR1gbkNTYF%23QJ}K6b&j1sjuHhzZ~0>; zd+aJ?I(7~AJ9a%}kKN3ma%>FvQ8-!B+Kw^*v11Q_loAngj>S*r*MNvT=UBQ6-p5!H zrtp3i_B_U-@K`x~GKlyeoB98?>6yyvE2lm?wwQW2wj#pq99s*BPIVt^L)l~7u;;Pe z$|xo{8`&S^=Zoz45T6}qW_~<3hZ-|K0%X@k{w}HK|6&hteRn;vSCQ z;&G0r28DJ9?fdxH^;8QPOvfh!L|<}_$0k5m{csxc=Y*W&Zbf}#NXb4vqtK3Xt?!9G zK|7I{WhXQnI$ld19cTa7Iljc@wd1Q$ai%iHP-`Px4p2qMw+1oG@pk&dar%Ea34x>O z6UQBZ{>OCm_>(Yx^Ij_GxcvX|7ct=R*R(v1M+nl8kAHx(8LjtU&@qmGOB+A_lOVbO zA$&JY;>0-tJ25oRPUvpA6Xzq&iOZ&7%PXL9A25^Xl_y5%o#y{1Zly@KDxSCpnkU9b zVEP9}VV)DQIjmD1+9#O*kX%Ru%dr#tHDf^t;@@_nhlX_G@&DV9`W8DU-pO=1PxqWs zXwR_I@Z7vCd+x>4{C1KN!buI-!_WBa@6jH6{4b^U6g!zub2R1l{sB8VIA|vyFSDK* zA?rEev!1t0%^6r^4qNih$*X4*!Z~>dSJis#B-5Fb(@X8-Y?{o;dqZ|Il`-<1Ncv!pWMoaAC4(#BBsWSF}2>c@P#%E?u*+3s;p zKB|jhPg4IUH$&}SV6+=^ayRvIvU?nWM{zys?tQ$4dOGO<%E9S5 zfhcPHPV}vpe1)Te6sgCkroGI{i zSY?C<_jj994qj8poTq{Ly2u_L6|{$AefBW%eaER@iSsCd1lxhmLa676`ZA~|U_@t~ zuETV86`Iq*`$vOe1Eg3iy9CFS&~bXQ5m=i>&J&=epsGXs$DEf{^g0dG`9D0JcR-cL z^7lE1q6ng5K~WSDMG#OhiKe@oVv330L}N73sd6 z_dIq%1$)Pi1+ju+eLr7v@B2p#XLojHc6N4lc6N53z4yV!VKH?OVJMzXnyTZp=AdtG zsNcA}YutW0)(zE(79L__eP2* zK+)9_G9F>N6Pa&rHdXg4yD7`Kx<&3P7_W_|J8Oniio ze2)9&nCZs-C*@8Im=?AT4QRg?zMlm7JNQP@Sfk=DgLWd@e;1!;LH`1?kjHr!uBb4J zl0#-VZu33U&HN9t%>0c-W+7M@el$oboZY8Nwqej|0qnHjtjh=Dfqb^m$( zIa)6GZHh-hzn;!p&{I`$o{GRYR;vZ+d1ir|Z5HssC}+V)5~dgYfQ~FMwD_9U zW5KO6%z`J2&4MrJ?Sk=-qt;cxU{4mv<6ofDkOlYA8J!C)D5Kj89voi8J!$~v$gj?p zRGbCRD=M(ybr8MXrf{HtUoAd?D?PoSjKW8CLRM-P{7eTH{J}-yI7GQ%F}+<-gV9{D z7J4U`=nLux0kDgqnS#bGVE?~B@eh5oj=h{&&@abaf$ZDDu1 zv9R|rs4B-{VIt@jrW4*mf_T(`05-4WQ8JPGc|~U7zg4RD9~NdA z)N5fWO&$jU4+G#DnuQwwg%6@&3m?57Bs{kn;B?e1d;#{@VK@ulEW!jX9d zs%R0&8U9)n1UHMYf4IA>jO4#9>VaUCCbg)y>U9vXXdt7(^TB2j$Ma^97U@MJ8N@}F z`$&s!7Od{FDJpP17G;s2b_=VV#RDsRX7TV6v$&dtei7qu7U@W1Q8^u4G;0=TJBv63 zT7-35^jlfL&*&|h2ZuVIU!?Q@MVx;-i#}5R$=xFI6$Io0K3HlN{Y0VSYl|G@QGxMa zw8C!|cV$2qtuHW(L&Ub;e_gcK?<_i}2qBOpJA5u%Qnk0i_Ef#4D1qriCOYonOX9Ep|hlp z*nzWTnv&g?l>N1hUNV#9(!0x@C9^L@+BjlMo@z4!6=n(NKhBajZlk|TJ}5RzKA~rq zp*l;xL?BDPf!SD3zFG1U)R+8@WR|!{V##84VEJ|G3Qra;;rnMxPJr|j#&byne;i~$ z6uVn;1PR3OgTTC5a*iKZT(dNciLx|;p)b1^ezeLUbJB8eTB}_cmF2DGXZ~L6cF>! z$fdJ^dPeA<(54|4Zg49wXr<25H#u}83kAHN((FqR>&RiL-oJ}Qj!S>5FiVx(v6T3S zS-MDnRWl`*uDy+(Y(peV_5LgSc4z5sIb-qI%%#fzTdMfqQpNw4o(27~&;qk85}hKy ze-O=be|5n)( z7QrvW{x6#WwPk))E3&<;glcj*3A&qQB*< zW#52mK2VFnq~&cHdm^*!XGUw;pSdt3nO&!%8U&awRC@np8TnttsbHG%uO=_A2g0QMHcv_I2Rg-I3 zeHCO`-A%RJ^NaC!sweoJ>TI&#sue`6o=i8Yxo**xu7Yx08E~Ty>GM_L;2fv=ofzu>4Vp$YruuV!e5?I5@LvO>m~@=D)BVS4egCF<0e!As zD*jf{U?U>tMnbguvrT>3CFp%^gUKJ{Kbz_nVLQY1_lua&%72W-g4T3qPozk1O?MF1 zaGA!`^aB~M`N-1N3;|iqFm$0tU%9Qh3>l_{0mGVC^HI5}`L@*5H0PP+U31Lxp^R~ zLa8;5`EQo%^3w9R{Lb=^GDYP*Xl9b&zWkp!2^x4{zgGq4-`KExOazUV6*(*JzZJnO z-}oWTkCZqo@-Jgadb89l-+q3(N|=S;WPh zn@Is%5nF0j+?Zun+=3`q^utW87(BzQxD27JNDnZM_avDWiZG35{8o(e(We!9h)?0@ z68*RhmC4ouRcuyF_2fA#a&{AYp4)B?kmy3yy(a9BGFvKgq%Qh=8c+QHS2$h)?ze7_g!o;i0ie+fqiZu@a zza5=gu|+Wf9h%W>&tIZmaY#%Yg8`r|=ymz86gIV;D*+e+R)3yfy(&iJe> z0O#j|QN(8@{;yg2AVq&?tXDn`6R+zg^~x70nupFm3eC8`^qSbbv+`rPD;2Q5@@r(e z@;l7@%HQ&{&B}$MycS<4ufLWvklJ%X zT8pbuyY7B0XYEc7F+s*fXH!f6YY&49UYy$IWN_)>3T&iP7hC|fy7o}3>xhJ=@u10qvo4P5C zrp{68auJ&nnQ!m{PbyHI+`YO7g?Kjo=0=sAz`EyD`m#!2XGAl_#rwos>v;dY&K1Bv zh5vi{Q1`R8%5{H$lN;Gi-I5IcN)Sk$K$QPkw;iyf`j$l9epomJFUlU0921!5tFT|I z#ul4Zr5L(Z5fx_Da5QvPXP955^Pg3^Ot~ta*p*qO`0pzGM6(LJ&I|^QWzbn=eE=)u z9SzY{H^YKXD^^MWS4|QQB{{B=%vTjC5V%VDf9&+kD(!z(vH#Tqv}z8W)snVK`46jf z{=4dR25{9Uv|Er>VpdhN$6WOtEqb< zqbStsB3M{m%Gj)a5JYpYp{J{7BNC3YNJ=b22a=LzZ!!M}^&5!()QzZaUd@U(Vb ziCKpaa!-|6_gIoy_xDhrv%2oXVzcI|60_!Lky5X2V)Ol0p|g71<4I=CWjMpDNee3m zna(~dyk%zf$ysJiBt~RS(4->b$OUFidu^|?+m_Zfu@ih|OyaW-)GPO6%?%;BX3Zpi{hn>ste9rj>=fecDre0%Pq33+Go9i9nE#Gc zpDuOQJXk=Gn{JO~K-SC^nx}>41(A7$5nl6FfZ7oZ$(oOl$C}TXCVWuFBOv*IYkr1> zGUn@C3KpVLYnB0@Eo`e%+%+2mYNhyJ8+*k6oHd8E_Gq8G=5(G}Yenh;0$&?K8f6aB z#s68W+=8`n*=BA3GPCw#;3tA|EuOKnHdW{QYcpF{+<)UH?%MJ)XYHfoOP#fkkJgt&X)EqB&_Q(EM#olg{O?M65{N`q!bHy^yeCYiN=GGt^Jkj}$F3FNDh;#$T3*Ao9n zbQEn<(JoKES-Vf=oc{+jOR;@s?P;XAR_{Nr3!w+=!hv5Gg{@o{Q)brbp4YlQfRAJt z*A3S8-*46_|Kk!wv2H{O-o;cJjHY%vny7c2){Vhdt(yQ`F5^P>^|~oogLPW{xtQjx zE7TdP@ys&oSj?Pt4`>@E38x9;Q<+34*1epm17C2G|1%QmI>Hzp2BzOj&H7@$v!(CU zY0j2`Y-_i$)!yhf&*7vV8>n|=c>&FFWJL{UJ6`S=; z%k^REibr)<6Mf35F^WY+8cr(%mY0JmOV@%ka29A|w7fgk1o zP?yo$_1EynXue0E$;@A`b1#L1)+-jeeln`H9{=C0&!PA0?^Ew%LiqVef!TE0XEyU0 z%q>A30Q$VpY~WVI2BK&i&QCWRvvSPF6WM0d<>hA6^F?OUPq}8(R(31vzlDni@$;kj z`BiA08BFo@%L~ll?-7QMGST`582D1MzPH9)7c- zV}aRli3bj%!M!1d9&G4?k=QV(BHL^jN}~-!r1?xkq7O0jZG(KX4WsDqhU*yT4L5=5 z(%|W41GaC&_mr+?>DiD2>bHfAv@5eg#}ONp|Fc1nz74barTm|K-EZW#@_#nS{%?34 zT9_oW;eGx3MCD(Kxo;R1zcAtdnhlD7Y;c8cv6|O_DvReV^!Em_v{gVmG1?m%M*-Qa zilboGhIRw`&qkocY{bBBOn}zLNP50e`QICr|Gkm?PkpID@%@cS7|xBu0K6WO8};_W z#>)i58-MazlIh{bn-SN>2?T~VPF2-p2&KU8C3smId17zl(-f`}GTr~%SS1_}3-GbO za3ET<5d*)G6fd*!4gK@3hHU}M+QQpr6X$Z_&AU_l2SAzT&$V(I?r~Y>odXp<~#eX-| z2&hg#>mYZr$W@q4J5hp74XSTcz4U(*`p?@td1fqEBo7pq6tUaE~^-;Hdt~=iIFLpK|l%W^7&~z>Pw@O&!_?kFAO7&{427(;+dZ zU>~QoF|1izLV?|)`)^xh|F&TNoGq~z!HOQd8j;hM2E1ixnX_d$*BJtO++@p0RAbAP z9!&Bz@^QA1|6#Vkz1ecxU+v76dveT{d==}AY66^W;jC-REXHKZ3@*+Z0Y8G)Y{CCC zTb>e@=kW+Hr{p!pCk8QW`3M-r_O^U6fl$qsf3v9rjMz`x`n%;1;g}D41-`e`s0Vcn z@|JbTdrLjPc7bRZ!rr3wZ;SF@wj4uD(P4gPYo}LA%vN@)c?D+cuhY!dhH|ql2=^o_ z%WRF+X4r4GCINCusoAO>-d65cI$JZfi=OP6>1@41)^#i0Xyaw8_J3Q)k|w#8ow30$2~pT@34FwOWhBwrAC;Kx z1F`zsGQ2*sjri9#p8s>Uje3&hXWJMyiIj|kSTQ2rruz?fGJM+*<+ewW{I)#QWm_Sg z*`^nTw(Em8kEw zlj`ceN4dX9vh`cBg*B3l8SDK+(q|H*r-ABb+&r(nnHNBW)mS(y~ghR6Er zC@#t}_4hL>^<$~ZRXR}pofKyY-PF7`dhAl*(Wld-a%O0usaO18SG>7~LX^wYKMt1) zE!DrkP}jdgw5a|q58u8ZG zBHntu#d^k)SSR__trJYl_=-QHzKQieAcIEZ=OOgt8PN=IvAI+;;8% zwijqHbnE0%;uPDtqOqf*(Cm1MLEHXJf!UGnH#_n;zu5i;{X1D?b_6rV+drKHp|2s^ zgsk|O%v81grO0fr18NT&*zF6-o$X5=pby$hZ(j~0ZJe(|g4?&Gsb4#wt61pv1CqJ; zIgYSrsN^ihxb3DN478_ahwT53?(&aI%nseV+Cl!Ovtyuq#T_!Qy85zXIL3E}@jE+i z8|^bYCNbhWZlbZ$;I+>m4zD+9T(is$IRZQAf16vlqfi)i+&2yZ?wBQtk9d5}j=75d zUn`o=bIEMSD>w4Ho=b`AB^pMU1;8+8#_Pn z-vd zJEz{ezs#IkU0_->a!l)tD$_cr(zMRYa$3KH$a%ay= zFJ_yD^h(pf4TFXnztga-JkK0T$udnBPji}nF3&Yh2MW#ML1pIf)jsF&e{Re%hmRDS zBfW8jcPEzx-u9W@S5=rjT?@>fNrh(5BS~h@bKX*Ccjmh}ftOiZcasaH%g~SG^6tLz za#_5?8l_Jpz@-qQhR za!)7Nyp>72r>Do~?CJZc&UMSpo;1!1kcFI>JtO?io?A8R_lznwdu{^vp6lh|+z#RE zV8o}npB;$DR_*bFvOw8HdE5i`nLWye*i$C_GqF9>+akAS&m89Co~J-Twm~4deO2JI zd}q&hY!CNh5%)rP@2q0e04rGxWy)l{$)9 zLj6+y>mKF5>H_W_?mwD6ht*y3znwj&`h>r6(^a! zePQT2ua@4cM6I(u&(rCRv_@{9IPqEmaPsv@U|oz31N z2*~zfCe2=b|JTc2c<(d0X79V;+66E#)0w^VlrEg_?0u769-PtWvnprr+8c%9U)g5w ze~@sNHtTTto49c3+g`nYwYQp~*jpzL`finB|IFTc2wg4~_c6MAiT{%~11Vh$+It4E zHIN+5@=#zJ!VynH6yj;RPU8 zxOuv1;83I?8#)af1UU_N$nH1XMMK3ml-M{F88=MNG7aT0G*h)zsB}J;Ch17STr5z- z(}WiqUi^Tgk%o^Uz?mP%1`WRex`aMIS?V-=t>~-H@f&^w%VS8n;ZJ(guz+G6JrDL2 zISs2mVC>$4olTTxGK2S}mO1-wjhkWizmskD|B`PGT$N`Ia5443A4TTCsY-J&IoBM- zQ#-h_+%!h`Ok-ZDX?%FPX=D%5_@8N}abclpY%DQ{cq7j2BlphPH{wl*@4Et@YM)h} zF3)oA(@GE%R_^S}e+i-oeP&;)-|P>~H~TM|X7*gwJu@8i`eT(Zi*-34a92XAMn$M5WqxGR(o zyZFq0Zhq|_qOZHMYG;}K35?c$^gl2TMEi$<=xQ%eSC*LlxhU0s#S!<9_Eb9iZ%M%h z?w>@j(a=~ybN&_3w_+}5fcH<+rnKDbFGF_wb^g2mAv(05w4nWreL!cd`xXC_Yqy{G zKLR5J_yI!R|Jifs>i(}pN#B3m|0C?kAKkwg-p-bo1MD-*{u&f_|Eh;VXugvmF;xda za9DWNf1O3&h$>wS!c&>ZX(;#(cxZVbj0N~WH@|aWz%2#l0FOPI1H`|a1N~+ImJM^a zgX94FpSH<#K;J((a2Y}*Gs+ym3p#KIB0n$&4L)$&befD3ILU&}0iR-q+(2^R}7lFg{B^DJ+Mb7c`-=vK$ALkLMwq6&+{P11P7!1 z=HNhNaIgdYDe@LO2Yd3txP$$184hwkhDBaioQkJu7&?D&1WX;gGP?~gKgs`c z4vyiGQFD+m{Xw2S#9S1cgBt%>QKrfSuILF zxIXx*+H(Ho9DH8^Uae~fzd(BrYW+L-y?}pK$WoFzNdAu$*c>GO%Yaa_fgk5k&4XJJ z+QA0DbFf9qb+8dpA3TO(ZaXnakW85Ec8rO)eje=nQn?|<9rcvkrBM?qwGsSxLt?@JsNosZug-Gsf zlFgxxfFDx)^N{A?p+2BJ)E_*Dlmn2!q4}XJ^GcjUUtL7yR-b7~4JmgH-TE@QUZu{V zH#nHNl3n4U$z%%UnnU`q)uC)~DY5U69#AUBoE*9z<_>B97f;_0@k)bpXzo3NP+G_# z?f(w3{|nrTPtD4I=p*g*sra0-D@5)Otm~l~;MY>BAkU%ss$YVNDui-K{tuoFqQ!oB zXP85Ki%nAk?$V(Xob)$g-oZ?|(}cw|O&b3^nm2W(`BeC9()*W9eL)nB zjGEf=pN4s6m?rH3CSzint_Ra}+LO=G^f}X^Y0NZlj%gaNoN~|EKA6PDq70 z+`(@S_iB5;;;^1|IE?@29PTdPL&?@U{5;I&7fW1X4i6E)FlPGUONf1#!{L02cV8u1)g-ka z-W*)&99~ZXU%bAeqr+>6ZilGuzFh(~;{SME91;4>k)Q%|1m2IJ^7sz;{`fycJ+jOZ zZI+L)VWT}T1e(l|fv|8y`2k0UqSQx5(*8!~(h);DGOzHrF~<;Laq;rul_S}|6q}W^cZ8I{!QJ z*6Rr4$cNIH{J?`)>m%R8iF>~}Qi~-&@)HAfNd8koL}S#@Ns_}!$U zdWy97)sFs1qk49f4qt_pIC7d%IC24cM?>^aIDP;j8RuwEUfDbP#Wi6*bCiJp(Z3a# zqYsptqjL()(O31NeYrWR{J*1@f$}J)`_9qpUZ)4Vcy?62r=C8aTk0I0`~Z@k27>#j z;QaNdZXu2UK+-;{J5Yp{&CvjV6yge^EJwNjZjQbL$Q8o>ma57BagKhXW3WLu9Y=8r z6IJ)4$o?h@xnQr!H%DtJ-3?fxaH#)BH!;(WZr2i~_2cM%jS*cwN(e0wz#iL5wl&Wj>r11n7?xpRJvIbGaZCZt6n1RKMo)8&t$ZZM zIX;r}tmBU`K*uIjImf=74$AL6mCmud-V5W;G8#Tw7I>+`9D5XR zQCa3hw_QWx`KFmiwwuQmnPxU(&7YN;W)7B{ zSHjeZxKeXsEPXzK|LdF>{Cr4~IWe+rgziu#{c$8-21}9 z|D6-Zbs%%M_&MvzcbdKG$)!+g?o?u$+4h@e9)f2vL>O_n2(3#((lW}SaEe=DL~hF1Uv*#8syh4ibr zI)Snn{)=bcH6JQ-T6!1zO-u50(_)iM%Y=N>G6^+rZYee`G3xo*O8l#qP=1D^n2PJQ zM1ifPD>&rA-R&VF6%XN-flNkC)2vd{qVGQ@7nqhy1%DNw@|;>mGcGM-^v~b8wW@fg zjze0es*e4GY00Mer za|!iIH$KUcpmWmbSYIK-liL5v(w@AX0X->`tsBHA{Zuixfzc^UxpQ*n<20M6uM3qD z!TZm_MlJ6g!T$rl1y8oajw#gQA zPOg+4)bZ2F4M_InR(?(LmhwKMIk}&{$xl8h`!6T!WZU~k-XiBzhZ%*=so^Gs*D(sr zDcqqe{pOS+7N-*U1K(dE40CD-4YlbS0qcU$k?5tNdFB+yh}Y(uQxDPjHBJKlTFp*P zW?W8XgM?=v%&B}DD>Ld;c^)FBfczK!C^4rVMf|6pK;=(87l+E9dYOtV>B6bE`6Gs? zcYe7!^$#jmq8F!r@|jbMAykcGoccq??$mtXI90(5$sq(n^bK7)wWZv&MltbE?O?u~ zYM2hs_wehmXO=mo>p`c^GnHFIQJKMi4O?pm`l+Oz)~+zr+LMiHYa+jRTW|`}YE7m( z3kvrH7dow1bL!K2XPIfuLo-`%Zae;J9ZM}&eoQOYjNvXctpq)t*6dVxB30gLEmFj> zRek^|>!y`s3)31vEwc5;QyA0M7qr~O!g1@HQ{b54X#GGKKLz8ZRHagwGTpTPNY7e- zrJt?5G1|HW4=MhC+}8bGj$|pVmGiHmt-seMOPqoV~rkdPewc$lMCsKCH?Of3q^YD6py6oc7H! zXA;WHnbbVz%%k^LnlrrBbY@4PIomngoV^j9KVA4ij&r8(6(s7MeiF;?Gp9EaEkBrK z&cNcCc4_8J1b>`<6~g}kA@A2Zr{A8*5TE{F3f|u7Ptlyy-_Y!PI7N$bbEccqzo`SP z|K{`}F<*_ePuJasnAozA*j5<0C(oSTq0$DG>fqrtcfibP&cMxST?9CN0r6{Fq9<|2 zg7ZvgkI$Ux?#VM}lvJxF8Xa@a4984lehj;3z5pc##X0kz9K>BKxy`3;F`IcPv(qwXY5*C>?Bg)#%m$IzDx2fUcg{52 zjorAE;^T~Cq_{lGA3?yUqeN%h|IhQ$j=aE}?e58T&h}=b?wlPsY??W%4Cu2d48&Oi z4QXdsg%Rde+XfweYkCp%w7ob#(X<%66BSb5Y`RKPqyz ziJ5=)6iLwMH1o;FJLgf%eFOmKH2;<7b*?LR{ai0E5mTfz*k8?zvescsAdhd(~UzoSSoh zsX6x~EhbZ~^w4uJVaWzDc<0{IKks1+&V3S(F*=9uA5DqkU*{D6ib3dJHsa@2Qo0eu zTj}aql=a+NX>=9{84Ytz`A_E>GXOk}!05IXsdJ~)0fzOw2gN)e2CefE%)0YkWI@^F zn)6D1_aX7~Nj`J_T39=uieS!X-pgD(&-qWHz(*;-P4vs0*B#)AOpx=pj|{Fd=kKKv zd*bs?s39ln&iQE^1~4-LEywzu*Z%js4uZ}<1|bRTJo_K#{L6A}JmN?CKf!}8d@Rr} z1o2ONsPo^8f!`=vBo5sF&u}$(bcN}>@?Xv?{(F8KgMNOOB+qX1{Lxpl&4tR)B6ERj zD;E+f&4oe5=E9|Zb3xA+UFgIgeOZStbiWTXctKGi*bVq`j`G2Hf%VT^&`#(A@lT5R z1OLZdxCX$xL$D(>oiv()l5*!lSteXw$U^xE661mD^a$jgIut8ymsl zApj)$Z4g&~vf7T_ZBPb3FD|n|n(vQz`Ge2Oc3?Q2Kx;+YOq{NsbMAT+N@+KQDsA>zQVQ-qf$Z2m9Ti zf5a&iW`n*{r|EzfUVjDQpKwCd!3Hf>q@D*`LcqK^*9IL0sM314Ic(~z^D0Jh2o z9iqk6o(db(;wf~4&Rz{BPiUd_bcH`p2Tz&xbV3-)qD=5$q561At*1YGfCNvm>lred z=`%jbdL*#%k+jIqvz{|K*85Yo^)4>9!AUc0@bx|${8*t4{-(?ZZ!EVV-Dla5jOjL{ zGz40eZEv?1&$1q#q;x$GeHL8idY<_l4n70#c2BLOl&)1dl4XQ+iKPr?IrE0nEtG0^!&#&2X}Xr?$M{8OtmmX; z7m{zik$Kj8e}VPR^;z!+o^sb4%`=DA+c(#Gacg+5&h;i`@rsQKhXXg_uc#VPJ?rHz zwd=Kc43t;*e@U3IUe3QCJ~BueP>i7F+KOHGe?OXDim`K^op? z?)Fmi3Ju>yMZ9m)GLiq{^y5>H-}Qc_*L!bDvfdwP!o@J_{awZLwcDQJ1*(=lGzvZW z57xVhLGx~(?xk>_!iqSED2unb+y>*}STF0p^%DPagF|C!6x;!xf;&kr`qk6JVB-I{ z!2_b(ILx!br2o6Ym)u9~l^Pm8F{>t)CYL}knEQ`5c$}BNCIM1}G=edCZg5VnDhlWe zI|CbB%A~jofLYKFegxbp-cmRCxx2D#@TbhrJCbbhn^eC`4aUX>f7nJI4FAB6U5R*u z|2-U+VKP+<5IUes&~NrBHh4K53|{-+#oRm14c>KinGK0#?1B&TJt;ts14@pf4L<9) zAzJ?vX%h1P*Z&e5(gl+j4WC5C0qN%{bwdV@qPv&!D~;BJJhR-85rcvYZOAoky=UFJDz?Bs7;MjLXF?iPD<+>qAC^K588Z-osN7=sha`e#FV4atUfW)6h* zU?sMpy8n6;b25|(<%Xu{mIxXeiW6-^+t&Y(X*TqhY&Z11>~b4=0G8W_&}=HzS-?#P zrL0*%xbx7sP&PuCORBlAZbKhZ1dysnRl@$?hCa&xa|4u5*xAsx^+ry4AUYWO|Ih^v z8%l)RhW<-{eE-i4{qtddk~bc>7f*)YwPQ-%&^1>={W$!be;h!UP}1o#8v5%$adbbTg8%b>mjRQu7s z+r{#F8thSbwusdo=(C>W;T*t*>Ha&1UN-Ecew}3)+J)#rV!zw2gSaDg*|zHnckSY) zK{6S&Z8z|LdR%VX>HWLQQTKM2m)dsEqi^jv>9p;5tJAi-)o0s10{wOqQB{RI?xpY^ zm~NK?<~xP7G@7Cr@JWoqw!{80#)WRXxfo5`?rCrjh3$6pJg~+6AKUI-PmXQ(p%=t_ z|0D(r7SB{}_X{~=0 zW7_t;w!N3;-p~TuzIT~zzd6r_r)1mkn~QAt1BkhO|7SV4e>m5+zoO8#zc1Uie-+3t zpy0Rd*P~kPxrgSqAMMAcv>yiuVI<_*k;cPz2teOQsg zyOtxW@SZS*_veNuXnEnOZ0!wfI2R$@@Qd$)^>A!>xCKf^JzVP_*ST!C?0-1+KRgSz z!WI9#-ji#?^E_;ri?q&!mojGIl?Xl7Gu?&?sotCTV=LKQnrnGH_PpL^({HJ=l}U^ujgjjUf-A4UfbK1xg7@F=yyB3^>L9K zdGNIY+wsnF+c9sN?KrK}b}UB^IwU(dN*%7uw;c@8s4UxIY?|$$)jbQbbYKTyJ1G8n zFH^3=cqT>%JbJgoJ(+On4W@E>w(amRkS__m!c$~Bu>N6_K>C=9o5rb z@^n(1&+V}8(MsFl>~tG3#AhR(DzXvp=h}$h@@-^9p^Z$;vXM5)M!u14Bi|{vk$++~ z^K9g5CS-^Da@(Pa8Ps97$M1F^ML~!8uy#BBKF2$ zHzF{i5oblQ)Qvc$f&c4sgmS^wS0__0*TA&MmaWh2u; z895x3k(XL%MP5bEJRv?Cd3&ji%%b^=w0;G#MUo@nMotyl*kI~Q!0<2)i1XP<_J3~V ztiSdhjN4;)*c`gs$Y=S(OFm~N;?S-x1Cd02pqft+a^ycS2$BC1*?-f8$X`@#W7u`^9NcK7(*j=h!pBD>Tv5pi_X`3my49mU-pe0AvdoPeR+uu5NoK6kuHpb}}v z@f5ZFF$LLn%&wwk3L(0i5M#&b3?r8`Y{x1=J`65mj&8>%f96CEXTRgyxwhkbJd~DZ zJAO^Os~MAyA0yC?U!agf#mIMF>g+j%ysj!}r>VRajIIkfz*GO$rM05B1xycpz0-6~F_wEna63_LERzR~Ih z3VlD%o8cZsJw)@_yr~KX)+_Gs2hXxm&zIY%Kg(>?eD-@$@8kjU5xBp?JeU48MWQ|j zA;B~o^)14S`Vp~2{fa1c(_j+%7`0SugrZM!U!u7G<3?@A;f*?iOO1aW)d;S?W+e>k z{a0^TncJ!Bv_jjdU#Z(^Kt746#kNyYlI?UcmryFpY^UA`;8yV8$A4UJv7J&8f2Ry+ z$iccYg!VUIU2Z!)K)ZLcZKwCW`EI8PF9KM}r0q17p(w_iBcrhh3ipkn(FnxesSN6J zP&M$KW|uRGJ3USD^N`_C#dew}GH(Eo2;i+KeWy>D-&cU{YgK>8BGKuW|1EPA%ty|h zmd@o8?_<+#r~Qm}Oo8n@q}+DKXYYJNmhC(y$#&)&bhc9y!s~QgOq@b!oz71|IzE6p z&>#v0lXu#=D`YQ2zdDouY&*;TbxyhycJ5N;Fw8*bi}}SRf7|&gCSB)i)A;!}TJxDM z+xc&5$#p~9nfx!evrqDp;FVH(Jx%TxmKl)X86VsE5qi{l4%K`&$98^&%PN4p%~&PN z|E1`CdfWN)|Ms@M-|bxcS&`fM+&hJCmx6iaw#)AYHu_GVjjqnJ(MPjw*U+%C07=Tv zL!<$#TkdvlW=GYzRa`YPO*1vR#l=7rvr=C7RZy zH=XFB?P?d!zuYcEWC6&PwOvL6%-%Op0&iWe{ohFFBa=ScLP|*;{z?X|~G`Re@{Kj@N;C+F$N=d0ze!Zx`AwuazYl-n%%*-1RZaBf7(BHg^DYPA zxD32yV2Eaxcj5krjSfN_UigjhgGojp0E%I$g;Bhqy=;5qC=yG~~*?y7j+7_fF_i{W;??R_;M z2TXynuJ=AjWwdxGv|V-npDDl!fjp$l%KX4I&gVuEX~Dhf`d+E+x~()pi@6WV>A<$dRyqHPvkN0vCr?*lu^`+itw#R$64c?a#B_&cQ;rDVXza(>|o# z9G~s>8aQ6yt`>mgzu9gNpmyElXOZM(yFGzH6t{`-rlO1G_L2)-DO_ki+hk!(`^ zaW!kzdLe(jyF9S&?WA@ge%rkdB^l+m`wc$Z{qEo#xBFn`Ygs7^K%wofD-WYl{O*?l z!At3G_fY}R=>F3s=vVh!=ydnnV6^+4_fS5aVeanFvfW>0T6Hg>`1xpdG2I`WVY@#L zmZ#B|?vG9Zl0Xw9sY%AXm%W78Ta=9t1B|%uV<1|PYkN@MqkEC<(TmP>|CMp*E>(Cz z=$BKnTU}WtzBUk|4fw#a9o~jxXC5eZyC0oGgL71jOtRfuX{ZRpT`=Aw3?ttoa#in*JSWP5xK=(kz6 z$N$0KnsVFYnA+Y0Gd=uIGfjHj2f^{drM3q_#S@kn|+3G7RJfmVJ8n4SZKENR>0 zEuZc2cSbl13HA8+UN!%MI?I1Dtv!BZ2z&f?13%-@{~il*wRB<18&=yz%l73T#Z2-^OTP9;5Zoi(1Mo#>5L|5cjlg zjPAcr0{FIE8*@1gu0?V&TzY^9k<$8Qj+XE4e!FN)Hu3_V96ydzO=W4@ebdlCienF`A>->BVBlpayL zKjyFtiCM(E!s4N(6OHQzoZy&`0uT7dya?(@bW7u(h8c$oas5X)b@O$!uI@+ zhNIN&IU#_QO7d(^UzY8u-E_}f`qy)sa7}L`SYmrtspw$@)AKQ8%_lwGp0D0VIkC^4 zUjmee@Opm8k5BnA6_BgQe7vd9?fHE=1y>8}Z+r>nQZZ1+j&^sR?PV%#uYA?4LlQkV zV?=sN{~u7%eo<&)>FUL67Nixpy+S7D1a2>Nd-b^$z+T}r=@rFD_Ug(C-m51>V!TPV zSE9T&4)B@wy*LBubumJ`lZC$*=O6!zZ}z$#ee5+RnGA~YfZPS9do;V+-W;^O^!^K< z&$hjaM5C0B_mW2RdXTmBHcI9o>0VDkBrdo-kOQ4JLI0&1{GEhX-+tSR`1fBJzTvvc zR3fmwe!iI9Xs?CJ#j(9sF?hYI$1~Jiz#{#__F9judu`E}iO?Qwc&~#gP)KCc9NV|l z?fqRmt*~` z%(3Wy;Qruj8~XqyPto*c1Q8oxY+~n9bsKsc`#gVm;5hbm&kP&;j@o{J9AedfkHEiS zLdX8l_6rQZGhJg{6)k26V{2HG6a{z+_e%t#Z>PGV0Xu>GPuh{m!5=1%R@2&Vp z@0+2RtzYt@d$WXLTT5;4EaqA7Ji-lzS=W0yqUc>g2Y6G|_I_B9ihuNek`DBKjv3qg zb-&yDpYf<$@ArXM?lZoK+xts7(Nd|{4nS@ywtdDHx_v$>ui{p@?bA?dwl=t!3J{)jg;kSJ_;J1Auh=TO# z21HNTtAc&vU$#$w7{IZyeNqrsAD#c-1QR2u{u^V|XOze9_PO3NihXWos$ESF`rwcE zd4;vFj}K%ebiWVrKig*-ZRdIN-98oCAN3)8-DfT;J6jI{f&Xbwp4;ceTzYw*D7`7f z`dB(~7nu7OEjH0&8)l);&w$r5?0x}H=M zej67ecA5!5_Bm4m({VvCt)Q9>L3BOa!YFYgfV;s{>BjZd{s=9PODV8%>EJWqiyJO{ z$TaQ>T(I$FHV%&o-H}jA-MHI`^ak4A4%HK{w97*G;_^KCHm*>O?x)M-XnTVzY}{O` zUFdE=JaJEBv*TX*fFkxhf%}qdoZ>&6V%WGZn5%zaV&cBxlN>hg2T!&e_lx!mUbrV= z&Bl=`DYrasC2AC>@1LQOZrrwszzl7lZTp7ixP528R&4wA@Y{Yfr@8$;D9p3{h$P2{ z<=S`-IBeezpzh2254LYN+V+iogN?*n9+^jVLV@i! z22;>)=-q8Y-R}kzf^bJa*8hIWHk{5lpe@{TU`=bv| z*!~=-E6u^{o#pl)ey883aa_wUn zOo>_lMTgM-k?XT;|HoI@0|B3NsG~CSVmA3zC0N2C%NPuF%(q@R@q=7DIVeNl}3ErQF zkZk|ch|fdogmx7+frLPt5XlfHbn(ov2|W;BLLZ%YPE4{1^8YY+ZbCX+KT>t`Y{KO@ z2&8km3DCxy8}Lr7WHp{`Vk>rD`lenue48N z&JI|>ayDSu^T>U`N*Z4Y48t~HGtE=l6}ba0yjbog&b!O+Ca!rT+a@0O*@2x3?7)Gg zcHqtJ{5CPJ%uUR!DzJ$+=i9{bg*LIM$|lZEvWYLy&%{9ip0;F2=1?Hl+Yif$Bj{V= z6=-21_oUp!(L|=(+=aw(FjYoZ5+}h~A}gy+#3ynS3+@5p5;Z7=_ryxIdgyM-G-neD z72CvT5X_~NB$Ahs_>q#GY~o_b)YAFHulVs3>+Nh1{(v&yD=fcz^4!Gvx6`GG64Zv;%wQ z*n$035{ESJ0LBCMfqcg+aD~quIQ&wz7zyHmTs^V_Egc;=8mKgsVIaQGKp&;Jcy{0v z3sPxgTf;KKj>K4txUEqr=MGfuDZicL#m^X@O0;slp~L zF0)BHeRgn1%-pMB{jtCfqI}Sc!KLoN1uvD`K_e+KTB)ntfg7I$<4(UFG%U#ux(Ll3 zxD8?$9Xs$i9XJVVXJ*-f7(a$c7kdf=mk0aoppKA?hnqo34DBGUaM(dH^lXr9pwj+v zS0sT!sWg(Gb0Y}i>Ghy1+q~KwJLq~!mDaxme(<<~JNTQar~(=_ zcs}Usz*Z0HUBpcWFQHq5Isa_i{tjLz?6QBuXqh53`#=*D()J~Uak+NznIxO6tw3@R zli)f4ha=MDs7DyK~gu=o@GArzmOQ3dLS>PdLz#VlvgnhL; z#JmW6ncy`&hm4a--++n?nKBd8PEdcy{WM1%hRgxxIr8XW%11z!V9Jm{DVr0XqEPdv z7;wclhrBFKUI&em)`q-~u^I9S@{J2&6n}lU%%;xCwrQr^rp@3y8y{%MdcRHWQ({x& zeKvJ$mQ5{9vZ*|iXNPRhvO{)*_9<-PkV6GFH5}a>(lSvFDb;77mMX6-H56(%^fr|n zGd8s=gPW@Smw1fMT=uD{>6LD3=B>FlRUwW7EN>cMSJ8Sjcv7!{L>xki=H?e4&$X%g z_9{x1dN+1C)el%PXp|Gpr_^jJ@h_YD18R}_iyR7_Riw@*CYGtb)Tl3Y6mwOXv;+9vi-X2k>C}Ay-MBK-vSU zo^3FSY0rW6CF$N@Ii+c@p-XA+T+fiCeLxf5>vq$=e>dNzzm#p$*N4%fy1=HlOS9=X zgI5&W^odzEeL6=v&%(!MUztru!$t{n1DH=>=IP&b$Q>C2b;YOBT1Dc5=ISV<#lsgi zy>pID?}k)-^gX>7{YuxwN*};fNl(5>5SfKGeH6T>k3iIIy8#`E#IgjY-za$5@bug1 z#RLK2-r01YTIXqe(%G70J$yF30)3<-h^!da-iX>MUTnYQ~&=o9C-@+MWdSjU#+SeDj zGusXwBHBk8-E{5$hX(oGp)nWJt)by1b|`Ou>8%2HXjeb&^@y8a2CCd0nsjg5W0h>j z3hhu*a^0bq!~-%29*17d!Z-BB=PK;bx9}u}PV(8IbNzNGN4UkTAVaf2J{#>GT1fKt z(3z~a9ODfwr}fpyX6QrsL8R(%%#me>J}vYw(3hFgbwwCK{r)2?3`4&LEeYR4m%;nc z@5I4RRp8)$v>ocG*&+-?F>SKL%L32P)8plK*hrrp_F0}gZ1Y{kc34BM9d<6sW<<=g z8J(C6L(kzW4vRoa!(HKRHlVMml0QK@You69j4vUwIE?;jLy?2KVodC6A7cu6_ zh8uPzofu|0q!>1?${kkn2-qGH$_buqci3Hz3j`<59hQ5!noXnGU8*h@#VROzMe*@j zb{L6ofjf1$OfB)xVed;thrI*H1O`IkGI~DjD>eRBxc_q(MkovP^C?*+5=)h=HEabW zIF_)()+5=m@{b^}3&BJSGx5J+twOB)kG2Q}9A+p&p3x2gYDN!-L>+)pt7 zL&*L`$2^EFgT#l71qf$0?wI&p3bt~Lb;c&TbE?p0Dq51k`)4*|H{+MFUtApKy%C#n z0xlFt%pm^lW(Ge94ScH12xOeu8GXwnl_>M#(IqyM?`GM|q+*+y!OX}^qdRT-D#zpw zI8Q-Fnb#;xz~IS>XO5pq^QjCD1;er1^ffcT)XgkZ*3?}zPbLJCIh*9#%qIyhOejRP#%nBzD8Fw-}dCYnIA|KGKv4&O!YtWU*KRf;%5FbL7Z~-HH@nNN7R`I zMqQi_pXKmA(Mm#a20 zZhSyiXPatG2%i`#kmkb0v}J(ro@OVfy@&H9BRUTjrll{(RMex)(5i zntl;`5z%n-XVEN8#XUSfQFAl~grf^#%Q+!4f75TAX8uik946Y=>yemKtP-1CCvl$z zB;MU53r_c%1zEX%S@23w7QNFbi;uZw@ke$^NViGCc2{^DeL8<9NQbeBHUwn;KD2TI zjhKIgX3swk?bFzdng7s@!SG=!nYb6XsZFAjQ9JY5gxLh-2XkcpKa{YS(CzbI-%p#i zcx3*&boU~Z$^8FI1Pjheng4IZV*Yphi5{o)PXy8V*ynDEp5>Hi4gQI~kkEnX%WF(@ z6dNSrp`UmcP5h6Ej_u@=C{Gie7?Di5& zr8yX(eu){!9-@l%Rg;1y=8|ELiHRSmmzV=?iFwK)vDYDFG4LcNddwXcL;IOraI8%N zDvOLptBF}(02Favi!31%lfMhkZ%oBn8rNWPNsR8w#?)ARCZM;Or8p0?76Tm z_ChBds+U;y|4r-_>daq2PsXZkJe%H(jkWkBR_*`TMAX3Yi9r)v#6gU>a|QzvH{_AH z_s~SKc9+EVM+8M;UG!V5e*oNi5i${4eN;;PkHoH5ggs!^6-Mk1+O0uhvHK9O*h4OC z+&aGQCA^xl4~8W6l_-g2t1(uOvgFX@SbRjWI`-${u8sZw@!urALF;4RLEdBErz2uN zVMOUR-(*Gq4Ibp!ANUieBR%e9>W(`DBpMbNclBDQ#Kl)j96@(+Hkwl#C2?w##9hle zIu82}#qHpVk4A}0V)ltkYrvw3TL}(b4CYcnTnWvJQ_0eej5uBYxine*A8~l0Ok7)~ zmSI&8w}~<UXQIPYjmFR8>{EPX(*}g`djAp6K$`gFj=G3gXTukb{f;lNSWSEx zlRjG=eiQFh58V`n^w%S^lR(l99WPSOWm{#@~u~#@{ox9*=*3RHxF4{Uhop55oy>NN~_y5a+NA>dw zx@*C+w0gk{EZe4?OeRO&78>4?I^W_#ZUwX}Wdci`=WqOtA2;t+G&M zzX9j_!q3@NS@!tYp(aS?G2g}Hf67EOdiw(DilnV?$4rFyc6K%j6DRaTI2 zIg~BpQVCf!_ot8#x@%DqP?~F145r9nsj3g%v1l!#wW!OcMN|jqT8aR-uoV@*Xc*{M755Q%yXc0M6QTYd(w{=A$kL78 zMGq)Sqx2F88QJH|&=N1w9`3=CMSoRek>%~;aaObVk{GOx%Y(9bp3^K|or3w{^vL3! z7MEG92eM=_djg9uU{d8p)OgS=z6dmIE~B>sX7N=vxUg9L|GG?AyojR2ahk_@)=utC!7oXB3Pbq(GtWd z;c^u)N^#y4-4>Jtz5gbg44n`YmLL@gsXy<>l2Fzt36-^yfR{6&7s_>`C&2;v32RiJ zCe$m6ApOj=AqhJFCFuN@pz|L-Tw3p!gnot8^Unzf;bHno^^)*_Taq5L%CdV}%!+4r zIVGdH(PUi`Je{o1LT1UkJFT*`vQd^EwM*g}za(z_(+V2KABy>@+Sps&ObTS;G4VX2~sAAZ^otyblDA zD*lJSuL~$8NRN^)`LkB=vR3dqqi-^-9*+lM$-g-)=$54k-muFqOH)y@OMYZe!Nvk^ z7wH!es$i3)QBGMJ6D3O*Fzqe9gpbQXUjrWXxh}=-lcgHZuA59_o)f?XkPs9u&7k_F zE8)@70%%=YriSP={pD=INMG6rh7D*OfObOp(pD_#rQvpf^d$hN-z?p#ju2!|mJYy; zrTbz0(h&ys6nbsx?JZtOM9n1T&Q)xNT>udNm-&7|K$boS!q52rCnId>OHL$r>6?6h zpcTCffljI*$})|gEGcE_w?D}&4Y_u_LlRF%ZqTigsPkXq1x3t%iI?#?Ys@T5jG~~f zt+>^|BrcdvZX!dwz`+w7;2JOO>r&=F^N7u9cZNp7%6e&~QMB=;g^!Md;*_YLUO7kt=|HN=e54 z6M2b#SJfhK!gG1oQfK6&Raow#=U?Psis2hDFeR8}r&R=H*+q6)#?_Xx3|Es*V9TbE ztuN^nbA>m_^uH{d710AOvn-}iLGgbtOH zg@7a>9LoX_v8);4Sf)Fr%X$(TWtq+uOs;0x&S}uSY(Ui()7i2k3<9m}Ca~S1m~I7A zDwvYb2}m+rPCmT5#-zNzy-rdeZj!Y7LMH9oYOh&7ca_g9-&|d5mfyI-Ez5BVE&sCF ztT>AaYQ+?rS&=uzE-OZuP3~Si-er={9H=$P!%mh4$yYihc?m&r9!bu&Npek%ByU4R zldmCNy*LCmN%F##Eo1sP@It&;3(lw=p1DJ-MxvbapZ&d4t7flD9-g7b7ltH$x_Q-`FQ-txjWh2}<%4UP(!?NlJ!CQffky zQrjpg#4M!jt(KHyc1igw<2m_x5~3$i{O#qC^dARSG{TkqDO7!-LlZp<6O+~dx0HTL zIn604ziKflvx>&fW~H3X*h=C4S1Qps3|@9rH)u+f`ji*4Uz@_IHOP>SQkaF@;4b|mgMXdAxc&3=;tbui2Ts{QcsOB6ZN1s+(;3w1%Hz3IF z#S^ytVR{A(ycdv(Zd(2%@Xu;(=%(c_|D>C6q*hYZyXp*F{)vhVkY50G8Ai>x!g;HFhPR4W0nLdG%I}!NwGySl%AxhGJK~<{= zqDr6Plk{Ylq}w1oeHJvQ&(%LMkeI$uizKSaqZFsFV2Gu2TGgblQjc1?#&x7~8h$Ld zMnODUHWL3d0i5ee8364qn$@F!`jCwDU5Q|vt{C>ivh)##X!38tM zq7*%#2#r?!2L*dtk^EW7dSyN!>gP*;TjAbAW6iKMN&07+#QA@d{vUO~fX!q~P>M)si2CXLZb+28r zCLwVd$LOlRLCP27L3uN!-$Zd_+)d7d`1*QOMezNIBL5?-$an@zsFjbGl>XPCj%avv zEGZiQlkq7O>LHN?gcz4?<|$on$xO9NCTAQLpfowRl6kRLGO++MIp~*(|5-9G1w{$? zGTH2w%xgi)8cZ^mu(_i?svzSbqN^n{14!awO=dX{^)3OI9dU}+F#;OoA841!^si$a z=a9SJBbkHXy^W!kiT#_Y_OEV>X7)$qo=pp&Mzrc<4C~C_{4}f)_&G>M=DqMD^AU2@ z*O|%v_mcSx3NG^n9Cl0|4lYqf1DSToHJ@Ar?6Ub z8vT;9w@z|yZIYb7MM=&VHp%%COCZa!5kl~sX8Aml#kmT}YD54M_&0UD%VhNgNjbrI z&f-LA)(93=t)G_}P1b=p7BK>W#^If`ZRL?MekE z{uxJGP1r-5-pWUevOZ~1Gdk-_%~kyukpXoS2PJzPGeq_zL^}I4{X838nSCKmn_Gqn zkbRj~vN7mQ_RN)_*FHqU>awqZk&wL@hGk=2X0HYG5Ab_U2AXt@vqe2IF6{UuKrgex3O-`)#HEeI4w1$XWJ3b#EwWvcIpk zOU@}sP!6-8o}wt`Uk1XPGu1|)Uh0+{7PaA22UeR?a%RByoY~6E96ZT6NxI?Ul^i|) zqrQM_Q0HU^BqxuAY4jRBWOAyQsB#?C%r>dyxRK$UhM#4)+T^qqFc4V7=WIdQ0=W%D zdUh*kHBYd!PvdguWjAM) zc4wT!18CQC*fH-0uUWNauv&^g3P=f2wxwRbl(}l9>|?u>ebyx9bv`K%wMzL=jVXV% z$|)69by6`zMW?vT%E#aKO73HJ$;Fpb9hAHUQIa*XqUV*osu^lPR@2q-ds46r!i1@Q!w=NE(W!Y(!?|6Y2;EgCDk*W7XzAW zuyD#Liz7L&5V1=EC<{9B@*vZqm}}@8?#9SlN1|G`dBp!nUW291v#P{XEvx)av#Og199NtS z^0(_H|14s@t0kX^fP5}}$S?ItK3DQe-bW;0-kH45_b}x1z9H#*s`FAqKKftsPof5m zPMT~9nf&wBM@5hvUatI06h!aH%b)%8&~23b7{nrf(Qfu<$*^x zgLLmtZ~e(fVkBSHcYYlsyYOU6ZRO)2{tvt4zw4D%6KM?ka@9%%B7YAzhr#`PJ^#IS zqF?fF2Ivl&$wwmp~0y9j!{E0jsW{0ju;ToK<@M zXH~SW1mh5uRm3NlRm*g~U8*3N$mC^;v;d?U(YnfsZA~%tfvj3XVgY=a$4Fcif`hBp zs*h&XdbpPZij}83%&G?loTl*E{-6|{>Xo9MHKypzjR8}f)?RCh>+E(Z-t3m*2kTAo zD^uo3@#|+p-M0Z#uq^DBg4ZMAwFMtXNx?rtQt(xs6cPhiINKwIi9RW;wn<@kqZFQ4 zBZa@2BZV9qHwEJkOrrP&hn-SDv}?gkj}$Nv3Kqhjf{UQ8U^;D5W1#*A7iJZ(3M=TbOTit~{)}R%&;q)>Q&7WzFQ}_!?OD(`7B`pxXAAWF zb3qpiVVzG4`dC~R?BcRtDL^>TF$Kr9j#27Zq*JKh6x{l=8Cvi=#r>fEc?6AC@Psbw zw2um&$22W?g?`udPQlxVeZl*zIl_8j1nVVal*!I21>b6wKSrA7mcmn@vhYlLrSQBg z#6O87{NIH$!BH5QZvj*zxloTP6~-#yVnxN9S5mlwbi`f?b^U|=E`>NhOku@B=qa?3 zrr}qG^?oUAhPc8YlC8T6g=_WCdW`eSprx=^p?7E_=haBzKcl2*5;if$SK&tr{28=3v;ki$ zrthJ&NExat0KF}?XtH05!c!6~pMm%kpE3hvst1bCg)_w$Ag;w1 ztM#CER;3>w09hLPQLOtPy5KBcsQBSR@iG`cm7XllgdN2MKbYboJuY8Nxd=*ZASrfJ zPMvYZT>pU0Sgb}NPIrr<()GVgaGB!4l@z`$jcl&Cl;XquxPjKPh)~T}{2SoZ=v5bO z@x6R-KdlrK|52>*A6KKMi;4fRAp6>@dI4MU+e#tvKP=5a{m(<#5)8uP?_kG|z~~Ld zbKO!x{GXJZ0fLhAf70_OxlBpSu+x~KiQyFOF$wFFJ+dANg1odhwJq*4sKzogP8 zB>{#E@4l?}o02@8+H~8mqzszck<1b#&XlZCe@aO`%8sX=q@-CP*#9#nUFuTQNb!;b z{;(rpN=7cTN(mczCHDYaM`LUjK29JzCF=hwxnnW~rt9Ye^i_$je@p&gsWm0fX#8Z! z%h2|gVt@T7ZmEN?oHDfz4i7iP)7C?3u1P4Lt_8lzoQdNNHfJ^QDoqcuyXlbC81 zyqJwrdL<1got4FWR~qe=(s<~?uOp=ibZn`BZYF|Mn$5fqw@dR0snV^&(sKQ>@--E5 zN>%?`Fc3?_`+`z7yc7$-DO@&D|D38a0-a?HR4JQ6XO-#uKN|N@#_=TGtO%L1xvi`h9DpZANm-Ul z%5uS9;WuR~N&(SjhK4|w73v@Ezlucgm0EJyZ5&Ib*8~`#)=f!<3)V>Nn-lT$ELwrpHXnFZ4(` z+o0vMsJ;AGP*Z+6SgYs}RqW;Xf0+3~QoevDmZOlQe3{n)~g!@XW(jSmEkZ7HX0o%JW&;(FF2Yi2fy=bBpa+*M=hrWG`s zx(Aya;>CXVR#uCbeI@VTeB%AW6&}Z3M5|MRvO3#kDlgjPGgaB;0ja8SN>!NZR;MEw zhZx_ht9H4ia-3BvPxVXX4_#>q9EJpl%3RN=x!;{$=tz5>3 zjka*JQRQQ_=j(c@I-O>p&k=pQR7C})DiPW%Gl3)O#Z=~n!Kyt{NepacDnfwP`Awyl z13~I@cZQ@A-+$#%O8kaFREhm3m79?E%AF*QFdbL!oef7T4~)@=uBU<%|G$Y)au@2U zlJoDT^5F`A#%tkcLG=bruY3WuTgm=6LPGL;RQDMpsPbdPM%7xS>VKURD!=DX6}P6D zs*{sQn?iR~okK5j=1i(CgjrR@e@fNm6r4f9s@V#Eoo2?O6{{9ci6Ej-3htIFjb)uo z$KXY*BC@wi!+xtO*(Fmj-L9$fKv-1+{aqE(T`%rN8&g>tb6It8e@LphzP9Q)YT~GZ zb;caA>XFf^QNk{&Zcr;rkRBE~Zz)yv?>ZEBsqs3Uy(VGzF>(_-&vFbv``YV7YBXFv`E~E9< zYvGZVU8}I=l%TPe-3iPQhq3;_?iSlLr?JgQ_K0mxjo7ZUhR0zgSZf2}5ir(MR$qwu zwPFn-C)U>O;KZsi)(v))k97wb1k36+c^XZ!?xRW8gTV0Gu(AHSpQJ}%v-LKM(^&6L zqB+w@`aJ-6rI~>FcuvoZ`Hl6Z0DGI(_el8?k%J)SHnD!JwSLh=fqWE?7q}mEcPc$f zYC+ z>bDi#c4olXw)DZ1r+i|2u}*AXSBpJ9Bz6wN*>^>Wop+*2?P4cX*#3P`9MLv$q@l5G z`zdoHWp0P6KWHT*^tA1IJvqR28)9R#Aac#5?H(of0j2a2T^;D~*7c6K~~W1j?={WSW*ehyNLocYCmp{3T?FIk06 zVV?ze09TiveJ+JHSajM13gh#zv*BykJE!dF2)2Etu6D{5o$i0wdH>ef9ahrR7`1b) zd^m$aX>SE!1Dg+aVD+gM@N7n5*|+hv9PC;`PtVy$$$5t<#Ln&b_Gc6?@^9>S>xP;@ z8vQSJjsLViK@r`bus^R!uOKD%zb28Epe_BFIvMt2|D2RUybE^j{|qnXVjTy*F9$)N zjw{iB4*Y-OI1j!%^bSN8_Tspd5^C=|^st9xF1rA<1^5LDy2RoV$1+gGX&DVk)~gg9 zg(If|(MHk+hd2&Yi{qw{IR0EGj`xs}v#jF0)Fw_nu!YH36W)V{WIpWh8^?~-G|V0) z4)p=+qQY?)v2`4;M|2$T z6q9}hJa-Tt!e@r_NdDNerR+Xv{ncJI|x5oWIoMX(V6GpmVDF zb7B$EJcw68aO%yB&ZUth5~ASb{tssfMTqneX91A$u*+E)PjhAy011W8TKF{nY_Dvnpf7JPouQgaQ_Ngk>SHX#syFbliJDg_ zpxQs`l&&7)<1nmq>7Mb}fO9e&s((xRqgv-Zx>XsZ{6myo21p4SYA(5d;(I1iS^XC! z>P?H!RR3M)`6RX+t5Js~QBtEj`PKhHnyUXxztl_^?=&@M;z6pplUWejKqV?&4=Tgxmhk}01K?!EV^1wgy1=B=Lr^n?BX@U?hI*bH(pL%2Ajw0!z<}lTf9iv3t0!p3*7uWrKJcI}*Xz9lk5B_hSzGS$3d@vyH>zc%U$Yb0lx7xU0 zkM)ZCOC=e@U(YW){o?+m;#2$oAfm&{-F=1wnc@y^_xWI&23|MSiu*DaWA2%y`aOq? zG=$k5*Km?u++4ok_Mu^I;@&_mX0KZhiMZ8HaT8E(+>!VXJO=I>Dsy|NOvj3wbEe{M zrNiCGy*3>9&6=irKsv3?(GT{&bu<|F2`6QK2Rqz%dK?-T8ABnBzH@8;FGnG`pQZj+ z#(3m@fkeHcPWL}?X1YHhkLx1Et^FU77J>}j|DEiVHCI^dvStD_uQ>&B*F-M&UNeOZ zH96N@4Ez-!n#w;5{`WO9Tx)7$4|t^(4O9D_Up!Nt;S|oCZu7~SYKrxP>9=lK^O{xG zd{Qm7DB0ReY*KqUEnHJ;0gC-US<}c6Uel&-b|1h!r0mf8`lwI0(^gG@mc!iM;%t#M z$0BWYnl(3RJU(Ij?HSQ96Dg^$Mh}_9R$Pdpdf*_8ih{e*t~97wKvq#f>PCIg=LD&OvBv zHPmkkTDF$Jms&gb0Z@u?@7kU@Qp>rl+NY?uwv4<=>SZN^=gAS?3PMjG4Ok6Ff+UtH zzO|SDwOu;dm!Jk}cYx_8gu8YhXoeX{dN*q=@&8hLT=8g;TeZktmIzvCcmzoGeH8M~ zLTFX(i%nAdCVg4^n);#Cw^RGBQmy_Ei=yNFv#I@BNvN>28jq!n0qS9;<2e`V<~f)@ zz2edMZ#8v2mmvI}D~mzn(U~6yp7AW&3iNPGI15$M=@AdHxh}u)G;yznXS+h`;?%P` zXgq#G0>opd0Uj3`#p7KA4xP#u&~cvifZ_x}$%?0k3JYOuKD_qyL$GHbT5zQz;=*Om zjbzuertF(@Nlbycl!m61{BLZs@viy}PqNFDKNbp$`u zolpb>Kh*V)IWX#WfI!E9IveT^L)kGBxcve}N<@NR>TW~nscNrN|7RjPt&Xu@_W=cMH6_2d;Y~-ZFm7 zw$vK0a~?b0<-j!68*fiKDAd*OZG%2Hi*C(02$Cg3ePCCkcDx_Zw_fgl$D9D< zDE>U!Bx^tKq#*msGkwvuGCauVEK{MqejIc977omG+b{Q~3HK zfGz~rAC4wlZRc}hG8{WTCdPB-+*a|4CRK6@Ty@8ylU94fBI=i1Lt3*LD&DK#g*DU_4|2aw2>vJxH~$vZu?GSkoh~D#=p0U&`2_lQ}zW#!u;>=1*#f-;NSf} zeN_mlqj_r1Yi%vYf7^6W{9dcNOEKR^8IAGtKMGel0pfq|r?M7m`O8l+y8gfGt_0Ak z|4B3c?+6PBEUc428FU8d*6T3Z1H9)LPq0&Cyf`sdbv_CUwk3iN*+NP(Nm<1k~&cY$Q+3 zmh13T1a`CR4qtJK*97i;+AqNgK@)s7)hUhVqnu`iOw+P5_RBrel!IUe{s`&sK-4Ew z&^ZBJ4F{fAl3pERKn4B^CS33)@IfoT)Fuynp&(x=@VEL)-#@;F0T4X%Vd{GFbgKjx zHc7BJN`h9m1i8FE=&qJvUA+W58zs0YB*B4z1aA&X@Nsl-FZn4!*4^Z%qhfiu_mvSA(83APTGtODmpAcO3Gn&4WMvB~4BxlarU@=0*3=I;Vn<0XUp6_>_; z1~vXUcq8&%tN^zw>U(HH@B#g0sD#aQjACwzW0eO{MIAH5>U4->jHE*0P_& z?%`C z#^#VT9(76MlMvXL3W1Fo5Z$;E?l%^?z^y@HjSi=2bj<^&8hLt}pvo_eYJ3%HiM4E- zHFgK2aR{C?_CjFe4ok>14x|FXQpz-rD3uz6-grW>-^`TVNc_Jv-eU=x#s}5CFgZ#Z zbst2}tu{VKCp5l@0%-gTjcAtWKQLv;gy_X{l-g4aA0zO&OpdirX}m zTw5zmPEwOdwUVl%v}uiIbIU^0#-}_Iitd)`gIg`lUX^WHH+@eZge(@Q(EA@l-2W&cz5h1!3wRykOfyCVKQ1Rg zL3fWs*YQwlsFjbbxeV#q+t5m=)WyDP%}@o*%NSp6LbY505~?S8 zCPam_|1&JLCe%?%`&f;Kwt#pivmVPE4ap9%|7Ai476XTSUP8yvQiKSGZUfXHR-t?O zF}C(s>42}NLG>2_X@0iOG=FqBN?LyDlorlza!d1q@qW`BQ=*Mi zy+Vm4G*Fc&%ZVk{~^sSxO1EJU4`Z@ z25tciZ0^%Px=+@;R}GNm3O1sMbPYI9ziw7Uw<83){oQ=OemzVVH9xM)AJ8C&VXjPU z*7KjuuOkJ`Z|kr3kOIA!xA~s|X&I-n&=;>XRoem9-wzV#g|O(LT>&BrF56 zmX6Y$@D}|4;pq&Nmi74ET1FY4E!(iS0NJbAyU8wP$So(~5aoHnU0QBnShmprE%z$O zU4TS}9bJ#&Ya2`hW76o0@A^R*kP=)?q3dBe^bzOUAW07 zT}0w_`RM-E%%>2|)`F0Y43Z%3)QrB!83axt{u}fQH zwY2SXn6~3pLDTm7@>*%XaMB!Uz0oagi=EPz;*z!%0coq?xz*PDY|_elr}Z6&wCO6S z^&zc6-~VW3BQP@SwCes>EBjy4`d8&70@V6GV%Pc!;?nvBPJmXu|F~7#-})oDZ4+T| z+o=%Nb{1V^!Io}gHPEK|uWdS=ZNXvQrYAkxuF)jqK-%>F549`WlBgq%50%fhY^rF> zM}pf*)Olv1Z`#zm-=@0{Z61Z!m(kRt(ALVhX%pLT2!%UHZO_xVwpWyFgre8znG8KUgMFqwkTN}aL8JYl&$Rs$J+Vy@7e`>nFl(^VpX!1 z19fY)sTG>7>tBtUVs2lnJh0$#!eg>_4HU0ceV`LYBlNCq$CtBqy^T*74PJ{4ENger z3v2h#3v2i5(ln1+)==(d@_(xlxMN%YYwsiN_f&*#k+r;k9+|?Ck+rYkp(O81HC7?! zU4E- z?zj^+#OV*613Bv;9Z&nsx@`^wu;ckgY>bW%_B&;r!!7Gv%+@wp*Fc8`X~Ta>qUDty zS$Aoatg8Z10~}a)I^e%RNv=D$it47rC@xM|r>peo$n(0ZDYhI!*Imn^ZCwoBHd(ij z{#?iUS=J>}L^sveWzoiUd9-m|kwTP1or;C}b9|amM*<6AS=Xd6ZOnk{SpUnqjf!du zkd}!Kv+fX1F)krk_X&xgvuaw$F7vv_>&?0sGe~(A(mzm=ALN6*pNKf=(s~{H-?C2k zKO(AtRsOnn9bxgqz+mJKt*gmWSMK;zf)f6v--MsqUTZpYws=hEdl^1ie`=Gg=MMGt zaDhiU zr;V>M;qSOEEsX9*1j(An4~^9BJQJ1NiLuIYWk(o0=UPNEn>sqxpVc{wI^tkPXG|$g z;eb?U0tIKIb365>&dv-9E~2{5DynKB;reRn)FoM`Q)^j+=ydw<`b($If7Lu8>h+q= zZlcpVkDwzv*+1yqhrCm_d(5%bd5|ir=)Ov1mbi+}o9XyYrh(3fk=4!zkVcGi%0Kb* zzy{`dt?U)Luk#J9>m6Wp>~((3=;-`nGnlwjs#E>noj)Mw+S!w+LSVr9voPw{pWlws z+3c6~L`1JAB6__>Sm_SD#&xaN_~-Spd}#>U`edhBpQUPV{R&8}nLw#xW*pWFKx7ge zu-*d{2cOors3`(h6}A!B74UU^hkkYOHC0jT`M>qMQn87zArJk#{2XR^)ukGS(;{TFHzIp8j^-;(%W zUD*)XZ@Ny7Xgzf`ad71vi(R^YK}1^$kL7h;6_hT{(i@0IG_^)(nX*dN)xbB@FNn^h1W*9bVW$$4AVMxQ_~7a@8VoU*CvJB@N)yt zY?Lm7j5b_RC!3df&6ZPl)|)M_*L!5^){xoyO?R!?HZjF%ww+toB-`w~Z)B5gbynGS z6mLb>vtHRSNlAP0NrbTL{V3`BoYs9aevWi~k3rU@_n+;zG)WihUv4Z3VszVN1FD0T zJIsdDyAZ++oPWbjx#1$ZYCW`VP%dSiT5C3>-|vy`TO6im&h8DIBZ@9rK8wi|XXUrRp;jH?G-vwpE>zHX9 z47pERd}hNRd*E*)+}`kK7`)*X-FeNV$2Po;=x@;1;5X>{e*^1(v*9b9R;n3h!+x`I zd?!`yj*^Y1k+_;EW~0WxY`joCCadA=#u;wes5c^RoP}s?oNIBKjj=j_S?S3}?*EpJ z$(qJ_Sanm;Y#u_{s39mD%Qe%gnKeE#r$E3)AIFF6G-~5oFya9YuVMDw*y{|+#(PlN z8wa7}dJx>m0NywZ-5ZavBcUs)Rr+xYJIx#Kpvzc;n~e{mz9RPO#;3sen&SVHrPgeG z*+IIxNjJWwB>bI`zwzT0O7G`N#{`>nkAwH8(hrxRxw={ZL^O5xS^9Mz6?Om8VmIBt zDgaz{b$1jhKs}G$bM=d-l}z`dN-|UQllKozce=vr6{@n>t1svBQNcRj-2?S$Cw zT0Jf>Uq4y@neNsxBNNyzEwIT_XS%oP2CGgw-Fx-V0ou}iL>HT?{JU?05o}eP?mO=| z35j_I33{DQhvK)Iq=(Cpdvx92{X8>6x7xqzdD@7&t07Tm%A8gV^`Oh7N6ED?31a#55bW2(m4H2r%$@*mKl-Gn z(LrCx2G2#>qA^U{rYDg zjqf=W>0pb?^qd%C52ZUKJ--9|X=wNy0qJ>A$$msJ{E-GXDB?dW;+L6gdfrgKW6wL9 z_`W87LTxd)-g~}x$|f8Jo2HPpNoT-KCy})rUAXDI6hFgk%os~%DZAqR)5y-X}D$j#>F!;=7DS+IF0gxpHjgSE2xBY@X& zlw|V|Rcf^BW_=WAmEUZ>VF_6{0*E~W*PZ(3UI@)YywgGQINiGW1u(ornfJ8dt4g)5 z{~1pB-&6vD`wVt${uc!ojECMIRVM|_mPxuAnmRE`wp`?pEtin;yI`$sF|_#zEZ#EH zFIz@1e70P(iwpR-FyU?SkQ^rB$Rk@e)XA1zblH{+rtdAe1L({xrC!;x8gZ_Jlr1{{ zZPEEJkJ`7e{xw@d{cvLo>z@d_*CG8|)DgZ#;~z@3%wGM{{U7zLZ8@gsZ$zfI+{%5@ zvgOXmNCE6Y;4|RCR7iSK%RR?<+wzK9Pt4~hJIt1Ehdie5Gp4ky(kfdss?AmhR`gbA zzxwom>5barlwK|mM~n3Kgrs+Wl=Qw~m)^JQq|fD(z700%yTvViFHNkI-Z+=^5{Es- zExqONuQ!phIrL_4sy?>Tn?V!tNnjC@t^pY8?CZ5cQ7`sfWZ{Lb?`>Mg9+2kf{%0@y zpOG9`(A!6&d)5EdyI1Fn5+;-0qg3_`lS%K1@wKM+cIL$1Cl~;|_k-Xug~t*^cl$BE z)tV&%{bzb#RZV=2BH?ga?^lh|N337pbiedr6!#^-&)#oQa=kwykR0qaeWxZf4Q2yyA~nqV=VMtua)g$itAJT-*-T%IHF!P z-Kguk2}z!&^>Cv_-@{rD{(l6BhCQwYpHeFSthHJgzkP3l;cqbKGT7Yr@lR}K8OZd! zmF4W#%aMsWQL>f0j(DI+ww~Lfk8y7O1q2mQ`_`$5?bb_Z<#;IGdX+A!xDH;n#*)X{ zk39$Fjt0egWosH0l_Q9X0mr>;EvDA3RX=w-33cRzXwcR`9EH@kw6&c=>M20SZQVSZ z)aetD&!L_s+4_njoIc4fTW^NIyD52}OSV3$-c+k>y`63BBA{0)fe)b*G%kDV6ZGlU zXBF)Wh~5=S!y9y|2PA)I=x_ZtBmU8Bo4tggy)DKo+w=_!4FTSUR+4SYK&SH*t}@xSlJ)F1H34|f z97uu*)%$O@xs$=|#^BuMr!TjK@Mte5c>}RH+j^l>FO#6xwh`yNZ4ka-naj43pZUl3 zp&md0>tk-&o?(?8`<$|Ks8M!tv|-oZlTd%#o)60Q*hbl&fbea5b%dVgcAIU?`P;sv zIo~*B`x%tgJ2oA(SuMS7KhUi06ZBx#_ESjLxZUl#|FM0lQ?_3Y{o5~rlmvQh`&Bxa zrfHJy=HL?#kGNP_*T{CgS#3K}Vc{T-hwautK(=!m-;VQYWQWx$JNBFeU9C>Dy=w%- zgUoY)AGgZ(hhf)t-5DFft-iglk2}2KLwA&H@24ttuWuiwDceU6@TreQZNCjH_r_|5 z`hS-rIjl{tfT!CZ*Csp#ui2_J+h5YiszQ?A3CZ@a5Si`oYoSk24BP*qx;{qJzQr=$ z{v!it2mVj9<1{@yy5nqeCy%d{9n)&ej+Gj9vEwq#fF0KsxMfGII+Zk76!$bOTnfB~ zUe3dC*pd0OZwW$oumsd4(2fdnSq2HOdV;7{vl>CRP3PAg9TZ;=KrB7IW6S?~I%aHG zji2N*J8oGQl%1z|W#?kM>?CeaGTh5cs7i>hzR zw0``5X2-j_-7*h7wBu9ycgH{I_#GPmvg13%K%?GwPK?C-xXjM88aVp4^CIfG7V(PL zJkI}`oji2qk)5*;5nTZ8B>okppe~6T*{K(K?o4F_?OZ7otRiA&XF2C=6UUlywH9zf z$Ie=fL7QT!H9H%1FJdQWKz6PNi*5<*>;WZnvFybEXLb(613GmQZN7!1zXxR3bgS(0 zdS%xgTK>);3+tVau|l%S&gVh%y7mh7KC7<9MM{<0zv_e9`8J4i>ExXsDdNv{>9O;h zDA{%Kc!$|#VaylM7rU?qcm0z7-$nn+uJggNlE&&BG82K?HDehk6n4!g-|CiKdcnc2 z1gF`Rt4oYsLgRKVZ$P2%QVTx;2JEWfEFdQWbOI@*i75)F=l`xjf$rk@(Ovr!AZJ&H zz7$Xird}3VyLKV|TrGm4kX?HLzKYCz>O4-~O<-ZFkX^TuF@p{JUEF^%M{yW^iF6n1 zpIt9%{-4NK_YAA?O#RmOS1R@Y0O~8C{!7D@<-5KmhdmV8ebP^|$MS3U1%BC`&>9|R z37Fj%Uxkt)I%4-sx9nE+tkHD4uhSx2M-{O!;MQ)T+ji^R$mKubaj2&@=gUZ>e( z-)1#?4~%omzKa@VUt^REofniL7WYHNei^DhrP1sjezQjUf9*B>uQt?5|7RZAbB*=uF|G5bn>OU|2Tcv+g^E(-o{oR(3^!M`2T0i^W(!U3l+CPMn>OTZA8UoaR z1B6>9TEk(m-{;nl_I^DV*#8jn+5b5BnUKhOPSe!?A2Z$|{qIoG$6EjU7)Wb?(QVxR zZ)|Sab22d_3(g`6ywm;2J=p(dPi#Ii zw+H>VXStS3rktJ`*`xBW+j6MnJvbE2p32Dj?NqDT(>pF`23&Ur%z*zkj|{x;Gka@W zykTF+?5)qOm%RZ5hmo^q|J^P#AU6V+n#cagp1bael0ElA<%8h-*lYIuci9{nm}ZG$ zhF}8%3FWGiJx|ulo_83?dtQJh)p~pWf@d0slL{@#?EgiUIeR{b+k3u5iR}5dQ~}s~ z95~G>0~hL~;FW>1DLe3s60$T5IT;WCzznkWu;;)m7(6gnp;-U3bmoUHmb8i2&EloPQqp8@w2J z)6Y2mNmCR1H1Llmn4ah3vDv+p+MD8(y_{)UZJ`TJ-iz;e??ud-QL=Y785||p8wdG& zuiyvg39#6i=%`R1*PNj@4gkddi0n-wQT55*bRZhwhYOzW<^8@ZfY7k-z4k~^jrr5w z(5bOb_BLY=@9hL+5bJVp57VdY-9hF3s3+|@OpS2TX)f9OM>5``m+dmR)FFdyb!KoK z%d5c~eP-~noRArOby2Mu{2`Yf+RFhUv-gF4NFckvd-eS1>7(+p14F`(q?|3!5D;4H@B;9RWp zL0$h2F49chn;uN2_XpFt3(yP}bMRx3x3306G;)w3B!kt|Mqof>X{5t!FaSS@7$m_O zwyCNHvIl++_8|j1q0@hEH=;SjSWwGmNbf&kCtrrHLPCeQ0&yr25{BXsh@r(SMAWbv z((|7~>6)IS>0Gr-=lW!*LX&LNraEHWsV!z`=j)BK{}!kDwdYl zOQV0;|dyLi$opop)=O58=^)iJ2Lx#RlLV5p4_Otvp`%h6- zi58RndjG}#3n;K3AGqw-Ma}*znFROG(q&T$9NW(Z{Qe|`NQhWjA+tXXRe-%wFZ)+& zI_JO4{<2ik=0M$k7wLYK*?#Y}BrSkr`$LG$74+%;4S*lk6b+TwkN-nB_YaSF|3LN+ zM`k}TT#s<<*Y&T3yR`Oy{g;3_c*c$vGqU1@TSmGZX5`aOzZ?$Ln4<-oJaY7zRylsm zF2}#|niGlT)pDcPCO2JBXKpH3Q!l^1uvvax%v$BZ87+1h9>M7H$ne`%IXL0udO0xD zX$}yVLQsJWhoWS7w_Aqy5}c0f;=sIqyBw$`GG?ty4iJ-gfE&&ZaH8RWM$sI=|04(R zikkz4(X>+sW;Wb7p!#nn32OTuXwWf7^!R}m&FWB*W7<2gt&@kG9N}wDt(F6~J7xGB zC_BGShA+pz<(1*<0%mw&9F*kQWLS^O9(c$q2R;Q2=Q+%QC)s2=@HP|0ffxAk3Uytk z*x!fe?{N4J z1QtOThVSqj`o5F;i{R9Ye7{OLokMi9cd3>n{z-;EMr)z5hW|~%kFaN$_ zDF{~_SGgU$uEiX@W6)&|O&V~@p~0XzbjTMlhrV2DlaVuPW#lT>+6R|-uTNw%m17wDn4DgZ?qCs_G^w2@} zzat)vnQ-&qE@b`SUU+u!06;UC4=dSSs{r?{I0*`ivbLhG%^-}1PMGon0_(VR)A;!TWydLIIrcP?b%v7qR z59tB7L#t_67VSP%3s61HN#kD(bLJsE4tHoRGIMA>95~biBM)s?{Z6TV@JyweR*jk_ z{kI-D^aoJB8PM}~ohU=^ll5bpf>zoa)%DVF-0ZFx`vG9>}K^(+zNV06%4uMqDTh$v|YUc1Vwuew+E#`0m zk31e;O^JHAcUbLf`~q^AxT3?l_R$5fM#HKHW)<(j9X>(i`;klCa%7`JjvNY@BOhK> zV@5A6Y%!w`v1LB`tY1dI^_ipb*VyD}E*9!x&ix+#JQ!}Z$`Q=iBkD0b{CGePv+6a6 zpY8>5H2UK3%X*pB;kPL8KElG5j@n&^RR;7F5tmUM{$>q)b4JM#R=VWc>h3fIl>Ld#m(Wl6zzl^M-nwVg$4PM97mQ8?S2yZx$UU-+tUZv|rBkHG9NDiUPZ@aR z2Aax7jyZC3=R`gqf>V!TXC8STB3_4~RSf1MPoOrAu>Qqb@yd}`Xsa5os~BNN{>~7e zIRWzi-C>o{v)wX!9s`QT&smN087_n-$B{222!j%xfzFRXW3A3eF=9K9e`-^mWj z(K9T3O-4-+{}M7sFTss>8H{3p9G&HqqpDSo&ZQQ;<|aW)CqpwCS(>5tubvE2+ONR* z%1hEmdAaN8UhI+m$nQ;7Ir@7o)WW%Q3hhRAkFMuOHw8J{XO3=P^gk0-ZKqXGeDrWO z6yR>TN-+a{D-v|{PS|ktJ~i2pU!4ZJDCwt7%|JzV&u79@EW{yws*2wV$ zw;Znt$?;~t9Pc~bDaS4jm}4E)E#}x^n_G_ET`$KzbjYzEeR6%OORg`7lIwX=;QIZ3 zx&FTY$JCq0=X`Yk|E_Ez2og)H)w)%s`YF08)l%lIs_v@R+G{ z-dnf3D`H<`2_fc+Ahy_I4}w@CNNgd&@A-=M`}qAKuJg^xz?csZFPsF?QN+ZRMx!hg{PR!vxcgQ$cR-)5=|OcG^X@30ETdTU|JAW!c=N_UJVLsIPYC;Nz5B?Bpe{f}lT zf&aUmj!lp}Rd@r)A2V9hBUpi_#{hXSsk|y=rjJp*399oh_)UMm7C#97A3^v==Lv$Y zJ@NFvXjV~jrq86A4yw0^o=jhcqSZ=B<|=6&`rLHZe>9`om#3#6Wh6P>Z0j*ILgBON z_%66U+?7znL-GCn968yVh}H z#zYuq2J63_@iDVCqqiFQ3iM`t&oIvTxfZ$K$!N<>-5Ikd!-X?ef$BQg89i?X>zbLN z^S^MxDNqLrITS*b0`q-JD^}WZdd&666g%S*cP7~mwdQ-UZ=A`*!kk%=WM)1Tm})b_ zCV5O|-*}UmoNh9IiZz+@QcUKuaFdyvW-@nTv&(!q#$-N2A2Q)DoB5PzB|Rz={g?Mz z(ro6CG2=~U6dEjp%^6bW2s)HW{7Z^?Y-YTclP4fq<^&X#%&#HwYj|j-*vwCfrj|K{ zT&cd=gJ;VAi!yC8e`A0$r!hd8vuMRAZ!vjYl(LF_<|9I2oxWra%-qJPNQ=zet3QXB zPMIapGV_##M`n4ge4?!E|C!Y!&8(w8{>YP=^}B))8=9GSg_)Uf&ddiWG*kTF0<1!6 ztHzs|k3fK#Pq3QJtbGlwMPP)P84+n_{zYMLoSk_%BHGRhdNR$<8ivGpDb~#L_{7+m z3A}ka^Lys<%&~x$r^rnFzh=G%_#yDg%+LO|C_}kHx(JqFX8we1n@Rt zImn)wO&OjMl-J!%`2hDoYn!=+oAfh_&^u=C09zeF&OE>m8QA;qyDY}cyb6zYPcbv4 z|2_?QX4Wt~v)GN8Spl@tmZfV}i+D2&SwBmAxmkBpXx6`6>2_9_76k+LvpRe1tRC%X zdR8}@9?F(v)^n}c%aZ>9@Chm~YY@L>Rhp&vOtah+lPl;f*?@Q{+|EjiK&hSeF|BQd z;N)PMpWP7tob~+#$TmNb=?B^-SO2$eu){r4dH!BbAXI6o@ zJVa>kRBL-#31=NAg@UKZsl}xn2y!Kw#rWGN?FO1++RXlja^ii-j@iHdBRi;-3C6SM zY36FhpS_G;%vMb6*=tE^sg7(VS@AzPbXI3)OaCV(k(qsrahqLEH);kby%K88uDUIz z!_6Fy80Iw7?3h!ZNjj&A6nine-bR>n?;t<7nbQf;ME<{H%^X3P^Em6`oF4rn%pAqP zp5s8dR{ZP7cyv+zU|QB~v^gVO33g6IR{`h#dxlSQ8rb+wgqinIl$qZ!)+}h0W*2ni zwc~~7j*#7RuOl($o`?iM1rlQz-7KfP#OvHEKv5K&xwrT;&rkB(6=UZG z>#$~CD5bi=Wb^K(=)8XcW#0dBRbU?Hycx7CEp=WO0BD;#ucr$#J`3l}<1vxjoYPA{ zUeTWsu4FSW9QK0(LCUpa%FKI@9~}@r^N1cYZxtg`>O02F`#r(T zo5hgLLq5%$j(qa+?`P!Vyv3@7|2H`EwO06TLQR;bz5h3A1N*O?x1YzP&AgIYMrJ_* z^f|d7Cfa$Ix*{9q*NHXrnfqOVBmH%LJrL`ShrxV~BIn1XnE9W(&3x|J%`YBf=AXo| zdH!S3X8sF&FtB$1lQ>?O`8}ZfeCdDl6}2m!F`fT1*v;1!69r0}uV6~^5wn`5^ELl#aX7{TOmqe_|E&I0sM-|-#{64MzyJo6lWL9W zg8EdDMPtDo(PqJe&~U*$D;aWZI1AcAT8x?*Z`4mW3tmez3&y(bf*l{Fm<5DX@XL3piXNaw^?ulY`Jn`7y7#WKt2?tTf5D|_C&;k zCKy;2-hF$6k!Tj)Po@4)dSRy*Xn>(K3%fF37WUBHriHkpEF3`fLEtqIT0cWO3typ1 z3s_{K8}m1D&NKSMf(ujP%)+tkM!7C&7QO{DE}Ya+ApXNt00O>WwF>6K@2TBJ75*f3 zDMDi*_7Aggt^h8A7CKO0xDv6laP5;Y&BAPz8)+6ERSSo}mf2_*p44(B zsoo2_?;`(&v1ZXNk6HX=l3ARQY!)xa@Vn@~RJ*7jSS*717k%$Bi&lr3MYe-kl#d3m zsJ*DP=t;7>vwLuxMSZ|k2Oo>1|LZk^PPDj)=WER(g>_$~Xbg+6nAk-`i9;P^kQb$N zq+$l*Z&A8(75`Cd?;?5Wwg>col=?NL_1wpzUr8bCt6B6HoYzi2=5i$4n$#?{n@zjY z%Csi7LS!%67H1Zn6@*=Cf1myoL!3p&RQeR9u~(Tz6-c~AR}h+us^Lgt^O(hfkU~yM zi-SJ|*4I#aF$NU7_+L-On#B*Z=ZQ)&iyzWvN#sm4i>3efg1Z+xX?F3bVXg?XxUVb5 zE`Cv)wZ-WFi{DhS*C{521^uW6%L#LTaqS&A%A_m*ZStQ$)-9ew&d&*U@vJs#`x{1i z@l;0nB^Yh-@APP~bRa37i|4D}66%RUi`SBc!?#(SFYGrn?O}4aS-cz0SbRX2!`Zbh zR{s~P|E=rAnkAu0X35v_cFE?i(`;7RB)3_5Z5=`l+=USFzc8%tVsO*2bI z`;9eAIz-te2|OUtRi}yMJe3KQL2k3;btnVlPEN5)o{Od}p55T_?FuFpfAw${?%aBnnEq(o1XC}zyC+uUZl{Hzutp}?^0}m z$1GW+Vp&RFDFcdZHshesk`4TrKqRX4@pegNn#X2!7#(Y}VDPL@!c11C+hom2H(7Zx zCaZ*{W(l${t9g{kx|gxb!vD!+)q{jtjRwPL#7hSU6KvT+!;fyaUo+?t5S_6W8dUs&Ag%h(f zSl+T^|8C7J%lhI4x{AFei|cDye+j~G6eRLxt(oja=0Mg$)mo~omHLy5c#$;8+6Y~< zwyGyP^|_asmsPA&04cm#Co%Z=VB3s^2+aJY!Lep3fdiJ_1-mTuLkunrlC@5oS|Pr) z1ZOVwwe(wvxbz3+*V5l_qtsRTvs7|E z;AClDn#ae^B(toe$1EEyfE$I{w!g?9>@(IZJs5A6=_1+EQjcABUkbBj>G?#n>|Vss z(rZ)3m}Pgt2FsubM@P%Bed0WxYL*3agS2IuUDiSii3^pLsKEGjvL3K35C-4_bc$tN zXm%v6E$g0+cDC$!Fc_%81^kN?f0HJbz4mG%l3aS!ShFk=)><}7tkpR(qb>J}mQAK@ z;yx_F84`_Fw0k`*cEqvn`T%1@Ku7%zIS4x&F(rj)nrGFHQ5=FHhWHV zw8=gaXS1)r##3O+L!O84#wi%=@@&Yv{J!ya`Jdl;%NiY9a1%6<4T>k6xq;+RkyF8O0eN=KGY_eST|AG7qVQam7!;eX3 zMI)A{<@;#l2!*R+%<>w@ohF@%Iww#Rm!ClzEk6%`Ex!bc+W)lXV}+FN6#>kw74=Di zlkJLTnyfEkZ(s3ns$KCMUNEfrE{Mo^8LA}hElvLcmH9Y(su!-{dR+lq;Nae!`Dd=$^#nJI* zMLG7S2LW@M)>{j~O2%cyRmKHfFN5Ik*?u~N=}uO5LsXMzz#^Obza|_1FGb9eLqaw- zfo$1-vt|E%15o{#I^)7j_6wB8$dS#-PqsQi@PCs%ghEo+vUUD*`-m~kX2*{OSOS1m zPrm=MRq5J%_6N`)`!fZ1N4jQXd&>TmR1J9xLHX++D74AF&TIm|W_u~L9?xx1;mA3o zFT;{uNS=H@dZ7(uAN*(YOyLudCA&Bu-muOc$`8_SJ?8QsU5PBu+z)H!@l>-=* zl|z06QUrZkIWn0Bu!66QCZ!MbM(16b%5+)zHif@u0bKc^LlTZp8RquNxf1<@eTqm= z#tZ;20444HR?ZsuwSj3={BoY>Erzfvx*12R{iEmu&X}(ly-jtXd9!L+RKm?4M?p{GV6h|7=z%IDUI1*s2rBX4O^DYMf+pIQ25C&eNHTE(j}j zN4A?)HB`va{Lf+j+nffH3GI~DOlh2++nm;hGzEOk!9AK86Kiswpnz2T92{*K3hDf$ z_C>_x^oPhfgJdhysaekJ*eB&QGDIKje{4>Y51%?<%VGU9IhwrEm~%cvO67b8@pE+l zKZp5ma>PVWaIls$W30(p>WZ^Db5T-F&LWzWOG3^{)y$=otT#Cu^|e)hWdF+9i#m~0 z+=|?G+{Mp1sXu3xTLIhWT#q%YQGGK)Y9*do9Y9xn>UzxT_GxyF?sTvDKGLq)@^-Ar ztv|u!{(FqcjpC82)!p1?&3$9dnuj9Inh_9Vwc|Fc5256&?msoctj=HtbMUnqGuLW& znpv%oKQWMMwY=xTX?S%iIq9ShQL6Ocrv&9wk6pdGCsbPf1&(^Fe|Rg!to{RJSN{)Y zeg*U9>Ny;=tj=N~SiO)g$uPb;n;#?L<<zG|Lo(nT;G$gtLwuXa1yQYbxKo{VzX^Dhhb1z?y0bq@M05wW$ z^#0KrU4B^e6n$9Jla|-?<7LA&gOo9VmN9DBHLpq-wq%&rgoDHyg7ld+vj49cEg)mn z)Z0>)JAy^qbhGATB`f~bny(>`%N1kS{5;V&!K|4{OF7ibgFI{I!HH`YyW;Gc6&@-N zrLtRbn?PhE#0+80SaSr~L!E0BzafWx@=o(D+owWkuDSfTWs7FIBkOa0z&p1t)M^Dw z<~GL9C%0vEjLGeef|SeoNAAPqKS>k09E|F6pvhIJtta@`Mjr-R7n@8j(m!{-+LaAh#ukl5?q-$VPB~pR%EkX{Z7YF0N#UD_ z+T03OvfRt$OJB{sPP6pguJ!B27JO}EiZ>N&-FBZ?tN5RfBB|H5OEYUZwl{14j|SJu zcD442htW3H_DL{nxqP>lV^Zxy-&D3NFKdya-2CRp2w?PM_}4};o@?XV(aE)As6p(b zS{u#UcPLkGQu@q*f{Jh2Ar^_b@x{10HK1k@3WK0I-gub-T#wF)RBF8bco#$oAEr{vc=v zBHrvUM4$BE&b5t(8yll47;B78;T;;;S?yb@lA$UesLH2QQG{CijWVY)g!XqRu}*kQ zr=xaGU&hHUr#!y@Z9!wGaMJl#2VuTR=MKG9m;JxB`*l2}``Gs67~>6uo9tO;ovrMl zK2>{+*N^JnI#kEDK$laEw;{E?y5iDCJd$L*_qdX+w`~_7-IfygENcFHpJ2n_Y8GL< z1jE~ymS{IsPKvbKR!s{xh1_S|-tXt}wrJ|qcvEyO&F=3$G1?xC`!?1bVyk}WhXi}5 z#FK1_>rF7lkuez&QKp#S{>6pq=5RB&Jv?LxPLXc^IP0CWHqC5!D#mQciZvTfMVO8C zxl`o5KE~vA@t8bDJa1^a$sk9sy zCQtsUdAfa?hY=M$HreKNm-d?gxhAF9ynfst&fo$-o)}2VUmj+S&@9h0C~cONW5>^rlLJ27e+5Z1Sxu_Op${h2U ze1)`FcZx-0-MLZdl}1 z^})zTy1BkZtXYrmFI$;JvtH-F%zd-IJ!8JU)9YZcUf!*>Y2Eqp6bP^H119SSkVU>- zKSYla;EX*4QL&z-!>*6k=&7gclLc!G@^uKkTK^8cTK}Hv)ZYJ;$5IbCa{Z5Bht<=r z|Lrl7BzxD-6rA}FAnWPa`jvpnQ*v%Cekpc+K`lif`1+j?bNya{N8s4?#~xONGPO^6 z*}vPetgXL+U}+59Hi&yS)CG|Z4QNa1@P=mK$NeU=;T{#Z4`;d!51=Y+P=M48j{P}}1KR!|E43OjE23-Pgmt?-706w<0v+j6$Rt`S(h z2(h7H45Yyqc|#FB*-xQ2lyz8tjx(4&RJvS$DzRW}xJl%Fx7jGE?x6=8>!QuHqM40N zW6Z`Eq0h!vq-y$YY=dOn7^XtH*uC))rQ!c;Ha_L@*p0pV07BaSM!kR4T|dM(8x_fF z;|QkE#s~$<*%&7!fh2s!GTPVm*p1(_%`NB|XA3^#XtChn5CYy78#ra%k*#!Jw7SwUGIcxoC>zVA+kRgU>(UA?w4c>&OZ}tH#NZmvWdO_ zCb^3gTtW{hsMY`R4%nobys0iE+0;;^&}E5DEfdWqZpY~G#B91xdF{oPQUrSOuLWz# zCWpEhnm2vc8Cq}R{LgNBF&-WyJTIpxn_gwdwdoCpep56si!k1F1OW1Q-gH7;JX6~N=+q$2Zf-v<(r#(_-$b)DG}>-`eZ1Rj z{cN<^niFfcmUd3H+q%3t%53|$$8H-kBF$`z8gI5O#<>1-HqWRlrD)s<{EM?%2Oqmu9*-HhVD`7>&NizgLw zU=p8`!Ep0OAlE~+zofPf(scP`^Dp#e^PlaY!R9#>(y`Cxg%r5Gj;7enHeDf}YR~XD z7XU&Qr6`7Y^ByMXX5wGj%_Z$>`wfO=0(pVeQ%*~puj$WCmYglV6wnOb(tv^7(gcaK zr8!9id$C)(zn^ZlyyP)k-Xfnfh%HOP%$C#R?UwRq63murTG?V$^*K=6@&b6b0og6D zk`gUAZ>T^73;A0}zAf=Ixdmgj-I6Zbx_U8!g=fph)cwQ9W4C-wZ2K)g++I9n|J@?{ zZwDW@-7=>OUkj+z4tsw)^!hD!7%4?ywjZABOEX)+YzMmaQl!F0bOPy=upUAF}@^ur_QR1W~uj?$H7}%vSCza5%h`02^B;sXXyNG9p=gS_Wd(t%c53k&;81(7kLP|>Xm(f>^$yW)(F0po4qyT4QZ zFs05-W|wq5$!u>k#%zCts56CM0_58mQ@DW=MSvK^pcnoEggi#I@J~&mLdCx=Tu8Io zf-nDvSV&ZenL#H3X|Oi9asSa2?w}i-+?&D!%sW|%3XekpUgsSQ(;zD_#}{6qRvW}Y zA;AOe_Ig8N&GtK)E{45ZGu)#?$QB!HzlV072k7=NX6^P4;!>@H+j;-cY<~(q-`>;Z zw%hyEE*!)S{RC*=W<;AE^}_8AXH25q*$;(i=YkZot6QAi{rcE=v-`&gv-{6TyL(G` ztl51u%@jd`qP_{H=!Ga-l!7Z$(Fcs{_61R9`;y2EhlUQP+U-|6fljry2IDi{Vg1;i z<2Kv33pERowr_}_quaO8^`1<@?M3>MYrIbFwjXCSwqyS{+qD{O=l&b(O&V@E9Ej(Zdd5XZtDoU-lc5@vSD%(CM#h=O#3J8n~I1nzu0 zhEaQStl4>AnAyo0PiOzpW=BGb-7%J<(H(P%w-Il5tZB`B*pUK9jOVWCj`wk;-Z3@B z?D!dK?$G_W9aCJ%cE`6516UNru~BXTJJ5v9j+wQsQJ?*f-LX8889SIT+Sm(sZ0K?u z5w=cd$99ObV?VXdsj*2p{hp59G;^a;NM+f5(d5`6)15g01+cJEub6R~X8jzk~Zu z{GaU3Ij~+vC+@ZGTs>~I*;PNm>}tvx!0S*Po~g_GdkQ_GP~}i1H0})Q11%k>tT3e z*Fz{FLz#8Ep3w63FtS7uNp~$yGP~=$&F=f*gI(@Kvnwvu?BWb^*Jnv~7miU>h)$=1 z?){Dw)HJ~#uk?2ZF(C;BxJ&E5^y6J$!lt{pBVl*_`ZDmRGt7Nu)&Z>iKQ%L-Cp`bI zbz>9luHrcC%K)r_uJQ3^7i8GAU%-o?-lP13T4vW7 z!tSmsL%AN7+T9GTW%s|p3RA{zrS`%s^#BU%?vBxB_dp+Jao4_M%65QTIbr|9ljQ*=QzVq5PLbAs9fs+ox2TMHRdhjrE<@E;umL{1|y$(sdmp-?9GI$#$;zdiH*QF>~b4eLjm-IF&KaEBQ7SgLUT zxo4lS*bNr4ieosidyXj@P!!qc$*xlNC9;Q+JqU{LRn*hH0f?u)4RC?T=z(szx7DZ= zvzHq;nw>-v*n2-2ay#Cu@HcxOgUN@o1KP`5w|fUsTfr{(KJSXNdk4hSmL%^L?hWq6 z5@hyD{_R!&hX{f;LVK})*u8J{Bn{zb_kI$cYWDuB2}SX*ROfruk^d`G)b5=&f*v>| zAN4ohe|3Ay}viFp_S*|~owP5*C z4U~O#koHLobRf;{Ye?1rp1Iz~sVT-;m&Ni#TPvV}j-d9frvLl$|K_!&@<&)$C7VOq0>?sv!715K_Op#>xJvW24OeInieSL8AX9nElto%zhGp zG5WGh9vt~NH6lpyp_Z^yQ2o!N&B6Dmw=ddzP zNYaR{4@&<%c#+{aSfxKVXr#Swygk%7HO(G+J86PB^qqf_In88EX|bqn6nI;lKuaX?EkM&42M1iMYMii5$sSoa@_@8)!>zfXcKZWm9wT>oEjo8peBia7h5;x0_B;-`@~k5i$y zQgr^I`*6j>*ccYS2E-^ZD1H+RIi;`}$G7ZLP} zOI{skic2YXDcl?mpk_P4CjPZ4mi@Sh&y8m*xiNpZszV>iy z6KM}WIRvqL_@P*H7zc8d97aQj<^S7-Vd%g#B1`>0j6!G*|8xHbu$@R7L4_8O|8NwY zKFs-dMw@17=J4hudt~ouw>>doaHK7*>Oan&%$qjep6c~miaAv_#+>P!XwLqUYR)~I zZqLo06mQNGyXV5^v8Ey{+E#r1>R40xuL-8IQ@E+@m24|3`$n0I1kAX2uYZg^T#}V$ zjx=|hBcDc?BTL7aBkP3SNeF(pJOhS1%+co&zf^l9FpjPqsY6%Bf~MROjwt^95jjru zLdqPuH{Kk1$(3M_+^?&8kyImE))8F5kLa|2IAD)pZ#G99C^lTMUH}%R0efWlCls1Q zC3fADQp}N9G7~5@P<2w67Dv(BMk3L;kNgJkIX-kH zQ?fjsO=p@tvWP`0gP4o<$f~viw-#IoH)f6~{?CzZLTHy%_TV^s^p1IH_E@)%66~>) z6H@K*hkH*j$6tvz$0sM+<6lNZo8!gd_C$T8Q;?1kt~yG+NSFt3?O$OXU9`-YsbZT}#4fwggq) zmONT}l*O$3h(eqe+LGSd)}r>8pnjLg3$8@|f3?~L+pm&1DvdFzreu;U+LrLvq0Wq< zA=lxw%^?tA?NVIwDWhBRrIwIa=vK)O`tv`8d&!^hL<#oa64`%CWdC&wRUGc5Q;PT8 zrep&HU$R9A?i@zi0NARiqqTh1!_BdK==QPum=Nvs;~^S4hC8k~hVqrsx^AjHHf$0>j$_QRPk}WBSiezh z1{DcGXO6v2`^Vg>6vg-)i|0~b#$Y%lO)XEP^oMGBGA*}fAhd(>u-YA)>aoXu)>4b| z$WqE(FFenn#<4j*(e~KVA*tqAA&{PnHpf;g*~`xD*k)XdYpqb!c~HpiQ@h2?wPVLP zTjAkebL?WQIUXi83bd+m=m&_~ZI0_8_&EKy$Ajfc!UR9w(qoR_r)0%H{YOtc{tzE; zGD^pv7zeoHCN<+l$_}9Uc~?Q@TF5@e2lj@*yrk%!~IQEfZd4Z_Uv{S4&sX-I?P^OSP+gcri*Zx zIlhX19$)LCq4k4697+M2{k%C|M3I4_1e890l4-47{_%1>x2BXT(F#;<)b@_)U$;Mn zT?A@C2RYFa5pWOjsu&ZwG@S@bG$;O#{3lcznsp?<3+#5{X;@cQ#1kxuXgJztQdH+3 zI$=1$qHIsN|9*$^1o!_>;Pz!sq>zuXfXzA$e=;)7mWF^C*=QkqQVttPh6EkA`h2RSp-V`nIon3Z)-{P55_Kibmtz00rG1`57cTubFuQ?Zsm4DR3TXTyv;2D* z!Bm<8Ku!T{>A3!?F_Cmm>u?tViBAQS{Xa1Hno6fif1y*Qe?VOMz?aU6=U}1~-yb~B zOE*TD(jBzH_3_em(k^AME!|4X!&Gw*qP6tUQ1(@&rKHRDCwpG0>_4Tl|Fl4zKUp8! z`bl>ECx3e*&YaA`5PS0OaC5SCv^i8fi|4 zcOR>o#Z5B$|9v{foc;+aoc;#&MeCZ5TTcI`D$@jbwoV_~3GfnHo~X0-U%Y75FX%im1!{!hzAwp#|^s2sn|~y%aI(XFDCP;jmYU5V4p!UVoE~kY)I^H zr0SUv2!7^{H0r(x?#Kr(#W6O^P|&IntbcCCZ$QpJ2|u&k@|2w}%4YJ)g9UZ?t)dHD`1Y_RN1= zW6hbb_4!}H{#k#1XRyyqXL_BPt)`HYXL7!XFlDXMOxYlRl36H5Q{*J=2GAU8j5$-p zq+)!}6sz(v>Wx>ui*bn=T@>?!rmB>410E{Vs@aCGGVXtvvc`P9Mu9TvKfEb!%O1pM zy{sF4$n2?!mmHB|%bw8iJj_fgbEv1-?}RroWdr^;#IQ5K&`~y$ybMkP%VPNPHd3NY z@!!f)U!q%O-M)-tnfxEiKIQ9a)|;~bMw+q(P@?Q-dR_KA{V9{HT-ltDD8W)= z%Cb;Y%2sNK-lQF`(A@wMI(shLCHx`%KEb5_w(NK!^@i)ST$L-CC1q7_k~R=T&Z1bG zvjM29XB)ZA*-)hMaCqbF9khK`hOM)0Aj{b>{gEm6toWH_+nnvDFU7w*+gruh|Jkzx z2I?mlT#&+KjL;YMKYKPtixANt%-PWbtcCFGTg=(B8MWXj`w0l1ox=KlmiRaJ><_Ye zxf({=v%98vZ28k4k1^%r6HWQY<1^e*rknukmB-lNoW00ObQbe#c^x{7wFd*nZ8!Duh7eJq49j)@ zrTi{reYs>!`TcaE{Qsn=YYw)j_vKybV;w}_yAWO) z&z8!RkD}w{NepE97^!-&oh^U&L*=~B=O~yair*N;%Kyg*mH#O14~b&R|3oOag_7lS zV1;t*|F(RYmL>&PEYHQwqX`g>8!JO}%ZqD~- zpwAU?Rf)_Jz+4rw2XHwWt0yB;?71=mlJ{o5V9h>v5#ZhVH<$?>pOV2_t>^1T@a^_V zHs_nBne%O+^Z7f$4Izk zt-nK8bwEnHTKRQa=-3kOq8#T`tx3neeAqvwHnF~L;$fsY<9xWN3cknMvr zRQN^C)9jaUYib-dKbx9!UbITxcuskE`ed$Ec10N*e7~ z3`mM(XG?0bsTc-km|ESY!VTRkq8J$veZ`W z0V(-_RUD_rDL!6cB2`@Ydx7G*Ah)-Gb-HP_31Hd zib(CK z2ya}Z+vZ~6|7#axS~Gfi@vhnx2u8gqJJUsN(Oo#pUCfvrZ!RUI*(+@^*IjKIXR7{; zv{ifllW4EKhzPviKEl*wxy=pl1begNxNv*(jn`An&Ev`D*1B}3PWuF>&Wj$W&fF-c z&cU&c>%qFw=Hf3&=HjXtbFnDVTi|kP@5-2F+lT>qY9`l_g z!(Lo2sm(nTd(rk#9|#qBaR-J=kQ@mQ^~c5e;&E~>ay$9rRru}VX{dJbylf-d`?ZB6 z7i*X(mjWW~rS@|6y@dVKTx!gmxzt=-aEbe$<`Vj!xpcpVp!Odrk1B=zFQiW}mwKXU zVKKPG`fe`q{waLQ*HEb0LNMh^aw$>;W8oeb68zFfvt!NWpJ64pxqLLvUb%a4w7Jqc zkaBE(zwnsL^}@_$UO%|pDau@aDal-pq~H`fbZH4lVQsr~ovvKU)}sTdeC5+jiJI9& zH!l@Jol8aC8RG}T%%x(`M4vU6PVxh-#a^oTnBB#tD}3^-i@9`*?q2qPgHJ_p8=Yn^ zhYSF&0gZb=vkmmr!go2WwnI1%F>5dDOzg74IA50i>vC`D*%<0BD>#TYPM78QeVKC^YS~iF&VJfo6O~Z-akS0y8Ml5Pla61U_QG%leV@2 z6NgrFc^>lO@?tf=998o2Y8|v+&Q~9Sv8i_709L!;fEQHq5D0NW&0IbcZm#Hr^YVFN zeMtbW3Bav4XzPj}6M!Ceww-RrpI0>Phux0osWp#NHsadA!dGI+Sc8bX!jq>6F`E1!(O&ta z16e<&+AGt$f>O)`EjWk#LrP{0RxMXt`SJtclK>`peRrdC)$u5t*I`(lgbSilDT~&IYCGqMf5c(CB_!@kN zfa=v>$(qZkU;PUXzB&^!^c5`mKV4leWmIyql>n?`RIe7u%!ldb>e3?!=0QESB2g-jaA)22__8t|0Gj&KV+)X zZoG;hFSe?)v>$noR$>1zRSuZ9WA-4UbR(k*SFoy7<-QJ2Rk23es%RIZTa_d!BKT>h zY8-v4npoS37+dv`*2SvN`BYTxs_#_sM}hbifvs39Rdew@u3Cqd_fV@GTeVZiN_{B#R-~yq<+0a-UXL}`bk@6Ixs#&KS(#%zEL&qzuIe)Kc=mhP|2=+ zt{^H%2>I+?WB!|Kzd$V_(wb}2k+Nw(n5R_PKN0X57}l@l4JUO234;Z23z$C1X8qd! z1as{ogLdsOOmuwlbQUlF`=)2E-~DP?q2^+MSgT8o9n;A zCfEOBZ-mIXz5opKVWjITKp}_1(JCkXPkYSkn^m8aA#2a`g;91B)MLm zYO4KIzEVwB;gOWlKHgN

-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

kMt<#zp2~ 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 z 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 z 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 z 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