mount("ext4", "EMMC", "/dev/block/mmcblk0p5", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p7", "/data");
assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "Lenovo/P780/P780:4.2.1/JOP40D/P780_S129_130710:user/release-keys" ||
       file_getprop("/system/build.prop", "ro.build.fingerprint") == "Lenovo/P780/P780:4.2.1/JOP40D/P780_S129_130710:user/release-keys");
assert(getprop("ro.product.device") == "P780" ||
       getprop("ro.build.product") == "P780" || getprop("ro.product.device") == "p780" || getprop("ro.build.product") == "p780" || getprop("ro.product.device") == "P780" || getprop("ro.build.product") == "P780");
ui_print("Verifying current system...");
show_progress(0.100000, 0);
assert(apply_patch_check("/system/app/AirkanPhoneService.apk", "c920855706ccce073892209bf3b5cf01fabf5b4b", "77dffaf3a31ed05407a9d5fd0df7dac19f5bbf57"));
set_progress(0.003317);
assert(apply_patch_check("/system/app/AntiSpam.apk", "3f6c7d238a7f98efbf674130cf29968cc8513332", "446572bb0d9c43fe24bc325d97bdd790a16ebce4"));
set_progress(0.004443);
assert(apply_patch_check("/system/app/Browser.apk", "8bfcb5634b9320b7652ab6bc7c5d83f7d2bee58b", "5e8279ae8b22d4ed7471b0c7b80c52531504d933"));
set_progress(0.062895);
assert(apply_patch_check("/system/app/Calculator.apk", "f203fcdfe2016c4cd67292b6a07e17ec39cdd5e4", "865b6de8185da0f7a35429fe339c7a2f40e81a8c"));
set_progress(0.084862);
assert(apply_patch_check("/system/app/CloudService.apk", "26d3daad28998eac343763480afac5c1cea6492c", "3169be9d41a744ea9aa4b9aac351c1d0b0f6b3f0"));
set_progress(0.087018);
assert(apply_patch_check("/system/app/Contacts.apk", "ac09c3031e48352b3214fdc4f83fcf7e8db60bdb", "44b0f5a43b3e220e7b3ce9b63a5ff5649280c5ce"));
set_progress(0.124158);
assert(apply_patch_check("/system/app/DownloadProvider.apk", "bce55abdc7f4249eaaae1b9f786caf2ba6e657d5", "12fbbe70604e44d572a15802994e61ef6316871b"));
set_progress(0.125236);
assert(apply_patch_check("/system/app/DownloadProviderUi.apk", "519571445f8ca37834dcd3bba239ff4989e06820", "cbd91a9d1e861a7e28e60a21daf77ace2f3a6953"));
set_progress(0.127424);
assert(apply_patch_check("/system/app/Exchange2.apk", "6dd52cb5c0d8be920a97499683509c89a2f64b6d", "4a8792db32212b0454aae327a216aa9ebbf73029"));
set_progress(0.136186);
assert(apply_patch_check("/system/app/MiuiGallery.apk", "c68ba6af945779439b1062d9a1887126cc21f0f3", "a28ee23a24d848ab72a8764aa9197cd13e11e59c"));
set_progress(0.160285);
assert(apply_patch_check("/system/app/MiuiHome.apk", "2e65d7b2fdc8a527358b39ffe86d8aeb134777a2", "b8f37eb4a52c14e3b5410fb64deb534c75d6e719"));
set_progress(0.197395);
assert(apply_patch_check("/system/app/MiuiSystemUI.apk", "a04d4735c924eec3afed92b305ce87c70d6f135b", "81b7f4722806ff70b38d9b96a9a43dd15b450f60"));
set_progress(0.213568);
assert(apply_patch_check("/system/app/MiuiVideoPlayer.apk", "074297ad510b4c02762a26ebc2ece55cdbad885f", "cfdbf296822bf27bca65681f8135d3d7311a37d2"));
set_progress(0.222106);
assert(apply_patch_check("/system/app/Mms.apk", "2594fb5e5098bc01b51883be278a63e4a9cb7be7", "a9c62e264005b91333ac2f793ca4a8d52ff1fdc3"));
set_progress(0.238302);
assert(apply_patch_check("/system/app/Music.apk", "53164f179b2f1355e3307462a1fe1dd2e1ffaa2f", "58381d6c202b974abc58c3585ea22d040b46d6d1"));
set_progress(0.296154);
assert(apply_patch_check("/system/app/Notes.apk", "6cb41e0138b2f507ed5c6950eda88f8f202dc290", "89e7c7bf010296863b2db7c2e742cf30ee793b48"));
set_progress(0.381352);
assert(apply_patch_check("/system/app/Phone.apk", "b3d5375bb9ff041a2487aa06c7b3ce3b667aa51e", "2be592c5a9f033ad5ebf7b979130846744fed28c"));
set_progress(0.423496);
assert(apply_patch_check("/system/app/Settings.apk", "56178171b8be61d42331ee1eca5ad893abeb75d5", "d3d800083e493c9293a8bf83ad9e99792c6c7a28"));
set_progress(0.531445);
assert(apply_patch_check("/system/app/SettingsProvider.apk", "468a27ff1ca5566768ef963b2e67251d66249125", "75a43adb910fd2f5aeef0ea8f28809681d26d097"));
set_progress(0.531972);
assert(apply_patch_check("/system/app/SoundRecorder.apk", "34f5bf1ef8bc39a25df335f2c3bd22dc57b93710", "81488e7ca7cee72a4310bdf347cda38a2ddf0177"));
set_progress(0.562004);
assert(apply_patch_check("/system/app/SuperMarket.apk", "ae44a0deeea4edd34349dac94f7aaf0296f095ca", "f7c9901147637430a33ffcf3bf96c8754a8a60e8"));
set_progress(0.568019);
assert(apply_patch_check("/system/app/TelephonyProvider.apk", "a6ab13421f400cada86c59dd6e9142f73ac68f5f", "48da25e1ba7ddc9b4963cb4325d8a9eb3afd4056"));
set_progress(0.568816);
assert(apply_patch_check("/system/app/ThemeManager.apk", "f2b4d37f2ba73d3202f653cced810696351d5b60", "e7db9a8412bf238a8a29f9e4f68562788fc567fd"));
set_progress(0.578941);
assert(apply_patch_check("/system/app/Updater.apk", "97f944c9f8eb5cef126c1558112404f394c31ade", "93279589e413ab5f3a5ac97cd80ff6d6b724cf92"));
set_progress(0.592420);
assert(apply_patch_check("/system/app/Weather.apk", "7ad224d2af1f71ca091cd2b53c21306a1f7c8f03", "d9d8d20dd9ae18d894e23998999928f39cc0250e"));
set_progress(0.608468);
assert(apply_patch_check("/system/app/XiaomiServiceFramework.apk", "027d9f8ec1ef79924fdef2e1af4ab45500730d17", "92ffd2aa691e497891c22b33246e611bebd38823"));
set_progress(0.640612);
assert(apply_patch_check("/system/build.prop", "1ff5a2bfb2e95bcb39b38eb33bb7ecff0a7599ed", "5bcc2f1280251f4a2a17f9436cdf839822299690"));
set_progress(0.640645);
assert(apply_patch_check("/system/etc/apns-conf.xml", "2faa0dcc705c99ebd6b8a1d2719d5936896f7582", "2aeeea0aa9513ce78d3bbabb19b2e381b8f920e7"));
set_progress(0.642222);
assert(apply_patch_check("/system/framework/android.policy.jar", "4918e9b646f59b299f914b72677fcbf84a801dcb", "37ed6507a5c5d95945d6a7c100f74a54cf61056c"));
set_progress(0.646205);
assert(apply_patch_check("/system/framework/framework-miui-res.apk", "2faa81b565294d8078cd464493ef226d5d62e115", "40620c1d969099f877a3cffb405cdedc54ebce14"));
set_progress(0.723487);
assert(apply_patch_check("/system/framework/framework-res.apk", "4071d044aaf9d51d15dae48dfe9d30b713c1444a", "a45f2a1febc9a7193fa2deed7db263fabab9ad01"));
set_progress(0.836862);
assert(apply_patch_check("/system/framework/framework.jar", "beec072f965d6109eca0e7f167f789ba1d2cde30", "18550b2cd9c3f9037a1f589a38f9bbf797dec98c"));
set_progress(0.870192);
assert(apply_patch_check("/system/framework/mediatek-framework.jar", "6a3e328bd4d550d34d43c292de6278933e3d6816", "1aaa87f30ee7e734887526bf5349edde34c20253"));
set_progress(0.871428);
assert(apply_patch_check("/system/framework/secondary-framework.jar", "6254702cf10712dc79fa72b840afdd23142fc713", "55b5c5e86f5fb2cf1b2ddbe78a3680097314b555"));
set_progress(0.888579);
assert(apply_patch_check("/system/framework/services.jar", "c328725f905133be1191ae2b7303d61fcb5d127c", "ed8275c91b8ed797d9781cb9a36d99f00881be0a"));
set_progress(0.899354);
assert(apply_patch_check("/system/media/theme/default/alarmscreen", "9966038d3a7a4e688be7c029a39638576fd020ab", "ce2b397e161d1234d5e46d59d5a49dbf137a5101"));
set_progress(0.904661);
assert(apply_patch_check("/system/media/theme/default/icons", "de18479ca921b12e91a6bdea388116be262fe359", "c3bc3f7185ba2339f9d0e9917233010c9b13a920"));
set_progress(0.908317);
assert(apply_patch_space(13645943));

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

