mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/system", "/system");
mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/userdata", "/data");
assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "OPPO/OPPO_12025/X909:4.2.2/JDQ39/1357823013:user/release-keys" ||
       file_getprop("/system/build.prop", "ro.build.fingerprint") == "OPPO/OPPO_12025/X909:4.2.2/JDQ39/1357823013:user/release-keys");
assert(getprop("ro.product.device") == "X909" ||
       getprop("ro.build.product") == "X909" ||
       getprop("ro.product.device") == "find5" ||
       getprop("ro.build.product") == "find5" ||
       getprop("ro.product.device") == "FIND5" ||
       getprop("ro.build.product") == "FIND5");
ui_print("Verifying current system...");
show_progress(0.100000, 0);
assert(apply_patch_check("/system/app/CalendarProvider.apk", "8f431a968377b52f8ac731873665d5f563d47bd2", "a5c5659fe93427899d6affbc42b37a0bd77691ed"));
set_progress(0.007648);
assert(apply_patch_check("/system/app/ContactsProvider.apk", "9982ea4292168a98b66b08abcedbab34bd1cb9d4", "4290ca9b01033966516865b8632efe1cf906462f"));
set_progress(0.018346);
assert(apply_patch_check("/system/app/DownloadProvider.apk", "abc5e8fae2c019b93d6915b3a853a8da7d4b2493", "42621501729e930bd8cfeb686e4815692fa38739"));
set_progress(0.024900);
assert(apply_patch_check("/system/app/DownloadProviderUi.apk", "1640c3611e11047a37e86d3da03c74695174bffa", "f5581ae05f7b9ce73242ae3e626e49cef970ddac"));
set_progress(0.027978);
assert(apply_patch_check("/system/app/FusedLocation.apk", "8a5b69da6f404d1d4b8a75b48e83110660871bdb", "21c47f7dc0d66e1d1da38c34d65b7ecd55fc7e87"));
set_progress(0.028075);
assert(apply_patch_check("/system/app/LatinIME.apk", "8ff0acb2e7f7359cb391ba41848b6c50b555f99e", "4aa3de6064182aaed79c635e26b589d5170c077c"));
set_progress(0.145137);
assert(apply_patch_check("/system/app/LocationProvider.apk", "8729cb5870a1b9a08c5513c2270774435f357d4f", "b00cb3271ef9a7cb00d4a8082da14f9af4d47da6"));
set_progress(0.169976);
assert(apply_patch_check("/system/app/MediaProvider.apk", "70e7d4aa5a5441cc557ddc8acd005a4d6851a87e", "e5b2178c51486d06bceb2bfbc1202712567de49f"));
set_progress(0.171179);
assert(apply_patch_check("/system/app/MmsFavoriteProvider.apk", "e37dd95908b1dbd4709bab966607d000d38eb05d", "bf179ea40729fd798d3cf37cbb9375478228bb8a"));
set_progress(0.172276);
assert(apply_patch_check("/system/app/PIM.apk", "5ff7f45591cabfed7afc4b88c22ab7c2e9b9437c", "aa02d0b9db0d37a33f93db746a47752e6b47a5cd"));
set_progress(0.321076);
assert(apply_patch_check("/system/app/Phone.apk", "85bf02669c46fdc1252c255903e89aafda9f358d", "5fc06fe7cf9f37d4f2d368930379d9c2fc76c226"));
set_progress(0.357622);
assert(apply_patch_check("/system/app/Provision.apk", "feb299bcf94f103f3e801d3a16e8e2d7b33d16ce", "6d92c090f1d5e48892c3447cf8cc54a3d349e2c6"));
set_progress(0.357661);
assert(apply_patch_check("/system/app/Settings.apk", "95df8269081c09b55829a6eda0241a54a43b1645", "1b00375084ec50e02ef25cdca959af1295b2c75d"));
set_progress(0.459726);
assert(apply_patch_check("/system/app/SettingsProvider.apk", "e34b55f8703ff6f0883def8f0f8418b2c3508975", "6d35ecabffeb61fb39a7a866e4543c6f72bbb1c8"));
set_progress(0.460406);
assert(apply_patch_check("/system/app/SystemUI.apk", "6fa2f98ada8cc0ae9bb7142814416ffd674f87ec", "2b9a8a49ce79b813032d083ddd5888907a5bb24b"));
set_progress(0.505429);
assert(apply_patch_check("/system/app/TelephonyProvider.apk", "e1395293cf2af39cd9836cb058749b4c8784845e", "d25653b49517f5ad52e8a6e077922e4cc6b1a7be"));
set_progress(0.507113);
assert(apply_patch_check("/system/framework/android.policy.jar", "e1c14bec4a534ed9dc13192088e5015f57d7bd7d", "64189c9382b01d2fa32902e2a7ae5f24d7d0b4cc"));
set_progress(0.510798);
assert(apply_patch_check("/system/framework/framework-res.apk", "f430e6bdeee8fc1225eeb7f10d12f5cb75f6f898", "cb2c1ddf5b2992d815930147d4551ad771f7260f"));
set_progress(0.705053);
assert(apply_patch_check("/system/framework/framework.jar", "d849b9af6a8b7ea111d74c131f1ce67067390ab6", "e44a4823c270b115be45ca18c2ee83355a95f059"));
set_progress(0.752167);
assert(apply_patch_check("/system/framework/lewa-framework.jar", "677c6737e07f90952170760eb0dac050192e957e", "61b5115005475c64588ba157d1f2eec4e3e75376"));
set_progress(0.758878);
assert(apply_patch_check("/system/framework/lewa-res.apk", "ddd7da78299b9dd5d015f8f9ec4d179961f66d06", "9f721ac62223d755cdb6ec9a7ccd2ec440acfe14"));
set_progress(0.972663);
assert(apply_patch_check("/system/framework/secondary-framework.jar", "3e0117787c9fc4c4bcbf8dca2aa1e99ea5ccaa6d", "14d169697f6d3c92e6d0edb3bf13c4a8dd4152fd"));
set_progress(0.980357);
assert(apply_patch_check("/system/framework/services.jar", "59bf9346d5baaeb654ad99aa710b7a509e68d14e", "59417da1a433c7fed6f37f5546f3fc2583375f24"));
set_progress(0.993496);
assert(apply_patch_check("/system/framework/telephony-common.jar", "4844fa1da431eba7123b6c527dc7827aaedb01c9", "e23b1623e8e693f5bb4b9331b8af30446d80a199"));
set_progress(1.000000);
assert(apply_patch_space(20432444));

