mount("ext4", "EMMC", "/dev/block/mmcblk0p14", "/system", "max_batch_time=0,commit=1,data=ordered,barrier=1,errors=panic,nodelalloc");
getprop("ro.build.fingerprint") == "motorola/metallica/minnow:5.0.1/LWX48T/1643897:user/release-keys" ||
    getprop("ro.build.fingerprint") == "motorola/metallica/minnow:5.0.2/LWX49L/1734235:user/release-keys" ||
    abort("Package expects build fingerprint of motorola/metallica/minnow:5.0.1/LWX48T/1643897:user/release-keys or motorola/metallica/minnow:5.0.2/LWX49L/1734235:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
getprop("ro.product.device") == "minnow" || abort("This package is for \"minnow\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Verifying current system...");
show_progress(0.100000, 0);
apply_patch_check("/system/app/Bluetooth/Bluetooth.apk", "fe5cb1929142fe627526779024a8cef543ba5eb4", "52f2ee752b3da2b90b5f3bfa6c9176d27b3dc8b7") || abort("\"/system/app/Bluetooth/Bluetooth.apk\" has unexpected contents.");
apply_patch_check("/system/app/Bluetooth/arm/Bluetooth.odex", "d9a69f5febbc333cbb082af6a60d582f351fe193", "1b21fc7f631ba1d27919fe0abb09692aff462b46") || abort("\"/system/app/Bluetooth/arm/Bluetooth.odex\" has unexpected contents.");
apply_patch_check("/system/app/CertInstaller/CertInstaller.apk", "e4de109aac5d4f7a1e19014fc791ecf47424f825", "47979da1216c075c8fad910caf0c4261ff17206b") || abort("\"/system/app/CertInstaller/CertInstaller.apk\" has unexpected contents.");
apply_patch_check("/system/app/CertInstaller/arm/CertInstaller.odex", "066d8af8d08e85501f1a799a8c0b8c284bceaacc", "960cf98668e95906c6521638de2c7e8e203daece") || abort("\"/system/app/CertInstaller/arm/CertInstaller.odex\" has unexpected contents.");
apply_patch_check("/system/app/ClockworkFrameworkPackageStubs/ClockworkFrameworkPackageStubs.apk", "daac00afb380f744e849afb95c06a4ef349985da", "a92a108f42b21149dbe33d4351955ec4b8f81fe6") || abort("\"/system/app/ClockworkFrameworkPackageStubs/ClockworkFrameworkPackageStubs.apk\" has unexpected contents.");
apply_patch_check("/system/app/ClockworkFrameworkPackageStubs/arm/ClockworkFrameworkPackageStubs.odex", "792b8511540dffdd96738f05198d79bf68881e83", "be4986cafa36b567004924bb45b8d6231b82ce82") || abort("\"/system/app/ClockworkFrameworkPackageStubs/arm/ClockworkFrameworkPackageStubs.odex\" has unexpected contents.");
apply_patch_check("/system/app/DeskClockMicroApp/DeskClockMicroApp.apk", "16a0fbeb57a4986f254faa1c8220ed657b188621", "bc43fabfb01fa4307644736768c3ccc388703a5b") || abort("\"/system/app/DeskClockMicroApp/DeskClockMicroApp.apk\" has unexpected contents.");
apply_patch_check("/system/app/DeskClockMicroApp/arm/DeskClockMicroApp.odex", "08a84c8d6165a9cd4df5a31a3388272d713e51a5", "14608ab934beada4cb9e60e28defbca5ad4819ca") || abort("\"/system/app/DeskClockMicroApp/arm/DeskClockMicroApp.odex\" has unexpected contents.");
apply_patch_check("/system/app/UserDictionaryProvider/UserDictionaryProvider.apk", "1e461803947b4731544eecaa219b8354cb7f922f", "bc96703afcc34f6fb764415ee85391a54279db50") || abort("\"/system/app/UserDictionaryProvider/UserDictionaryProvider.apk\" has unexpected contents.");
apply_patch_check("/system/app/UserDictionaryProvider/arm/UserDictionaryProvider.odex", "309d6c6eb34d46a523295f3a25821f491ee3c68a", "3556dc98e935dc8d9d08b2585bb29017c7ef7bba") || abort("\"/system/app/UserDictionaryProvider/arm/UserDictionaryProvider.odex\" has unexpected contents.");
apply_patch_check("/system/bin/debuggerd", "d0918f7f5dd8cd8ec9942ef9db2d903e2200ef7f", "42f21bf74bb59fa861657300f09a4589904bd13d") || abort("\"/system/bin/debuggerd\" has unexpected contents.");
apply_patch_check("/system/bin/install-recovery.sh", "a2518bc1032eda1be3348bef213d4b8a9657bbbb", "34277551643f64906e54ca1fb55844ac06801e2c") || abort("\"/system/bin/install-recovery.sh\" has unexpected contents.");
apply_patch_check("/system/bin/linker", "f3e9d4d9ee19b20b4b1d5d016016d60d0325df8a", "02893127af32009d21dac166fab6898590394d56") || abort("\"/system/bin/linker\" has unexpected contents.");
apply_patch_check("/system/build.prop", "1a1a07934851d9b7c151f1b70a0dfe3edf64fb4a", "1c50ae35fd7e07e2ae10611276d44eb3cfc96624") || abort("\"/system/build.prop\" has unexpected contents.");
apply_patch_check("/system/etc/NOTICE.html.gz", "9c2efc7992a09204d53f0de539aa6cc4160f26f6", "a62ef03f3b124334a6bdd2b874c71a07858b29fb") || abort("\"/system/etc/NOTICE.html.gz\" has unexpected contents.");
apply_patch_check("/system/etc/recovery-resource.dat", "e25f7d23b80738d55c1d7ce71a7c8e669c4e09cb", "783e0a532c0da5c962e00dcb857213c21d0c960b") || abort("\"/system/etc/recovery-resource.dat\" has unexpected contents.");
apply_patch_check("/system/etc/security/otacerts.zip", "066bd2726693dfc18092d1497b7ac23f5bacebd5", "bf2c35d621df20150a79bce3994f7f4af85cba30") || abort("\"/system/etc/security/otacerts.zip\" has unexpected contents.");
apply_patch_check("/system/framework/apache-xml.jar", "55854ceb356e4017346f33ac90d351f55c295e6b", "837b0b07e3b4b8333b92e4eb07284bd53c7c6811") || abort("\"/system/framework/apache-xml.jar\" has unexpected contents.");
apply_patch_check("/system/framework/arm/am.odex", "7a44dcc68b601242db4a4aac68ae8ded1033b04e", "fdf3af6aad4351a7ca97be6160a06fb72c488541") || abort("\"/system/framework/arm/am.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/android.test.runner.odex", "e33e988ae267f81b7fc18c14e2da702c753a3b18", "86b8900315ee44310a6b1d0c656169ebf3712919") || abort("\"/system/framework/arm/android.test.runner.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/appops.odex", "234f056347a1cea2a8b71a6ce5945f70a3c34763", "34a1567c377f668451c687fbc34ebbe345f04c57") || abort("\"/system/framework/arm/appops.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/appwidget.odex", "f8dc99191454753037a7d82aed8e964156c5517d", "57aaa4ae79c6aac37343f19088a792bc9559b4ad") || abort("\"/system/framework/arm/appwidget.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/bmgr.odex", "da7e1c12d57ff6243b44de14984448e10b299dc1", "fa551ab5624b0bcb1d8b478315a29653a27aab8a") || abort("\"/system/framework/arm/bmgr.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/boot.art", "ac43486dabaf9433124ea3146003589987a4521f", "c202d89af3b2db05c7d458a3fb07f6136ee491d1") || abort("\"/system/framework/arm/boot.art\" has unexpected contents.");
apply_patch_check("/system/framework/arm/boot.oat", "a5510384f504f2d72eac4c5aea48eeb41642bfd1", "54063a080924bcefefc0cece7df428d3f4a15a74") || abort("\"/system/framework/arm/boot.oat\" has unexpected contents.");
apply_patch_check("/system/framework/arm/bu.odex", "bb65f0020edb91869efd9b7cb475f991f3d536ca", "5e71a8a48f7e8f70c6a3bba015d9d4955122c916") || abort("\"/system/framework/arm/bu.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/com.android.location.provider.odex", "8d712e82b44bc2c53050ffcb956341f7afa07187", "1530e9a95e5e528f01ca072ad5ccbe0c1ffcdf16") || abort("\"/system/framework/arm/com.android.location.provider.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/content.odex", "4e0da6556d7fbd6d29b29138aafbda51d7628fa1", "240a48280614d94df5b53765c556fac533ed469a") || abort("\"/system/framework/arm/content.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/dpm.odex", "af3ef94cf4bff3ba7a3ec2009f804f425c3deeec", "c65c399f5bdbee1b3fcbb9948a0306b0c7235fc0") || abort("\"/system/framework/arm/dpm.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/ime.odex", "b7ba556fcb8c5e67703c1516a06d676cbde161d1", "4d0dc5f5aca58f28b77e9f07ab6310ca0e3ea456") || abort("\"/system/framework/arm/ime.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/input.odex", "2f6719b4354a20bf912da34d32e77cfefa3f0a17", "be3b931cb6b0790ba2fd3d3c7814087370994b90") || abort("\"/system/framework/arm/input.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/javax.obex.odex", "04ef3ab5dcb8126523a9f7183cf5476cc62d14cc", "a70d70aa1e6477d71107539116c60b43289409e9") || abort("\"/system/framework/arm/javax.obex.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/media_cmd.odex", "4b5f0200037a147d8463210256c9606fd95d140d", "ee1d923393ec722861cf7d0d2ba533a13fc055a4") || abort("\"/system/framework/arm/media_cmd.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/monkey.odex", "0f48750a8d2cc207a20e9d95f09bce90cb79c29d", "600bbd32ffecfeaaac56dd9b79a03a71b4483519") || abort("\"/system/framework/arm/monkey.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/pm.odex", "7b989a47ce3bba6470a233679e9831715ef44242", "6bdd33c104bb353e12b962e7324deae81688e468") || abort("\"/system/framework/arm/pm.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/services.odex", "a4ce793915774570f08afc4916dcc8f07dfc3869", "ca053968ae60d00239ab813a21663e8768fa54cc") || abort("\"/system/framework/arm/services.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/settings.odex", "763e6585450f89206a0cbb1c4cf67c6ff7a69931", "ab848ea3c734cfd37e3df20e7d9791c200328084") || abort("\"/system/framework/arm/settings.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/svc.odex", "1cadeea612d41d05d3e66a964af1a171e301f820", "546f8d4613bab5037969c2c7bcd9108271fddd69") || abort("\"/system/framework/arm/svc.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/uiautomator.odex", "cebc63ad87e0a8568c0f66b2ca065bdce7f0f510", "12eabf1f64cd8a1f1b78e27c85e9c0e01a4f28d6") || abort("\"/system/framework/arm/uiautomator.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/wifi-service.odex", "786dcb7b2bce0bf808c9ab02011eb12174a4fd10", "10c356bd84445064e626dc119bc7ad77c258daa1") || abort("\"/system/framework/arm/wifi-service.odex\" has unexpected contents.");
apply_patch_check("/system/framework/arm/wm.odex", "fc5034d3a1cffbbbcd21e0d54e6251ef076f4c40", "21b52979a451f0f8cc136caeaa382adfc4dfa46d") || abort("\"/system/framework/arm/wm.odex\" has unexpected contents.");
apply_patch_check("/system/framework/core-libart.jar", "05155c06ecbdda55ab84e666696d7736eb337d0a", "bf49f9ea3026d26d947f34aa7694713207117938") || abort("\"/system/framework/core-libart.jar\" has unexpected contents.");
apply_patch_check("/system/framework/ext.jar", "69f303840feca67b36838bd5714cb8f0ca3f6fa4", "03e4ea721ea0e6e19498858165ef0eb01a0918f2") || abort("\"/system/framework/ext.jar\" has unexpected contents.");
apply_patch_check("/system/framework/framework-res.apk", "8d6213f81189fd951bff82f5917f4800d51cc8fb", "b6e04fa780a50759b2e46cae21ec162b97917a26") || abort("\"/system/framework/framework-res.apk\" has unexpected contents.");
apply_patch_check("/system/framework/framework.jar", "6be632dd8bc9943492ac1173551692432d84f406", "17e2cec182f9b923d1335256471dc07ca7643c30") || abort("\"/system/framework/framework.jar\" has unexpected contents.");
apply_patch_check("/system/lib/hw/bluetooth.default.so", "1efcda2cc848cb1204c01d00164d1930d5b5ebe3", "7412f55ff8c38675fa5df9888c4eafcacb1ae217") || abort("\"/system/lib/hw/bluetooth.default.so\" has unexpected contents.");
apply_patch_check("/system/lib/libLLVM.so", "e720d019deb87f8a44d022e1417178f2399008ba", "db6f9ae4cfd1508e7fa0951765ad5b6c22412425") || abort("\"/system/lib/libLLVM.so\" has unexpected contents.");
apply_patch_check("/system/lib/libandroid_runtime.so", "1c98747bb711b216c717e1d72ca5db598da41805", "27d0f85aa1bd6136549b891363f1cb5dda948169") || abort("\"/system/lib/libandroid_runtime.so\" has unexpected contents.");
apply_patch_check("/system/lib/libandroidfw.so", "0b563e49becd3cf9c76eb457cafe68b342c54009", "1b09df24a5096ccbe3c91d562e53cf55f0f9cfd6") || abort("\"/system/lib/libandroidfw.so\" has unexpected contents.");
apply_patch_check("/system/lib/libart.so", "be204181eea58261a4d8fa250963169eb5e0ec01", "4ac8d480e8cfecc2dfd75f7761385ebf7ea25548") || abort("\"/system/lib/libart.so\" has unexpected contents.");
apply_patch_check("/system/lib/libaudiopolicyservice.so", "f8d5eceaa1f61f4e78b7f97aa3fdebcb0f84f951", "df01a88773cd2325356d9419fcad6ddf65bbdc5f") || abort("\"/system/lib/libaudiopolicyservice.so\" has unexpected contents.");
apply_patch_check("/system/lib/libc.so", "70ef75106bc27499023db6275c230e6cdd79aa8e", "2b71d65e3f7041a63a8c43dd858a19c1350230ae") || abort("\"/system/lib/libc.so\" has unexpected contents.");
apply_patch_check("/system/lib/libhwui.so", "ec91d8f8aeef76bd33f0366157f46d9975d91f39", "c482d355fb507f632a7988daba8ac9de9833ffb8") || abort("\"/system/lib/libhwui.so\" has unexpected contents.");
apply_patch_check("/system/lib/libmdnssd.so", "dc8393c60fdfd61a9b8c00b528221c6e47eacd07", "3d680d8a1f9cdcf28312864af464d55f0d0303c7") || abort("\"/system/lib/libmdnssd.so\" has unexpected contents.");
apply_patch_check("/system/lib/libstagefright_soft_aacdec.so", "6eaeb7925ed290969d7d332fac7b09d36bcdb6ff", "b4cdc3665c052397741baf87cf316e791fe2cd83") || abort("\"/system/lib/libstagefright_soft_aacdec.so\" has unexpected contents.");
apply_patch_check("/system/priv-app/BackupRestoreConfirmation/BackupRestoreConfirmation.apk", "e8f80cb265e56796f0b38fc138ad808e2363ccb0", "1826e7f048c9d124736e1f47797f49a8ba79a2cf") || abort("\"/system/priv-app/BackupRestoreConfirmation/BackupRestoreConfirmation.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/BackupRestoreConfirmation/arm/BackupRestoreConfirmation.odex", "56b8ec617bce0029cd5750791bc98f7d5293afcc", "88dd2ba59043577660b3188ab4434a8d2592fe3c") || abort("\"/system/priv-app/BackupRestoreConfirmation/arm/BackupRestoreConfirmation.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/CalendarProvider/CalendarProvider.apk", "0a3a84545963e8ddc581f0351110a2e522ecb6e2", "85daf9c77253827303f1aadd0ce2bda9c7f5eeb8") || abort("\"/system/priv-app/CalendarProvider/CalendarProvider.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/CalendarProvider/arm/CalendarProvider.odex", "34dc3cf5700a23d47cc44c8b39be8a2e6e202e35", "ba3a515a4b1e2988e1439ee23beddeb2c4d64ea2") || abort("\"/system/priv-app/CalendarProvider/arm/CalendarProvider.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkBugReportSender/ClockworkBugReportSender.apk", "867c7d5471cc774b4b45a9b150e0af04b97b9ce3", "b9d39d3e6529be424a1b3af5ff619c1dddc53972") || abort("\"/system/priv-app/ClockworkBugReportSender/ClockworkBugReportSender.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkBugReportSender/arm/ClockworkBugReportSender.odex", "ce20fed1de20e6da22558b15691d6ef0f70f77aa", "6ae88bd52ad349136f6f7ee13e8d49b4be5da8d9") || abort("\"/system/priv-app/ClockworkBugReportSender/arm/ClockworkBugReportSender.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkHomeGoogle/ClockworkHomeGoogle.apk", "d7497703b91d3d6961c8e5e5f59101e6cf1c6e9b", "bdef904f3aed41ea30ea063aa548d030269c4f5e") || abort("\"/system/priv-app/ClockworkHomeGoogle/ClockworkHomeGoogle.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkHomeGoogle/arm/ClockworkHomeGoogle.odex", "82a673c4b0660c96b0bbe5dff0116d6efb6b5624", "be16160ff389c3fc9b657abcaf57410604903cc4") || abort("\"/system/priv-app/ClockworkHomeGoogle/arm/ClockworkHomeGoogle.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkPackageInstaller/ClockworkPackageInstaller.apk", "7c1ccf17f311159790a8e85ddfd326010af88b3e", "f4bc79d1687652d13d3ddbf3bc8c2c6718893267") || abort("\"/system/priv-app/ClockworkPackageInstaller/ClockworkPackageInstaller.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkPackageInstaller/arm/ClockworkPackageInstaller.odex", "b77bb79dbbc9004faf8f928dfede5666c0e78657", "0993f85468cbc5af8f03a691a7193f6ca930a400") || abort("\"/system/priv-app/ClockworkPackageInstaller/arm/ClockworkPackageInstaller.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkSettings/ClockworkSettings.apk", "c0d1ddfdbf4c019f861b892e182235761e402fff", "be46810549662b697ab1887fab6a1f0017a6e94e") || abort("\"/system/priv-app/ClockworkSettings/ClockworkSettings.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkSettings/arm/ClockworkSettings.odex", "6f60fa850cf6a48e73ddaf1c097c7fa748b1aeac", "772129663eb5b24dce784717763daea2138db0fc") || abort("\"/system/priv-app/ClockworkSettings/arm/ClockworkSettings.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkSetup/ClockworkSetup.apk", "bacbe95599875f5f84c792ee01fb424435bac1b2", "6531cb2fd654a2d22eaa31493bdb84c99af368ba") || abort("\"/system/priv-app/ClockworkSetup/ClockworkSetup.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/ClockworkSetup/arm/ClockworkSetup.odex", "f4645b25aba5be24a78d0339b5bb8159f44ced79", "c26930c15eb4191481e114d39ac822d8e31ff0d4") || abort("\"/system/priv-app/ClockworkSetup/arm/ClockworkSetup.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/ContactsProvider/ContactsProvider.apk", "767928959c103c139d84ecae464de9e41ea18833", "0f11b7919fa78306c82baf5d403ef46553c7a1f8") || abort("\"/system/priv-app/ContactsProvider/ContactsProvider.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/ContactsProvider/arm/ContactsProvider.odex", "d82dee6139c04036215fb2a6dbbe730247fe2b25", "b9b3ccc0c6460efafae5f3ee40d9cde10b387c54") || abort("\"/system/priv-app/ContactsProvider/arm/ContactsProvider.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/DefaultContainerService/DefaultContainerService.apk", "bbac02880a59aa199a51282beb36ba1b3e30cfa4", "433e8cc8ac59a495a350e5cd539683f3e3e9d656") || abort("\"/system/priv-app/DefaultContainerService/DefaultContainerService.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/DefaultContainerService/arm/DefaultContainerService.odex", "0bd16e30adad275481671635f7f31772af9bf20c", "56ec5dd683b75c644235d85ed7e967f5b530e259") || abort("\"/system/priv-app/DefaultContainerService/arm/DefaultContainerService.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/DownloadProvider/DownloadProvider.apk", "3a1f6ccb6dfb9660e805519ba05ed9377bd41b8a", "d6169e7f2909578dd361b5a8259d0066706afdd6") || abort("\"/system/priv-app/DownloadProvider/DownloadProvider.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/DownloadProvider/arm/DownloadProvider.odex", "fb2ae24ba88411fd199480d92b364da9b49c203e", "3e70427cd590dc0b2fce5a441c8d4a1d9d332849") || abort("\"/system/priv-app/DownloadProvider/arm/DownloadProvider.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/FusedLocation/FusedLocation.apk", "77644c4b3ecd9c305bb7c045b42ff4c279fb273c", "8e37d4645c3bd2a72d3371ed9cc4c2014a436f4b") || abort("\"/system/priv-app/FusedLocation/FusedLocation.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/FusedLocation/arm/FusedLocation.odex", "d51037a79f5eb3478b5b51a104c2431e78db992d", "62a319e639091338e0b4ecc176270ab7aa2abc98") || abort("\"/system/priv-app/FusedLocation/arm/FusedLocation.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk", "f8b05d5ec808e0197da42f993083f71392eaf961", "90fe406e8509f0c016bb39a3c114a6e23eab0108") || abort("\"/system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/GoogleServicesFramework/arm/GoogleServicesFramework.odex", "bdf6600855bcb5b84def9ed61b32f8cf62b4af3d", "135b76d0f27e3593d7132ff7ebc061b2a5b2c14b") || abort("\"/system/priv-app/GoogleServicesFramework/arm/GoogleServicesFramework.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/InputDevices/InputDevices.apk", "44ebd46100439f051dc99810dc40ea39cfd6144e", "dfeb7f9fc0a46928ff9f5125a56dafa69c36087b") || abort("\"/system/priv-app/InputDevices/InputDevices.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/InputDevices/arm/InputDevices.odex", "76dfd7912c484d74a1afcdac84f2d9cf239b4d35", "df7084c22f31818d028e9c0c478dbbee051e6cd6") || abort("\"/system/priv-app/InputDevices/arm/InputDevices.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/MediaProvider/MediaProvider.apk", "2cce1e90018c7e5e6aba9958835c1316b5a4ea4d", "3f829cf662ff11a405a06730a71ec8164c39052c") || abort("\"/system/priv-app/MediaProvider/MediaProvider.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/MediaProvider/arm/MediaProvider.odex", "704f7be5c5e51c901c52b0dd4fad0724adb8e383", "22de46fd469b970177b803ee313632ea5c2d1724") || abort("\"/system/priv-app/MediaProvider/arm/MediaProvider.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/MotoManagerPrebuilt/MotoManagerPrebuilt.apk", "3aa1ff569f412d5666aea687aeb94cc7a1b2688a", "14cf5608a9b01fe594beacf46f2d4ab02b13f361") || abort("\"/system/priv-app/MotoManagerPrebuilt/MotoManagerPrebuilt.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/PrebuiltGmsCoreForClockworkWearable/PrebuiltGmsCoreForClockworkWearable.apk", "60ceca8a80e709585d92f1220b757955dfb36be7", "70d971588af9143ed72bc9860db870a9587ae8c4") || abort("\"/system/priv-app/PrebuiltGmsCoreForClockworkWearable/PrebuiltGmsCoreForClockworkWearable.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/PrebuiltGmsCoreForClockworkWearable/lib/arm/libconscrypt_gmscore_jni.so", "cc687ea3bdf2329cc43b22e0d3cf02d2d2b7df1d", "5a95630149870ecf0460d62cb99ee2531e36df60") || abort("\"/system/priv-app/PrebuiltGmsCoreForClockworkWearable/lib/arm/libconscrypt_gmscore_jni.so\" has unexpected contents.");
apply_patch_check("/system/priv-app/PrebuiltGmsCoreForClockworkWearable/lib/arm/libgmscore.so", "1b827361c73bab73f073790a53889728db1baf9a", "608a55e6bc8661249d25610adcffc1355f02eb10") || abort("\"/system/priv-app/PrebuiltGmsCoreForClockworkWearable/lib/arm/libgmscore.so\" has unexpected contents.");
apply_patch_check("/system/priv-app/SettingsProvider/SettingsProvider.apk", "93d98a30e5e989eb339e2d14094b07f888d148cb", "3d11c2b7556671a75305d564e5517c70191b61d0") || abort("\"/system/priv-app/SettingsProvider/SettingsProvider.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/SettingsProvider/arm/SettingsProvider.odex", "03e71f8cec3b7200f20445224d6469448db3d73f", "0ebc8189923387867dbef09bd91bc8e8e4cb527d") || abort("\"/system/priv-app/SettingsProvider/arm/SettingsProvider.odex\" has unexpected contents.");
apply_patch_check("/system/priv-app/Shell/Shell.apk", "0ad4c6cb7144c19e00e5d8a7a7c50e6cf7780b16", "422e9817ed25b6557fa19193e454b91a19aefb02") || abort("\"/system/priv-app/Shell/Shell.apk\" has unexpected contents.");
apply_patch_check("/system/priv-app/Shell/arm/Shell.odex", "40fc2c46264254773a3226fd310e537574658ce2", "312aec8a82eed4ecc8c351a02757c2e8f9cc2abf") || abort("\"/system/priv-app/Shell/arm/Shell.odex\" has unexpected contents.");
apply_patch_check("EMMC:/dev/block/mmcblk0p9:4610048:74f1a73c9f5f45aa1cf4ec03bb86315b4d67f846:4610048:107ded5790d26f1a3ae7b25bf9bbaa464a9a4218") || abort("\"EMMC:/dev/block/mmcblk0p9:4610048:74f1a73c9f5f45aa1cf4ec03bb86315b4d67f846:4610048:107ded5790d26f1a3ae7b25bf9bbaa464a9a4218\" has unexpected contents.");
apply_patch_space(35045864) || abort("Not enough free space on /system to apply patches.");

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

unmount("/system");
tune2fs("-O", "^has_journal", "/dev/block/mmcblk0p14") || abort("Failed to tune partition /system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p14", "/system", "");
ui_print("Removing unneeded files...");
delete("/system/framework/am.jar",
       "/system/framework/android.policy.jar",
       "/system/framework/android.test.runner.jar",
       "/system/framework/appops.jar", "/system/framework/appwidget.jar",
       "/system/framework/bmgr.jar", "/system/framework/bouncycastle.jar",
       "/system/framework/bu.jar",
       "/system/framework/com.android.location.provider.jar",
       "/system/framework/conscrypt.jar", "/system/framework/content.jar",
       "/system/framework/core-junit.jar", "/system/framework/dpm.jar",
       "/system/framework/ime.jar", "/system/framework/ims-common.jar",
       "/system/framework/input.jar", "/system/framework/javax.obex.jar",
       "/system/framework/media_cmd.jar", "/system/framework/mms-common.jar",
       "/system/framework/monkey.jar", "/system/framework/nullwebview.jar",
       "/system/framework/okhttp.jar", "/system/framework/pm.jar",
       "/system/framework/services.jar", "/system/framework/settings.jar",
       "/system/framework/svc.jar", "/system/framework/telephony-common.jar",
       "/system/framework/uiautomator.jar", "/system/framework/voip-common.jar",
       "/system/framework/wifi-service.jar", "/system/framework/wm.jar",
       "/system/recovery-from-boot.p",
       "/system/recovery.img");
show_progress(0.800000, 0);
ui_print("Patching system files...");
apply_patch("/system/app/Bluetooth/Bluetooth.apk", "-",
            fe5cb1929142fe627526779024a8cef543ba5eb4, 638958,
            52f2ee752b3da2b90b5f3bfa6c9176d27b3dc8b7, package_extract_file("patch/system/app/Bluetooth/Bluetooth.apk.p"));
set_progress(0.003971);
apply_patch("/system/app/Bluetooth/arm/Bluetooth.odex", "-",
            d9a69f5febbc333cbb082af6a60d582f351fe193, 1016296,
            1b21fc7f631ba1d27919fe0abb09692aff462b46, package_extract_file("patch/system/app/Bluetooth/arm/Bluetooth.odex.p"));
set_progress(0.010287);
apply_patch("/system/app/CertInstaller/CertInstaller.apk", "-",
            e4de109aac5d4f7a1e19014fc791ecf47424f825, 197324,
            47979da1216c075c8fad910caf0c4261ff17206b, package_extract_file("patch/system/app/CertInstaller/CertInstaller.apk.p"));
set_progress(0.011514);
apply_patch("/system/app/CertInstaller/arm/CertInstaller.odex", "-",
            066d8af8d08e85501f1a799a8c0b8c284bceaacc, 37352,
            960cf98668e95906c6521638de2c7e8e203daece, package_extract_file("patch/system/app/CertInstaller/arm/CertInstaller.odex.p"));
set_progress(0.011746);
apply_patch("/system/app/ClockworkFrameworkPackageStubs/ClockworkFrameworkPackageStubs.apk",
            "-", daac00afb380f744e849afb95c06a4ef349985da, 20099,
            a92a108f42b21149dbe33d4351955ec4b8f81fe6, package_extract_file("patch/system/app/ClockworkFrameworkPackageStubs/ClockworkFrameworkPackageStubs.apk.p"));
set_progress(0.011871);
apply_patch("/system/app/ClockworkFrameworkPackageStubs/arm/ClockworkFrameworkPackageStubs.odex",
            "-", 792b8511540dffdd96738f05198d79bf68881e83, 57832,
            be4986cafa36b567004924bb45b8d6231b82ce82, package_extract_file("patch/system/app/ClockworkFrameworkPackageStubs/arm/ClockworkFrameworkPackageStubs.odex.p"));
set_progress(0.012230);
apply_patch("/system/app/DeskClockMicroApp/DeskClockMicroApp.apk",
            "-", 16a0fbeb57a4986f254faa1c8220ed657b188621, 1403795,
            bc43fabfb01fa4307644736768c3ccc388703a5b, package_extract_file("patch/system/app/DeskClockMicroApp/DeskClockMicroApp.apk.p"));
set_progress(0.020954);
apply_patch("/system/app/DeskClockMicroApp/arm/DeskClockMicroApp.odex",
            "-", 08a84c8d6165a9cd4df5a31a3388272d713e51a5, 2449896,
            14608ab934beada4cb9e60e28defbca5ad4819ca, package_extract_file("patch/system/app/DeskClockMicroApp/arm/DeskClockMicroApp.odex.p"));
set_progress(0.036180);
apply_patch("/system/app/UserDictionaryProvider/UserDictionaryProvider.apk",
            "-", 1e461803947b4731544eecaa219b8354cb7f922f, 3593,
            bc96703afcc34f6fb764415ee85391a54279db50, package_extract_file("patch/system/app/UserDictionaryProvider/UserDictionaryProvider.apk.p"));
set_progress(0.036203);
apply_patch("/system/app/UserDictionaryProvider/arm/UserDictionaryProvider.odex",
            "-", 309d6c6eb34d46a523295f3a25821f491ee3c68a, 20968,
            3556dc98e935dc8d9d08b2585bb29017c7ef7bba, package_extract_file("patch/system/app/UserDictionaryProvider/arm/UserDictionaryProvider.odex.p"));
set_progress(0.036333);
apply_patch("/system/bin/debuggerd", "-",
            d0918f7f5dd8cd8ec9942ef9db2d903e2200ef7f, 25892,
            42f21bf74bb59fa861657300f09a4589904bd13d, package_extract_file("patch/system/bin/debuggerd.p"));
set_progress(0.036494);
apply_patch("/system/bin/install-recovery.sh", "-",
            a2518bc1032eda1be3348bef213d4b8a9657bbbb, 571,
            34277551643f64906e54ca1fb55844ac06801e2c, package_extract_file("patch/system/bin/install-recovery.sh.p"));
set_progress(0.036497);
apply_patch("/system/bin/linker", "-",
            f3e9d4d9ee19b20b4b1d5d016016d60d0325df8a, 87708,
            02893127af32009d21dac166fab6898590394d56, package_extract_file("patch/system/bin/linker.p"));
set_progress(0.037043);
apply_patch("/system/etc/NOTICE.html.gz", "-",
            9c2efc7992a09204d53f0de539aa6cc4160f26f6, 111015,
            a62ef03f3b124334a6bdd2b874c71a07858b29fb, package_extract_file("patch/system/etc/NOTICE.html.gz.p"));
set_progress(0.037732);
apply_patch("/system/etc/recovery-resource.dat", "-",
            e25f7d23b80738d55c1d7ce71a7c8e669c4e09cb, 508796,
            783e0a532c0da5c962e00dcb857213c21d0c960b, package_extract_file("patch/system/etc/recovery-resource.dat.p"));
set_progress(0.040895);
apply_patch("/system/etc/security/otacerts.zip", "-",
            066bd2726693dfc18092d1497b7ac23f5bacebd5, 1556,
            bf2c35d621df20150a79bce3994f7f4af85cba30, package_extract_file("patch/system/etc/security/otacerts.zip.p"));
set_progress(0.040904);
apply_patch("/system/framework/apache-xml.jar", "-",
            55854ceb356e4017346f33ac90d351f55c295e6b, 17815,
            837b0b07e3b4b8333b92e4eb07284bd53c7c6811, package_extract_file("patch/system/framework/apache-xml.jar.p"));
set_progress(0.041015);
apply_patch("/system/framework/arm/am.odex", "-",
            7a44dcc68b601242db4a4aac68ae8ded1033b04e, 57832,
            fdf3af6aad4351a7ca97be6160a06fb72c488541, package_extract_file("patch/system/framework/arm/am.odex.p"));
set_progress(0.041374);
apply_patch("/system/framework/arm/android.test.runner.odex", "-",
            e33e988ae267f81b7fc18c14e2da702c753a3b18, 184808,
            86b8900315ee44310a6b1d0c656169ebf3712919, package_extract_file("patch/system/framework/arm/android.test.runner.odex.p"));
set_progress(0.042523);
apply_patch("/system/framework/arm/appops.odex", "-",
            234f056347a1cea2a8b71a6ce5945f70a3c34763, 12776,
            34a1567c377f668451c687fbc34ebbe345f04c57, package_extract_file("patch/system/framework/arm/appops.odex.p"));
set_progress(0.042602);
apply_patch("/system/framework/arm/appwidget.odex", "-",
            f8dc99191454753037a7d82aed8e964156c5517d, 12776,
            57aaa4ae79c6aac37343f19088a792bc9559b4ad, package_extract_file("patch/system/framework/arm/appwidget.odex.p"));
set_progress(0.042682);
apply_patch("/system/framework/arm/bmgr.odex", "-",
            da7e1c12d57ff6243b44de14984448e10b299dc1, 20968,
            fa551ab5624b0bcb1d8b478315a29653a27aab8a, package_extract_file("patch/system/framework/arm/bmgr.odex.p"));
set_progress(0.042812);
apply_patch("/system/framework/arm/boot.art", "-",
            ac43486dabaf9433124ea3146003589987a4521f, 8097792,
            c202d89af3b2db05c7d458a3fb07f6136ee491d1, package_extract_file("patch/system/framework/arm/boot.art.p"));
set_progress(0.093139);
apply_patch("/system/framework/arm/boot.oat", "-",
            a5510384f504f2d72eac4c5aea48eeb41642bfd1, 35086824,
            54063a080924bcefefc0cece7df428d3f4a15a74, package_extract_file("patch/system/framework/arm/boot.oat.p"));
set_progress(0.311200);
apply_patch("/system/framework/arm/bu.odex", "-",
            bb65f0020edb91869efd9b7cb475f991f3d536ca, 12776,
            5e71a8a48f7e8f70c6a3bba015d9d4955122c916, package_extract_file("patch/system/framework/arm/bu.odex.p"));
set_progress(0.311279);
apply_patch("/system/framework/arm/com.android.location.provider.odex",
            "-", 8d712e82b44bc2c53050ffcb956341f7afa07187, 33256,
            1530e9a95e5e528f01ca072ad5ccbe0c1ffcdf16, package_extract_file("patch/system/framework/arm/com.android.location.provider.odex.p"));
set_progress(0.311486);
apply_patch("/system/framework/arm/content.odex", "-",
            4e0da6556d7fbd6d29b29138aafbda51d7628fa1, 25064,
            240a48280614d94df5b53765c556fac533ed469a, package_extract_file("patch/system/framework/arm/content.odex.p"));
set_progress(0.311642);
apply_patch("/system/framework/arm/dpm.odex", "-",
            af3ef94cf4bff3ba7a3ec2009f804f425c3deeec, 12776,
            c65c399f5bdbee1b3fcbb9948a0306b0c7235fc0, package_extract_file("patch/system/framework/arm/dpm.odex.p"));
set_progress(0.311721);
apply_patch("/system/framework/arm/ime.odex", "-",
            b7ba556fcb8c5e67703c1516a06d676cbde161d1, 12776,
            4d0dc5f5aca58f28b77e9f07ab6310ca0e3ea456, package_extract_file("patch/system/framework/arm/ime.odex.p"));
set_progress(0.311801);
apply_patch("/system/framework/arm/input.odex", "-",
            2f6719b4354a20bf912da34d32e77cfefa3f0a17, 16872,
            be3b931cb6b0790ba2fd3d3c7814087370994b90, package_extract_file("patch/system/framework/arm/input.odex.p"));
set_progress(0.311905);
apply_patch("/system/framework/arm/javax.obex.odex", "-",
            04ef3ab5dcb8126523a9f7183cf5476cc62d14cc, 61928,
            a70d70aa1e6477d71107539116c60b43289409e9, package_extract_file("patch/system/framework/arm/javax.obex.odex.p"));
set_progress(0.312290);
apply_patch("/system/framework/arm/media_cmd.odex", "-",
            4b5f0200037a147d8463210256c9606fd95d140d, 16872,
            ee1d923393ec722861cf7d0d2ba533a13fc055a4, package_extract_file("patch/system/framework/arm/media_cmd.odex.p"));
set_progress(0.312395);
apply_patch("/system/framework/arm/monkey.odex", "-",
            0f48750a8d2cc207a20e9d95f09bce90cb79c29d, 115176,
            600bbd32ffecfeaaac56dd9b79a03a71b4483519, package_extract_file("patch/system/framework/arm/monkey.odex.p"));
set_progress(0.313111);
apply_patch("/system/framework/arm/pm.odex", "-",
            7b989a47ce3bba6470a233679e9831715ef44242, 53736,
            6bdd33c104bb353e12b962e7324deae81688e468, package_extract_file("patch/system/framework/arm/pm.odex.p"));
set_progress(0.313445);
apply_patch("/system/framework/arm/services.odex", "-",
            a4ce793915774570f08afc4916dcc8f07dfc3869, 7205352,
            ca053968ae60d00239ab813a21663e8768fa54cc, package_extract_file("patch/system/framework/arm/services.odex.p"));
set_progress(0.358225);
apply_patch("/system/framework/arm/settings.odex", "-",
            763e6585450f89206a0cbb1c4cf67c6ff7a69931, 16872,
            ab848ea3c734cfd37e3df20e7d9791c200328084, package_extract_file("patch/system/framework/arm/settings.odex.p"));
set_progress(0.358330);
apply_patch("/system/framework/arm/svc.odex", "-",
            1cadeea612d41d05d3e66a964af1a171e301f820, 16872,
            546f8d4613bab5037969c2c7bcd9108271fddd69, package_extract_file("patch/system/framework/arm/svc.odex.p"));
set_progress(0.358435);
apply_patch("/system/framework/arm/uiautomator.odex", "-",
            cebc63ad87e0a8568c0f66b2ca065bdce7f0f510, 111080,
            12eabf1f64cd8a1f1b78e27c85e9c0e01a4f28d6, package_extract_file("patch/system/framework/arm/uiautomator.odex.p"));
set_progress(0.359125);
apply_patch("/system/framework/arm/wifi-service.odex", "-",
            786dcb7b2bce0bf808c9ab02011eb12174a4fd10, 610792,
            10c356bd84445064e626dc119bc7ad77c258daa1, package_extract_file("patch/system/framework/arm/wifi-service.odex.p"));
set_progress(0.362921);
apply_patch("/system/framework/arm/wm.odex", "-",
            fc5034d3a1cffbbbcd21e0d54e6251ef076f4c40, 12776,
            21b52979a451f0f8cc136caeaa382adfc4dfa46d, package_extract_file("patch/system/framework/arm/wm.odex.p"));
set_progress(0.363001);
apply_patch("/system/framework/core-libart.jar", "-",
            05155c06ecbdda55ab84e666696d7736eb337d0a, 2991,
            bf49f9ea3026d26d947f34aa7694713207117938, package_extract_file("patch/system/framework/core-libart.jar.p"));
set_progress(0.363019);
apply_patch("/system/framework/ext.jar", "-",
            69f303840feca67b36838bd5714cb8f0ca3f6fa4, 1570568,
            03e4ea721ea0e6e19498858165ef0eb01a0918f2, package_extract_file("patch/system/framework/ext.jar.p"));
set_progress(0.372780);
apply_patch("/system/framework/framework-res.apk", "-",
            8d6213f81189fd951bff82f5917f4800d51cc8fb, 15675447,
            b6e04fa780a50759b2e46cae21ec162b97917a26, package_extract_file("patch/system/framework/framework-res.apk.p"));
set_progress(0.470202);
apply_patch("/system/framework/framework.jar", "-",
            6be632dd8bc9943492ac1173551692432d84f406, 10867,
            17e2cec182f9b923d1335256471dc07ca7643c30, package_extract_file("patch/system/framework/framework.jar.p"));
set_progress(0.470269);
apply_patch("/system/lib/hw/bluetooth.default.so", "-",
            1efcda2cc848cb1204c01d00164d1930d5b5ebe3, 1317480,
            7412f55ff8c38675fa5df9888c4eafcacb1ae217, package_extract_file("patch/system/lib/hw/bluetooth.default.so.p"));
set_progress(0.478457);
apply_patch("/system/lib/libLLVM.so", "-",
            e720d019deb87f8a44d022e1417178f2399008ba, 9661640,
            db6f9ae4cfd1508e7fa0951765ad5b6c22412425, package_extract_file("patch/system/lib/libLLVM.so.p"));
set_progress(0.538503);
apply_patch("/system/lib/libandroid_runtime.so", "-",
            1c98747bb711b216c717e1d72ca5db598da41805, 894648,
            27d0f85aa1bd6136549b891363f1cb5dda948169, package_extract_file("patch/system/lib/libandroid_runtime.so.p"));
set_progress(0.544063);
apply_patch("/system/lib/libandroidfw.so", "-",
            0b563e49becd3cf9c76eb457cafe68b342c54009, 157152,
            1b09df24a5096ccbe3c91d562e53cf55f0f9cfd6, package_extract_file("patch/system/lib/libandroidfw.so.p"));
set_progress(0.545040);
apply_patch("/system/lib/libart.so", "-",
            be204181eea58261a4d8fa250963169eb5e0ec01, 3853041,
            4ac8d480e8cfecc2dfd75f7761385ebf7ea25548, package_extract_file("patch/system/lib/libart.so.p"));
set_progress(0.568986);
apply_patch("/system/lib/libaudiopolicyservice.so", "-",
            f8d5eceaa1f61f4e78b7f97aa3fdebcb0f84f951, 54672,
            df01a88773cd2325356d9419fcad6ddf65bbdc5f, package_extract_file("patch/system/lib/libaudiopolicyservice.so.p"));
set_progress(0.569326);
apply_patch("/system/lib/libc.so", "-",
            70ef75106bc27499023db6275c230e6cdd79aa8e, 502603,
            2b71d65e3f7041a63a8c43dd858a19c1350230ae, package_extract_file("patch/system/lib/libc.so.p"));
set_progress(0.572450);
apply_patch("/system/lib/libhwui.so", "-",
            ec91d8f8aeef76bd33f0366157f46d9975d91f39, 305064,
            c482d355fb507f632a7988daba8ac9de9833ffb8, package_extract_file("patch/system/lib/libhwui.so.p"));
set_progress(0.574346);
apply_patch("/system/lib/libmdnssd.so", "-",
            dc8393c60fdfd61a9b8c00b528221c6e47eacd07, 21684,
            3d680d8a1f9cdcf28312864af464d55f0d0303c7, package_extract_file("patch/system/lib/libmdnssd.so.p"));
set_progress(0.574480);
apply_patch("/system/lib/libstagefright_soft_aacdec.so", "-",
            6eaeb7925ed290969d7d332fac7b09d36bcdb6ff, 247304,
            b4cdc3665c052397741baf87cf316e791fe2cd83, package_extract_file("patch/system/lib/libstagefright_soft_aacdec.so.p"));
set_progress(0.576017);
apply_patch("/system/priv-app/BackupRestoreConfirmation/BackupRestoreConfirmation.apk",
            "-", e8f80cb265e56796f0b38fc138ad808e2363ccb0, 197494,
            1826e7f048c9d124736e1f47797f49a8ba79a2cf, package_extract_file("patch/system/priv-app/BackupRestoreConfirmation/BackupRestoreConfirmation.apk.p"));
set_progress(0.577245);
apply_patch("/system/priv-app/BackupRestoreConfirmation/arm/BackupRestoreConfirmation.odex",
            "-", 56b8ec617bce0029cd5750791bc98f7d5293afcc, 16872,
            88dd2ba59043577660b3188ab4434a8d2592fe3c, package_extract_file("patch/system/priv-app/BackupRestoreConfirmation/arm/BackupRestoreConfirmation.odex.p"));
set_progress(0.577350);
apply_patch("/system/priv-app/CalendarProvider/CalendarProvider.apk",
            "-", 0a3a84545963e8ddc581f0351110a2e522ecb6e2, 111591,
            85daf9c77253827303f1aadd0ce2bda9c7f5eeb8, package_extract_file("patch/system/priv-app/CalendarProvider/CalendarProvider.apk.p"));
set_progress(0.578043);
apply_patch("/system/priv-app/CalendarProvider/arm/CalendarProvider.odex",
            "-", 34dc3cf5700a23d47cc44c8b39be8a2e6e202e35, 393704,
            ba3a515a4b1e2988e1439ee23beddeb2c4d64ea2, package_extract_file("patch/system/priv-app/CalendarProvider/arm/CalendarProvider.odex.p"));
set_progress(0.580490);
apply_patch("/system/priv-app/ClockworkBugReportSender/ClockworkBugReportSender.apk",
            "-", 867c7d5471cc774b4b45a9b150e0af04b97b9ce3, 292897,
            b9d39d3e6529be424a1b3af5ff619c1dddc53972, package_extract_file("patch/system/priv-app/ClockworkBugReportSender/ClockworkBugReportSender.apk.p"));
set_progress(0.582310);
apply_patch("/system/priv-app/ClockworkBugReportSender/arm/ClockworkBugReportSender.odex",
            "-", ce20fed1de20e6da22558b15691d6ef0f70f77aa, 1925608,
            6ae88bd52ad349136f6f7ee13e8d49b4be5da8d9, package_extract_file("patch/system/priv-app/ClockworkBugReportSender/arm/ClockworkBugReportSender.odex.p"));
set_progress(0.594278);
apply_patch("/system/priv-app/ClockworkHomeGoogle/ClockworkHomeGoogle.apk",
            "-", d7497703b91d3d6961c8e5e5f59101e6cf1c6e9b, 19485820,
            bdef904f3aed41ea30ea063aa548d030269c4f5e, package_extract_file("patch/system/priv-app/ClockworkHomeGoogle/ClockworkHomeGoogle.apk.p"));
set_progress(0.715380);
apply_patch("/system/priv-app/ClockworkHomeGoogle/arm/ClockworkHomeGoogle.odex",
            "-", 82a673c4b0660c96b0bbe5dff0116d6efb6b5624, 5349864,
            be16160ff389c3fc9b657abcaf57410604903cc4, package_extract_file("patch/system/priv-app/ClockworkHomeGoogle/arm/ClockworkHomeGoogle.odex.p"));
set_progress(0.748629);
apply_patch("/system/priv-app/ClockworkPackageInstaller/ClockworkPackageInstaller.apk",
            "-", 7c1ccf17f311159790a8e85ddfd326010af88b3e, 143200,
            f4bc79d1687652d13d3ddbf3bc8c2c6718893267, package_extract_file("patch/system/priv-app/ClockworkPackageInstaller/ClockworkPackageInstaller.apk.p"));
set_progress(0.749519);
apply_patch("/system/priv-app/ClockworkPackageInstaller/arm/ClockworkPackageInstaller.odex",
            "-", b77bb79dbbc9004faf8f928dfede5666c0e78657, 1204712,
            0993f85468cbc5af8f03a691a7193f6ca930a400, package_extract_file("patch/system/priv-app/ClockworkPackageInstaller/arm/ClockworkPackageInstaller.odex.p"));
set_progress(0.757006);
apply_patch("/system/priv-app/ClockworkSettings/ClockworkSettings.apk",
            "-", c0d1ddfdbf4c019f861b892e182235761e402fff, 655353,
            be46810549662b697ab1887fab6a1f0017a6e94e, package_extract_file("patch/system/priv-app/ClockworkSettings/ClockworkSettings.apk.p"));
set_progress(0.761079);
apply_patch("/system/priv-app/ClockworkSettings/arm/ClockworkSettings.odex",
            "-", 6f60fa850cf6a48e73ddaf1c097c7fa748b1aeac, 3387880,
            772129663eb5b24dce784717763daea2138db0fc, package_extract_file("patch/system/priv-app/ClockworkSettings/arm/ClockworkSettings.odex.p"));
set_progress(0.782134);
apply_patch("/system/priv-app/ClockworkSetup/ClockworkSetup.apk",
            "-", bacbe95599875f5f84c792ee01fb424435bac1b2, 492803,
            6531cb2fd654a2d22eaa31493bdb84c99af368ba, package_extract_file("patch/system/priv-app/ClockworkSetup/ClockworkSetup.apk.p"));
set_progress(0.785197);
apply_patch("/system/priv-app/ClockworkSetup/arm/ClockworkSetup.odex",
            "-", f4645b25aba5be24a78d0339b5bb8159f44ced79, 2036200,
            c26930c15eb4191481e114d39ac822d8e31ff0d4, package_extract_file("patch/system/priv-app/ClockworkSetup/arm/ClockworkSetup.odex.p"));
set_progress(0.797852);
apply_patch("/system/priv-app/ContactsProvider/ContactsProvider.apk",
            "-", 767928959c103c139d84ecae464de9e41ea18833, 130488,
            0f11b7919fa78306c82baf5d403ef46553c7a1f8, package_extract_file("patch/system/priv-app/ContactsProvider/ContactsProvider.apk.p"));
set_progress(0.798663);
apply_patch("/system/priv-app/ContactsProvider/arm/ContactsProvider.odex",
            "-", d82dee6139c04036215fb2a6dbbe730247fe2b25, 770536,
            b9b3ccc0c6460efafae5f3ee40d9cde10b387c54, package_extract_file("patch/system/priv-app/ContactsProvider/arm/ContactsProvider.odex.p"));
set_progress(0.803452);
apply_patch("/system/priv-app/DefaultContainerService/DefaultContainerService.apk",
            "-", bbac02880a59aa199a51282beb36ba1b3e30cfa4, 12637,
            433e8cc8ac59a495a350e5cd539683f3e3e9d656, package_extract_file("patch/system/priv-app/DefaultContainerService/DefaultContainerService.apk.p"));
set_progress(0.803530);
apply_patch("/system/priv-app/DefaultContainerService/arm/DefaultContainerService.odex",
            "-", 0bd16e30adad275481671635f7f31772af9bf20c, 25064,
            56ec5dd683b75c644235d85ed7e967f5b530e259, package_extract_file("patch/system/priv-app/DefaultContainerService/arm/DefaultContainerService.odex.p"));
set_progress(0.803686);
apply_patch("/system/priv-app/DownloadProvider/DownloadProvider.apk",
            "-", 3a1f6ccb6dfb9660e805519ba05ed9377bd41b8a, 367755,
            d6169e7f2909578dd361b5a8259d0066706afdd6, package_extract_file("patch/system/priv-app/DownloadProvider/DownloadProvider.apk.p"));
set_progress(0.805971);
apply_patch("/system/priv-app/DownloadProvider/arm/DownloadProvider.odex",
            "-", fb2ae24ba88411fd199480d92b364da9b49c203e, 311784,
            3e70427cd590dc0b2fce5a441c8d4a1d9d332849, package_extract_file("patch/system/priv-app/DownloadProvider/arm/DownloadProvider.odex.p"));
set_progress(0.807909);
apply_patch("/system/priv-app/FusedLocation/FusedLocation.apk", "-",
            77644c4b3ecd9c305bb7c045b42ff4c279fb273c, 11678,
            8e37d4645c3bd2a72d3371ed9cc4c2014a436f4b, package_extract_file("patch/system/priv-app/FusedLocation/FusedLocation.apk.p"));
set_progress(0.807982);
apply_patch("/system/priv-app/FusedLocation/arm/FusedLocation.odex",
            "-", d51037a79f5eb3478b5b51a104c2431e78db992d, 16872,
            62a319e639091338e0b4ecc176270ab7aa2abc98, package_extract_file("patch/system/priv-app/FusedLocation/arm/FusedLocation.odex.p"));
set_progress(0.808087);
apply_patch("/system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk",
            "-", f8b05d5ec808e0197da42f993083f71392eaf961, 2471902,
            90fe406e8509f0c016bb39a3c114a6e23eab0108, package_extract_file("patch/system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk.p"));
set_progress(0.823449);
apply_patch("/system/priv-app/GoogleServicesFramework/arm/GoogleServicesFramework.odex",
            "-", bdf6600855bcb5b84def9ed61b32f8cf62b4af3d, 1122792,
            135b76d0f27e3593d7132ff7ebc061b2a5b2c14b, package_extract_file("patch/system/priv-app/GoogleServicesFramework/arm/GoogleServicesFramework.odex.p"));
set_progress(0.830427);
apply_patch("/system/priv-app/InputDevices/InputDevices.apk", "-",
            44ebd46100439f051dc99810dc40ea39cfd6144e, 189806,
            dfeb7f9fc0a46928ff9f5125a56dafa69c36087b, package_extract_file("patch/system/priv-app/InputDevices/InputDevices.apk.p"));
set_progress(0.831607);
apply_patch("/system/priv-app/InputDevices/arm/InputDevices.odex",
            "-", 76dfd7912c484d74a1afcdac84f2d9cf239b4d35, 8680,
            df7084c22f31818d028e9c0c478dbbee051e6cd6, package_extract_file("patch/system/priv-app/InputDevices/arm/InputDevices.odex.p"));
set_progress(0.831661);
apply_patch("/system/priv-app/MediaProvider/MediaProvider.apk", "-",
            2cce1e90018c7e5e6aba9958835c1316b5a4ea4d, 60328,
            3f829cf662ff11a405a06730a71ec8164c39052c, package_extract_file("patch/system/priv-app/MediaProvider/MediaProvider.apk.p"));
set_progress(0.832036);
apply_patch("/system/priv-app/MediaProvider/arm/MediaProvider.odex",
            "-", 704f7be5c5e51c901c52b0dd4fad0724adb8e383, 172520,
            22de46fd469b970177b803ee313632ea5c2d1724, package_extract_file("patch/system/priv-app/MediaProvider/arm/MediaProvider.odex.p"));
set_progress(0.833108);
apply_patch("/system/priv-app/MotoManagerPrebuilt/MotoManagerPrebuilt.apk",
            "-", 3aa1ff569f412d5666aea687aeb94cc7a1b2688a, 7471033,
            14cf5608a9b01fe594beacf46f2d4ab02b13f361, package_extract_file("patch/system/priv-app/MotoManagerPrebuilt/MotoManagerPrebuilt.apk.p"));
set_progress(0.879540);
apply_patch("/system/priv-app/PrebuiltGmsCoreForClockworkWearable/PrebuiltGmsCoreForClockworkWearable.apk",
            "-", 60ceca8a80e709585d92f1220b757955dfb36be7, 18576553,
            70d971588af9143ed72bc9860db870a9587ae8c4, package_extract_file("patch/system/priv-app/PrebuiltGmsCoreForClockworkWearable/PrebuiltGmsCoreForClockworkWearable.apk.p"));
set_progress(0.994991);
apply_patch("/system/priv-app/PrebuiltGmsCoreForClockworkWearable/lib/arm/libconscrypt_gmscore_jni.so",
            "-", cc687ea3bdf2329cc43b22e0d3cf02d2d2b7df1d, 13500,
            5a95630149870ecf0460d62cb99ee2531e36df60, package_extract_file("patch/system/priv-app/PrebuiltGmsCoreForClockworkWearable/lib/arm/libconscrypt_gmscore_jni.so.p"));
set_progress(0.995075);
apply_patch("/system/priv-app/PrebuiltGmsCoreForClockworkWearable/lib/arm/libgmscore.so",
            "-", 1b827361c73bab73f073790a53889728db1baf9a, 1630700,
            608a55e6bc8661249d25610adcffc1355f02eb10, package_extract_file("patch/system/priv-app/PrebuiltGmsCoreForClockworkWearable/lib/arm/libgmscore.so.p"));
set_progress(1.005209);
apply_patch("/system/priv-app/SettingsProvider/SettingsProvider.apk",
            "-", 93d98a30e5e989eb339e2d14094b07f888d148cb, 100029,
            3d11c2b7556671a75305d564e5517c70191b61d0, package_extract_file("patch/system/priv-app/SettingsProvider/SettingsProvider.apk.p"));
set_progress(1.005831);
apply_patch("/system/priv-app/SettingsProvider/arm/SettingsProvider.odex",
            "-", 03e71f8cec3b7200f20445224d6469448db3d73f, 90600,
            0ebc8189923387867dbef09bd91bc8e8e4cb527d, package_extract_file("patch/system/priv-app/SettingsProvider/arm/SettingsProvider.odex.p"));
set_progress(1.006394);
apply_patch("/system/priv-app/Shell/Shell.apk", "-",
            0ad4c6cb7144c19e00e5d8a7a7c50e6cf7780b16, 55905,
            422e9817ed25b6557fa19193e454b91a19aefb02, package_extract_file("patch/system/priv-app/Shell/Shell.apk.p"));
set_progress(1.006742);
apply_patch("/system/priv-app/Shell/arm/Shell.odex", "-",
            40fc2c46264254773a3226fd310e537574658ce2, 258536,
            312aec8a82eed4ecc8c351a02757c2e8f9cc2abf, package_extract_file("patch/system/priv-app/Shell/arm/Shell.odex.p"));
set_progress(1.008348);
ui_print("Patching boot image...");
apply_patch("EMMC:/dev/block/mmcblk0p9:4610048:74f1a73c9f5f45aa1cf4ec03bb86315b4d67f846:4610048:107ded5790d26f1a3ae7b25bf9bbaa464a9a4218",
            "-", 107ded5790d26f1a3ae7b25bf9bbaa464a9a4218, 4610048,
            74f1a73c9f5f45aa1cf4ec03bb86315b4d67f846, package_extract_file("patch/boot.img.p"));
set_progress(1.036999);
show_progress(0.100000, 10);
ui_print("Unpacking new system files...");
package_extract_dir("system", "/system");
ui_print("Symlinks and permissions...");
set_metadata_recursive("/system", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/bin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/ClockworkProxy", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:clockwork_proxy_exec:s0");
set_metadata("/system/bin/adspd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:adspd_exec:s0");
set_metadata("/system/bin/app_process32", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:zygote_exec:s0");
set_metadata("/system/bin/bootanimation", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:bootanim_exec:s0");
set_metadata("/system/bin/clatd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:clatd_exec:s0");
set_metadata("/system/bin/debuggerd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
set_metadata("/system/bin/dex2oat", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dex2oat_exec:s0");
set_metadata("/system/bin/dhcpcd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dhcp_exec:s0");
set_metadata("/system/bin/dnsmasq", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dnsmasq_exec:s0");
set_metadata("/system/bin/dumpstate", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dumpstate_exec:s0");
set_metadata("/system/bin/init.mmi.boot.sh", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mmi-boot-sh_exec:s0");
set_metadata("/system/bin/install-recovery.sh", "uid", 0, "gid", 0, "mode", 0750, "capabilities", 0x0, "selabel", "u:object_r:install_recovery_exec:s0");
set_metadata("/system/bin/installd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:installd_exec:s0");
set_metadata("/system/bin/keystore", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:keystore_exec:s0");
set_metadata("/system/bin/lmkd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:lmkd_exec:s0");
set_metadata("/system/bin/logd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:logd_exec:s0");
set_metadata("/system/bin/m4setup", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:m4setup_exec:s0");
set_metadata("/system/bin/mbm_spy", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mbm_spy_exec:s0");
set_metadata("/system/bin/mediaserver", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mediaserver_exec:s0");
set_metadata("/system/bin/mtpd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mtp_exec:s0");
set_metadata("/system/bin/netcfg", "uid", 0, "gid", 3003, "mode", 02750, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/netd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:netd_exec:s0");
set_metadata("/system/bin/patchoat", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dex2oat_exec:s0");
set_metadata("/system/bin/ping", "uid", 0, "gid", 0, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/pppd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:ppp_exec:s0");
set_metadata("/system/bin/pvrsrvctl_SGX530_125", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:pvrsrv_exec:s0");
set_metadata("/system/bin/racoon", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:racoon_exec:s0");
set_metadata("/system/bin/run-as", "uid", 0, "gid", 2000, "mode", 0750, "capabilities", 0xc0, "selabel", "u:object_r:runas_exec:s0");
set_metadata("/system/bin/sdcard", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:sdcardd_exec:s0");
set_metadata("/system/bin/servicemanager", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:servicemanager_exec:s0");
set_metadata("/system/bin/setup_fs", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:setup_fs_exec:s0");
set_metadata("/system/bin/sh", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:shell_exec:s0");
set_metadata("/system/bin/surfaceflinger", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:surfaceflinger_exec:s0");
set_metadata("/system/bin/touch_ramoops.sh", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:ramconsole-touch_exec:s0");
set_metadata("/system/bin/uim-sysfs", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:uim_exec:s0");
set_metadata("/system/bin/uncrypt", "uid", 0, "gid", 0, "mode", 0750, "capabilities", 0x0, "selabel", "u:object_r:uncrypt_exec:s0");
set_metadata("/system/bin/vdc", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:vdc_exec:s0");
set_metadata("/system/bin/vold", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:vold_exec:s0");
set_metadata("/system/etc/dhcpcd/dhcpcd-run-hooks", "uid", 1014, "gid", 2000, "mode", 0550, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/etc/ppp", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0555, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/recovery-from-boot.p", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0);
set_metadata_recursive("/system/vendor", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/vendor/lib/libbt-vendor.so", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/vendor/lib/mediadrm/libdrmclearkeyplugin.so", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/xbin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
ui_print("Patching remaining system files...");
apply_patch("/system/build.prop", "-",
            1a1a07934851d9b7c151f1b70a0dfe3edf64fb4a, 1934,
            1c50ae35fd7e07e2ae10611276d44eb3cfc96624, package_extract_file("patch/system/build.prop.p"));
set_metadata("/system/build.prop", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0);
unmount("/system");