ui_print("Removing unneeded files...");
delete("/data/preinstall_apps/MiuiVideo.apk",
       "/system/recovery.img");
show_progress(0.800000, 0);
ui_print("Patching system files...");
apply_patch("/data/preinstall_apps/VoiceAssist.apk", "-",
            40e1b899baa77796d79c2f9054fad4af30e2cf2b, 11034990,
            61c8bf141dd688be8ac7be26122584cb202376bf, package_extract_file("patch/data/preinstall_apps/VoiceAssist.apk.p"));
set_progress(0.091748);
apply_patch("/system/app/AirkanPhoneService.apk", "-",
            c920855706ccce073892209bf3b5cf01fabf5b4b, 399498,
            77dffaf3a31ed05407a9d5fd0df7dac19f5bbf57, package_extract_file("patch/system/app/AirkanPhoneService.apk.p"));
set_progress(0.095069);
apply_patch("/system/app/AntiSpam.apk", "-",
            3f6c7d238a7f98efbf674130cf29968cc8513332, 136454,
            446572bb0d9c43fe24bc325d97bdd790a16ebce4, package_extract_file("patch/system/app/AntiSpam.apk.p"));
set_progress(0.096204);
apply_patch("/system/app/Browser.apk", "-",
            8bfcb5634b9320b7652ab6bc7c5d83f7d2bee58b, 7035376,
            5e8279ae8b22d4ed7471b0c7b80c52531504d933, package_extract_file("patch/system/app/Browser.apk.p"));