# ---- start making changes here ----

ui_print("Removing unneeded files...");
delete("/system/build.prop", "/system/app/EngineeringMode.apk",
       "/system/app/LocationEM.apk", "/system/app/StockSettings.apk",
       "/system/app/UCService-release-V2.4-rom4.2.apk",
       "/system/app/UserCenter-release-V2.4-rom4.2.apk",
       "/system/app/com.qualcomm.location.apk",
       "/system/recovery.img");
show_progress(0.800000, 0);
ui_print("Patching system files...");
apply_patch("/system/app/CalendarProvider.apk", "-",
            8f431a968377b52f8ac731873665d5f563d47bd2, 730949,
            a5c5659fe93427899d6affbc42b37a0bd77691ed, package_extract_file("patch/system/app/CalendarProvider.apk.p"));
set_progress(0.007848);
apply_patch("/system/app/ContactsProvider.apk", "-",
            9982ea4292168a98b66b08abcedbab34bd1cb9d4, 1022470,
            4290ca9b01033966516865b8632efe1cf906462f, package_extract_file("patch/system/app/ContactsProvider.apk.p"));
set_progress(0.018826);
apply_patch("/system/app/DownloadProvider.apk", "-",
            abc5e8fae2c019b93d6915b3a853a8da7d4b2493, 626363,
            42621501729e930bd8cfeb686e4815692fa38739, package_extract_file("patch/system/app/DownloadProvider.apk.p"));
set_progress(0.025551);
apply_patch("/system/app/DownloadProviderUi.apk", "-",
            1640c3611e11047a37e86d3da03c74695174bffa, 294857,
            f5581ae05f7b9ce73242ae3e626e49cef970ddac, package_extract_file("patch/system/app/DownloadProviderUi.apk.p"));
set_progress(0.028717);
apply_patch("/system/app/FusedLocation.apk", "-",
            8a5b69da6f404d1d4b8a75b48e83110660871bdb, 9247,
            21c47f7dc0d66e1d1da38c34d65b7ecd55fc7e87, package_extract_file("patch/system/app/FusedLocation.apk.p"));
set_progress(0.028817);
apply_patch("/system/app/LatinIME.apk", "-",
            8ff0acb2e7f7359cb391ba41848b6c50b555f99e, 11188247,
            4aa3de6064182aaed79c635e26b589d5170c077c, package_extract_file("patch/system/app/LatinIME.apk.p"));
set_progress(0.148944);
apply_patch("/system/app/LocationProvider.apk", "-",
            8729cb5870a1b9a08c5513c2270774435f357d4f, 2374003,
            b00cb3271ef9a7cb00d4a8082da14f9af4d47da6, package_extract_file("patch/system/app/LocationProvider.apk.p"));
set_progress(0.174433);
apply_patch("/system/app/MediaProvider.apk", "-",
            70e7d4aa5a5441cc557ddc8acd005a4d6851a87e, 114950,
            e5b2178c51486d06bceb2bfbc1202712567de49f, package_extract_file("patch/system/app/MediaProvider.apk.p"));
set_progress(0.175667);
apply_patch("/system/app/MmsFavoriteProvider.apk", "-",
            e37dd95908b1dbd4709bab966607d000d38eb05d, 104775,
            bf179ea40729fd798d3cf37cbb9375478228bb8a, package_extract_file("patch/system/app/MmsFavoriteProvider.apk.p"));
set_progress(0.176792);
apply_patch("/system/app/PIM.apk", "-",
            5ff7f45591cabfed7afc4b88c22ab7c2e9b9437c, 14221654,
            aa02d0b9db0d37a33f93db746a47752e6b47a5cd, package_extract_file("patch/system/app/PIM.apk.p"));
set_progress(0.329489);
apply_patch("/system/app/Phone.apk", "-",
            85bf02669c46fdc1252c255903e89aafda9f358d, 3492968,
            5fc06fe7cf9f37d4f2d368930379d9c2fc76c226, package_extract_file("patch/system/app/Phone.apk.p"));
set_progress(0.366993);
apply_patch("/system/app/Provision.apk", "-",
            feb299bcf94f103f3e801d3a16e8e2d7b33d16ce, 3650,
            6d92c090f1d5e48892c3447cf8cc54a3d349e2c6, package_extract_file("patch/system/app/Provision.apk.p"));
set_progress(0.367032);
apply_patch("/system/app/Settings.apk", "-",
            95df8269081c09b55829a6eda0241a54a43b1645, 7315666,
            1b00375084ec50e02ef25cdca959af1295b2c75d, package_extract_file("patch/system/app/Settings.apk.p"));
set_progress(0.445579);
apply_patch("/system/app/SettingsProvider.apk", "-",
            e34b55f8703ff6f0883def8f0f8418b2c3508975, 64983,
            6d35ecabffeb61fb39a7a866e4543c6f72bbb1c8, package_extract_file("patch/system/app/SettingsProvider.apk.p"));
set_progress(0.446277);
apply_patch("/system/app/SystemUI.apk", "-",
            6fa2f98ada8cc0ae9bb7142814416ffd674f87ec, 4303123,
            2b9a8a49ce79b813032d083ddd5888907a5bb24b, package_extract_file("patch/system/app/SystemUI.apk.p"));
set_progress(0.492479);
apply_patch("/system/app/TelephonyProvider.apk", "-",
            e1395293cf2af39cd9836cb058749b4c8784845e, 160966,
            d25653b49517f5ad52e8a6e077922e4cc6b1a7be, package_extract_file("patch/system/app/TelephonyProvider.apk.p"));
set_progress(0.494208);
apply_patch("/system/framework/android.policy.jar", "-",
            e1c14bec4a534ed9dc13192088e5015f57d7bd7d, 352142,
            64189c9382b01d2fa32902e2a7ae5f24d7d0b4cc, package_extract_file("patch/system/framework/android.policy.jar.p"));
set_progress(0.497989);
apply_patch("/system/framework/framework-res.apk", "-",
            f430e6bdeee8fc1225eeb7f10d12f5cb75f6f898, 18565983,
            cb2c1ddf5b2992d815930147d4551ad771f7260f, package_extract_file("patch/system/framework/framework-res.apk.p"));
set_progress(0.697330);
apply_patch("/system/framework/framework.jar", "-",
            d849b9af6a8b7ea111d74c131f1ce67067390ab6, 4502916,
            e44a4823c270b115be45ca18c2ee83355a95f059, package_extract_file("patch/system/framework/framework.jar.p"));
set_progress(0.745677);
apply_patch("/system/framework/lewa-framework.jar", "-",
            677c6737e07f90952170760eb0dac050192e957e, 641614,
            61b5115005475c64588ba157d1f2eec4e3e75376, package_extract_file("patch/system/framework/lewa-framework.jar.p"));
set_progress(0.752566);
apply_patch("/system/framework/lewa-res.apk", "-",
            ddd7da78299b9dd5d015f8f9ec4d179961f66d06, 20432432,
            9f721ac62223d755cdb6ec9a7ccd2ec440acfe14, package_extract_file("patch/system/framework/lewa-res.apk.p"));
set_progress(0.971947);
apply_patch("/system/framework/secondary-framework.jar", "-",
            3e0117787c9fc4c4bcbf8dca2aa1e99ea5ccaa6d, 735343,
            14d169697f6d3c92e6d0edb3bf13c4a8dd4152fd, package_extract_file("patch/system/framework/secondary-framework.jar.p"));
set_progress(0.979843);
apply_patch("/system/framework/services.jar", "-",
            59bf9346d5baaeb654ad99aa710b7a509e68d14e, 1255772,
            59417da1a433c7fed6f37f5546f3fc2583375f24, package_extract_file("patch/system/framework/services.jar.p"));
set_progress(0.993326);
apply_patch("/system/framework/telephony-common.jar", "-",
            4844fa1da431eba7123b6c527dc7827aaedb01c9, 621630,
            e23b1623e8e693f5bb4b9331b8af30446d80a199, package_extract_file("patch/system/framework/telephony-common.jar.p"));
set_progress(1.000000);
show_progress(0.100000, 10);
ui_print("Unpacking new files...");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");
ui_print("Symlinks and permissions...");
set_perm_recursive(1000, 1000, 0755, 0644, "/data/preinstall_apps");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 1000, 04750, "/system/bin/diag_mdlog");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm(0, 0, 06755, "/system/bin/su0");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 0, 06755, "/system/xbin/busybox");
set_perm(0, 0, 0755, "/system/xbin/mdm-notify");
set_perm(0, 0, 06755, "/system/xbin/su");
ui_print("Patching remaining system files...");
set_perm(0, 0, 0644, "/system/build.prop");
unmount("/data");
unmount("/system");