set_progress(0.154698);
apply_patch("/system/app/Calculator.apk", "-",
            f203fcdfe2016c4cd67292b6a07e17ec39cdd5e4, 2645450,
            865b6de8185da0f7a35429fe339c7a2f40e81a8c, package_extract_file("patch/system/app/Calculator.apk.p"));
set_progress(0.176693);
apply_patch("/system/app/CloudService.apk", "-",
            26d3daad28998eac343763480afac5c1cea6492c, 259703,
            3169be9d41a744ea9aa4b9aac351c1d0b0f6b3f0, package_extract_file("patch/system/app/CloudService.apk.p"));
set_progress(0.178852);
apply_patch("/system/app/Contacts.apk", "-",
            ac09c3031e48352b3214fdc4f83fcf7e8db60bdb, 4290169,
            44b0f5a43b3e220e7b3ce9b63a5ff5649280c5ce, package_extract_file("patch/system/app/Contacts.apk.p"));
set_progress(0.214522);
apply_patch("/system/app/DownloadProvider.apk", "-",
            bce55abdc7f4249eaaae1b9f786caf2ba6e657d5, 129734,
            12fbbe70604e44d572a15802994e61ef6316871b, package_extract_file("patch/system/app/DownloadProvider.apk.p"));
set_progress(0.215600);
apply_patch("/system/app/DownloadProviderUi.apk", "-",
            519571445f8ca37834dcd3bba239ff4989e06820, 251652,
            cbd91a9d1e861a7e28e60a21daf77ace2f3a6953, package_extract_file("patch/system/app/DownloadProviderUi.apk.p"));
set_progress(0.217693);
apply_patch("/system/app/Exchange2.apk", "-",
            6dd52cb5c0d8be920a97499683509c89a2f64b6d, 1054822,
            4a8792db32212b0454aae327a216aa9ebbf73029, package_extract_file("patch/system/app/Exchange2.apk.p"));
set_progress(0.226463);
apply_patch("/system/app/MiuiGallery.apk", "-",
            c68ba6af945779439b1062d9a1887126cc21f0f3, 2973389,
            a28ee23a24d848ab72a8764aa9197cd13e11e59c, package_extract_file("patch/system/app/MiuiGallery.apk.p"));
set_progress(0.251184);
apply_patch("/system/app/MiuiHome.apk", "-",
            2e65d7b2fdc8a527358b39ffe86d8aeb134777a2, 4466751,
            b8f37eb4a52c14e3b5410fb64deb534c75d6e719, package_extract_file("patch/system/app/MiuiHome.apk.p"));
set_progress(0.288322);
apply_patch("/system/app/MiuiSystemUI.apk", "-",
            a04d4735c924eec3afed92b305ce87c70d6f135b, 1958868,
            81b7f4722806ff70b38d9b96a9a43dd15b450f60, package_extract_file("patch/system/app/MiuiSystemUI.apk.p"));
set_progress(0.304609);
apply_patch("/system/app/MiuiVideoPlayer.apk", "-",
            074297ad510b4c02762a26ebc2ece55cdbad885f, 1027953,
            cfdbf296822bf27bca65681f8135d3d7311a37d2, package_extract_file("patch/system/app/MiuiVideoPlayer.apk.p"));
set_progress(0.313155);
apply_patch("/system/app/Mms.apk", "-",
            2594fb5e5098bc01b51883be278a63e4a9cb7be7, 1949459,
            a9c62e264005b91333ac2f793ca4a8d52ff1fdc3, package_extract_file("patch/system/app/Mms.apk.p"));
set_progress(0.329364);
apply_patch("/system/app/Music.apk", "-",
            53164f179b2f1355e3307462a1fe1dd2e1ffaa2f, 6963231,
            58381d6c202b974abc58c3585ea22d040b46d6d1, package_extract_file("patch/system/app/Music.apk.p"));
set_progress(0.387258);
apply_patch("/system/app/Notes.apk", "-",
            6cb41e0138b2f507ed5c6950eda88f8f202dc290, 10336681,
            89e7c7bf010296863b2db7c2e742cf30ee793b48, package_extract_file("patch/system/app/Notes.apk.p"));
set_progress(0.473200);
apply_patch("/system/app/Phone.apk", "-",
            b3d5375bb9ff041a2487aa06c7b3ce3b667aa51e, 5074019,
            2be592c5a9f033ad5ebf7b979130846744fed28c, package_extract_file("patch/system/app/Phone.apk.p"));
set_progress(0.515387);
apply_patch("/system/app/Settings.apk", "-",
            56178171b8be61d42331ee1eca5ad893abeb75d5, 12997261,
            d3d800083e493c9293a8bf83ad9e99792c6c7a28, package_extract_file("patch/system/app/Settings.apk.p"));
set_progress(0.623449);
apply_patch("/system/app/SettingsProvider.apk", "-",
            468a27ff1ca5566768ef963b2e67251d66249125, 63535,
            75a43adb910fd2f5aeef0ea8f28809681d26d097, package_extract_file("patch/system/app/SettingsProvider.apk.p"));
set_progress(0.623978);
apply_patch("/system/app/SoundRecorder.apk", "-",
            34f5bf1ef8bc39a25df335f2c3bd22dc57b93710, 3614801,
            81488e7ca7cee72a4310bdf347cda38a2ddf0177, package_extract_file("patch/system/app/SoundRecorder.apk.p"));
set_progress(0.654032);
apply_patch("/system/app/SuperMarket.apk", "-",
            ae44a0deeea4edd34349dac94f7aaf0296f095ca, 635940,
            f7c9901147637430a33ffcf3bf96c8754a8a60e8, package_extract_file("patch/system/app/SuperMarket.apk.p"));
set_progress(0.659320);
apply_patch("/system/app/TelephonyProvider.apk", "-",
            a6ab13421f400cada86c59dd6e9142f73ac68f5f, 96005,
            48da25e1ba7ddc9b4963cb4325d8a9eb3afd4056, package_extract_file("patch/system/app/TelephonyProvider.apk.p"));
set_progress(0.660118);
apply_patch("/system/app/ThemeManager.apk", "-",
            f2b4d37f2ba73d3202f653cced810696351d5b60, 1218514,
            e7db9a8412bf238a8a29f9e4f68562788fc567fd, package_extract_file("patch/system/app/ThemeManager.apk.p"));
set_progress(0.670249);
apply_patch("/system/app/Updater.apk", "-",
            97f944c9f8eb5cef126c1558112404f394c31ade, 1631688,
            93279589e413ab5f3a5ac97cd80ff6d6b724cf92, package_extract_file("patch/system/app/Updater.apk.p"));
set_progress(0.683815);
apply_patch("/system/app/Weather.apk", "-",
            7ad224d2af1f71ca091cd2b53c21306a1f7c8f03, 1931593,
            d9d8d20dd9ae18d894e23998999928f39cc0250e, package_extract_file("patch/system/app/Weather.apk.p"));
set_progress(0.699875);
apply_patch("/system/app/XiaomiServiceFramework.apk", "-",
            027d9f8ec1ef79924fdef2e1af4ab45500730d17, 3869076,
            92ffd2aa691e497891c22b33246e611bebd38823, package_extract_file("patch/system/app/XiaomiServiceFramework.apk.p"));
set_progress(0.732043);
apply_patch("/system/etc/apns-conf.xml", "-",
            2faa0dcc705c99ebd6b8a1d2719d5936896f7582, 189277,
            2aeeea0aa9513ce78d3bbabb19b2e381b8f920e7, package_extract_file("patch/system/etc/apns-conf.xml.p"));
set_progress(0.733617);
apply_patch("/system/framework/android.policy.jar", "-",
            4918e9b646f59b299f914b72677fcbf84a801dcb, 479474,
            37ed6507a5c5d95945d6a7c100f74a54cf61056c, package_extract_file("patch/system/framework/android.policy.jar.p"));
set_progress(0.737604);
apply_patch("/system/framework/framework-miui-res.apk", "-",
            2faa81b565294d8078cd464493ef226d5d62e115, 9299096,
            40620c1d969099f877a3cffb405cdedc54ebce14, package_extract_file("patch/system/framework/framework-miui-res.apk.p"));
set_progress(0.814919);
apply_patch("/system/framework/framework-res.apk", "-",
            4071d044aaf9d51d15dae48dfe9d30b713c1444a, 13646453,
            a45f2a1febc9a7193fa2deed7db263fabab9ad01, package_extract_file("patch/system/framework/framework-res.apk.p"));
set_progress(0.928379);
apply_patch("/system/framework/framework.jar", "-",
            beec072f965d6109eca0e7f167f789ba1d2cde30, 4012091,
            18550b2cd9c3f9037a1f589a38f9bbf797dec98c, package_extract_file("patch/system/framework/framework.jar.p"));
set_progress(0.961737);
apply_patch("/system/framework/mediatek-framework.jar", "-",
            6a3e328bd4d550d34d43c292de6278933e3d6816, 148792,
            1aaa87f30ee7e734887526bf5349edde34c20253, package_extract_file("patch/system/framework/mediatek-framework.jar.p"));
set_progress(0.962974);
apply_patch("/system/framework/secondary-framework.jar", "-",
            6254702cf10712dc79fa72b840afdd23142fc713, 2069970,
            55b5c5e86f5fb2cf1b2ddbe78a3680097314b555, package_extract_file("patch/system/framework/secondary-framework.jar.p"));
set_progress(0.980184);
apply_patch("/system/framework/services.jar", "-",
            c328725f905133be1191ae2b7303d61fcb5d127c, 1300660,
            ed8275c91b8ed797d9781cb9a36d99f00881be0a, package_extract_file("patch/system/framework/services.jar.p"));
set_progress(0.990998);
apply_patch("/system/media/theme/default/alarmscreen", "-",
            9966038d3a7a4e688be7c029a39638576fd020ab, 638705,
            ce2b397e161d1234d5e46d59d5a49dbf137a5101, package_extract_file("patch/system/media/theme/default/alarmscreen.p"));
set_progress(0.996309);
apply_patch("/system/media/theme/default/icons", "-",
            de18479ca921b12e91a6bdea388116be262fe359, 440011,
            c3bc3f7185ba2339f9d0e9917233010c9b13a920, package_extract_file("patch/system/media/theme/default/icons.p"));
set_progress(0.999967);
show_progress(0.100000, 10);
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, 0, 0644, "/system/bin/aal");
set_perm(0, 0, 0644, "/system/bin/afm_server");
set_perm(0, 0, 0644, "/system/bin/bmm056d");
set_perm(0, 0, 0644, "/system/bin/ldu");
set_perm(0, 0, 0644, "/system/bin/ltar");
set_perm(0, 0, 0644, "/system/bin/mobilelog");
set_perm(0, 0, 0644, "/system/bin/nac_server");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 0, 0644, "/system/bin/nvram_proximity");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
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_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(1001, 1000, 0770, 0644, "/system/etc/ril");
set_perm(0, 0, 0444, "/system/etc/ril/oper.lis");
set_perm(0, 1000, 0750, "/system/etc/throttle.sh");
set_perm(1014, 2000, 0550, "/system/etc/wide-dhcpv6/dhcp6c.script");
set_perm(0, 2000, 0755, "/system/vendor");
set_perm_recursive(0, 2000, 0755, 0755, "/system/vendor/bin");
set_perm(0, 2000, 0755, "/system/vendor/lib");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib/drm");
set_perm(0, 0, 0644, "/system/vendor/lib/drm/libdrmwvmplugin.so");
set_perm(0, 2000, 0755, "/system/vendor/lib/egl");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib/hw");
set_perm(0, 0, 0644, "/system/vendor/lib/hw/gralloc.mt6589.so");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/busybox");
set_perm(0, 1000, 06750, "/system/xbin/shelld");
set_perm(0, 0, 06755, "/system/xbin/su");
ui_print("Patching remaining system files...");
apply_patch("/system/build.prop", "-",
            1ff5a2bfb2e95bcb39b38eb33bb7ecff0a7599ed, 3975,
            5bcc2f1280251f4a2a17f9436cdf839822299690, package_extract_file("patch/system/build.prop.p"));
set_perm(0, 0, 0644, "/system/build.prop");
unmount("/data");
unmount("/system");
