Wie funktioniert (F)OTA aus technischer Sicht?

L

Lopder

Ambitioniertes Mitglied
1
Hallo

Weiß jemand von euch wie ein OTA-update funktioniert ? Jetzt nicht aus Benutzer sicht. :).
Mein Frage ist aus technischer Sicht. Also da wird irgend eine datei runter geladen und installiert. Aber wie ?
Weil es wird ja da auch was am System geupdatet oder nicht ? Das ist ja mehr als ein App update?
Wer installiert das ? Der Rom Manager ? Und warum kann eine App das System nicht verändern ?

Grüße
 
Hmm ehrlich gesagt nö :( da steht nur blabla und es wird mit Fachwörter herumgeschmissen ...

Mich intressiert was passiert konkret bei einem Android-Handy ?
Ist das ein Funktion von Android oder vom Handy ?

------------------
Nach dem Aufruf einer z. B. "Updatedienst" genannten Funktion wird die neue Firmware über die Luftschnittstelle übertragen und anschließend installiert. Dabei kann es notwendig sein, das Handset neu zu starten oder die SIM-Karte neu anzumelden.
------------------

Wie wird der Aufruf erzeugt ?
Wer installiert ? Service ?
Wieso kann was installiert werden was sonst nicht installiert werden kann ?

Und vor allem was wird geupdatet ? das gesammt system ? gibt es delta- updates ?
Da gibts leider auch schon unterschiedliche Aussagen. Einige sagen ja andere nein. Aber ich weiß nicht wo ich suchen soll, weil das niergends wo von Grund auf mal erklärt wird ... :bored:
 
Ich kann es jetzt nur am Beispiel des HTC Desire etwas genauer beschreiben, aber das dürfte bei anderen ähnlich sein.

Das Handy überprüft über einen Webservice, ob ein OTA-Update bereitsteht. Dazu werden einige Daten (aktuelle Firmware-Version, Kennung des Handy-Branding (auch freie Geräte haben hier eine Kennung), Modell etc) übertragen und die Antwort ausgewertet (in dieser ist dann auch eine URL für den Download enthalten).

Das Update wird dann herunter geladen und (hier bin ich nicht 100% sicher, aber auf Grund der Größe kann ich mir kaum etwas anderes vorstellen) auf SD-Karte zwischengespeichert und das Handy im Recovery-Modus neu gestartet.

Dieser erkennt dann das vorhanden sein eines Updates und startet den Flashvorgang. Zunächst wird geprüft, ob das Update auch für das Gerät geeignet ist, ob genug freier Platz vorhanden ist. In dem Update sind allerdings nicht vollständige Dateien enthalten, sondern nur Differenzbilder (die mittels imgdiff oder bsdiff erzeugt wurden). Für jede zu ändernde Datei wird dann per Hashwert (ich vermute MD5) geprüft, ob die vorhandene Datei die richtige ist (oder bereits gepatcht wurde). Erst wenn für alle Dateien diese Prüfung erfolgreich verlaufen ist, werden die Differenzbilder angewendet und die Dateien ersetzt.

Manche Dateien werden auch einfach komplett ersetzt oder gelöscht (je nachdem welche Änderung benötigt wird). Danach noch die Dateiberechtigungen setzen und evtl. Bootloader/HBOOT, Baseband/Radio flashen.

Ist der Flash erfolgreich, bootet das Handy neu und du das Update wurde installiert/geflasht.



Als Beispiel hier mal das Updater-Skript eines OTA-Updates vom Desire, wo du die Abläufe innerhalb des Recoveries nachvollziehen kannst.
Code:
# Script Version: 0.9

mount("MTD", "system", "/system");
mount("MTD", "userdata", "/data");
assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "htc_wwe/htc_bravo/bravo/bravo:2.2/FRF91/226611:user/release-keys" ||
       file_getprop("/system/build.prop", "ro.build.fingerprint") == "htc_wwe/htc_bravo/bravo/bravo:2.2/FRF91/263770:user/release-keys");
assert(getprop("ro.product.device") == "bravo" ||
       getprop("ro.build.product") == "bravo");

# Start checking data partition

ui_print("Checking data partition free space...");
mount("MTD", "userdata", "/data");
package_extract_dir("notifyapp", "/data/app");
package_extract_file("checkspace", "/tmp/checkspace");
set_perm(0, 0, 06755, "/tmp/checkspace");
run_program("/tmp/checkspace", "-f", "/data", "26214400", "skip", "FOTAERRORMESSAGES");
delete("/data/app/HtcFotaNotify.apk");
delete_recursive("/data/data/com.htc.fotafailnotify/");

# End checking data partition

ui_print("Copying fotaBoot to /data/system for customize reload...");
mount("MTD", "userdata", "/data");
package_extract_file("fotaBoot", "/data/system/fotaBoot");
ui_print("Verifying current system...");
show_progress(0.100000, 0);
assert(apply_patch_check("/system/app/AccountSyncManager.apk", "7e807f5cfcf0846b3912f532d0b06038e1df75c5", "4d3922776d89af26769536fcbdb708ae48ec5d17"));
set_progress(0.001145);
assert(apply_patch_check("/system/app/AccountSyncManager.odex", "22f2afa71cea158214d95e21c034a7c31cf644dc", "076d6dc7b8b2cb2b6d8d2ff10d3d925d7d2f7923"));
set_progress(0.001530);
assert(apply_patch_check("/system/app/AppSharing.apk", "7438fa9de36d9ed6dff08b9cb916e7f4fa6ca58c", "d58d5573dd23deb8809766d0e56e0a7b3f91b296"));
set_progress(0.002781);
assert(apply_patch_check("/system/app/AppSharing.odex", "d263953be3c8ab369bb53176d756f505f20cdc3e", "f47338c1d2a378781825224e43bee5a181cda150"));
set_progress(0.003012);
assert(apply_patch_check("/system/app/ApplicationsProvider.odex", "cd3e29a7c8d3813ec9b956beee0fab8e9f684c1f", "cb2e09ada6ad7d15110959b540936f589bbf4410"));
set_progress(0.003148);
assert(apply_patch_check("/system/app/Bluetooth.apk", "644401cb4a35a40eb5b465fe6229dfad918bae5c", "9a21334cc33086fe5d651a15aad39e45d31692a0"));
set_progress(0.004282);
assert(apply_patch_check("/system/app/Bluetooth.odex", "02333aaec0602a022ddcf54755dcaeed2fe04e9f", "eedf6cb7280e239e358d1086d0a4117d17608414"));
set_progress(0.005750);
assert(apply_patch_check("/system/app/BrcmBluetoothServices.odex", "1cf6e544f092e962766c935d76f61381f7f3bdcc", "163b6926068f4d671ba0373de964cf959de6957b"));
set_progress(0.005801);
assert(apply_patch_check("/system/app/Browser.apk", "b4d8b21214dc6ab611e0c92ed3e6c0ba4db77f58", "7483b1286a4aeca99e07765350a126b327d8791c"));
set_progress(0.010744);
assert(apply_patch_check("/system/app/Browser.odex", "1d088dde86ea04bffd5384361a0c2d7e0b5a8f4d", "fcd083534017142f348bdfe98e0adb3e682074c7"));
set_progress(0.015465);
assert(apply_patch_check("/system/app/Calculator.odex", "79b46a0ee2ce266b8e31e9088035cba3dd5e12d3", "84c1ffc2c1d33293f38ba884dcc6990f0ac8f484"));
set_progress(0.016128);
assert(apply_patch_check("/system/app/Calendar.apk", "e3e9df845a25678de63773f160d3fe152e4857ce", "9bbd119b1a25c3d5efa2695dda28931746a41347"));
set_progress(0.021485);
assert(apply_patch_check("/system/app/Calendar.odex", "d8bdf0b68f28c4ee698f747b3b206a400d3977b4", "44a88e64d1e26c6322475243225ed283ec52d6c3"));
set_progress(0.026117);
assert(apply_patch_check("/system/app/CalendarProvider.odex", "943e571ed40f4b314331d2eb3f9a4fa4cd3a0406", "83c01aac4563b20df789b775319e9cb17dcc3524"));
set_progress(0.031786);
assert(apply_patch_check("/system/app/CertInstaller.apk", "edd42d84caf5bd25a676d85507bf3b7c5b940fd2", "e614c2780aafeb0dc61564ba0c91460838261c71"));
set_progress(0.032116);
assert(apply_patch_check("/system/app/CertInstaller.odex", "d0bece9a78efcc5549b729fda2b6436005fe40f6", "18f1720c37d5b9bda8effcdb990128e532867221"));
set_progress(0.032364);
assert(apply_patch_check("/system/app/CheckinProvider.apk", "00904576ac1d276d67137175b84c8c8e41850e2e", "481ad1de7c5f31469b6ac3b0e5be8b72c6eb80e6"));
set_progress(0.032393);
assert(apply_patch_check("/system/app/CheckinProvider.odex", "9dfb7d7eb4bd6a39de092c85316dbf9f4e5ae17a", "1f266194f5aeb44372eef3087b88b63a1cd85abb"));
set_progress(0.033001);
assert(apply_patch_check("/system/app/Clicker.odex", "7dea1d819e251b9bed5ad91ddeef5b33593df244", "8f882b28a0b785d3c13aa327a841f02ee545bbee"));
set_progress(0.033563);
assert(apply_patch_check("/system/app/ContactsProvider.apk", "a04643e71a85e13b74a2bb714c22c04608b52444", "ee65d3068ec6167e88ccbd9a64ea45856d5da3ab"));
set_progress(0.033767);
assert(apply_patch_check("/system/app/ContactsProvider.odex", "1e4b4ca83cce50c903cdd61abcec99c393efa2c5", "f37c163f8ff9961e3b4b32b768796dad7f43b6cb"));
set_progress(0.037787);
assert(apply_patch_check("/system/app/CustomizationSettingsProvider.odex", "670836bd1f10e19c8cd231301dcddda94bc8c034", "25844c45edc1f16e9af40bc1145cac3fdd58eb0e"));
set_progress(0.037834);
assert(apply_patch_check("/system/app/CustomizationSetup.odex", "6890f7906e64d881b8da5227ceab3bd47361b6d0", "7f86184b56fe2478e45f02a56d4e3ed88999850c"));
set_progress(0.038347);
assert(apply_patch_check("/system/app/DCSImpl.odex", "1068a2a84020e381b21f99e3eb6272fc3c46b411", "fde322c9254d5ab06cb840cf1030100ca2528a7e"));
set_progress(0.038488);
assert(apply_patch_check("/system/app/DCSStock.odex", "e25a96171fdcc200d31bf0d85590f9f171c9cbd9", "c5a232b2dc0de6fedbca4c9f06028497cf5fc343"));
set_progress(0.038736);
assert(apply_patch_check("/system/app/DCSUtility.odex", "e56ad4ab924d58e13d8bb142c6bde04ab4f42d08", "85c79cb6bd14bac69850b5d92cc195736840ca75"));
set_progress(0.038903);
assert(apply_patch_check("/system/app/DebugTool.odex", "71151cfb519ab34f5499eeeb8baef24ae8265d0b", "730f914aa22fb3044c78902a84d14cbb3b08f390"));
set_progress(0.039022);
assert(apply_patch_check("/system/app/DefaultContainerService.odex", "545e38a3b1c1320e8336dc25b5af691fdc88d29a", "365a64d539b860a6860338e313c02e342731590b"));
set_progress(0.039105);
assert(apply_patch_check("/system/app/DownloadProvider.apk", "d31826810a56bf26950f8ffe8ce41b9911ee628b", "7425d2d9c07e0b8409c4cd8d7ece2d1eccd830e2"));
set_progress(0.039447);
assert(apply_patch_check("/system/app/DownloadProvider.odex", "38aa63928dda7358bef62267354caa57518763f5", "78df092c63b3bd62034ae456488502343b65c1ab"));
set_progress(0.040156);
assert(apply_patch_check("/system/app/DrmProvider.odex", "3ae8dcf1e13f22ee2c39760480d4307d5b4597e5", "473d37ed17b8ce6c29faabac8bae9ddaddcee5e3"));
set_progress(0.040501);
assert(apply_patch_check("/system/app/Facebook.apk", "0d3228f8e366757129ef9a1dd8e268e1d6bdb0e6", "7e13aab7c512bd25c5c88386917ce9a5be307e4f"));
set_progress(0.047377);
assert(apply_patch_check("/system/app/Facebook.odex", "1372baf553775838dd0359dcdfcfc6b8f55d7a7c", "ce9f717078f74a991bed763f83f19cb6509d2dc3"));
set_progress(0.053346);
assert(apply_patch_check("/system/app/FieldTest.odex", "db90cdfd5899d67f3649e70eab817ea8f61159ea", "6758f602aa6a8db9138db1bcb0b7d35202bc1355"));
set_progress(0.053936);
assert(apply_patch_check("/system/app/FilePicker.apk", "3a7d71c537363b1e38c3f61df78c10b1fe294bc0", "fc78428af39458a5448f333c4ee1bffd1bc77907"));
set_progress(0.054152);
assert(apply_patch_check("/system/app/FilePicker.odex", "f5be3c62366d1e3ab0a8a1e297564daa44a8f3ea", "b29d1784744db0c625f0468899f145d378ff03e3"));
set_progress(0.054178);
assert(apply_patch_check("/system/app/Flashlight.apk", "a1b70e721df7bdd8c4fb81c900decf49864a5d29", "28386e5ea5a8fd16c1d78f5ef54ed93322e597ed"));
set_progress(0.058634);
assert(apply_patch_check("/system/app/Flashlight.odex", "4b1b1876c1e78d2757947646a0f3c8637636e6e4", "0655aa355fa0b6f609e63f73961259d6f9442a0c"));
set_progress(0.058777);
assert(apply_patch_check("/system/app/Flickr.apk", "60d284ece402ad14f9998d45bc35ef184b2425a8", "1209ba1708256e59fe1b8d4f416276b871e7ae08"));
set_progress(0.059559);
assert(apply_patch_check("/system/app/Flickr.odex", "06fb60efc9ff59c948e35242792bcd47baab4bc1", "1b8c2202f8ce98c1961a5a2e7db63f00cfe0618f"));
set_progress(0.060812);
assert(apply_patch_check("/system/app/FriendStream.apk", "8692a695d5f7ccef57ca6d35cf0b9bebbb126a52", "e5d2e4b6f22a6c9dc06dd2b961d8fe8ba24fb2e2"));
set_progress(0.061340);
assert(apply_patch_check("/system/app/FriendStream.odex", "748ddf31846824378a399373cb7706542f29e8b8", "cd08cbd40f5745c5750362be3fe9cce8fcd195cc"));
set_progress(0.061957);
assert(apply_patch_check("/system/app/GenieWidget.odex", "e0ffc773b4b753874cfd7d9d37f4e9c1fc8c49b5", "bb03be1a69cca5624bdf18bff8edabbf8629668f"));
set_progress(0.064835);
assert(apply_patch_check("/system/app/Gmail.odex", "aa5160f44177629bfa9a649365412843edad7ba0", "bb64a8fd6d2a3b93bbcadd9835c4eaf72bf216bd"));
set_progress(0.069136);
assert(apply_patch_check("/system/app/GoogleCalendarSyncAdapter.odex", "cebe8780bfcdc8a82ad99bb22002fe1c951c24b8", "5711b8979e8a69755254a00de8ee2364121e2417"));
set_progress(0.070675);
assert(apply_patch_check("/system/app/GoogleContactsSyncAdapter.odex", "a04fdbea1283544de78a40b68eae30c393e776f0", "4a4c65a3118d517a38f1651e7a5cd67013d04e63"));
set_progress(0.072467);
assert(apply_patch_check("/system/app/GoogleFeedback.odex", "389fd0ff7800954a01d842c254491a77fa2ff0be", "7024ea2fd4d0025dfb8520cc3e4ad235a245d90c"));
set_progress(0.072993);
assert(apply_patch_check("/system/app/GooglePartnerSetup.odex", "b4992f79ce3f60af2e7faf7ebe9f2215bfed73df", "6fe5df839d153dc6dfe918a30f18cd3581a3ebfd"));
set_progress(0.073058);
assert(apply_patch_check("/system/app/GoogleQuickSearchBox.odex", "d9fd14204876281ec383e3ece4415d40de705875", "b24552009d6f19ef0232f951f4afaebaad894bb1"));
set_progress(0.075224);
assert(apply_patch_check("/system/app/GoogleServicesFramework.odex", "bf45f449f76066fb6cad891ffae962fc32587826", "99992563f0764604d17e1e41ee8c59dc48b4066c"));
set_progress(0.082781);
assert(apply_patch_check("/system/app/HTCAlbum.apk", "a4a09534b3b473d3566c4d6fb099666420d73d09", "bf2bf8abfc357d4d49e710e1b97051200e93352d"));
set_progress(0.086211);
assert(apply_patch_check("/system/app/HTCAlbum.odex", "0ef63a45cc01f153b88f76361f9503dc3f6ab21c", "94a6168c3bb32483c123779cd53a45d5ab21620e"));
set_progress(0.094343);
assert(apply_patch_check("/system/app/HTCCamera.apk", "f0b8afa8199ef85923faf81308b3d677f57ec892", "221832ce1ddf147f7e2aeb83efde928274af26e2"));
set_progress(0.098105);
assert(apply_patch_check("/system/app/HTCCamera.odex", "007d734249de79b6fdcfda4bb6aba4255d10aa7d", "1497c8b3bf2369d8c4f55213827da8ace7e3f2be"));
set_progress(0.102179);
assert(apply_patch_check("/system/app/HTCSetupWizard.apk", "b6b6d6b121178832fc41d1983d6bcba44758c184", "6310d837e1115d2796d64ea8823806fed8fed095"));
set_progress(0.110947);
assert(apply_patch_check("/system/app/HTCSetupWizard.odex", "6b208152a1f30c93ed12415606f031b14da6e7ab", "5e8afa53d0129a42f550beaf1583e8fe68399841"));
set_progress(0.112182);
assert(apply_patch_check("/system/app/HTC_IME.apk", "ef030cb3898dc1ee56dd2cf1eb07843dd845dcb5", "88507030ee0483de6bb00f3319c3d80d946eed2c"));
set_progress(0.162428);
assert(apply_patch_check("/system/app/HTC_IME.odex", "ddee8f428cd45b0ca2d4714b8427ea9774cca66e", "49668494d377e32f1412839b9d290790674e4ff5"));
set_progress(0.168221);
assert(apply_patch_check("/system/app/HTMLViewer.odex", "f64ea700e3fba4e9345188b2bbd0ae51b125cd04", "f9c3e287f5e3db43fc6c15052180ea038a6afa07"));
set_progress(0.168268);
assert(apply_patch_check("/system/app/HtcAddProgramWidget.apk", "ea9768d6c19a8b9e7ad047f94bb9d49dc7efe0fe", "f38f86e554e3372ebea2bfe5f7d916337f571a63"));
set_progress(0.168789);
assert(apply_patch_check("/system/app/HtcAddProgramWidget.odex", "a3536e2460c5cd99c4b2c732d61b66863f580f4e", "5f4d49c916f37653939518de704f805acddb8c31"));
set_progress(0.169394);
assert(apply_patch_check("/system/app/HtcCalculatorWidget.odex", "2eca3142c548e9ba2077d8da19d176bb87e7c0bd", "569a75218ff215a33f1d160832ef7be89fa394f9"));
set_progress(0.170155);
assert(apply_patch_check("/system/app/HtcClockWidget.apk", "568b79c20b5e510f6b0bc08ed01c38e9aff8196f", "2da53b6a8d7e343023030ccbf6249e682b5cb432"));
set_progress(0.177213);
assert(apply_patch_check("/system/app/HtcClockWidget.odex", "4c680a0cfe533593058d3caf020ed2825014c99a", "f22184ba467269bc82646d236007533a400ca2c3"));
set_progress(0.178950);
assert(apply_patch_check("/system/app/HtcContacts.apk", "3abd5ca6d18a7f887df03971bcf7b9bcd98e4ddc", "98a6b6ac68f385f6a38cc72a759e007c278a9354"));
set_progress(0.190660);
assert(apply_patch_check("/system/app/HtcContacts.odex", "419aaf96a810df61cb77ef64bcebdb90551adc09", "3d60e9f0d92eaf1e67ce970bc64ecd28264da312"));
set_progress(0.201816);
assert(apply_patch_check("/system/app/HtcCopyright.odex", "e440c515470908e67dc2f99470e88d1914dba5f6", "df9a5733a64319d881ffb361bfd5ebe69e9ef37f"));
set_progress(0.201833);
assert(apply_patch_check("/system/app/HtcDialer.apk", "487d5423f7b1b0a96337b27cd7b4284a546d3ea3", "8241068681b9aaecd938f17170dbeb916ec9c942"));
set_progress(0.210437);
assert(apply_patch_check("/system/app/HtcDialer.odex", "b80706090575c945e1b75efba319809b06a3a47d", "2f310755f731914aa67f65c04f758ce58c40789a"));
set_progress(0.214005);
assert(apply_patch_check("/system/app/HtcFMRadio.apk", "2859332b580d62edfea5e4da56d7574ef949e637", "0925141e2179ce562d5a67190e1dbc7ff0333a7f"));
set_progress(0.220771);
assert(apply_patch_check("/system/app/HtcFMRadio.odex", "6311716080b6474b4ec33d8e2ef5e4b7993ff75b", "d76da0fa6d798c38f1e24bad867e54b75fa303d4"));
set_progress(0.222980);
assert(apply_patch_check("/system/app/HtcFacebook.apk", "95b83dcdaf8d4abae0622ed35567c338e010f652", "ed5e2df0023a16c652a5f5a5cd6f77c61514083a"));
set_progress(0.224482);
assert(apply_patch_check("/system/app/HtcFacebook.odex", "4d5f3aa49a67d80b7adb2bb9f680e1e258c5d609", "8d20c3411ef59ab8d1d63be7ede17ea8db80d7c7"));
set_progress(0.226202);
assert(apply_patch_check("/system/app/HtcFootprints.apk", "4da8614020791a94c1c70a9f3472dd00f51927d9", "a41b4f0f381eef95b95b35488c2a1c48ea02c1fc"));
set_progress(0.232317);
assert(apply_patch_check("/system/app/HtcFootprints.odex", "b1d2d625ac0d53b86779b4949d502154da5b355a", "17722c27ae608e21d75d646608ead42a628ee1a5"));
set_progress(0.235897);
assert(apply_patch_check("/system/app/HtcFootprintsWidget.odex", "5d41ffb41ead78169ee92388877706501ca4c84b", "df5b4a313ea209df1d6af11a4ebab528be230b63"));
set_progress(0.237367);
assert(apply_patch_check("/system/app/HtcLocationPicker.odex", "49c466646ef36d4c00a077a4be0d714e426216fd", "e3c68f8a8575485e98fd6f89d7251cbcca5e3af0"));
set_progress(0.237880);
assert(apply_patch_check("/system/app/HtcLocationService.odex", "cedd8b2d11abaf1f56581c181f4ed9cdc0fe56d8", "6c1f5cc70fdc6aff0d006955efd9255142b022b2"));
set_progress(0.238637);
assert(apply_patch_check("/system/app/HtcLockScreen.apk", "0d39274108d11f2ed5a61746ebcde111768ac0a8", "b456ced1b1ee58edff5c9a07849fb7cd63c6a9e0"));
set_progress(0.243620);
assert(apply_patch_check("/system/app/HtcLockScreen.odex", "940cec5fba422ecbcd7eaf69593297b81a703ce3", "fd8573c01a0fcc5f8b7f1f1e7dfef1fcb4656833"));
set_progress(0.244386);
assert(apply_patch_check("/system/app/HtcMessageUploader.odex", "abc2de5d361c58ebf526aad1b674368b129fc039", "46768e2cf1d6f0a25bdf3412de3fca609f90a693"));
set_progress(0.244546);
assert(apply_patch_check("/system/app/HtcMusic.apk", "1c6763f8042025e479ca4be8e418f7936b7d65f4", "41485d0d6909eecc7cd370d70e133556239da958"));
set_progress(0.249901);
assert(apply_patch_check("/system/app/HtcMusic.odex", "18d0c7de52d822d0839587eeb45f5307811b7bb1", "cca528919efe3b1c6aa896e954bc22737b05915d"));
set_progress(0.254622);
assert(apply_patch_check("/system/app/HtcPhotoWidget.apk", "618fedb9863d53af3777c8f574bd5986329a9eea", "3c9cfd859c82da31383c26db268ade297b33488f"));
set_progress(0.261121);
assert(apply_patch_check("/system/app/HtcPhotoWidget.odex", "e4c890c6118f9feada1b67e91e9e60d0bccfc8e6", "adc1a5531812299805579cac87a9f00ec1781465"));
set_progress(0.261784);
assert(apply_patch_check("/system/app/HtcProfilesWidget.odex", "a077c6e749f95d9e718dcddc90c302269c4cccb2", "6f6b49e4dd27dccf1470abc5d34c970451a2eb9e"));
set_progress(0.261893);
assert(apply_patch_check("/system/app/HtcRingtoneTrimmer.apk", "e17a495445a7164fe12646dfd1f53b58b6185780", "438a3a4640dcc3b4c05e3b3cbb96aca2b715bfcc"));
set_progress(0.263330);
assert(apply_patch_check("/system/app/HtcRingtoneTrimmer.odex", "090bb6bb5b9a68ea31deb61d2c3e3587e0734e7a", "9bd39059d7a51f3e7145c69eb0446258364d2890"));
set_progress(0.263955);
assert(apply_patch_check("/system/app/HtcRingtoneWidget.odex", "ae34355b04a8a439e254f1425556fbdb323b0ed6", "be7b1f16e3e33ecd49db7a596e8478cc9bc16d72"));
set_progress(0.264032);
assert(apply_patch_check("/system/app/HtcSettingsProvider.odex", "73b8dde98c04cddee05582434f41c100bcf4393c", "11374e987dafb834c5c379b2bde2fbb23506ddba"));
set_progress(0.264123);
assert(apply_patch_check("/system/app/HtcSoundRecorder.apk", "a0158471c1df4ebf0dbc4d13075f6b36f26f4ed4", "e0279d51308ee50cf980ba139dd3ddbcad9f7c87"));
set_progress(0.267268);
assert(apply_patch_check("/system/app/HtcSoundRecorder.odex", "200018e80416b953d68f91d45c2ba5657d16de26", "a6e7f6eaa150760403aee0d72377da7707822755"));
set_progress(0.269083);
assert(apply_patch_check("/system/app/HtcStreamPlayer.odex", "589bf6fa9f37b4168b09a95d24e93c4dcb579359", "125a8d37dca69a1cba3d57695708737feeec00c8"));
set_progress(0.269980);
assert(apply_patch_check("/system/app/HtcSyncwidget.odex", "551b27f17c91bf562dd10aca3d9888d36033bc27", "11b9a07b5a5b8cbdceb054f7e954d9b5861b8f13"));
set_progress(0.270079);
assert(apply_patch_check("/system/app/HtcTwitter.apk", "fbfefd02b7f9cab41a4a2630acb555ae4e69f181", "a146aa36893f93c15f9c183a5ca4f3ab6a5ab366"));
set_progress(0.273206);
assert(apply_patch_check("/system/app/HtcTwitter.odex", "91a4a6c9105554bfe828abf54291cb64b13db641", "64ae8d94afd694b8730c2b27b4508b3b5d29a5b1"));
set_progress(0.276311);
assert(apply_patch_check("/system/app/HtcWeatherWallpaper.odex", "557ddea9dbe50e0f9472da34a127c5f558723f1d", "5754bcfe669b6db92f8bd9e67e44a85f43e96692"));
set_progress(0.277237);
assert(apply_patch_check("/system/app/LiveWallpapers.odex", "2912e4dd9da2d72a7a16bd985e48fdd9f4dee012", "dc7f9193272460f58db6795a517adddf3b08657e"));
set_progress(0.277678);
assert(apply_patch_check("/system/app/LiveWallpapersPicker.odex", "6c06fd4d705dc90b502acad2a15ee30f140dcb8a", "7fb165b5fc836b2875c9e0ce7950e93c901ee90f"));
set_progress(0.277807);
assert(apply_patch_check("/system/app/MagicSmokeWallpapers.odex", "56f2ee3d992cbe17392df3d4a46ce1f97ba3cbd0", "426a1bcccd598195e4e3604b6f3651c12f83b06b"));
set_progress(0.277961);
assert(apply_patch_check("/system/app/Mail.apk", "e023e696fd4c11b072c7193d937ab612b598bd97", "258219b37bc3ca5d73373663e4f99af68f7e49e2"));
set_progress(0.288876);
assert(apply_patch_check("/system/app/Mail.odex", "89bd7924816561cbf805dc7afb77903003ea842b", "cd44316fe0590aa4723d2a8599b16cbe963aed41"));
set_progress(0.306487);
assert(apply_patch_check("/system/app/MarketUpdater.odex", "dc4ea2678084ba4b1bcd1570ae425a445e44a2c1", "8308f75ee3e765db78f45f7e160b2f09dea4a96e"));
set_progress(0.306507);
assert(apply_patch_check("/system/app/MediaProvider.odex", "27f4699cee64ddb5692220bb865e70547916b444", "f69c9029031627196f0b3e689d226cf3bbebfc79"));
set_progress(0.307186);
assert(apply_patch_check("/system/app/MediaUploader.odex", "ab517e892845410c3eee15c0702d411619b8e9ea", "42f05d6b8fae575337f94fd12b085d55d3e2c4eb"));
set_progress(0.308492);
assert(apply_patch_check("/system/app/Mms.apk", "974551f5e387028b0b303c30056267bc93b5e2f5", "d7e3590aaa9a93f1d171182fe67ef3211f6f320d"));
set_progress(0.320018);
assert(apply_patch_check("/system/app/Mms.odex", "fb6a290e365cb6e610d9f3327aa145e3599af810", "56fce182a10f29ae2cc091cf8acb1da2d550b23b"));
set_progress(0.330804);
assert(apply_patch_check("/system/app/Mode10Wallpapers.apk", "ad1b6b0415e8089fbb9b901193a3d67a3e4cb9a6", "3a5889465c3d85b617fb3adec076d99c45ddb15a"));
set_progress(0.335248);
assert(apply_patch_check("/system/app/Mode10Wallpapers.odex", "515c8daf16436249d260d7b9b74b7ece32f666df", "805bd085c0f26b88064977b4499b6978a678a06a"));
set_progress(0.335411);
assert(apply_patch_check("/system/app/NetworkLocation.odex", "26dd47fe76722d2cb1b23f6b14dfd1383992354c", "db5d57da7f9a3d139a3f9295d536899c78e1f06c"));
set_progress(0.336766);
assert(apply_patch_check("/system/app/NewsReader.apk", "90650e5714c9940a9577f50ec6a35f62a3bc1b3e", "f6fcb6cac1d9198b651f9eb0053b222ce5767298"));
set_progress(0.339623);
assert(apply_patch_check("/system/app/NewsReader.odex", "a5d412a9ad753484da256df691ecac97d7025d6b", "edf23e57d23914991f008dcc2be8e412d33a59ef"));
set_progress(0.342090);
assert(apply_patch_check("/system/app/PCSCII.apk", "a6625fbd270603cea5f67634d375acf9be492c24", "8f24abcacf224439330d2571b559f6746d2ca894"));
set_progress(0.343107);
assert(apply_patch_check("/system/app/PCSCII.odex", "1031cd1fe7684b972228dd53a13bd9dd8ddfb39a", "97fad90241579961504f4f9ea3cf5b7182eec06e"));
set_progress(0.345780);
assert(apply_patch_check("/system/app/PDFViewer.apk", "52460c997d88d540b7c97fccadab0d63954758fa", "f8f2efb02380900c97e6f7ccf135d4767cd7fb5b"));
set_progress(0.346758);
assert(apply_patch_check("/system/app/PDFViewer.odex", "b518bf107721fa06d505a1321b372b5eda294a25", "5f58ebde1faf73b74a52569d1d2e767231d5ef14"));
set_progress(0.348101);
assert(apply_patch_check("/system/app/PackageInstaller.odex", "16fb042f59eb93573db8797cddd82b2945bd987b", "4977f8622f824550acd7b7ac1c0dd900155757eb"));
set_progress(0.348286);
assert(apply_patch_check("/system/app/Phone.apk", "6229eaf0a8fd31bc8f4a004c333fe3feb82c3ee4", "5b59941671f1bdef725c70269886e9440a7bb2ed"));
set_progress(0.359549);
assert(apply_patch_check("/system/app/Phone.odex", "cd3af21e3d45a39d5792671e9ab80ffb96e8b306", "84361c13a4f6e58eab8aae5117af78b2216ed0b2"));
set_progress(0.365699);
assert(apply_patch_check("/system/app/PicoTts.odex", "35aada9cecee84b4c22e658fcdbacc1675ecb7f4", "453ba8825fc9be0f791f38e226fa94a994926766"));
set_progress(0.365786);
assert(apply_patch_check("/system/app/PluginManager.odex", "bbfd4cb01a55c378bacbb41145effc55966dc2ad", "f54a6c1729180f804b000f6abd3cbae8fb40ab38"));
set_progress(0.365945);
assert(apply_patch_check("/system/app/QuickLookup.apk", "5a24f5607d721c93bf758f95ef8a94a0b5c61248", "02d7942fd7d8e6124b2145de2903e925ccce75b7"));
set_progress(0.366259);
assert(apply_patch_check("/system/app/QuickLookup.odex", "f308bb905475d914707e6b12bc23fd6a1266ec86", "3f23e68d99be8b32a2b1535d8ef88328ed6d1f8d"));
set_progress(0.366617);
assert(apply_patch_check("/system/app/Quickoffice.apk", "1ff72cd4b1920d8855c750f047b08d279129b7d9", "cd8e3a9f2bdeb6bfb593c2e76add5a4842103c98"));
set_progress(0.372976);
assert(apply_patch_check("/system/app/Quickoffice.odex", "2bfc58fa2f4decfa73a04c7f74da83eec7b97b60", "3b165396138d06a9800e8081bc1c33b28ded86a5"));
set_progress(0.405148);
assert(apply_patch_check("/system/app/QxdmLog.odex", "acc06f0352537bc4882e97e15fbf1ba2c773dae2", "7300f302ee0d70edadf9f3f2219d7c58e470bb9a"));
set_progress(0.405206);
assert(apply_patch_check("/system/app/RSS.odex", "a2af8aa86988a7e142febc6fc2d9adf7c072882e", "3859ec039000ce5aef8a3032b804beec0e81f19b"));
set_progress(0.408464);
assert(apply_patch_check("/system/app/Rosie.apk", "f1cbf44f955ac4ed691dbd5ef9244ef9a20bff85", "f2ee03a9a13ade3aac56fd9edc4ef3d4ec9068d9"));
set_progress(0.414011);
assert(apply_patch_check("/system/app/Rosie.odex", "5850bb3f4b9356396afad1b35d99828f4efcd732", "c157bf7552446df2c35139482ed4f0072c155386"));
set_progress(0.418188);
assert(apply_patch_check("/system/app/Settings.apk", "2d770810d501d373a3f7f9e9937fefdc829fc44d", "da1465513b14d365ac12a382f39dd2a948fb471a"));
set_progress(0.446857);
assert(apply_patch_check("/system/app/Settings.odex", "f2eaf09cee952975d206a4b090341ce67bac7a87", "4ee78c39b19d6a706a82543fdc1848b4e3ceda72"));
set_progress(0.454454);
assert(apply_patch_check("/system/app/SettingsProvider.apk", "383feb2bcc81dd548b0d041481a9c42cfb188223", "7497deaf55d77105220b0cf580f378b816f283c3"));
set_progress(0.454569);
assert(apply_patch_check("/system/app/SettingsProvider.odex", "5ea3d43aef25b1cf40543011b18e110ca4eac403", "0db39b6aa50fd868f9b16109e6829221c00f76b1"));
set_progress(0.455008);
assert(apply_patch_check("/system/app/SetupWizard.odex", "61b2d95ed3cc56d3cb758dddaed99a7aa44db711", "ceaa1b882ce88491ab09f68141e7689e6f1df477"));
set_progress(0.455557);
assert(apply_patch_check("/system/app/SocialNetworkProvider.odex", "8002127868aa998ad7513d9521636cdbb3e19077", "73b240e6acde8215eae5d235c4d02d8712e20855"));
set_progress(0.456307);
assert(apply_patch_check("/system/app/Stk.apk", "c614cbbaf2df707e8792e207d36e0125c2de2521", "2035850d260fa916684ceff53c8f6fa2123f060b"));
set_progress(0.456573);
assert(apply_patch_check("/system/app/Stk.odex", "eb34f1437c0d312774f6b9b117e1bdeb3c691261", "f6323573b6aa28549ef86ee6c6ff8e2c89e1bcf9"));
set_progress(0.456893);
assert(apply_patch_check("/system/app/Stock.apk", "5a3f7d7199cca3ba9e43ed0357f3a0d78f9d2363", "ec4684295dcef43010d1c91e38c8d211a7c7ada8"));
set_progress(0.459660);
assert(apply_patch_check("/system/app/Stock.odex", "36e6c55722c5351766d6455222ec5c2e0e70903a", "cf63ff8d8b4b0a44d7efc18a2a024886b54e1f89"));
set_progress(0.460864);
assert(apply_patch_check("/system/app/Street.odex", "f06ce7d5b14e1df329a1c65f73a4e3a86cd6c64a", "1fd3b69dbf5e96ad56c1e7d2fd782a9fec2a0497"));
set_progress(0.462615);
assert(apply_patch_check("/system/app/Talk.odex", "5e0d4d0b54912384ade197f9f3833aaeb8a2cd88", "4e77f8be1c724b57fd039b6b4e2fb91cc3c5cc0a"));
set_progress(0.465677);
assert(apply_patch_check("/system/app/TelephonyProvider.apk", "64f11302a21646bf74ca0a07746197d59b39ccdb", "36c8942463dc949282dfe9ff072002d964e64322"));
set_progress(0.465838);
assert(apply_patch_check("/system/app/TelephonyProvider.odex", "b7f05a170c6f8560cfb3a75ee7ef9e35a2fb1951", "3a80c3abf1615ad6d599cada5f5eb986eeae04a8"));
set_progress(0.467862);
assert(apply_patch_check("/system/app/TtsService.odex", "d38fb4ec654080662b9b1611b3b7ca299de01202", "2032779b4fa83b91497f49c2c9c5b5e25ba9d8b2"));
set_progress(0.468092);
assert(apply_patch_check("/system/app/Updater.apk", "999d06fd3cfc7cb1f2e0ba3fd833064b59934de3", "d4c1efcb1d618210864f392d2e5f6ea862469060"));
set_progress(0.469850);
assert(apply_patch_check("/system/app/Updater.odex", "fa536bd55c395c7ae16ed494e01d969662076501", "451595f5abedf0bbb0b9222fb7dafd183063c2df"));
set_progress(0.470624);
assert(apply_patch_check("/system/app/UpgradeSetup.odex", "6c2c5bd08626c90f220b78661315241df240610b", "20aa5a9c7975dddcf0b1c7671ad5f3d5c0f6ef17"));
set_progress(0.470700);
assert(apply_patch_check("/system/app/UploadProvider.apk", "bfa34165e604970ea1963498b87c926151b44fad", "79a61597322ac418050ff155efac16cdda387927"));
set_progress(0.471531);
assert(apply_patch_check("/system/app/UploadProvider.odex", "28d5aabf4954822ba1c2a8afc51f9f06d4215fdd", "ac75d4ad815dd8f849536b32351ac1ea25fe2791"));
set_progress(0.472467);
assert(apply_patch_check("/system/app/UserDictionaryProvider.odex", "e78ea01600e8c2fe4839807cc21662db4f60dc8a", "d070137cd40650941b726efdcc6be44f2bc3fe05"));
set_progress(0.472562);
assert(apply_patch_check("/system/app/Vending.odex", "1a5743eab120c1f6a75f4fdb8d8bc25f85cb8dcd", "0ad81435af052774848bc83e57650c2ba33ed6f0"));
set_progress(0.477923);
assert(apply_patch_check("/system/app/VisualizationWallpapers.odex", "29915043c17749c1ceed260412af89685d17f7e4", "895d7a066a2f93626bae4c99e0905691d41eff7c"));
set_progress(0.478121);
assert(apply_patch_check("/system/app/VoiceSearch.odex", "8daabbdf36d505e4bd8cf83a00eb8d43a4c00ec0", "2720d324b583e58b8fd500b15094ad3b93b1a517"));
set_progress(0.480841);
assert(apply_patch_check("/system/app/VpnServices.odex", "e6ab09395e9f97c75bd9cc5fd2806169d64cc8c3", "49a6b902bdfbf3de9f6815c585a51f7b85b0ef4a"));
set_progress(0.481045);
assert(apply_patch_check("/system/app/Weather.apk", "d0cc6d59ea985a0d0dcb2dc7519fe87e77e90071", "f0605cb40efa749406fba64727c698b523605f06"));
set_progress(0.483228);
assert(apply_patch_check("/system/app/Weather.odex", "8b4efe95e293fd700e8ade714ea6d7c3a536cbe3", "6e1291ca60e92dd7b6eea2a30d6bdbdef42c7c95"));
set_progress(0.484394);
assert(apply_patch_check("/system/app/WeatherAgentService.odex", "087111e3a9a464a210f91239ee6af00359e185e0", "440c7d0955cd1f3ce56f26bd272b3f8155581e9b"));
set_progress(0.484540);
assert(apply_patch_check("/system/app/WeatherProvider.odex", "f6ce1e738fe5ac10412f7b7a56183a9d76f0f581", "2cbc19774be4509b2c4e0c68fc7083c10770e890"));
set_progress(0.484718);
assert(apply_patch_check("/system/app/WeatherSyncProvider.odex", "773ad708ffe4145891d624da77c3588e4bbb34ff", "414412b8ac0343d0b66657d7e755db98961ef9b3"));
set_progress(0.484989);
assert(apply_patch_check("/system/app/WidgetDownloadManager.odex", "500187dda9de3ab934512e0331005c9a005e5334", "85e8a2aec10ce1a6b8cc50ed0b1f713a5f5ebfa2"));
set_progress(0.485710);
assert(apply_patch_check("/system/app/WifiRouter.apk", "42b735368dddf32b6a2c65bee18e32901d70bfbc", "262590f87e94c54675f652fac79df34b69e2037c"));
set_progress(0.487618);
assert(apply_patch_check("/system/app/WifiRouter.odex", "65f84e29c82ee429d66a049e7d1b4c7a2313dda0", "eaf72bc03658ff0f95c1b9e72316c38e030771df"));
set_progress(0.488122);
assert(apply_patch_check("/system/app/WorldClock.apk", "bd952d02c0d45eefc6276863a5b6f4c76e25364b", "522690dbd46505d85279839646c786330141a11a"));
set_progress(0.492069);
assert(apply_patch_check("/system/app/WorldClock.odex", "c3ce3e20eff8a7fce155228e60a790dce38192f3", "a21eba2892aca4a71d4da56e66de450e24a747d0"));
set_progress(0.494432);
assert(apply_patch_check("/system/app/YouTube.odex", "14901bde8fc5292763ba4e423e38c54a880f173a", "c5a32cfebfc05379a3162c9368a25f90f62c9278"));
set_progress(0.496743);
assert(apply_patch_check("/system/app/com.htc.FMRadioWidget.apk", "22e42d5fc55e1254ae7d712b4197c2c377d3b09f", "c080762554b4ac45d18c8737a6469daa3be4c024"));
set_progress(0.503089);
assert(apply_patch_check("/system/app/com.htc.FMRadioWidget.odex", "9d7914bb19f7ec2148cd1220bfa0527ed98f1396", "95e43d499b1aefa6056063b0f356aaa675e37eba"));
set_progress(0.503872);
assert(apply_patch_check("/system/app/com.htc.FriendStreamWidget.apk", "16fe640f8d3ca329357ca9d43402ef0b5ad3b62a", "79590668e290a34caa2e9a67478470719f67faaf"));
set_progress(0.505284);
assert(apply_patch_check("/system/app/com.htc.FriendStreamWidget.odex", "ca01beedd5b3c7d42718372f3e4732a77ce1d497", "1c90b5d374e5d4d466f54b152033a5cc5251f150"));
set_progress(0.505783);
assert(apply_patch_check("/system/app/com.htc.MusicWidget.apk", "8a330005c1dbc82056faf5c8d386a87ab51ab14f", "bf3cc49ef86c2be2f7e2bfd97bfaa9a3a103a982"));
set_progress(0.508506);
assert(apply_patch_check("/system/app/com.htc.MusicWidget.odex", "d1f21d2a2f05271659dcdd64f23f7ffa62e22dd4", "19ed18c954cd489fc3324f85abd03819de43e3f5"));
set_progress(0.509017);
assert(apply_patch_check("/system/app/com.htc.NewsReaderWidget.apk", "1759529529c920219dc93a928ab3bfb32f06a01b", "f7b3b6c329732cf03d84744327a85cf6d5836f17"));
set_progress(0.510629);
assert(apply_patch_check("/system/app/com.htc.NewsReaderWidget.odex", "d73ef8efd3424040cedfb7871febadae7559fade", "86c7945497dc5c12c83c72bd198675667b0d8e04"));
set_progress(0.511573);
assert(apply_patch_check("/system/app/com.htc.StockWidget.odex", "8c26893e37292639d8abd92587ef6ddf8db49165", "df177719c98b1853469d63ed679372a62a3f0ee7"));
set_progress(0.512495);
assert(apply_patch_check("/system/app/com.htc.TwitterWidget.odex", "6e556cc6ffbeadeeec5b4731b154f552959605ce", "1be3651045f10aa22d008d846a396d13529c19e2"));
set_progress(0.512958);
assert(apply_patch_check("/system/app/com.htc.WeatherWidget.apk", "9d1f5c93ad5b602e1ff5e49797e2a619ff2ab8b7", "3f6f6f8f3fec79f01e789606834ac302e3081c2d"));
set_progress(0.515313);
assert(apply_patch_check("/system/app/com.htc.WeatherWidget.odex", "5cc190253f96d3fa41634ec20e096b6a90e6b76b", "98c73e8f676c4c4c75bf3e9de326373351056e6d"));
set_progress(0.516217);
assert(apply_patch_check("/system/app/htcbookmarkwidget.odex", "1a02780742c6b998d29afaa50db904839907d4d0", "5e4995277bb6ad20dfd1c2cd74e1ea8a3c812b6b"));
set_progress(0.516829);
assert(apply_patch_check("/system/app/htccalendarwidgets.apk", "5c90ece2d923a15bf07c3dbc1caf4d8202652e24", "f598a768c1aab41ce1e1c5afbb221e4e34f22325"));
set_progress(0.518214);
assert(apply_patch_check("/system/app/htccalendarwidgets.odex", "d415394b6e9f1bb6dd761b5c18ccf961e8703daa", "7f20b5c44879a8c5209aa9ddd4187aae9cc5d3ec"));
set_progress(0.519044);
assert(apply_patch_check("/system/app/htccontactwidgets.apk", "ea69340dea7e9ea1f9cee02a955623b1a707a0e4", "8c6520419aab51d1a35b66e3ce4a15aada0489f2"));
set_progress(0.522161);
assert(apply_patch_check("/system/app/htccontactwidgets.odex", "ec2717a4e90aab9cdf3da0bc8b9eae26a4fdc233", "08f3365b5e2d57175f167ac230797eecd37df004"));
set_progress(0.523540);
assert(apply_patch_check("/system/app/htcmailwidgets.apk", "4ca8a7f08b9d0085e5ceab1e9e7b8e463726130c", "0378802fb4e2d7245da5b27f932f556e996e3033"));
set_progress(0.527683);
assert(apply_patch_check("/system/app/htcmailwidgets.odex", "d945a0d7089c3d32b5c715e1ee2b6fa02c4b9140", "21e9c261354b86fba9f46fc2f17adf2020e3977b"));
set_progress(0.529179);
assert(apply_patch_check("/system/app/htcmsgwidgets.apk", "6a773afd16caee1bb3fb2620150233c2914af706", "5450eb821fda0a7281781d89ae4fdab531cb47ce"));
set_progress(0.531125);
assert(apply_patch_check("/system/app/htcmsgwidgets.odex", "37846c88e2dd9a75cd3b3e3210cbcf82ba9cf7f1", "6fcd350859d6a39fc553544d3c5ab163f4a344e0"));
set_progress(0.531876);
assert(apply_patch_check("/system/app/htcsettingwidgets.apk", "3e27ee266a9487183a8563208f6106a1637fb600", "7861ce346c407fecc08d44d62df1994a543e80a4"));
set_progress(0.533088);
assert(apply_patch_check("/system/app/htcsettingwidgets.odex", "31f3a1d611804e3d80625cb671215ae2dcaef9da", "6ba5f1ee5cc904450219becbcc6744a7dd6e9aae"));
set_progress(0.533606);
assert(apply_patch_check("/system/app/install_flash_player.apk", "b2279fb1313b7ad165e4058392c42fcb3d0c723c", "af546ae29917071e5a38e4392636b9aca2cfdaf5"));
set_progress(0.557474);
assert(apply_patch_check("/system/app/install_flash_player.odex", "47a4d1d2eeb597d28ebf65e5825c76e57452859b", "c530317c7743118bfa07bd8e3282fe9c90006110"));
set_progress(0.557808);
assert(apply_patch_check("/system/app/restartapp.odex", "4cad3f7c71cd21415caab6a9a347026b8814056e", "638185b543d7b3861d3cda2c5a4edf16c65586ba"));
set_progress(0.557863);
assert(apply_patch_check("/system/app/teeter.odex", "7e92a08131b5c94dbabe5f0aeb79e85762fc8dbc", "86688d00784d5e7cdd73fcda2f30ae25a67dcc98"));
set_progress(0.558443);
assert(apply_patch_check("/system/bin/btld", "f1af8711b015f979977de89572b0169821f3aaa8", "2ae86a34516fa7822d17d6f37a2f78c83cc0de49"));
set_progress(0.570495);
assert(apply_patch_check("/system/bin/debuggerd", "bb89e814a367f2e2ac747ffa17050a8185f364b9", "8bb2be67b1b65e7b98aaeb4ff638e2b0b94c6ed2"));
set_progress(0.570630);
assert(apply_patch_check("/system/bin/iptables", "709a8a388b7748ab0a827c8859cc4c9516805c44", "3201724da41c8a336ae98e9773ec1b8bf0ea5412"));
set_progress(0.571272);
assert(apply_patch_check("/system/bin/netd", "245c11be4e81c0713c8b7cfbd7afc6501e47130f", "4c824c2ae7d04fce8c425c58e82851d605a47bae"));
set_progress(0.571537);
assert(apply_patch_check("/system/build.prop", "8050cbd1fc8cd5fa9c10bc1c648b849656018896", "3ddb3d47afc370231c24adc91a44757a19af48eb"));
set_progress(0.571576);
assert(apply_patch_check("/system/customize/MNS/20201.xml", "73c7a2388811e77bdb8640ef3d01e7193ec7047d", "6699d2c162acefbf08b33e5d52a904d91ada7b68"));
set_progress(0.572105);
assert(apply_patch_check("/system/customize/MNS/20205.xml", "73c7a2388811e77bdb8640ef3d01e7193ec7047d", "6699d2c162acefbf08b33e5d52a904d91ada7b68"));
set_progress(0.572634);
assert(apply_patch_check("/system/customize/MNS/20210.xml", "73c7a2388811e77bdb8640ef3d01e7193ec7047d", "6699d2c162acefbf08b33e5d52a904d91ada7b68"));
set_progress(0.573163);
assert(apply_patch_check("/system/customize/MNS/20404.xml", "872d0a6d864f0b8b6f7f2aad5830d9ab93c502e7", "26c54fd17e6f68097fbcfcd8222605e282f3294f"));
set_progress(0.573683);
assert(apply_patch_check("/system/customize/MNS/20601.xml", "4b71939723acd8dc649786ee84eb8313bfe0d3dd", "f0db7e07b8c80e105c8b12229c9404bcdcce372c"));
set_progress(0.574202);
assert(apply_patch_check("/system/customize/MNS/20810.xml", "3e5147a66e927a1c3ef0bb8a7eda7ff0ff3a38ee", "8f8689c968faf935ce4402d209d3c1fa5552c50a"));
set_progress(0.574729);
assert(apply_patch_check("/system/customize/MNS/21401.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
set_progress(0.575256);
assert(apply_patch_check("/system/customize/MNS/21403.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
set_progress(0.575783);
assert(apply_patch_check("/system/customize/MNS/21404.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
set_progress(0.576311);
assert(apply_patch_check("/system/customize/MNS/21406.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
set_progress(0.576838);
assert(apply_patch_check("/system/customize/MNS/21407.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
set_progress(0.577365);
assert(apply_patch_check("/system/customize/MNS/21416.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
set_progress(0.577892);
assert(apply_patch_check("/system/customize/MNS/22201.xml", "48b56b6447ef0d0bd5d3feb8f33ffc9a8064dacc", "29a5ab502a5f554d9bc41f293c7956b9324145c1"));
set_progress(0.578416);
assert(apply_patch_check("/system/customize/MNS/23210.xml", "dae0bd8ccc75b38e6bff635c971304cf98e07f92", "374634a8c3f22ff1b6384af918a14b2668cb7fc3"));
set_progress(0.578948);
assert(apply_patch_check("/system/customize/MNS/234.xml", "4b9548a6f1ee6930141dcda127c76226550619ac", "88ab55184efe3516d2cc756b135ac2e1f5ebe232"));
set_progress(0.579469);
assert(apply_patch_check("/system/customize/MNS/23802.xml", "ad54d14dc7d046ab4d42ff55e23b5e770b56acaa", "635ee23fcd0c6434090fc820c29851e16055db96"));
set_progress(0.579995);
assert(apply_patch_check("/system/customize/MNS/23806.xml", "407d609b75ee38e2489956d318500b8fe05ae40b", "7e96d8d6137093fbbe8a88b3409486f661b17100"));
set_progress(0.580516);
assert(apply_patch_check("/system/customize/MNS/24001.xml", "5b13ed55aacc73282ae051b0ef907d38d5768706", "cb0c23154cb37ee14a4e072e8fff7bf64a98e326"));
set_progress(0.581044);
assert(apply_patch_check("/system/customize/MNS/24002.xml", "e987892a5fa4b87644d375b42325f553feace4d5", "7b33ff79e4915fdda3187381224af576a8a31667"));
set_progress(0.581565);
assert(apply_patch_check("/system/customize/MNS/24008.xml", "dddbdbd1d6072ed9fc3884928fe262f29e5c6c3d", "74db81b2b9bd7c7de03b5d0c54bf0e47028f7aa5"));
set_progress(0.582088);
assert(apply_patch_check("/system/customize/MNS/24201.xml", "0a21ec75f11dcd4528e2bb10bddbf56fe328cc2b", "41084ac6b90672e8e582b07797d457756057091c"));
set_progress(0.582618);
assert(apply_patch_check("/system/customize/MNS/24801.xml", "688a7c668c53d6a935de5dcf2da3e1a3965b43c1", "981890ddf50c4b61bcef1626178a25322bd97d73"));
set_progress(0.583150);
assert(apply_patch_check("/system/customize/MNS/250.xml", "2f79e202a609c800d4a7caf9f6339dd3ba024880", "4f4e30fff13e21c1352cb615627742fa14b7f2e6"));
set_progress(0.583691);
assert(apply_patch_check("/system/customize/MNS/255.xml", "8481d3541a1c85e3e50fa224857c48467ae464d2", "ef0f71de63c4a842e89de2f82667fc28ff089e69"));
set_progress(0.584077);
assert(apply_patch_check("/system/customize/MNS/262.xml", "073d7731051f3515e52e6009811adf8bb333f513", "b3386dbc6b96eb2d2c8220319423d0ac1c6a68df"));
set_progress(0.584598);
assert(apply_patch_check("/system/customize/MNS/26801.xml", "23ae3df03641cf16b498a159de1fdf159fb23b80", "647eb1a79dfb872ff3b58c5fed4b900cd371b36a"));
set_progress(0.585120);
assert(apply_patch_check("/system/customize/MNS/26806.xml", "23ae3df03641cf16b498a159de1fdf159fb23b80", "647eb1a79dfb872ff3b58c5fed4b900cd371b36a"));
set_progress(0.585642);
assert(apply_patch_check("/system/customize/MNS/425.xml", "d9522c94d04212af16bd7b22c14d0780bf750620", "c59728ff5be3e7bfe7aa9875e5c0bacdeff95e46"));
set_progress(0.586162);
assert(apply_patch_check("/system/customize/MNS/65501.xml", "f371398966cd4cd74069ccfc6812172e2c0e6a74", "102472d2d4d3224af35540b560e4d9bfc95afd15"));
set_progress(0.586738);
assert(apply_patch_check("/system/customize/MNS/65507.xml", "249b7283093c8ccc7bfe53dea52e91f72560be87", "7e396d9723de3691a8208d2b02aad183b9d3c6e7"));
set_progress(0.587266);
assert(apply_patch_check("/system/customize/MNS/65510.xml", "f0fec5ed3cd97da31fd961090156e5eedbb805aa", "8e9d1f6eb2463f346cba04beb75a594631ac277b"));
set_progress(0.587796);
assert(apply_patch_check("/system/customize/MNS/default.xml", "342e0053f259e701d3c91af7316ad6c30a01e588", "2b1dbdc132d3004d745ec2e3c5af2212928a49d6"));
set_progress(0.588319);
assert(apply_patch_check("/system/customize/resource/CCInfo.txt", "ade19ff8a2fc85552428fc1912b391ea66102ec0", "3e157b224e141c04c53ba2e63bb0e84e88be3e09"));
set_progress(0.588336);
assert(apply_patch_check("/system/etc/NOTICE.html.gz", "37f4fa2e947ce0d122ff85faf66fb112710c0a82", "dd7c032924d8a74b8bbf3e40374a1f918e8cbd88"));
set_progress(0.588759);
assert(apply_patch_check("/system/etc/firmware/default_nel.acdb", "0dbb9caba244cf7752ceac37e1e52e9130d6aded", "55924df2b28f66ae990f38e180d77317f9ddcc95"));
set_progress(0.589528);
assert(apply_patch_check("/system/etc/security/cacerts.bks", "de85a33da3e0f6b4ef74a7bd7c38a9d8dccdb68c", "4a020cdf4c03185b07f973721fa63b672bc5c339"));
set_progress(0.589909);
assert(apply_patch_check("/system/etc/security/otacerts.zip", "5a527c8698a9460c52d58da210450285469cef07", "a9d8f05c4eda08c591a3c9c0720c961ec873cab3"));
set_progress(0.589916);
assert(apply_patch_check("/system/fonts/ARDJ-KK.ttf", "2f4c25798a447bd9b2c7080c3aa566ffc7b41ec5", "96f883d95fc56ba4d7508573bc4c0e68f0396ce2"));
set_progress(0.589991);
assert(apply_patch_check("/system/framework/am.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
set_progress(0.589993);
assert(apply_patch_check("/system/framework/am.odex", "25e9f9895d9e4f95bdf0af508f2aee394c6c0784", "1dabac0e39b5f0f3b89f70153523df0ce8b97ef9"));
set_progress(0.590114);
assert(apply_patch_check("/system/framework/android.policy.jar", "a234ba69c72928749ca2939fe03ad03a51010266", "a1a273e2cf425a35cc9310a5c7338df3aab1f0a9"));
set_progress(0.590116);
assert(apply_patch_check("/system/framework/android.policy.odex", "10d5097af0f9052f72d12e74cac9fe2076567ed7", "cfba9a07813dcca86f53f83fb98573aaaae3432e"));
set_progress(0.591579);
assert(apply_patch_check("/system/framework/android.test.runner.jar", "1348094bc9f4e329018b2477bc95497a3ec727a2", "13992b5e60f88b9722ca018c0969a2346c0463f6"));
set_progress(0.591581);
assert(apply_patch_check("/system/framework/android.test.runner.odex", "9fb0000143205b5e39ae880d6a3a449c4c0d4b47", "f4f5fb2915c1dbbd8af66334fcd05b122ab774a6"));
set_progress(0.592762);
assert(apply_patch_check("/system/framework/bmgr.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
set_progress(0.592764);
assert(apply_patch_check("/system/framework/bmgr.odex", "dc20083e1b1c4795e3e6ee8eeda5c44afff1ac89", "f4b2f8c6db953c9ff9d2b60476274bf5649636f9"));
set_progress(0.592851);
assert(apply_patch_check("/system/framework/com.google.android.maps.odex", "d6222fa4865fdf9f614fa2147c8a85898b4f9053", "f2094239261872286d3346f1792193e7f174cca9"));
set_progress(0.596972);
assert(apply_patch_check("/system/framework/com.google.translate.jar", "3844f9894e59ae0f98c794393abda93181f0c105", "1d147f0148be0bfaa6901a8fd080f4fce9019c2e"));
set_progress(0.596974);
assert(apply_patch_check("/system/framework/com.google.translate.odex", "eb985b1b6ae85c083f63215cb4e087d8a9ea1db8", "4679a3e886032ef7df16ede3c5447740190597af"));
set_progress(0.597230);
assert(apply_patch_check("/system/framework/com.htc.android.easopen.jar", "3844f9894e59ae0f98c794393abda93181f0c105", "1d147f0148be0bfaa6901a8fd080f4fce9019c2e"));
set_progress(0.597232);
assert(apply_patch_check("/system/framework/com.htc.android.easopen.odex", "64a02e13e3d506d234268021a7962cbc4e2e2728", "aa9200c23aa8bade5cf2c381a66dfd3921ef935b"));
set_progress(0.597397);
assert(apply_patch_check("/system/framework/com.htc.android.pimlib.jar", "1348094bc9f4e329018b2477bc95497a3ec727a2", "13992b5e60f88b9722ca018c0969a2346c0463f6"));
set_progress(0.597399);
assert(apply_patch_check("/system/framework/com.htc.android.pimlib.odex", "c2ff1a161f56897f3ffd95a2981f9dbb4674ce34", "69a6807ea0d4419afdf38290bf990663793fff9f"));
set_progress(0.597949);
assert(apply_patch_check("/system/framework/com.htc.framework.jar", "fc180adeda42bed9113cc99c4a57238be8c4cf72", "8f5f13f9fa9b97e054bec11b6742d32099d544e8"));
set_progress(0.597951);
assert(apply_patch_check("/system/framework/com.htc.framework.odex", "f7087d2354ec132e192211d800d057199f5da165", "f94c58056ba80717ffbcbb6e5cbf2a0523438342"));
set_progress(0.611559);
assert(apply_patch_check("/system/framework/com.htc.resources.apk", "1cc2d866e8c79cdb500c538470611fd070a472d7", "28642cea2556313405190437ca598a6fef25f4ca"));
set_progress(0.721969);
assert(apply_patch_check("/system/framework/com.htc.rss.jar", "fc180adeda42bed9113cc99c4a57238be8c4cf72", "1d147f0148be0bfaa6901a8fd080f4fce9019c2e"));
set_progress(0.721971);
assert(apply_patch_check("/system/framework/com.htc.rss.odex", "e49ea7a3dee363b41a96337a3eb1c264bbc20b47", "83363436303dba8414252216e6556e6bf129e9cd"));
set_progress(0.728971);
assert(apply_patch_check("/system/framework/com.scalado.util.ScaladoUtil.jar", "3844f9894e59ae0f98c794393abda93181f0c105", "13992b5e60f88b9722ca018c0969a2346c0463f6"));
set_progress(0.728973);
assert(apply_patch_check("/system/framework/com.scalado.util.ScaladoUtil.odex", "ec4a40eab026ed32ed8a1afbc35da6e2304ec426", "d51dc94047ab31e28e256d058c547a111b10135e"));
set_progress(0.729015);
assert(apply_patch_check("/system/framework/core.jar", "e3e39b0c825aef80aff3b492e49f4e9e98c07142", "c19791e4dfb9c5341a3b4bfd88286ee18fbadcdb"));
set_progress(0.729387);
assert(apply_patch_check("/system/framework/core.odex", "1090f925afe42363fa09ac0884e2c444e5910bf3", "289fd966b31f28c14f6dfd7ba2b3484336ec6518"));
set_progress(0.763446);
assert(apply_patch_check("/system/framework/ext.jar", "79f2530caf6b7ff0f3a45fb1e4ce16150747287d", "5a232d75131b3d0d03862247817e4a345ae09d8c"));
set_progress(0.763449);
assert(apply_patch_check("/system/framework/ext.odex", "0f15113125d818e5305d4c69aa25e477341f7c1c", "5db6cbf1a3202c6aefce15aa0ad6e78aa2719e98"));
set_progress(0.767284);
assert(apply_patch_check("/system/framework/framework-res.apk", "af23bc76e4307148c93f5ce416f847cefebec9a6", "5e3a6dc95d25a6a5e45bbe0f3d598bfad140c22c"));
set_progress(0.797530);
assert(apply_patch_check("/system/framework/framework-tests.jar", "8624c27296d5779589f1d39510c49c7befc5e2c1", "8ecff138e68447d747ccd51dbc20efde8d275143"));
set_progress(0.797532);
assert(apply_patch_check("/system/framework/framework-tests.odex", "dd41fbf59b6d1207d8730a7737ec4453c85c2dbe", "2bcd4496eefc313b6d5e25b7eab8efc243e4ed8c"));
set_progress(0.797663);
assert(apply_patch_check("/system/framework/framework.jar", "ea72f7f0184bd70770752571d7d20ad3ccf85c2f", "c312ad2c687ff51bca7110ee7d138eb84b28a664"));
set_progress(0.797721);
assert(apply_patch_check("/system/framework/framework.odex", "a7aba407032523df6af2d181c804b0059244cfc3", "d4f0131d181ef5164d0ec0b7811930cb6d9a5952"));
set_progress(0.855428);
assert(apply_patch_check("/system/framework/ime.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
set_progress(0.855430);
assert(apply_patch_check("/system/framework/ime.odex", "d57124329d5d09a76a9df8cd389e35435ef9a0b8", "a7e5d307c50c7d36c3d6eaea9c0fc73c5d4fc0b9"));
set_progress(0.855471);
assert(apply_patch_check("/system/framework/input.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
set_progress(0.855473);
assert(apply_patch_check("/system/framework/input.odex", "74d17813c6a64ead1db86e400d3d12ed446404e9", "9fd13251916a8cfc571408d422d17312c270b597"));
set_progress(0.855501);
assert(apply_patch_check("/system/framework/javax.obex.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "13992b5e60f88b9722ca018c0969a2346c0463f6"));
set_progress(0.855503);
assert(apply_patch_check("/system/framework/javax.obex.odex", "636b2cbd3698f153aee31cddb6317b042b0ab4e4", "aaba78b444eb87ced7888b14d69d77514be06150"));
set_progress(0.855873);
assert(apply_patch_check("/system/framework/monkey.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
set_progress(0.855876);
assert(apply_patch_check("/system/framework/monkey.odex", "82238d311f03b772513f372e1c726d532e06a0d2", "0db10ef5a3772b220fac0a882abb313666b69fdd"));
set_progress(0.856349);
assert(apply_patch_check("/system/framework/pm.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
set_progress(0.856352);
assert(apply_patch_check("/system/framework/pm.odex", "17be5e7477b5f1d036927c5840f2a5dfbcddf17a", "d9ccfb158a5b70ce26cfedf95fad6efc131e1e6e"));
set_progress(0.856504);
assert(apply_patch_check("/system/framework/services.jar", "202cb7a3bdad44d32145375591208808a47562ee", "3d7ab3a9ffbf097f4d0ed1ae63c356e91590ffee"));
set_progress(0.856506);
assert(apply_patch_check("/system/framework/services.odex", "d1d1c2411289d0d66c6121b80428b490c28cdcdb", "0c03debcf7460cd37f98316dc6bae6677208d472"));
set_progress(0.866740);
assert(apply_patch_check("/system/framework/svc.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
set_progress(0.866743);
assert(apply_patch_check("/system/framework/svc.odex", "1c6b0c7a8cba52dc0384dd47994d2beaeee07a69", "c35e8ad7317c197e89ee2f8127c6aae114f1fde6"));
set_progress(0.866805);
assert(apply_patch_check("/system/lib/bluez-plugin/audio.so", "d1134c53947f13a4198d0c43dd92dc15a8c7176b", "c0efc09675b2aa9ee4f7be88b74d489e175c3f2b"));
set_progress(0.867506);
assert(apply_patch_check("/system/lib/egl/libGLES_android.so", "2549a57077dffeaba0f9fced3ecb0a716f40f0ae", "ac4a61eee79806c3514f2bea55241ae3ea29a377"));
set_progress(0.868178);
assert(apply_patch_check("/system/lib/libandroid_runtime.so", "6aa9329804c3d519cf4cc6abd6b6b77dfd0cbeb0", "92c719df4caf0db5129f8d37ce2b68eea410e7fc"));
set_progress(0.872021);
assert(apply_patch_check("/system/lib/libaudio.so", "d014c26f3b6456594ab261d08e91fd735cd021ee", "d276f25cde5377950c556a093768c0887f434d5b"));
set_progress(0.872415);
assert(apply_patch_check("/system/lib/libaudiopolicy.so", "0689c5dd433e466bc5766ea88f85e5daa7112d2c", "3fc5b5d8460ebd4a9a9ab1f28d959af04df98781"));
set_progress(0.872628);
assert(apply_patch_check("/system/lib/libbluedroid.so", "f90b7f2028e9a4507c29550497b7ae7f50e12502", "d03ff395c50fb766ab8954eba78b6f5c644ab44c"));
set_progress(0.872686);
assert(apply_patch_check("/system/lib/libbluetoothd.so", "7dfebf000820734b54052b3843bc49528c731565", "db1d788ee8ece60662aebb42b4b428555b4c6139"));
set_progress(0.875923);
assert(apply_patch_check("/system/lib/libcpt9.so", "cf6844c599ced936518be21b7cc652efbbfb1826", "be9b7e41333e66d8c583387c4345798df0967c60"));
set_progress(0.878064);
assert(apply_patch_check("/system/lib/libdrm1.so", "e0ffee1d5b5af68123fc0b01b63f2d48a37e7d8a", "0aacf541d3f19fd6e0402b11422f92f0ced697c9"));
set_progress(0.878323);
assert(apply_patch_check("/system/lib/libdrm1_jni.so", "20b09381844d1897461135fa4b8c649934dcecf4", "8123a99aa23d7fd60a9c8c22b1c4aa6c83eac266"));
set_progress(0.878407);
assert(apply_patch_check("/system/lib/libdvm.so", "2eb34acc63cbbbfe0abf7112c5ef8ab3f8b916ff", "05d7dc72dc0dcf73a188c78676e08a791919531c"));
set_progress(0.882610);
assert(apply_patch_check("/system/lib/libflashplayer.so", "f30dc1e82cad6e53110361b3ce0a26463c3e32c3", "4ea0538ec762b681a11734fbd0ca8e03bc380d1d"));
set_progress(0.927581);
assert(apply_patch_check("/system/lib/libgps.so", "940cb7e7abfd0c847c50c10c8cb8da42e29a5fec", "75e2c12b803783503224a9d60462cef61e650ab1"));
set_progress(0.928197);
assert(apply_patch_check("/system/lib/libhtc_ril.so", "2a4b3084de08d8cb2d537d7bca32c9cf32828191", "6f8418ec83ecfa3da47561eede2fdef1bccef53b"));
set_progress(0.931209);
assert(apply_patch_check("/system/lib/libicudata.so", "1a4899f358c6d70f02917889f5ae7ce8abb45123", "a783dd94116f6ff094521daff35204704faec154"));
set_progress(0.943431);
assert(apply_patch_check("/system/lib/libmedia.so", "d0228b39d7f23f53eeaabdaf60dc5484f983a85d", "3cc0c4770d9b7895a0543dbb7632e67b11a6a55d"));
set_progress(0.945833);
assert(apply_patch_check("/system/lib/libskia.so", "9e992fbf190cdc2b2e582af65bd19d0f8baffa20", "a2a54c0dfda3bcefff9a89527a5420c136e7ec72"));
set_progress(0.952666);
assert(apply_patch_check("/system/lib/libstagefright.so", "dbaaa6861acc2d77e1480f8ed050a1985abbfef5", "de4541245109b996bfb68662ed73febdde8763a2"));
set_progress(0.957027);
assert(apply_patch_check("/system/lib/libsurfaceflinger.so", "eaa898a6fb34d10ef19ebe073b1af6b4b517d66c", "7ae6bd32d9557a85955f6221375683720369b7bd"));
set_progress(0.958071);
assert(apply_patch_check("/system/lib/libsurfaceflinger_client.so", "c1e1a17c8b32cef6c4cf712f6b8ce62de0050f18", "5f5892b33f9dd7123f82c25e94c468d1556013c5"));
set_progress(0.958664);
assert(apply_patch_check("/system/lib/libui.so", "122329c939c77c4ac78f8bf4b41804931d1a9d6d", "6c522eafb28d5d16d9012bedede3d42ae0e77f39"));
set_progress(0.959181);
assert(apply_patch_check("/system/lib/libvoAndroid.so", "0e970b2685cd2efd2991337981e5b2cc86a92d71", "c642cec91e75874db1e7217570a392f1256f664b"));
set_progress(0.960081);
assert(apply_patch_check("/system/lib/libvoH264Dec.so", "f9454fd8b0350aa3d9a642946c589fde3bfc5df4", "660dd4a41c4ceafae56a768533d4420b9cf95dcc"));
set_progress(0.960994);
assert(apply_patch_check("/system/lib/libvoOMXME.so", "1f8256c48781cf652a075ea75436d817377c7368", "72b6f95fe084ec9107891189982a194de83031d4"));
set_progress(0.961965);
assert(apply_patch_check("/system/lib/libvoOMXOne.so", "a2b56684186f74bc342f067b3e0bbf47f8f31955", "c02f44c23d65a96066e2bf23c96c36df15d8af03"));
set_progress(0.964772);
assert(apply_patch_check("/system/lib/libvoSrcRTSP.so", "e249ebe0f87514440f696b838a63f493804ccb08", "fbb3b7e063db20f1492f4d0625c3fa216e916b85"));
set_progress(0.967007);
assert(apply_patch_check("/system/lib/libwebcore.so", "215bff5ffd54b2558f6bde9961522551bfa18c63", "0bc1f8b76ec535b1b7c1e9f6137c27c7c6724abf"));
set_progress(0.998317);
assert(apply_patch_check("/system/lib/modules/bcm4329.ko", "c9f9b0034b35d5e0c93572316bf089587ef237e7", "2852c553ed2ac6ae670e8e99e15ac6b2138b5a3a"));
set_progress(0.999966);
assert(apply_patch_check("/system/xbin/crasher", "6b6f4f9542ec5e457cd6c682aad9862bd12dde2a", "146fe9677a6f5bf0b9f1b648ee9b261e0a94f579"));
set_progress(1.000000);

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

mount("MTD", "userdata", "/data");
delete_recursive("/data/DxDrm/",
                 "/data/data/com.htc.flashliteplugin/lib/");
ui_print("Removing unneeded files...");
delete("/system/app/GSD.apk", "/system/app/GSD.odex",
       "/system/lib/libysshared.so", "/system/customize/AAInfo.txt",
       "/system/etc/iproute2/rt_tables", "/system/xbin/tcpdump",
       "/system/recovery.img");
show_progress(0.800000, 0);
ui_print("Patching system files...");
apply_patch("/system/app/AccountSyncManager.apk", "-",
            7e807f5cfcf0846b3912f532d0b06038e1df75c5, 187343,
            4d3922776d89af26769536fcbdb708ae48ec5d17, package_extract_file("patch/system/app/AccountSyncManager.apk.p"));
set_progress(0.001112);
apply_patch("/system/app/AccountSyncManager.odex", "-",
            22f2afa71cea158214d95e21c034a7c31cf644dc, 63048,
            076d6dc7b8b2cb2b6d8d2ff10d3d925d7d2f7923, package_extract_file("patch/system/app/AccountSyncManager.odex.p"));
set_progress(0.001487);
apply_patch("/system/app/AppSharing.apk", "-",
            7438fa9de36d9ed6dff08b9cb916e7f4fa6ca58c, 205271,
            d58d5573dd23deb8809766d0e56e0a7b3f91b296, package_extract_file("patch/system/app/AppSharing.apk.p"));
set_progress(0.002706);
apply_patch("/system/app/AppSharing.odex", "-",
            d263953be3c8ab369bb53176d756f505f20cdc3e, 37808,
            f47338c1d2a378781825224e43bee5a181cda150, package_extract_file("patch/system/app/AppSharing.odex.p"));
set_progress(0.002930);
apply_patch("/system/app/ApplicationsProvider.odex", "-",
            cd3e29a7c8d3813ec9b956beee0fab8e9f684c1f, 22224,
            cb2e09ada6ad7d15110959b540936f589bbf4410, package_extract_file("patch/system/app/ApplicationsProvider.odex.p"));
set_progress(0.003062);
apply_patch("/system/app/Bluetooth.apk", "-",
            644401cb4a35a40eb5b465fe6229dfad918bae5c, 185634,
            9a21334cc33086fe5d651a15aad39e45d31692a0, package_extract_file("patch/system/app/Bluetooth.apk.p"));
set_progress(0.004164);
apply_patch("/system/app/Bluetooth.odex", "-",
            02333aaec0602a022ddcf54755dcaeed2fe04e9f, 241256,
            eedf6cb7280e239e358d1086d0a4117d17608414, package_extract_file("patch/system/app/Bluetooth.odex.p"));
set_progress(0.005597);
apply_patch("/system/app/BrcmBluetoothServices.odex", "-",
            1cf6e544f092e962766c935d76f61381f7f3bdcc, 8384,
            163b6926068f4d671ba0373de964cf959de6957b, package_extract_file("patch/system/app/BrcmBluetoothServices.odex.p"));
set_progress(0.005646);
apply_patch("/system/app/Browser.apk", "-",
            b4d8b21214dc6ab611e0c92ed3e6c0ba4db77f58, 813565,
            7483b1286a4aeca99e07765350a126b327d8791c, package_extract_file("patch/system/app/Browser.apk.p"));
set_progress(0.010477);
apply_patch("/system/app/Browser.odex", "-",
            1d088dde86ea04bffd5384361a0c2d7e0b5a8f4d, 785832,
            fcd083534017142f348bdfe98e0adb3e682074c7, package_extract_file("patch/system/app/Browser.odex.p"));
set_progress(0.015143);
apply_patch("/system/app/Calculator.odex", "-",
            79b46a0ee2ce266b8e31e9088035cba3dd5e12d3, 108448,
            84c1ffc2c1d33293f38ba884dcc6990f0ac8f484, package_extract_file("patch/system/app/Calculator.odex.p"));
set_progress(0.015787);
apply_patch("/system/app/Calendar.apk", "-",
            e3e9df845a25678de63773f160d3fe152e4857ce, 876512,
            9bbd119b1a25c3d5efa2695dda28931746a41347, package_extract_file("patch/system/app/Calendar.apk.p"));
set_progress(0.020991);
apply_patch("/system/app/Calendar.odex", "-",
            d8bdf0b68f28c4ee698f747b3b206a400d3977b4, 761520,
            44a88e64d1e26c6322475243225ed283ec52d6c3, package_extract_file("patch/system/app/Calendar.odex.p"));
set_progress(0.025513);
apply_patch("/system/app/CalendarProvider.odex", "-",
            943e571ed40f4b314331d2eb3f9a4fa4cd3a0406, 927472,
            83c01aac4563b20df789b775319e9cb17dcc3524, package_extract_file("patch/system/app/CalendarProvider.odex.p"));
set_progress(0.031020);
apply_patch("/system/app/CertInstaller.apk", "-",
            edd42d84caf5bd25a676d85507bf3b7c5b940fd2, 54056,
            e614c2780aafeb0dc61564ba0c91460838261c71, package_extract_file("patch/system/app/CertInstaller.apk.p"));
set_progress(0.031341);
apply_patch("/system/app/CertInstaller.odex", "-",
            d0bece9a78efcc5549b729fda2b6436005fe40f6, 40624,
            18f1720c37d5b9bda8effcdb990128e532867221, package_extract_file("patch/system/app/CertInstaller.odex.p"));
set_progress(0.031582);
apply_patch("/system/app/CheckinProvider.apk", "-",
            00904576ac1d276d67137175b84c8c8e41850e2e, 4727,
            481ad1de7c5f31469b6ac3b0e5be8b72c6eb80e6, package_extract_file("patch/system/app/CheckinProvider.apk.p"));
set_progress(0.031610);
apply_patch("/system/app/CheckinProvider.odex", "-",
            9dfb7d7eb4bd6a39de092c85316dbf9f4e5ae17a, 101424,
            1f266194f5aeb44372eef3087b88b63a1cd85abb, package_extract_file("patch/system/app/CheckinProvider.odex.p"));
set_progress(0.032212);
apply_patch("/system/app/Clicker.odex", "-",
            7dea1d819e251b9bed5ad91ddeef5b33593df244, 91944,
            8f882b28a0b785d3c13aa327a841f02ee545bbee, package_extract_file("patch/system/app/Clicker.odex.p"));
set_progress(0.032758);
apply_patch("/system/app/ContactsProvider.apk", "-",
            a04643e71a85e13b74a2bb714c22c04608b52444, 33427,
            ee65d3068ec6167e88ccbd9a64ea45856d5da3ab, package_extract_file("patch/system/app/ContactsProvider.apk.p"));
set_progress(0.032956);
apply_patch("/system/app/ContactsProvider.odex", "-",
            1e4b4ca83cce50c903cdd61abcec99c393efa2c5, 659128,
            f37c163f8ff9961e3b4b32b768796dad7f43b6cb, package_extract_file("patch/system/app/ContactsProvider.odex.p"));
set_progress(0.036870);
apply_patch("/system/app/CustomizationSettingsProvider.odex", "-",
            670836bd1f10e19c8cd231301dcddda94bc8c034, 7712,
            25844c45edc1f16e9af40bc1145cac3fdd58eb0e, package_extract_file("patch/system/app/CustomizationSettingsProvider.odex.p"));
set_progress(0.036916);
apply_patch("/system/app/CustomizationSetup.odex", "-",
            6890f7906e64d881b8da5227ceab3bd47361b6d0, 83984,
            7f86184b56fe2478e45f02a56d4e3ed88999850c, package_extract_file("patch/system/app/CustomizationSetup.odex.p"));
set_progress(0.037415);
apply_patch("/system/app/DCSImpl.odex", "-",
            1068a2a84020e381b21f99e3eb6272fc3c46b411, 23000,
            fde322c9254d5ab06cb840cf1030100ca2528a7e, package_extract_file("patch/system/app/DCSImpl.odex.p"));
set_progress(0.037551);
apply_patch("/system/app/DCSStock.odex", "-",
            e25a96171fdcc200d31bf0d85590f9f171c9cbd9, 40576,
            c5a232b2dc0de6fedbca4c9f06028497cf5fc343, package_extract_file("patch/system/app/DCSStock.odex.p"));
set_progress(0.037792);
apply_patch("/system/app/DCSUtility.odex", "-",
            e56ad4ab924d58e13d8bb142c6bde04ab4f42d08, 27288,
            85c79cb6bd14bac69850b5d92cc195736840ca75, package_extract_file("patch/system/app/DCSUtility.odex.p"));
set_progress(0.037954);
apply_patch("/system/app/DebugTool.odex", "-",
            71151cfb519ab34f5499eeeb8baef24ae8265d0b, 19480,
            730f914aa22fb3044c78902a84d14cbb3b08f390, package_extract_file("patch/system/app/DebugTool.odex.p"));
set_progress(0.038070);
apply_patch("/system/app/DefaultContainerService.odex", "-",
            545e38a3b1c1320e8336dc25b5af691fdc88d29a, 13584,
            365a64d539b860a6860338e313c02e342731590b, package_extract_file("patch/system/app/DefaultContainerService.odex.p"));
set_progress(0.038150);
apply_patch("/system/app/DownloadProvider.apk", "-",
            d31826810a56bf26950f8ffe8ce41b9911ee628b, 55991,
            7425d2d9c07e0b8409c4cd8d7ece2d1eccd830e2, package_extract_file("patch/system/app/DownloadProvider.apk.p"));
set_progress(0.038483);
apply_patch("/system/app/DownloadProvider.odex", "-",
            38aa63928dda7358bef62267354caa57518763f5, 116008,
            78df092c63b3bd62034ae456488502343b65c1ab, package_extract_file("patch/system/app/DownloadProvider.odex.p"));
set_progress(0.039172);
apply_patch("/system/app/DrmProvider.odex", "-",
            3ae8dcf1e13f22ee2c39760480d4307d5b4597e5, 56496,
            473d37ed17b8ce6c29faabac8bae9ddaddcee5e3, package_extract_file("patch/system/app/DrmProvider.odex.p"));
set_progress(0.039507);
apply_patch("/system/app/Facebook.apk", "-",
            0d3228f8e366757129ef9a1dd8e268e1d6bdb0e6, 1647788,
            7e13aab7c512bd25c5c88386917ce9a5be307e4f, package_extract_file("patch/system/app/Facebook.apk.p"));
set_progress(0.049291);
apply_patch("/system/app/Facebook.odex", "-",
            1372baf553775838dd0359dcdfcfc6b8f55d7a7c, 1130104,
            ce9f717078f74a991bed763f83f19cb6509d2dc3, package_extract_file("patch/system/app/Facebook.odex.p"));
set_progress(0.056001);
apply_patch("/system/app/FieldTest.odex", "-",
            db90cdfd5899d67f3649e70eab817ea8f61159ea, 96448,
            6758f602aa6a8db9138db1bcb0b7d35202bc1355, package_extract_file("patch/system/app/FieldTest.odex.p"));
set_progress(0.056574);
apply_patch("/system/app/FilePicker.apk", "-",
            3a7d71c537363b1e38c3f61df78c10b1fe294bc0, 35422,
            fc78428af39458a5448f333c4ee1bffd1bc77907, package_extract_file("patch/system/app/FilePicker.apk.p"));
set_progress(0.056784);
apply_patch("/system/app/FilePicker.odex", "-",
            f5be3c62366d1e3ab0a8a1e297564daa44a8f3ea, 4184,
            b29d1784744db0c625f0468899f145d378ff03e3, package_extract_file("patch/system/app/FilePicker.odex.p"));
set_progress(0.056809);
apply_patch("/system/app/Flashlight.apk", "-",
            a1b70e721df7bdd8c4fb81c900decf49864a5d29, 729055,
            28386e5ea5a8fd16c1d78f5ef54ed93322e597ed, package_extract_file("patch/system/app/Flashlight.apk.p"));
set_progress(0.061138);
apply_patch("/system/app/Flashlight.odex", "-",
            4b1b1876c1e78d2757947646a0f3c8637636e6e4, 23272,
            0655aa355fa0b6f609e63f73961259d6f9442a0c, package_extract_file("patch/system/app/Flashlight.odex.p"));
set_progress(0.061276);
apply_patch("/system/app/Flickr.apk", "-",
            60d284ece402ad14f9998d45bc35ef184b2425a8, 127971,
            1209ba1708256e59fe1b8d4f416276b871e7ae08, package_extract_file("patch/system/app/Flickr.apk.p"));
set_progress(0.062036);
apply_patch("/system/app/Flickr.odex", "-",
            06fb60efc9ff59c948e35242792bcd47baab4bc1, 205032,
            1b8c2202f8ce98c1961a5a2e7db63f00cfe0618f, package_extract_file("patch/system/app/Flickr.odex.p"));
set_progress(0.063253);
apply_patch("/system/app/FriendStream.apk", "-",
            8692a695d5f7ccef57ca6d35cf0b9bebbb126a52, 86468,
            e5d2e4b6f22a6c9dc06dd2b961d8fe8ba24fb2e2, package_extract_file("patch/system/app/FriendStream.apk.p"));
set_progress(0.063766);
apply_patch("/system/app/FriendStream.odex", "-",
            748ddf31846824378a399373cb7706542f29e8b8, 100912,
            cd08cbd40f5745c5750362be3fe9cce8fcd195cc, package_extract_file("patch/system/app/FriendStream.odex.p"));
set_progress(0.064366);
apply_patch("/system/app/GenieWidget.odex", "-",
            e0ffc773b4b753874cfd7d9d37f4e9c1fc8c49b5, 470840,
            bb03be1a69cca5624bdf18bff8edabbf8629668f, package_extract_file("patch/system/app/GenieWidget.odex.p"));
set_progress(0.067161);
apply_patch("/system/app/Gmail.odex", "-",
            aa5160f44177629bfa9a649365412843edad7ba0, 703632,
            bb64a8fd6d2a3b93bbcadd9835c4eaf72bf216bd, package_extract_file("patch/system/app/Gmail.odex.p"));
set_progress(0.071339);
apply_patch("/system/app/GoogleCalendarSyncAdapter.odex", "-",
            cebe8780bfcdc8a82ad99bb22002fe1c951c24b8, 251720,
            5711b8979e8a69755254a00de8ee2364121e2417, package_extract_file("patch/system/app/GoogleCalendarSyncAdapter.odex.p"));
set_progress(0.072834);
apply_patch("/system/app/GoogleContactsSyncAdapter.odex", "-",
            a04fdbea1283544de78a40b68eae30c393e776f0, 293248,
            4a4c65a3118d517a38f1651e7a5cd67013d04e63, package_extract_file("patch/system/app/GoogleContactsSyncAdapter.odex.p"));
set_progress(0.074575);
apply_patch("/system/app/GoogleFeedback.odex", "-",
            389fd0ff7800954a01d842c254491a77fa2ff0be, 86032,
            7024ea2fd4d0025dfb8520cc3e4ad235a245d90c, package_extract_file("patch/system/app/GoogleFeedback.odex.p"));
set_progress(0.075086);
apply_patch("/system/app/GooglePartnerSetup.odex", "-",
            b4992f79ce3f60af2e7faf7ebe9f2215bfed73df, 10672,
            6fe5df839d153dc6dfe918a30f18cd3581a3ebfd, package_extract_file("patch/system/app/GooglePartnerSetup.odex.p"));
set_progress(0.075149);
apply_patch("/system/app/GoogleQuickSearchBox.odex", "-",
            d9fd14204876281ec383e3ece4415d40de705875, 354352,
            b24552009d6f19ef0232f951f4afaebaad894bb1, package_extract_file("patch/system/app/GoogleQuickSearchBox.odex.p"));
set_progress(0.077253);
apply_patch("/system/app/GoogleServicesFramework.odex", "-",
            bf45f449f76066fb6cad891ffae962fc32587826, 1236264,
            99992563f0764604d17e1e41ee8c59dc48b4066c, package_extract_file("patch/system/app/GoogleServicesFramework.odex.p"));
set_progress(0.084593);
apply_patch("/system/app/HTCAlbum.apk", "-",
            a4a09534b3b473d3566c4d6fb099666420d73d09, 561670,
            bf2bf8abfc357d4d49e710e1b97051200e93352d, package_extract_file("patch/system/app/HTCAlbum.apk.p"));
set_progress(0.087928);
apply_patch("/system/app/HTCAlbum.odex", "-",
            0ef63a45cc01f153b88f76361f9503dc3f6ab21c, 1330648,
            94a6168c3bb32483c123779cd53a45d5ab21620e, package_extract_file("patch/system/app/HTCAlbum.odex.p"));
set_progress(0.095829);
apply_patch("/system/app/HTCCamera.apk", "-",
            f0b8afa8199ef85923faf81308b3d677f57ec892, 615388,
            221832ce1ddf147f7e2aeb83efde928274af26e2, package_extract_file("patch/system/app/HTCCamera.apk.p"));
set_progress(0.099483);
apply_patch("/system/app/HTCCamera.odex", "-",
            007d734249de79b6fdcfda4bb6aba4255d10aa7d, 666872,
            1497c8b3bf2369d8c4f55213827da8ace7e3f2be, package_extract_file("patch/system/app/HTCCamera.odex.p"));
set_progress(0.103443);
apply_patch("/system/app/HTCSetupWizard.apk", "-",
            b6b6d6b121178832fc41d1983d6bcba44758c184, 1435633,
            6310d837e1115d2796d64ea8823806fed8fed095, package_extract_file("patch/system/app/HTCSetupWizard.apk.p"));
set_progress(0.111967);
apply_patch("/system/app/HTCSetupWizard.odex", "-",
            6b208152a1f30c93ed12415606f031b14da6e7ab, 203608,
            5e8afa53d0129a42f550beaf1583e8fe68399841, package_extract_file("patch/system/app/HTCSetupWizard.odex.p"));
set_progress(0.113176);
apply_patch("/system/app/HTC_IME.apk", "-",
            ef030cb3898dc1ee56dd2cf1eb07843dd845dcb5, 7543985,
            88507030ee0483de6bb00f3319c3d80d946eed2c, package_extract_file("patch/system/app/HTC_IME.apk.p"));
set_progress(0.157968);
apply_patch("/system/app/HTC_IME.odex", "-",
            ddee8f428cd45b0ca2d4714b8427ea9774cca66e, 961272,
            49668494d377e32f1412839b9d290790674e4ff5, package_extract_file("patch/system/app/HTC_IME.odex.p"));
set_progress(0.163676);
apply_patch("/system/app/HTMLViewer.odex", "-",
            f64ea700e3fba4e9345188b2bbd0ae51b125cd04, 7680,
            f9c3e287f5e3db43fc6c15052180ea038a6afa07, package_extract_file("patch/system/app/HTMLViewer.odex.p"));
set_progress(0.163722);
apply_patch("/system/app/HtcAddProgramWidget.apk", "-",
            ea9768d6c19a8b9e7ad047f94bb9d49dc7efe0fe, 85221,
            f38f86e554e3372ebea2bfe5f7d916337f571a63, package_extract_file("patch/system/app/HtcAddProgramWidget.apk.p"));
set_progress(0.164228);
apply_patch("/system/app/HtcAddProgramWidget.odex", "-",
            a3536e2460c5cd99c4b2c732d61b66863f580f4e, 98976,
            5f4d49c916f37653939518de704f805acddb8c31, package_extract_file("patch/system/app/HtcAddProgramWidget.odex.p"));
set_progress(0.164815);
apply_patch("/system/app/HtcCalculatorWidget.odex", "-",
            2eca3142c548e9ba2077d8da19d176bb87e7c0bd, 124392,
            569a75218ff215a33f1d160832ef7be89fa394f9, package_extract_file("patch/system/app/HtcCalculatorWidget.odex.p"));
set_progress(0.165554);
apply_patch("/system/app/HtcClockWidget.apk", "-",
            568b79c20b5e510f6b0bc08ed01c38e9aff8196f, 1156656,
            2da53b6a8d7e343023030ccbf6249e682b5cb432, package_extract_file("patch/system/app/HtcClockWidget.apk.p"));
set_progress(0.172422);
apply_patch("/system/app/HtcClockWidget.odex", "-",
            4c680a0cfe533593058d3caf020ed2825014c99a, 292792,
            f22184ba467269bc82646d236007533a400ca2c3, package_extract_file("patch/system/app/HtcClockWidget.odex.p"));
set_progress(0.174160);
apply_patch("/system/app/HtcContacts.apk", "-",
            3abd5ca6d18a7f887df03971bcf7b9bcd98e4ddc, 1920119,
            98a6b6ac68f385f6a38cc72a759e007c278a9354, package_extract_file("patch/system/app/HtcContacts.apk.p"));
set_progress(0.185561);
apply_patch("/system/app/HtcContacts.odex", "-",
            419aaf96a810df61cb77ef64bcebdb90551adc09, 1834736,
            3d60e9f0d92eaf1e67ce970bc64ecd28264da312, package_extract_file("patch/system/app/HtcContacts.odex.p"));
set_progress(0.196455);
apply_patch("/system/app/HtcCopyright.odex", "-",
            e440c515470908e67dc2f99470e88d1914dba5f6, 2736,
            df9a5733a64319d881ffb361bfd5ebe69e9ef37f, package_extract_file("patch/system/app/HtcCopyright.odex.p"));
set_progress(0.196471);
apply_patch("/system/app/HtcDialer.apk", "-",
            487d5423f7b1b0a96337b27cd7b4284a546d3ea3, 1422473,
            8241068681b9aaecd938f17170dbeb916ec9c942, package_extract_file("patch/system/app/HtcDialer.apk.p"));
set_progress(0.204917);
apply_patch("/system/app/HtcDialer.odex", "-",
            b80706090575c945e1b75efba319809b06a3a47d, 584840,
            2f310755f731914aa67f65c04f758ce58c40789a, package_extract_file("patch/system/app/HtcDialer.odex.p"));
set_progress(0.208389);
apply_patch("/system/app/HtcFMRadio.apk", "-",
            2859332b580d62edfea5e4da56d7574ef949e637, 1107014,
            0925141e2179ce562d5a67190e1dbc7ff0333a7f, package_extract_file("patch/system/app/HtcFMRadio.apk.p"));
set_progress(0.214962);
apply_patch("/system/app/HtcFMRadio.odex", "-",
            6311716080b6474b4ec33d8e2ef5e4b7993ff75b, 361584,
            d76da0fa6d798c38f1e24bad867e54b75fa303d4, package_extract_file("patch/system/app/HtcFMRadio.odex.p"));
set_progress(0.217109);
apply_patch("/system/app/HtcFacebook.apk", "-",
            95b83dcdaf8d4abae0622ed35567c338e010f652, 245942,
            ed5e2df0023a16c652a5f5a5cd6f77c61514083a, package_extract_file("patch/system/app/HtcFacebook.apk.p"));
set_progress(0.218570);
apply_patch("/system/app/HtcFacebook.odex", "-",
            4d5f3aa49a67d80b7adb2bb9f680e1e258c5d609, 281440,
            8d20c3411ef59ab8d1d63be7ede17ea8db80d7c7, package_extract_file("patch/system/app/HtcFacebook.odex.p"));
set_progress(0.220241);
apply_patch("/system/app/HtcFootprints.apk", "-",
            4da8614020791a94c1c70a9f3472dd00f51927d9, 1000400,
            a41b4f0f381eef95b95b35488c2a1c48ea02c1fc, package_extract_file("patch/system/app/HtcFootprints.apk.p"));
set_progress(0.226181);
apply_patch("/system/app/HtcFootprints.odex", "-",
            b1d2d625ac0d53b86779b4949d502154da5b355a, 585856,
            17722c27ae608e21d75d646608ead42a628ee1a5, package_extract_file("patch/system/app/HtcFootprints.odex.p"));
set_progress(0.229659);
apply_patch("/system/app/HtcFootprintsWidget.odex", "-",
            5d41ffb41ead78169ee92388877706501ca4c84b, 240472,
            df5b4a313ea209df1d6af11a4ebab528be230b63, package_extract_file("patch/system/app/HtcFootprintsWidget.odex.p"));
set_progress(0.231087);
apply_patch("/system/app/HtcLocationPicker.odex", "-",
            49c466646ef36d4c00a077a4be0d714e426216fd, 84056,
            e3c68f8a8575485e98fd6f89d7251cbcca5e3af0, package_extract_file("patch/system/app/HtcLocationPicker.odex.p"));
set_progress(0.231586);
apply_patch("/system/app/HtcLocationService.odex", "-",
            cedd8b2d11abaf1f56581c181f4ed9cdc0fe56d8, 123736,
            6c1f5cc70fdc6aff0d006955efd9255142b022b2, package_extract_file("patch/system/app/HtcLocationService.odex.p"));
set_progress(0.232321);
apply_patch("/system/app/HtcLockScreen.apk", "-",
            0d39274108d11f2ed5a61746ebcde111768ac0a8, 815315,
            b456ced1b1ee58edff5c9a07849fb7cd63c6a9e0, package_extract_file("patch/system/app/HtcLockScreen.apk.p"));
set_progress(0.237162);
apply_patch("/system/app/HtcLockScreen.odex", "-",
            940cec5fba422ecbcd7eaf69593297b81a703ce3, 125352,
            fd8573c01a0fcc5f8b7f1f1e7dfef1fcb4656833, package_extract_file("patch/system/app/HtcLockScreen.odex.p"));
set_progress(0.237906);
apply_patch("/system/app/HtcMessageUploader.odex", "-",
            abc2de5d361c58ebf526aad1b674368b129fc039, 26896,
            46768e2cf1d6f0a25bdf3412de3fca609f90a693, package_extract_file("patch/system/app/HtcMessageUploader.odex.p"));
set_progress(0.238066);
apply_patch("/system/app/HtcMusic.apk", "-",
            1c6763f8042025e479ca4be8e418f7936b7d65f4, 876011,
            41485d0d6909eecc7cd370d70e133556239da958, package_extract_file("patch/system/app/HtcMusic.apk.p"));
set_progress(0.243267);
apply_patch("/system/app/HtcMusic.odex", "-",
            18d0c7de52d822d0839587eeb45f5307811b7bb1, 772792,
            cca528919efe3b1c6aa896e954bc22737b05915d, package_extract_file("patch/system/app/HtcMusic.odex.p"));
set_progress(0.247855);
apply_patch("/system/app/HtcPhotoWidget.apk", "-",
            618fedb9863d53af3777c8f574bd5986329a9eea, 1063213,
            3c9cfd859c82da31383c26db268ade297b33488f, package_extract_file("patch/system/app/HtcPhotoWidget.apk.p"));
set_progress(0.254168);
apply_patch("/system/app/HtcPhotoWidget.odex", "-",
            e4c890c6118f9feada1b67e91e9e60d0bccfc8e6, 108528,
            adc1a5531812299805579cac87a9f00ec1781465, package_extract_file("patch/system/app/HtcPhotoWidget.odex.p"));
set_progress(0.254813);
apply_patch("/system/app/HtcProfilesWidget.odex", "-",
            a077c6e749f95d9e718dcddc90c302269c4cccb2, 17736,
            6f6b49e4dd27dccf1470abc5d34c970451a2eb9e, package_extract_file("patch/system/app/HtcProfilesWidget.odex.p"));
set_progress(0.254918);
apply_patch("/system/app/HtcRingtoneTrimmer.apk", "-",
            e17a495445a7164fe12646dfd1f53b58b6185780, 235090,
            438a3a4640dcc3b4c05e3b3cbb96aca2b715bfcc, package_extract_file("patch/system/app/HtcRingtoneTrimmer.apk.p"));
set_progress(0.256314);
apply_patch("/system/app/HtcRingtoneTrimmer.odex", "-",
            090bb6bb5b9a68ea31deb61d2c3e3587e0734e7a, 102368,
            9bd39059d7a51f3e7145c69eb0446258364d2890, package_extract_file("patch/system/app/HtcRingtoneTrimmer.odex.p"));
set_progress(0.256922);
apply_patch("/system/app/HtcRingtoneWidget.odex", "-",
            ae34355b04a8a439e254f1425556fbdb323b0ed6, 12576,
            be7b1f16e3e33ecd49db7a596e8478cc9bc16d72, package_extract_file("patch/system/app/HtcRingtoneWidget.odex.p"));
set_progress(0.256996);
apply_patch("/system/app/HtcSettingsProvider.odex", "-",
            73b8dde98c04cddee05582434f41c100bcf4393c, 14920,
            11374e987dafb834c5c379b2bde2fbb23506ddba, package_extract_file("patch/system/app/HtcSettingsProvider.odex.p"));
set_progress(0.257085);
apply_patch("/system/app/HtcSoundRecorder.apk", "-",
            a0158471c1df4ebf0dbc4d13075f6b36f26f4ed4, 514486,
            e0279d51308ee50cf980ba139dd3ddbcad9f7c87, package_extract_file("patch/system/app/HtcSoundRecorder.apk.p"));
set_progress(0.260140);
apply_patch("/system/app/HtcSoundRecorder.odex", "-",
            200018e80416b953d68f91d45c2ba5657d16de26, 296960,
            a6e7f6eaa150760403aee0d72377da7707822755, package_extract_file("patch/system/app/HtcSoundRecorder.odex.p"));
set_progress(0.261903);
apply_patch("/system/app/HtcStreamPlayer.odex", "-",
            589bf6fa9f37b4168b09a95d24e93c4dcb579359, 146752,
            125a8d37dca69a1cba3d57695708737feeec00c8, package_extract_file("patch/system/app/HtcStreamPlayer.odex.p"));
set_progress(0.262774);
apply_patch("/system/app/HtcSyncwidget.odex", "-",
            551b27f17c91bf562dd10aca3d9888d36033bc27, 16216,
            11b9a07b5a5b8cbdceb054f7e954d9b5861b8f13, package_extract_file("patch/system/app/HtcSyncwidget.odex.p"));
set_progress(0.262871);
apply_patch("/system/app/HtcTwitter.apk", "-",
            fbfefd02b7f9cab41a4a2630acb555ae4e69f181, 511532,
            a146aa36893f93c15f9c183a5ca4f3ab6a5ab366, package_extract_file("patch/system/app/HtcTwitter.apk.p"));
set_progress(0.265908);
apply_patch("/system/app/HtcTwitter.odex", "-",
            91a4a6c9105554bfe828abf54291cb64b13db641, 509160,
            64ae8d94afd694b8730c2b27b4508b3b5d29a5b1, package_extract_file("patch/system/app/HtcTwitter.odex.p"));
set_progress(0.268931);
apply_patch("/system/app/HtcWeatherWallpaper.odex", "-",
            557ddea9dbe50e0f9472da34a127c5f558723f1d, 151416,
            5754bcfe669b6db92f8bd9e67e44a85f43e96692, package_extract_file("patch/system/app/HtcWeatherWallpaper.odex.p"));
set_progress(0.269830);
apply_patch("/system/app/LiveWallpapers.odex", "-",
            2912e4dd9da2d72a7a16bd985e48fdd9f4dee012, 72152,
            dc7f9193272460f58db6795a517adddf3b08657e, package_extract_file("patch/system/app/LiveWallpapers.odex.p"));
set_progress(0.270258);
apply_patch("/system/app/LiveWallpapersPicker.odex", "-",
            6c06fd4d705dc90b502acad2a15ee30f140dcb8a, 21240,
            7fb165b5fc836b2875c9e0ce7950e93c901ee90f, package_extract_file("patch/system/app/LiveWallpapersPicker.odex.p"));
set_progress(0.270385);
apply_patch("/system/app/MagicSmokeWallpapers.odex", "-",
            56f2ee3d992cbe17392df3d4a46ce1f97ba3cbd0, 25048,
            426a1bcccd598195e4e3604b6f3651c12f83b06b, package_extract_file("patch/system/app/MagicSmokeWallpapers.odex.p"));
set_progress(0.270533);
apply_patch("/system/app/Mail.apk", "-",
            e023e696fd4c11b072c7193d937ab612b598bd97, 1785700,
            258219b37bc3ca5d73373663e4f99af68f7e49e2, package_extract_file("patch/system/app/Mail.apk.p"));
set_progress(0.281136);
apply_patch("/system/app/Mail.odex", "-",
            89bd7924816561cbf805dc7afb77903003ea842b, 2945816,
            cd44316fe0590aa4723d2a8599b16cbe963aed41, package_extract_file("patch/system/app/Mail.odex.p"));
set_progress(0.298627);
apply_patch("/system/app/MarketUpdater.odex", "-",
            dc4ea2678084ba4b1bcd1570ae425a445e44a2c1, 3336,
            8308f75ee3e765db78f45f7e160b2f09dea4a96e, package_extract_file("patch/system/app/MarketUpdater.odex.p"));
set_progress(0.298647);
apply_patch("/system/app/MediaProvider.odex", "-",
            27f4699cee64ddb5692220bb865e70547916b444, 111120,
            f69c9029031627196f0b3e689d226cf3bbebfc79, package_extract_file("patch/system/app/MediaProvider.odex.p"));
set_progress(0.299306);
apply_patch("/system/app/MediaUploader.odex", "-",
            ab517e892845410c3eee15c0702d411619b8e9ea, 213696,
            42f05d6b8fae575337f94fd12b085d55d3e2c4eb, package_extract_file("patch/system/app/MediaUploader.odex.p"));
set_progress(0.300575);
apply_patch("/system/app/Mms.apk", "-",
            974551f5e387028b0b303c30056267bc93b5e2f5, 1889600,
            d7e3590aaa9a93f1d171182fe67ef3211f6f320d, package_extract_file("patch/system/app/Mms.apk.p"));
set_progress(0.311795);
apply_patch("/system/app/Mms.odex", "-",
            fb6a290e365cb6e610d9f3327aa145e3599af810, 1783696,
            56fce182a10f29ae2cc091cf8acb1da2d550b23b, package_extract_file("patch/system/app/Mms.odex.p"));
set_progress(0.322386);
apply_patch("/system/app/Mode10Wallpapers.apk", "-",
            ad1b6b0415e8089fbb9b901193a3d67a3e4cb9a6, 727015,
            3a5889465c3d85b617fb3adec076d99c45ddb15a, package_extract_file("patch/system/app/Mode10Wallpapers.apk.p"));
set_progress(0.326702);
apply_patch("/system/app/Mode10Wallpapers.odex", "-",
            515c8daf16436249d260d7b9b74b7ece32f666df, 26720,
            805bd085c0f26b88064977b4499b6978a678a06a, package_extract_file("patch/system/app/Mode10Wallpapers.odex.p"));
set_progress(0.326861);
apply_patch("/system/app/NetworkLocation.odex", "-",
            26dd47fe76722d2cb1b23f6b14dfd1383992354c, 221664,
            db5d57da7f9a3d139a3f9295d536899c78e1f06c, package_extract_file("patch/system/app/NetworkLocation.odex.p"));
set_progress(0.328177);
apply_patch("/system/app/NewsReader.apk", "-",
            90650e5714c9940a9577f50ec6a35f62a3bc1b3e, 467861,
            f6fcb6cac1d9198b651f9eb0053b222ce5767298, package_extract_file("patch/system/app/NewsReader.apk.p"));
set_progress(0.330955);
apply_patch("/system/app/NewsReader.odex", "-",
            a5d412a9ad753484da256df691ecac97d7025d6b, 403648,
            edf23e57d23914991f008dcc2be8e412d33a59ef, package_extract_file("patch/system/app/NewsReader.odex.p"));
set_progress(0.333352);
apply_patch("/system/app/PCSCII.apk", "-",
            a6625fbd270603cea5f67634d375acf9be492c24, 166396,
            8f24abcacf224439330d2571b559f6746d2ca894, package_extract_file("patch/system/app/PCSCII.apk.p"));
set_progress(0.334340);
apply_patch("/system/app/PCSCII.odex", "-",
            1031cd1fe7684b972228dd53a13bd9dd8ddfb39a, 437376,
            97fad90241579961504f4f9ea3cf5b7182eec06e, package_extract_file("patch/system/app/PCSCII.odex.p"));
set_progress(0.336937);
apply_patch("/system/app/PDFViewer.apk", "-",
            52460c997d88d540b7c97fccadab0d63954758fa, 159956,
            f8f2efb02380900c97e6f7ccf135d4767cd7fb5b, package_extract_file("patch/system/app/PDFViewer.apk.p"));
set_progress(0.337886);
apply_patch("/system/app/PDFViewer.odex", "-",
            b518bf107721fa06d505a1321b372b5eda294a25, 219784,
            5f58ebde1faf73b74a52569d1d2e767231d5ef14, package_extract_file("patch/system/app/PDFViewer.odex.p"));
set_progress(0.339191);
apply_patch("/system/app/PackageInstaller.odex", "-",
            16fb042f59eb93573db8797cddd82b2945bd987b, 30312,
            4977f8622f824550acd7b7ac1c0dd900155757eb, package_extract_file("patch/system/app/PackageInstaller.odex.p"));
set_progress(0.339371);
apply_patch("/system/app/Phone.apk", "-",
            6229eaf0a8fd31bc8f4a004c333fe3feb82c3ee4, 1844881,
            5b59941671f1bdef725c70269886e9440a7bb2ed, package_extract_file("patch/system/app/Phone.apk.p"));
set_progress(0.350325);
apply_patch("/system/app/Phone.odex", "-",
            cd3af21e3d45a39d5792671e9ab80ffb96e8b306, 1009224,
            84361c13a4f6e58eab8aae5117af78b2216ed0b2, package_extract_file("patch/system/app/Phone.odex.p"));
set_progress(0.356318);
apply_patch("/system/app/PicoTts.odex", "-",
            35aada9cecee84b4c22e658fcdbacc1675ecb7f4, 14256,
            453ba8825fc9be0f791f38e226fa94a994926766, package_extract_file("patch/system/app/PicoTts.odex.p"));
set_progress(0.356402);
apply_patch("/system/app/PluginManager.odex", "-",
            bbfd4cb01a55c378bacbb41145effc55966dc2ad, 26056,
            f54a6c1729180f804b000f6abd3cbae8fb40ab38, package_extract_file("patch/system/app/PluginManager.odex.p"));
set_progress(0.356557);
apply_patch("/system/app/QuickLookup.apk", "-",
            5a24f5607d721c93bf758f95ef8a94a0b5c61248, 51387,
            02d7942fd7d8e6124b2145de2903e925ccce75b7, package_extract_file("patch/system/app/QuickLookup.apk.p"));
set_progress(0.356862);
apply_patch("/system/app/QuickLookup.odex", "-",
            f308bb905475d914707e6b12bc23fd6a1266ec86, 58544,
            3f23e68d99be8b32a2b1535d8ef88328ed6d1f8d, package_extract_file("patch/system/app/QuickLookup.odex.p"));
set_progress(0.357210);
apply_patch("/system/app/Quickoffice.apk", "-",
            1ff72cd4b1920d8855c750f047b08d279129b7d9, 1098381,
            cd8e3a9f2bdeb6bfb593c2e76add5a4842103c98, package_extract_file("patch/system/app/Quickoffice.apk.p"));
set_progress(0.363732);
apply_patch("/system/app/Quickoffice.odex", "-",
            2bfc58fa2f4decfa73a04c7f74da83eec7b97b60, 5286736,
            3b165396138d06a9800e8081bc1c33b28ded86a5, package_extract_file("patch/system/app/Quickoffice.odex.p"));
set_progress(0.395122);
apply_patch("/system/app/QxdmLog.odex", "-",
            acc06f0352537bc4882e97e15fbf1ba2c773dae2, 9464,
            7300f302ee0d70edadf9f3f2219d7c58e470bb9a, package_extract_file("patch/system/app/QxdmLog.odex.p"));
set_progress(0.395178);
apply_patch("/system/app/RSS.odex", "-",
            a2af8aa86988a7e142febc6fc2d9adf7c072882e, 533072,
            3859ec039000ce5aef8a3032b804beec0e81f19b, package_extract_file("patch/system/app/RSS.odex.p"));
set_progress(0.398343);
apply_patch("/system/app/Rosie.apk", "-",
            f1cbf44f955ac4ed691dbd5ef9244ef9a20bff85, 907566,
            f2ee03a9a13ade3aac56fd9edc4ef3d4ec9068d9, package_extract_file("patch/system/app/Rosie.apk.p"));
set_progress(0.403732);
apply_patch("/system/app/Rosie.odex", "-",
            5850bb3f4b9356396afad1b35d99828f4efcd732, 687416,
            c157bf7552446df2c35139482ed4f0072c155386, package_extract_file("patch/system/app/Rosie.odex.p"));
set_progress(0.407813);
apply_patch("/system/app/Settings.apk", "-",
            2d770810d501d373a3f7f9e9937fefdc829fc44d, 4691357,
            da1465513b14d365ac12a382f39dd2a948fb471a, package_extract_file("patch/system/app/Settings.apk.p"));
set_progress(0.435669);
apply_patch("/system/app/Settings.odex", "-",
            f2eaf09cee952975d206a4b090341ce67bac7a87, 1242816,
            4ee78c39b19d6a706a82543fdc1848b4e3ceda72, package_extract_file("patch/system/app/Settings.odex.p"));
set_progress(0.443048);
apply_patch("/system/app/SettingsProvider.apk", "-",
            383feb2bcc81dd548b0d041481a9c42cfb188223, 18901,
            7497deaf55d77105220b0cf580f378b816f283c3, package_extract_file("patch/system/app/SettingsProvider.apk.p"));
set_progress(0.443160);
apply_patch("/system/app/SettingsProvider.odex", "-",
            5ea3d43aef25b1cf40543011b18e110ca4eac403, 71840,
            0db39b6aa50fd868f9b16109e6829221c00f76b1, package_extract_file("patch/system/app/SettingsProvider.odex.p"));
set_progress(0.443587);
apply_patch("/system/app/SetupWizard.odex", "-",
            61b2d95ed3cc56d3cb758dddaed99a7aa44db711, 89768,
            ceaa1b882ce88491ab09f68141e7689e6f1df477, package_extract_file("patch/system/app/SetupWizard.odex.p"));
set_progress(0.444120);
apply_patch("/system/app/SocialNetworkProvider.odex", "-",
            8002127868aa998ad7513d9521636cdbb3e19077, 122800,
            73b240e6acde8215eae5d235c4d02d8712e20855, package_extract_file("patch/system/app/SocialNetworkProvider.odex.p"));
set_progress(0.444849);
apply_patch("/system/app/Stk.apk", "-",
            c614cbbaf2df707e8792e207d36e0125c2de2521, 43799,
            2035850d260fa916684ceff53c8f6fa2123f060b, package_extract_file("patch/system/app/Stk.apk.p"));
set_progress(0.445109);
apply_patch("/system/app/Stk.odex", "-",
            eb34f1437c0d312774f6b9b117e1bdeb3c691261, 52360,
            f6323573b6aa28549ef86ee6c6ff8e2c89e1bcf9, package_extract_file("patch/system/app/Stk.odex.p"));
set_progress(0.445420);
apply_patch("/system/app/Stock.apk", "-",
            5a3f7d7199cca3ba9e43ed0357f3a0d78f9d2363, 452691,
            ec4684295dcef43010d1c91e38c8d211a7c7ada8, package_extract_file("patch/system/app/Stock.apk.p"));
set_progress(0.448108);
apply_patch("/system/app/Stock.odex", "-",
            36e6c55722c5351766d6455222ec5c2e0e70903a, 196936,
            cf63ff8d8b4b0a44d7efc18a2a024886b54e1f89, package_extract_file("patch/system/app/Stock.odex.p"));
set_progress(0.449277);
apply_patch("/system/app/Street.odex", "-",
            f06ce7d5b14e1df329a1c65f73a4e3a86cd6c64a, 286584,
            1fd3b69dbf5e96ad56c1e7d2fd782a9fec2a0497, package_extract_file("patch/system/app/Street.odex.p"));
set_progress(0.450979);
apply_patch("/system/app/Talk.odex", "-",
            5e0d4d0b54912384ade197f9f3833aaeb8a2cd88, 500896,
            4e77f8be1c724b57fd039b6b4e2fb91cc3c5cc0a, package_extract_file("patch/system/app/Talk.odex.p"));
set_progress(0.453953);
apply_patch("/system/app/TelephonyProvider.apk", "-",
            64f11302a21646bf74ca0a07746197d59b39ccdb, 26424,
            36c8942463dc949282dfe9ff072002d964e64322, package_extract_file("patch/system/app/TelephonyProvider.apk.p"));
set_progress(0.454110);
apply_patch("/system/app/TelephonyProvider.odex", "-",
            b7f05a170c6f8560cfb3a75ee7ef9e35a2fb1951, 339664,
            3a80c3abf1615ad6d599cada5f5eb986eeae04a8, package_extract_file("patch/system/app/TelephonyProvider.odex.p"));
set_progress(0.456126);
apply_patch("/system/app/TtsService.odex", "-",
            d38fb4ec654080662b9b1611b3b7ca299de01202, 37592,
            2032779b4fa83b91497f49c2c9c5b5e25ba9d8b2, package_extract_file("patch/system/app/TtsService.odex.p"));
set_progress(0.456349);
apply_patch("/system/app/Updater.apk", "-",
            999d06fd3cfc7cb1f2e0ba3fd833064b59934de3, 287659,
            d4c1efcb1d618210864f392d2e5f6ea862469060, package_extract_file("patch/system/app/Updater.apk.p"));
set_progress(0.458057);
apply_patch("/system/app/Updater.odex", "-",
            fa536bd55c395c7ae16ed494e01d969662076501, 126768,
            451595f5abedf0bbb0b9222fb7dafd183063c2df, package_extract_file("patch/system/app/Updater.odex.p"));
set_progress(0.458810);
apply_patch("/system/app/UpgradeSetup.odex", "-",
            6c2c5bd08626c90f220b78661315241df240610b, 12392,
            20aa5a9c7975dddcf0b1c7671ad5f3d5c0f6ef17, package_extract_file("patch/system/app/UpgradeSetup.odex.p"));
set_progress(0.458884);
apply_patch("/system/app/UploadProvider.apk", "-",
            bfa34165e604970ea1963498b87c926151b44fad, 135908,
            79a61597322ac418050ff155efac16cdda387927, package_extract_file("patch/system/app/UploadProvider.apk.p"));
set_progress(0.459691);
apply_patch("/system/app/UploadProvider.odex", "-",
            28d5aabf4954822ba1c2a8afc51f9f06d4215fdd, 153072,
            ac75d4ad815dd8f849536b32351ac1ea25fe2791, package_extract_file("patch/system/app/UploadProvider.odex.p"));
set_progress(0.460600);
apply_patch("/system/app/UserDictionaryProvider.odex", "-",
            e78ea01600e8c2fe4839807cc21662db4f60dc8a, 15576,
            d070137cd40650941b726efdcc6be44f2bc3fe05, package_extract_file("patch/system/app/UserDictionaryProvider.odex.p"));
set_progress(0.460692);
apply_patch("/system/app/Vending.odex", "-",
            1a5743eab120c1f6a75f4fdb8d8bc25f85cb8dcd, 877072,
            0ad81435af052774848bc83e57650c2ba33ed6f0, package_extract_file("patch/system/app/Vending.odex.p"));
set_progress(0.465900);
apply_patch("/system/app/VisualizationWallpapers.odex", "-",
            29915043c17749c1ceed260412af89685d17f7e4, 32512,
            895d7a066a2f93626bae4c99e0905691d41eff7c, package_extract_file("patch/system/app/VisualizationWallpapers.odex.p"));
set_progress(0.466093);
apply_patch("/system/app/VoiceSearch.odex", "-",
            8daabbdf36d505e4bd8cf83a00eb8d43a4c00ec0, 444888,
            2720d324b583e58b8fd500b15094ad3b93b1a517, package_extract_file("patch/system/app/VoiceSearch.odex.p"));
set_progress(0.468734);
apply_patch("/system/app/VpnServices.odex", "-",
            e6ab09395e9f97c75bd9cc5fd2806169d64cc8c3, 33328,
            49a6b902bdfbf3de9f6815c585a51f7b85b0ef4a, package_extract_file("patch/system/app/VpnServices.odex.p"));
set_progress(0.468932);
apply_patch("/system/app/Weather.apk", "-",
            d0cc6d59ea985a0d0dcb2dc7519fe87e77e90071, 357189,
            f0605cb40efa749406fba64727c698b523605f06, package_extract_file("patch/system/app/Weather.apk.p"));
set_progress(0.471053);
apply_patch("/system/app/Weather.odex", "-",
            8b4efe95e293fd700e8ade714ea6d7c3a536cbe3, 191160,
            6e1291ca60e92dd7b6eea2a30d6bdbdef42c7c95, package_extract_file("patch/system/app/Weather.odex.p"));
set_progress(0.472188);
apply_patch("/system/app/WeatherAgentService.odex", "-",
            087111e3a9a464a210f91239ee6af00359e185e0, 23832,
            440c7d0955cd1f3ce56f26bd272b3f8155581e9b, package_extract_file("patch/system/app/WeatherAgentService.odex.p"));
set_progress(0.472330);
apply_patch("/system/app/WeatherProvider.odex", "-",
            f6ce1e738fe5ac10412f7b7a56183a9d76f0f581, 29040,
            2cbc19774be4509b2c4e0c68fc7083c10770e890, package_extract_file("patch/system/app/WeatherProvider.odex.p"));
set_progress(0.472502);
apply_patch("/system/app/WeatherSyncProvider.odex", "-",
            773ad708ffe4145891d624da77c3588e4bbb34ff, 44456,
            414412b8ac0343d0b66657d7e755db98961ef9b3, package_extract_file("patch/system/app/WeatherSyncProvider.odex.p"));
set_progress(0.472766);
apply_patch("/system/app/WidgetDownloadManager.odex", "-",
            500187dda9de3ab934512e0331005c9a005e5334, 117856,
            85e8a2aec10ce1a6b8cc50ed0b1f713a5f5ebfa2, package_extract_file("patch/system/app/WidgetDownloadManager.odex.p"));
set_progress(0.473466);
apply_patch("/system/app/WifiRouter.apk", "-",
            42b735368dddf32b6a2c65bee18e32901d70bfbc, 312271,
            262590f87e94c54675f652fac79df34b69e2037c, package_extract_file("patch/system/app/WifiRouter.apk.p"));
set_progress(0.475320);
apply_patch("/system/app/WifiRouter.odex", "-",
            65f84e29c82ee429d66a049e7d1b4c7a2313dda0, 82440,
            eaf72bc03658ff0f95c1b9e72316c38e030771df, package_extract_file("patch/system/app/WifiRouter.odex.p"));
set_progress(0.475809);
apply_patch("/system/app/WorldClock.apk", "-",
            bd952d02c0d45eefc6276863a5b6f4c76e25364b, 645747,
            522690dbd46505d85279839646c786330141a11a, package_extract_file("patch/system/app/WorldClock.apk.p"));
set_progress(0.479643);
apply_patch("/system/app/WorldClock.odex", "-",
            c3ce3e20eff8a7fce155228e60a790dce38192f3, 387160,
            a21eba2892aca4a71d4da56e66de450e24a747d0, package_extract_file("patch/system/app/WorldClock.odex.p"));
set_progress(0.481942);
apply_patch("/system/app/YouTube.odex", "-",
            14901bde8fc5292763ba4e423e38c54a880f173a, 378016,
            c5a32cfebfc05379a3162c9368a25f90f62c9278, package_extract_file("patch/system/app/YouTube.odex.p"));
set_progress(0.484187);
apply_patch("/system/app/com.htc.FMRadioWidget.apk", "-",
            22e42d5fc55e1254ae7d712b4197c2c377d3b09f, 1195299,
            c080762554b4ac45d18c8737a6469daa3be4c024, package_extract_file("patch/system/app/com.htc.FMRadioWidget.apk.p"));
set_progress(0.491284);
apply_patch("/system/app/com.htc.FMRadioWidget.odex", "-",
            9d7914bb19f7ec2148cd1220bfa0527ed98f1396, 129904,
            95e43d499b1aefa6056063b0f356aaa675e37eba, package_extract_file("patch/system/app/com.htc.FMRadioWidget.odex.p"));
set_progress(0.492055);
apply_patch("/system/app/com.htc.FriendStreamWidget.apk", "-",
            16fe640f8d3ca329357ca9d43402ef0b5ad3b62a, 230972,
            79590668e290a34caa2e9a67478470719f67faaf, package_extract_file("patch/system/app/com.htc.FriendStreamWidget.apk.p"));
set_progress(0.493427);
apply_patch("/system/app/com.htc.FriendStreamWidget.odex", "-",
            ca01beedd5b3c7d42718372f3e4732a77ce1d497, 81600,
            1c90b5d374e5d4d466f54b152033a5cc5251f150, package_extract_file("patch/system/app/com.htc.FriendStreamWidget.odex.p"));
set_progress(0.493911);
apply_patch("/system/app/com.htc.MusicWidget.apk", "-",
            8a330005c1dbc82056faf5c8d386a87ab51ab14f, 445550,
            bf3cc49ef86c2be2f7e2bfd97bfaa9a3a103a982, package_extract_file("patch/system/app/com.htc.MusicWidget.apk.p"));
set_progress(0.496557);
apply_patch("/system/app/com.htc.MusicWidget.odex", "-",
            d1f21d2a2f05271659dcdd64f23f7ffa62e22dd4, 83664,
            19ed18c954cd489fc3324f85abd03819de43e3f5, package_extract_file("patch/system/app/com.htc.MusicWidget.odex.p"));
set_progress(0.497053);
apply_patch("/system/app/com.htc.NewsReaderWidget.apk", "-",
            1759529529c920219dc93a928ab3bfb32f06a01b, 263740,
            f7b3b6c329732cf03d84744327a85cf6d5836f17, package_extract_file("patch/system/app/com.htc.NewsReaderWidget.apk.p"));
set_progress(0.498619);
apply_patch("/system/app/com.htc.NewsReaderWidget.odex", "-",
            d73ef8efd3424040cedfb7871febadae7559fade, 154544,
            86c7945497dc5c12c83c72bd198675667b0d8e04, package_extract_file("patch/system/app/com.htc.NewsReaderWidget.odex.p"));
set_progress(0.499537);
apply_patch("/system/app/com.htc.StockWidget.odex", "-",
            8c26893e37292639d8abd92587ef6ddf8db49165, 150912,
            df177719c98b1853469d63ed679372a62a3f0ee7, package_extract_file("patch/system/app/com.htc.StockWidget.odex.p"));
set_progress(0.500433);
apply_patch("/system/app/com.htc.TwitterWidget.odex", "-",
            6e556cc6ffbeadeeec5b4731b154f552959605ce, 75656,
            1be3651045f10aa22d008d846a396d13529c19e2, package_extract_file("patch/system/app/com.htc.TwitterWidget.odex.p"));
set_progress(0.500882);
apply_patch("/system/app/com.htc.WeatherWidget.apk", "-",
            9d1f5c93ad5b602e1ff5e49797e2a619ff2ab8b7, 385328,
            3f6f6f8f3fec79f01e789606834ac302e3081c2d, package_extract_file("patch/system/app/com.htc.WeatherWidget.apk.p"));
set_progress(0.503170);
apply_patch("/system/app/com.htc.WeatherWidget.odex", "-",
            5cc190253f96d3fa41634ec20e096b6a90e6b76b, 148320,
            98c73e8f676c4c4c75bf3e9de326373351056e6d, package_extract_file("patch/system/app/com.htc.WeatherWidget.odex.p"));
set_progress(0.504051);
apply_patch("/system/app/htcbookmarkwidget.odex", "-",
            1a02780742c6b998d29afaa50db904839907d4d0, 100072,
            5e4995277bb6ad20dfd1c2cd74e1ea8a3c812b6b, package_extract_file("patch/system/app/htcbookmarkwidget.odex.p"));
set_progress(0.504645);
apply_patch("/system/app/htccalendarwidgets.apk", "-",
            5c90ece2d923a15bf07c3dbc1caf4d8202652e24, 226559,
            f598a768c1aab41ce1e1c5afbb221e4e34f22325, package_extract_file("patch/system/app/htccalendarwidgets.apk.p"));
set_progress(0.505990);
apply_patch("/system/app/htccalendarwidgets.odex", "-",
            d415394b6e9f1bb6dd761b5c18ccf961e8703daa, 136200,
            7f20b5c44879a8c5209aa9ddd4187aae9cc5d3ec, package_extract_file("patch/system/app/htccalendarwidgets.odex.p"));
set_progress(0.506799);
apply_patch("/system/app/htccontactwidgets.apk", "-",
            ea69340dea7e9ea1f9cee02a955623b1a707a0e4, 509940,
            8c6520419aab51d1a35b66e3ce4a15aada0489f2, package_extract_file("patch/system/app/htccontactwidgets.apk.p"));
set_progress(0.509827);
apply_patch("/system/app/htccontactwidgets.odex", "-",
            ec2717a4e90aab9cdf3da0bc8b9eae26a4fdc233, 225576,
            08f3365b5e2d57175f167ac230797eecd37df004, package_extract_file("patch/system/app/htccontactwidgets.odex.p"));
set_progress(0.511166);
apply_patch("/system/app/htcmailwidgets.apk", "-",
            4ca8a7f08b9d0085e5ceab1e9e7b8e463726130c, 677327,
            0378802fb4e2d7245da5b27f932f556e996e3033, package_extract_file("patch/system/app/htcmailwidgets.apk.p"));
set_progress(0.515188);
apply_patch("/system/app/htcmailwidgets.odex", "-",
            d945a0d7089c3d32b5c715e1ee2b6fa02c4b9140, 244720,
            21e9c261354b86fba9f46fc2f17adf2020e3977b, package_extract_file("patch/system/app/htcmailwidgets.odex.p"));
set_progress(0.516641);
apply_patch("/system/app/htcmsgwidgets.apk", "-",
            6a773afd16caee1bb3fb2620150233c2914af706, 319629,
            5450eb821fda0a7281781d89ae4fdab531cb47ce, package_extract_file("patch/system/app/htcmsgwidgets.apk.p"));
set_progress(0.518539);
apply_patch("/system/app/htcmsgwidgets.odex", "-",
            37846c88e2dd9a75cd3b3e3210cbcf82ba9cf7f1, 125184,
            6fcd350859d6a39fc553544d3c5ab163f4a344e0, package_extract_file("patch/system/app/htcmsgwidgets.odex.p"));
set_progress(0.519282);
apply_patch("/system/app/htcsettingwidgets.apk", "-",
            3e27ee266a9487183a8563208f6106a1637fb600, 198288,
            7861ce346c407fecc08d44d62df1994a543e80a4, package_extract_file("patch/system/app/htcsettingwidgets.apk.p"));
set_progress(0.520459);
apply_patch("/system/app/htcsettingwidgets.odex", "-",
            31f3a1d611804e3d80625cb671215ae2dcaef9da, 85384,
            6ba5f1ee5cc904450219becbcc6744a7dd6e9aae, package_extract_file("patch/system/app/htcsettingwidgets.odex.p"));
set_progress(0.520966);
apply_patch("/system/app/install_flash_player.apk", "-",
            b2279fb1313b7ad165e4058392c42fcb3d0c723c, 4412008,
            af546ae29917071e5a38e4392636b9aca2cfdaf5, package_extract_file("patch/system/app/install_flash_player.apk.p"));
set_progress(0.547163);
apply_patch("/system/app/install_flash_player.odex", "-",
            47a4d1d2eeb597d28ebf65e5825c76e57452859b, 54632,
            c530317c7743118bfa07bd8e3282fe9c90006110, package_extract_file("patch/system/app/install_flash_player.odex.p"));
set_progress(0.547487);
apply_patch("/system/app/restartapp.odex", "-",
            4cad3f7c71cd21415caab6a9a347026b8814056e, 10552,
            638185b543d7b3861d3cda2c5a4edf16c65586ba, package_extract_file("patch/system/app/restartapp.odex.p"));
set_progress(0.547550);
apply_patch("/system/app/teeter.odex", "-",
            7e92a08131b5c94dbabe5f0aeb79e85762fc8dbc, 94792,
            86688d00784d5e7cdd73fcda2f30ae25a67dcc98, package_extract_file("patch/system/app/teeter.odex.p"));
set_progress(0.548112);
apply_patch("/system/bin/btld", "-",
            f1af8711b015f979977de89572b0169821f3aaa8, 2004157,
            2ae86a34516fa7822d17d6f37a2f78c83cc0de49, package_extract_file("patch/system/bin/btld.p"));
set_progress(0.560012);
apply_patch("/system/bin/debuggerd", "-",
            bb89e814a367f2e2ac747ffa17050a8185f364b9, 22164,
            8bb2be67b1b65e7b98aaeb4ff638e2b0b94c6ed2, package_extract_file("patch/system/bin/debuggerd.p"));
set_progress(0.560144);
apply_patch("/system/bin/iptables", "-",
            709a8a388b7748ab0a827c8859cc4c9516805c44, 109204,
            3201724da41c8a336ae98e9773ec1b8bf0ea5412, package_extract_file("patch/system/bin/iptables.p"));
set_progress(0.560792);
apply_patch("/system/bin/netd", "-",
            245c11be4e81c0713c8b7cfbd7afc6501e47130f, 43408,
            4c824c2ae7d04fce8c425c58e82851d605a47bae, package_extract_file("patch/system/bin/netd.p"));
set_progress(0.561050);
apply_patch("/system/build.prop", "-",
            8050cbd1fc8cd5fa9c10bc1c648b849656018896, 6807,
            3ddb3d47afc370231c24adc91a44757a19af48eb, package_extract_file("patch/system/build.prop.p"));
set_progress(0.561090);
apply_patch("/system/customize/MNS/20201.xml", "-",
            73c7a2388811e77bdb8640ef3d01e7193ec7047d, 86782,
            6699d2c162acefbf08b33e5d52a904d91ada7b68, package_extract_file("patch/system/customize/MNS/20201.xml.p"));
set_progress(0.561606);
apply_patch("/system/customize/MNS/20205.xml", "-",
            73c7a2388811e77bdb8640ef3d01e7193ec7047d, 86782,
            6699d2c162acefbf08b33e5d52a904d91ada7b68, package_extract_file("patch/system/customize/MNS/20205.xml.p"));
set_progress(0.562121);
apply_patch("/system/customize/MNS/20210.xml", "-",
            73c7a2388811e77bdb8640ef3d01e7193ec7047d, 86782,
            6699d2c162acefbf08b33e5d52a904d91ada7b68, package_extract_file("patch/system/customize/MNS/20210.xml.p"));
set_progress(0.562636);
apply_patch("/system/customize/MNS/20404.xml", "-",
            872d0a6d864f0b8b6f7f2aad5830d9ab93c502e7, 85292,
            26c54fd17e6f68097fbcfcd8222605e282f3294f, package_extract_file("patch/system/customize/MNS/20404.xml.p"));
set_progress(0.563143);
apply_patch("/system/customize/MNS/20601.xml", "-",
            4b71939723acd8dc649786ee84eb8313bfe0d3dd, 85190,
            f0db7e07b8c80e105c8b12229c9404bcdcce372c, package_extract_file("patch/system/customize/MNS/20601.xml.p"));
set_progress(0.563648);
apply_patch("/system/customize/MNS/20810.xml", "-",
            3e5147a66e927a1c3ef0bb8a7eda7ff0ff3a38ee, 86573,
            8f8689c968faf935ce4402d209d3c1fa5552c50a, package_extract_file("patch/system/customize/MNS/20810.xml.p"));
set_progress(0.564163);
apply_patch("/system/customize/MNS/21401.xml", "-",
            e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
            f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21401.xml.p"));
set_progress(0.564676);
apply_patch("/system/customize/MNS/21403.xml", "-",
            e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
            f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21403.xml.p"));
set_progress(0.565190);
apply_patch("/system/customize/MNS/21404.xml", "-",
            e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
            f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21404.xml.p"));
set_progress(0.565703);
apply_patch("/system/customize/MNS/21406.xml", "-",
            e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
            f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21406.xml.p"));
set_progress(0.566217);
apply_patch("/system/customize/MNS/21407.xml", "-",
            e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
            f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21407.xml.p"));
set_progress(0.566731);
apply_patch("/system/customize/MNS/21416.xml", "-",
            e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
            f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21416.xml.p"));
set_progress(0.567244);
apply_patch("/system/customize/MNS/22201.xml", "-",
            48b56b6447ef0d0bd5d3feb8f33ffc9a8064dacc, 86057,
            29a5ab502a5f554d9bc41f293c7956b9324145c1, package_extract_file("patch/system/customize/MNS/22201.xml.p"));
set_progress(0.567755);
apply_patch("/system/customize/MNS/23210.xml", "-",
            dae0bd8ccc75b38e6bff635c971304cf98e07f92, 87211,
            374634a8c3f22ff1b6384af918a14b2668cb7fc3, package_extract_file("patch/system/customize/MNS/23210.xml.p"));
set_progress(0.568273);
apply_patch("/system/customize/MNS/234.xml", "-",
            4b9548a6f1ee6930141dcda127c76226550619ac, 85499,
            88ab55184efe3516d2cc756b135ac2e1f5ebe232, package_extract_file("patch/system/customize/MNS/234.xml.p"));
set_progress(0.568781);
apply_patch("/system/customize/MNS/23802.xml", "-",
            ad54d14dc7d046ab4d42ff55e23b5e770b56acaa, 86369,
            635ee23fcd0c6434090fc820c29851e16055db96, package_extract_file("patch/system/customize/MNS/23802.xml.p"));
set_progress(0.569294);
apply_patch("/system/customize/MNS/23806.xml", "-",
            407d609b75ee38e2489956d318500b8fe05ae40b, 85497,
            7e96d8d6137093fbbe8a88b3409486f661b17100, package_extract_file("patch/system/customize/MNS/23806.xml.p"));
set_progress(0.569801);
apply_patch("/system/customize/MNS/24001.xml", "-",
            5b13ed55aacc73282ae051b0ef907d38d5768706, 86605,
            cb0c23154cb37ee14a4e072e8fff7bf64a98e326, package_extract_file("patch/system/customize/MNS/24001.xml.p"));
set_progress(0.570315);
apply_patch("/system/customize/MNS/24002.xml", "-",
            e987892a5fa4b87644d375b42325f553feace4d5, 85502,
            7b33ff79e4915fdda3187381224af576a8a31667, package_extract_file("patch/system/customize/MNS/24002.xml.p"));
set_progress(0.570823);
apply_patch("/system/customize/MNS/24008.xml", "-",
            dddbdbd1d6072ed9fc3884928fe262f29e5c6c3d, 85844,
            74db81b2b9bd7c7de03b5d0c54bf0e47028f7aa5, package_extract_file("patch/system/customize/MNS/24008.xml.p"));
set_progress(0.571333);
apply_patch("/system/customize/MNS/24201.xml", "-",
            0a21ec75f11dcd4528e2bb10bddbf56fe328cc2b, 87070,
            41084ac6b90672e8e582b07797d457756057091c, package_extract_file("patch/system/customize/MNS/24201.xml.p"));
set_progress(0.571850);
apply_patch("/system/customize/MNS/24801.xml", "-",
            688a7c668c53d6a935de5dcf2da3e1a3965b43c1, 87276,
            981890ddf50c4b61bcef1626178a25322bd97d73, package_extract_file("patch/system/customize/MNS/24801.xml.p"));
set_progress(0.572368);
apply_patch("/system/customize/MNS/250.xml", "-",
            2f79e202a609c800d4a7caf9f6339dd3ba024880, 88887,
            4f4e30fff13e21c1352cb615627742fa14b7f2e6, package_extract_file("patch/system/customize/MNS/250.xml.p"));
set_progress(0.572896);
apply_patch("/system/customize/MNS/255.xml", "-",
            8481d3541a1c85e3e50fa224857c48467ae464d2, 63392,
            ef0f71de63c4a842e89de2f82667fc28ff089e69, package_extract_file("patch/system/customize/MNS/255.xml.p"));
set_progress(0.573272);
apply_patch("/system/customize/MNS/262.xml", "-",
            073d7731051f3515e52e6009811adf8bb333f513, 85545,
            b3386dbc6b96eb2d2c8220319423d0ac1c6a68df, package_extract_file("patch/system/customize/MNS/262.xml.p"));
set_progress(0.573780);
apply_patch("/system/customize/MNS/26801.xml", "-",
            23ae3df03641cf16b498a159de1fdf159fb23b80, 85653,
            647eb1a79dfb872ff3b58c5fed4b900cd371b36a, package_extract_file("patch/system/customize/MNS/26801.xml.p"));
set_progress(0.574289);
apply_patch("/system/customize/MNS/26806.xml", "-",
            23ae3df03641cf16b498a159de1fdf159fb23b80, 85653,
            647eb1a79dfb872ff3b58c5fed4b900cd371b36a, package_extract_file("patch/system/customize/MNS/26806.xml.p"));
set_progress(0.574797);
apply_patch("/system/customize/MNS/425.xml", "-",
            d9522c94d04212af16bd7b22c14d0780bf750620, 85316,
            c59728ff5be3e7bfe7aa9875e5c0bacdeff95e46, package_extract_file("patch/system/customize/MNS/425.xml.p"));
set_progress(0.575304);
apply_patch("/system/customize/MNS/65501.xml", "-",
            f371398966cd4cd74069ccfc6812172e2c0e6a74, 94556,
            102472d2d4d3224af35540b560e4d9bfc95afd15, package_extract_file("patch/system/customize/MNS/65501.xml.p"));
set_progress(0.575865);
apply_patch("/system/customize/MNS/65507.xml", "-",
            249b7283093c8ccc7bfe53dea52e91f72560be87, 86601,
            7e396d9723de3691a8208d2b02aad183b9d3c6e7, package_extract_file("patch/system/customize/MNS/65507.xml.p"));
set_progress(0.576379);
apply_patch("/system/customize/MNS/65510.xml", "-",
            f0fec5ed3cd97da31fd961090156e5eedbb805aa, 86976,
            8e9d1f6eb2463f346cba04beb75a594631ac277b, package_extract_file("patch/system/customize/MNS/65510.xml.p"));
set_progress(0.576896);
apply_patch("/system/customize/MNS/default.xml", "-",
            342e0053f259e701d3c91af7316ad6c30a01e588, 85764,
            2b1dbdc132d3004d745ec2e3c5af2212928a49d6, package_extract_file("patch/system/customize/MNS/default.xml.p"));
set_progress(0.577405);
apply_patch("/system/customize/resource/CCInfo.txt", "-",
            ade19ff8a2fc85552428fc1912b391ea66102ec0, 2815,
            3e157b224e141c04c53ba2e63bb0e84e88be3e09, package_extract_file("patch/system/customize/resource/CCInfo.txt.p"));
set_progress(0.577422);
apply_patch("/system/etc/NOTICE.html.gz", "-",
            37f4fa2e947ce0d122ff85faf66fb112710c0a82, 61245,
            dd7c032924d8a74b8bbf3e40374a1f918e8cbd88, package_extract_file("patch/system/etc/NOTICE.html.gz.p"));
set_progress(0.577785);
apply_patch("/system/etc/firmware/default_nel.acdb", "-",
            0dbb9caba244cf7752ceac37e1e52e9130d6aded, 129346,
            55924df2b28f66ae990f38e180d77317f9ddcc95, package_extract_file("patch/system/etc/firmware/default_nel.acdb.p"));
set_progress(0.578553);
apply_patch("/system/etc/security/cacerts.bks", "-",
            de85a33da3e0f6b4ef74a7bd7c38a9d8dccdb68c, 63410,
            4a020cdf4c03185b07f973721fa63b672bc5c339, package_extract_file("patch/system/etc/security/cacerts.bks.p"));
set_progress(0.578930);
apply_patch("/system/etc/security/otacerts.zip", "-",
            5a527c8698a9460c52d58da210450285469cef07, 1144,
            a9d8f05c4eda08c591a3c9c0720c961ec873cab3, package_extract_file("patch/system/etc/security/otacerts.zip.p"));
set_progress(0.578937);
apply_patch("/system/fonts/ARDJ-KK.ttf", "-",
            2f4c25798a447bd9b2c7080c3aa566ffc7b41ec5, 12912,
            96f883d95fc56ba4d7508573bc4c0e68f0396ce2, package_extract_file("patch/system/fonts/ARDJ-KK.ttf.p"));
set_progress(0.579013);
apply_patch("/system/framework/am.jar", "-",
            7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
            c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/am.jar.p"));
set_progress(0.579015);
apply_patch("/system/framework/am.odex", "-",
            25e9f9895d9e4f95bdf0af508f2aee394c6c0784, 19752,
            1dabac0e39b5f0f3b89f70153523df0ce8b97ef9, package_extract_file("patch/system/framework/am.odex.p"));
set_progress(0.579133);
apply_patch("/system/framework/android.policy.jar", "-",
            a234ba69c72928749ca2939fe03ad03a51010266, 345,
            a1a273e2cf425a35cc9310a5c7338df3aab1f0a9, package_extract_file("patch/system/framework/android.policy.jar.p"));
set_progress(0.579135);
apply_patch("/system/framework/android.policy.odex", "-",
            10d5097af0f9052f72d12e74cac9fe2076567ed7, 240456,
            cfba9a07813dcca86f53f83fb98573aaaae3432e, package_extract_file("patch/system/framework/android.policy.odex.p"));
set_progress(0.580563);
apply_patch("/system/framework/android.test.runner.jar", "-",
            1348094bc9f4e329018b2477bc95497a3ec727a2, 345,
            13992b5e60f88b9722ca018c0969a2346c0463f6, package_extract_file("patch/system/framework/android.test.runner.jar.p"));
set_progress(0.580565);
apply_patch("/system/framework/android.test.runner.odex", "-",
            9fb0000143205b5e39ae880d6a3a449c4c0d4b47, 193216,
            f4f5fb2915c1dbbd8af66334fcd05b122ab774a6, package_extract_file("patch/system/framework/android.test.runner.odex.p"));
set_progress(0.581712);
apply_patch("/system/framework/bmgr.jar", "-",
            7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
            c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/bmgr.jar.p"));
set_progress(0.581714);
apply_patch("/system/framework/bmgr.odex", "-",
            dc20083e1b1c4795e3e6ee8eeda5c44afff1ac89, 14280,
            f4b2f8c6db953c9ff9d2b60476274bf5649636f9, package_extract_file("patch/system/framework/bmgr.odex.p"));
set_progress(0.581799);
apply_patch("/system/framework/com.google.android.maps.odex", "-",
            d6222fa4865fdf9f614fa2147c8a85898b4f9053, 674184,
            f2094239261872286d3346f1792193e7f174cca9, package_extract_file("patch/system/framework/com.google.android.maps.odex.p"));
set_progress(0.585802);
apply_patch("/system/framework/com.google.translate.jar", "-",
            3844f9894e59ae0f98c794393abda93181f0c105, 345,
            1d147f0148be0bfaa6901a8fd080f4fce9019c2e, package_extract_file("patch/system/framework/com.google.translate.jar.p"));
set_progress(0.585804);
apply_patch("/system/framework/com.google.translate.odex", "-",
            eb985b1b6ae85c083f63215cb4e087d8a9ea1db8, 41912,
            4679a3e886032ef7df16ede3c5447740190597af, package_extract_file("patch/system/framework/com.google.translate.odex.p"));
set_progress(0.586053);
apply_patch("/system/framework/com.htc.android.easopen.jar", "-",
            3844f9894e59ae0f98c794393abda93181f0c105, 345,
            1d147f0148be0bfaa6901a8fd080f4fce9019c2e, package_extract_file("patch/system/framework/com.htc.android.easopen.jar.p"));
set_progress(0.586055);
apply_patch("/system/framework/com.htc.android.easopen.odex", "-",
            64a02e13e3d506d234268021a7962cbc4e2e2728, 26920,
            aa9200c23aa8bade5cf2c381a66dfd3921ef935b, package_extract_file("patch/system/framework/com.htc.android.easopen.odex.p"));
set_progress(0.586214);
apply_patch("/system/framework/com.htc.android.pimlib.jar", "-",
            1348094bc9f4e329018b2477bc95497a3ec727a2, 345,
            13992b5e60f88b9722ca018c0969a2346c0463f6, package_extract_file("patch/system/framework/com.htc.android.pimlib.jar.p"));
set_progress(0.586216);
apply_patch("/system/framework/com.htc.android.pimlib.odex", "-",
            c2ff1a161f56897f3ffd95a2981f9dbb4674ce34, 89928,
            69a6807ea0d4419afdf38290bf990663793fff9f, package_extract_file("patch/system/framework/com.htc.android.pimlib.odex.p"));
set_progress(0.586750);
apply_patch("/system/framework/com.htc.framework.jar", "-",
            fc180adeda42bed9113cc99c4a57238be8c4cf72, 345,
            8f5f13f9fa9b97e054bec11b6742d32099d544e8, package_extract_file("patch/system/framework/com.htc.framework.jar.p"));
set_progress(0.586752);
apply_patch("/system/framework/com.htc.framework.odex", "-",
            f7087d2354ec132e192211d800d057199f5da165, 2227304,
            f94c58056ba80717ffbcbb6e5cbf2a0523438342, package_extract_file("patch/system/framework/com.htc.framework.odex.p"));
set_progress(0.599977);
apply_patch("/system/framework/com.htc.resources.apk", "-",
            1cc2d866e8c79cdb500c538470611fd070a472d7, 18067919,
            28642cea2556313405190437ca598a6fef25f4ca, package_extract_file("patch/system/framework/com.htc.resources.apk.p"));
set_progress(0.707256);
apply_patch("/system/framework/com.htc.rss.jar", "-",
            fc180adeda42bed9113cc99c4a57238be8c4cf72, 345,
            1d147f0148be0bfaa6901a8fd080f4fce9019c2e, package_extract_file("patch/system/framework/com.htc.rss.jar.p"));
set_progress(0.707258);
apply_patch("/system/framework/com.htc.rss.odex", "-",
            e49ea7a3dee363b41a96337a3eb1c264bbc20b47, 1145136,
            83363436303dba8414252216e6556e6bf129e9cd, package_extract_file("patch/system/framework/com.htc.rss.odex.p"));
set_progress(0.714058);
apply_patch("/system/framework/com.scalado.util.ScaladoUtil.jar",
            "-", 3844f9894e59ae0f98c794393abda93181f0c105, 345,
            13992b5e60f88b9722ca018c0969a2346c0463f6, package_extract_file("patch/system/framework/com.scalado.util.ScaladoUtil.jar.p"));
set_progress(0.714060);
apply_patch("/system/framework/com.scalado.util.ScaladoUtil.odex",
            "-", ec4a40eab026ed32ed8a1afbc35da6e2304ec426, 6872,
            d51dc94047ab31e28e256d058c547a111b10135e, package_extract_file("patch/system/framework/com.scalado.util.ScaladoUtil.odex.p"));
set_progress(0.714101);
apply_patch("/system/framework/core.jar", "-",
            e3e39b0c825aef80aff3b492e49f4e9e98c07142, 60844,
            c19791e4dfb9c5341a3b4bfd88286ee18fbadcdb, package_extract_file("patch/system/framework/core.jar.p"));
set_progress(0.714462);
apply_patch("/system/framework/core.odex", "-",
            1090f925afe42363fa09ac0884e2c444e5910bf3, 5572192,
            289fd966b31f28c14f6dfd7ba2b3484336ec6518, package_extract_file("patch/system/framework/core.odex.p"));
set_progress(0.747547);
apply_patch("/system/framework/ext.jar", "-",
            79f2530caf6b7ff0f3a45fb1e4ce16150747287d, 345,
            5a232d75131b3d0d03862247817e4a345ae09d8c, package_extract_file("patch/system/framework/ext.jar.p"));
set_progress(0.747549);
apply_patch("/system/framework/ext.odex", "-",
            0f15113125d818e5305d4c69aa25e477341f7c1c, 627464,
            5db6cbf1a3202c6aefce15aa0ad6e78aa2719e98, package_extract_file("patch/system/framework/ext.odex.p"));
set_progress(0.751275);
apply_patch("/system/framework/framework-res.apk", "-",
            af23bc76e4307148c93f5ce416f847cefebec9a6, 4995632,
            5e3a6dc95d25a6a5e45bbe0f3d598bfad140c22c, package_extract_file("patch/system/framework/framework-res.apk.p"));
set_progress(0.780936);
apply_patch("/system/framework/framework-tests.jar", "-",
            8624c27296d5779589f1d39510c49c7befc5e2c1, 345,
            8ecff138e68447d747ccd51dbc20efde8d275143, package_extract_file("patch/system/framework/framework-tests.jar.p"));
set_progress(0.780938);
apply_patch("/system/framework/framework-tests.odex", "-",
            dd41fbf59b6d1207d8730a7737ec4453c85c2dbe, 21472,
            2bcd4496eefc313b6d5e25b7eab8efc243e4ed8c, package_extract_file("patch/system/framework/framework-tests.odex.p"));
set_progress(0.781066);
apply_patch("/system/framework/framework.jar", "-",
            ea72f7f0184bd70770752571d7d20ad3ccf85c2f, 9517,
            c312ad2c687ff51bca7110ee7d138eb84b28a664, package_extract_file("patch/system/framework/framework.jar.p"));
set_progress(0.781122);
apply_patch("/system/framework/framework.odex", "-",
            a7aba407032523df6af2d181c804b0059244cfc3, 9462416,
            d4f0131d181ef5164d0ec0b7811930cb6d9a5952, package_extract_file("patch/system/framework/framework.odex.p"));
set_progress(0.837306);
apply_patch("/system/framework/ime.jar", "-",
            7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
            c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/ime.jar.p"));
set_progress(0.837308);
apply_patch("/system/framework/ime.odex", "-",
            d57124329d5d09a76a9df8cd389e35435ef9a0b8, 6768,
            a7e5d307c50c7d36c3d6eaea9c0fc73c5d4fc0b9, package_extract_file("patch/system/framework/ime.odex.p"));
set_progress(0.837348);
apply_patch("/system/framework/input.jar", "-",
            7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
            c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/input.jar.p"));
set_progress(0.837350);
apply_patch("/system/framework/input.odex", "-",
            74d17813c6a64ead1db86e400d3d12ed446404e9, 4456,
            9fd13251916a8cfc571408d422d17312c270b597, package_extract_file("patch/system/framework/input.odex.p"));
set_progress(0.837377);
apply_patch("/system/framework/javax.obex.jar", "-",
            7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
            13992b5e60f88b9722ca018c0969a2346c0463f6, package_extract_file("patch/system/framework/javax.obex.jar.p"));
set_progress(0.837379);
apply_patch("/system/framework/javax.obex.odex", "-",
            636b2cbd3698f153aee31cddb6317b042b0ab4e4, 60648,
            aaba78b444eb87ced7888b14d69d77514be06150, package_extract_file("patch/system/framework/javax.obex.odex.p"));
set_progress(0.837739);
apply_patch("/system/framework/monkey.jar", "-",
            7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
            c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/monkey.jar.p"));
set_progress(0.837741);
apply_patch("/system/framework/monkey.odex", "-",
            82238d311f03b772513f372e1c726d532e06a0d2, 77520,
            0db10ef5a3772b220fac0a882abb313666b69fdd, package_extract_file("patch/system/framework/monkey.odex.p"));
set_progress(0.838201);
apply_patch("/system/framework/pm.jar", "-",
            7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
            c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/pm.jar.p"));
set_progress(0.838203);
apply_patch("/system/framework/pm.odex", "-",
            17be5e7477b5f1d036927c5840f2a5dfbcddf17a, 24896,
            d9ccfb158a5b70ce26cfedf95fad6efc131e1e6e, package_extract_file("patch/system/framework/pm.odex.p"));
set_progress(0.838351);
apply_patch("/system/framework/services.jar", "-",
            202cb7a3bdad44d32145375591208808a47562ee, 345,
            3d7ab3a9ffbf097f4d0ed1ae63c356e91590ffee, package_extract_file("patch/system/framework/services.jar.p"));
set_progress(0.838353);
apply_patch("/system/framework/services.odex", "-",
            d1d1c2411289d0d66c6121b80428b490c28cdcdb, 1677032,
            0c03debcf7460cd37f98316dc6bae6677208d472, package_extract_file("patch/system/framework/services.odex.p"));
set_progress(0.848311);
apply_patch("/system/framework/svc.jar", "-",
            7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
            c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/svc.jar.p"));
set_progress(0.848313);
apply_patch("/system/framework/svc.odex", "-",
            1c6b0c7a8cba52dc0384dd47994d2beaeee07a69, 11544,
            c35e8ad7317c197e89ee2f8127c6aae114f1fde6, package_extract_file("patch/system/framework/svc.odex.p"));
set_progress(0.848381);
apply_patch("/system/lib/bluez-plugin/audio.so", "-",
            d1134c53947f13a4198d0c43dd92dc15a8c7176b, 114640,
            c0efc09675b2aa9ee4f7be88b74d489e175c3f2b, package_extract_file("patch/system/lib/bluez-plugin/audio.so.p"));
set_progress(0.849062);
apply_patch("/system/lib/egl/libGLES_android.so", "-",
            2549a57077dffeaba0f9fced3ecb0a716f40f0ae, 109952,
            ac4a61eee79806c3514f2bea55241ae3ea29a377, package_extract_file("patch/system/lib/egl/libGLES_android.so.p"));
set_progress(0.849715);
apply_patch("/system/lib/libandroid_runtime.so", "-",
            6aa9329804c3d519cf4cc6abd6b6b77dfd0cbeb0, 641144,
            92c719df4caf0db5129f8d37ce2b68eea410e7fc, package_extract_file("patch/system/lib/libandroid_runtime.so.p"));
set_progress(0.853522);
apply_patch("/system/lib/libaudio.so", "-",
            d014c26f3b6456594ab261d08e91fd735cd021ee, 64576,
            d276f25cde5377950c556a093768c0887f434d5b, package_extract_file("patch/system/lib/libaudio.so.p"));
set_progress(0.853905);
apply_patch("/system/lib/libaudiopolicy.so", "-",
            0689c5dd433e466bc5766ea88f85e5daa7112d2c, 34848,
            3fc5b5d8460ebd4a9a9ab1f28d959af04df98781, package_extract_file("patch/system/lib/libaudiopolicy.so.p"));
set_progress(0.854112);
apply_patch("/system/lib/libbluedroid.so", "-",
            f90b7f2028e9a4507c29550497b7ae7f50e12502, 13564,
            d03ff395c50fb766ab8954eba78b6f5c644ab44c, package_extract_file("patch/system/lib/libbluedroid.so.p"));
set_progress(0.854192);
apply_patch("/system/lib/libbluetoothd.so", "-",
            7dfebf000820734b54052b3843bc49528c731565, 529500,
            db1d788ee8ece60662aebb42b4b428555b4c6139, package_extract_file("patch/system/lib/libbluetoothd.so.p"));
set_progress(0.857336);
apply_patch("/system/lib/libcpt9.so", "-",
            cf6844c599ced936518be21b7cc652efbbfb1826, 350460,
            be9b7e41333e66d8c583387c4345798df0967c60, package_extract_file("patch/system/lib/libcpt9.so.p"));
set_progress(0.859417);
apply_patch("/system/lib/libdrm1.so", "-",
            e0ffee1d5b5af68123fc0b01b63f2d48a37e7d8a, 42352,
            0aacf541d3f19fd6e0402b11422f92f0ced697c9, package_extract_file("patch/system/lib/libdrm1.so.p"));
set_progress(0.859669);
apply_patch("/system/lib/libdrm1_jni.so", "-",
            20b09381844d1897461135fa4b8c649934dcecf4, 13736,
            8123a99aa23d7fd60a9c8c22b1c4aa6c83eac266, package_extract_file("patch/system/lib/libdrm1_jni.so.p"));
set_progress(0.859750);
apply_patch("/system/lib/libdvm.so", "-",
            2eb34acc63cbbbfe0abf7112c5ef8ab3f8b916ff, 687640,
            05d7dc72dc0dcf73a188c78676e08a791919531c, package_extract_file("patch/system/lib/libdvm.so.p"));
set_progress(0.863833);
apply_patch("/system/lib/libflashplayer.so", "-",
            f30dc1e82cad6e53110361b3ce0a26463c3e32c3, 7659464,
            4ea0538ec762b681a11734fbd0ca8e03bc380d1d, package_extract_file("patch/system/lib/libflashplayer.so.p"));
set_progress(0.909312);
apply_patch("/system/lib/libgps.so", "-",
            940cb7e7abfd0c847c50c10c8cb8da42e29a5fec, 100752,
            75e2c12b803783503224a9d60462cef61e650ab1, package_extract_file("patch/system/lib/libgps.so.p"));
set_progress(0.909910);
apply_patch("/system/lib/libhtc_ril.so", "-",
            2a4b3084de08d8cb2d537d7bca32c9cf32828191, 534244,
            6f8418ec83ecfa3da47561eede2fdef1bccef53b, package_extract_file("patch/system/lib/libhtc_ril.so.p"));
set_progress(0.913082);
apply_patch("/system/lib/libicudata.so", "-",
            1a4899f358c6d70f02917889f5ae7ce8abb45123, 5345876,
            a783dd94116f6ff094521daff35204704faec154, package_extract_file("patch/system/lib/libicudata.so.p"));
set_progress(0.944823);
apply_patch("/system/lib/libmedia.so", "-",
            d0228b39d7f23f53eeaabdaf60dc5484f983a85d, 392932,
            3cc0c4770d9b7895a0543dbb7632e67b11a6a55d, package_extract_file("patch/system/lib/libmedia.so.p"));
set_progress(0.947156);
apply_patch("/system/lib/libskia.so", "-",
            9e992fbf190cdc2b2e582af65bd19d0f8baffa20, 1117924,
            a2a54c0dfda3bcefff9a89527a5420c136e7ec72, package_extract_file("patch/system/lib/libskia.so.p"));
set_progress(0.953794);
apply_patch("/system/lib/libstagefright.so", "-",
            dbaaa6861acc2d77e1480f8ed050a1985abbfef5, 717544,
            de4541245109b996bfb68662ed73febdde8763a2, package_extract_file("patch/system/lib/libstagefright.so.p"));
set_progress(0.958054);
apply_patch("/system/lib/libsurfaceflinger.so", "-",
            eaa898a6fb34d10ef19ebe073b1af6b4b517d66c, 170816,
            7ae6bd32d9557a85955f6221375683720369b7bd, package_extract_file("patch/system/lib/libsurfaceflinger.so.p"));
set_progress(0.959069);
apply_patch("/system/lib/libsurfaceflinger_client.so", "-",
            c1e1a17c8b32cef6c4cf712f6b8ce62de0050f18, 97144,
            5f5892b33f9dd7123f82c25e94c468d1556013c5, package_extract_file("patch/system/lib/libsurfaceflinger_client.so.p"));
set_progress(0.959646);
apply_patch("/system/lib/libui.so", "-",
            122329c939c77c4ac78f8bf4b41804931d1a9d6d, 84488,
            6c522eafb28d5d16d9012bedede3d42ae0e77f39, package_extract_file("patch/system/lib/libui.so.p"));
set_progress(0.960147);
apply_patch("/system/lib/libvoAndroid.so", "-",
            0e970b2685cd2efd2991337981e5b2cc86a92d71, 155664,
            c642cec91e75874db1e7217570a392f1256f664b, package_extract_file("patch/system/lib/libvoAndroid.so.p"));
set_progress(0.961071);
apply_patch("/system/lib/libvoH264Dec.so", "-",
            f9454fd8b0350aa3d9a642946c589fde3bfc5df4, 153644,
            660dd4a41c4ceafae56a768533d4420b9cf95dcc, package_extract_file("patch/system/lib/libvoH264Dec.so.p"));
set_progress(0.961984);
apply_patch("/system/lib/libvoOMXME.so", "-",
            1f8256c48781cf652a075ea75436d817377c7368, 162968,
            72b6f95fe084ec9107891189982a194de83031d4, package_extract_file("patch/system/lib/libvoOMXME.so.p"));
set_progress(0.962951);
apply_patch("/system/lib/libvoOMXOne.so", "-",
            a2b56684186f74bc342f067b3e0bbf47f8f31955, 471392,
            c02f44c23d65a96066e2bf23c96c36df15d8af03, package_extract_file("patch/system/lib/libvoOMXOne.so.p"));
set_progress(0.965750);
apply_patch("/system/lib/libvoSrcRTSP.so", "-",
            e249ebe0f87514440f696b838a63f493804ccb08, 365652,
            fbb3b7e063db20f1492f4d0625c3fa216e916b85, package_extract_file("patch/system/lib/libvoSrcRTSP.so.p"));
set_progress(0.967921);
apply_patch("/system/lib/libwebcore.so", "-",
            215bff5ffd54b2558f6bde9961522551bfa18c63, 5126800,
            0bc1f8b76ec535b1b7c1e9f6137c27c7c6724abf, package_extract_file("patch/system/lib/libwebcore.so.p"));
set_progress(0.998362);
apply_patch("/system/lib/modules/bcm4329.ko", "-",
            c9f9b0034b35d5e0c93572316bf089587ef237e7, 270340,
            2852c553ed2ac6ae670e8e99e15ac6b2138b5a3a, package_extract_file("patch/system/lib/modules/bcm4329.ko.p"));
set_progress(0.999967);
apply_patch("/system/xbin/crasher", "-",
            6b6f4f9542ec5e457cd6c682aad9862bd12dde2a, 5540,
            146fe9677a6f5bf0b9f1b648ee9b261e0a94f579, package_extract_file("patch/system/xbin/crasher.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(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 0755, "/system/bin/ip");
set_perm(0, 3003, 0755, "/system/bin/ipd");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06755, "/system/bin/reboot");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
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(0, 2000, 0755, 0755, "/system/xbin");
write_firmware_image("PACKAGE:firmware.zip", "zip");
unmount("/data");
unmount("/system");
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: B.D.1:
Hi

Ja jetzt wird es schon konkreter :).

Ich habe auch was gefunden in "/bootable/recovery/recovery.c"

* OTA INSTALL
* 1. main system downloads OTA package to /cache/some-filename.zip
* 2. main system writes "--update_package=/cache/some-filename.zip"
* 3. main system reboots into recovery
* 4. get_args() writes BCB with "boot-recovery" and "--update_package=..."
* -- after this, rebooting will attempt to reinstall the update --
* 5. install_package() attempts to install the update
* NOTE: the package install must itself be restartable from any point
* 6. finish_recovery() erases BCB
* -- after this, rebooting will (try to) restart the main system --
* 7. ** if install failed **
* 7a. prompt_and_wait() shows an error icon and waits for the user
* 7b; the user reboots (pulling the battery, etc) into the main system
* 8. main() calls maybe_install_firmware_update()
* ** if the update contained radio/hboot firmware **:
* 8a. m_i_f_u() writes BCB with "boot-recovery" and "--wipe_cache"
* -- after this, rebooting will reformat cache & restart main system --
* 8b. m_i_f_u() writes firmware image into raw cache partition
* 8c. m_i_f_u() writes BCB with "update-radio/hboot" and "--wipe_cache"
* -- after this, rebooting will attempt to reinstall firmware --
* 8d. bootloader tries to flash firmware
* 8e. bootloader writes BCB with "boot-recovery" (keeping "--wipe_cache")
* -- after this, rebooting will reformat cache & restart main system --
* 8f. erase_volume() reformats /cache
* 8g. finish_recovery() erases BCB
* -- after this, rebooting will (try to) restart the main system --
* 9. main() calls reboot() to boot main system

Damit bin ich erstmal zufrieden. Das Script ist auch gut. Die Frage die ich mir jetzt stelle "was" ist das "main system" ?
Ein Service welches auf Linux-Eben läuft ? Von wem wird dieses Script gestartet ? und wie heißt es ?
Also die eigentliche Frage kann eine App auch irgendwie was flashen ? Bzw sowas anstoßen ? Das geht doch nur auf Linux Ebene. Wo Apps keinen Zugriff haben ?


Grüße
 
"Main system" ist kein Service. Das ist das eigentliche System, welches startet, wenn du normal bootest.

Das Script wird vom Recovery-System durch den Flashvorgang gestartet.
Theoretisch kann auch eine App die Dateien der System-Partition ersetzen. Dazu braucht sie aber a) Root-Rechte und b) Schreibrechte auf der System-Partition. Beides ist normalerweise erstmal nicht gegeben.
 
Die Update-Scripte laufen nicht direkt unter Android, sondern das ist ein propitäres System ausserhalb des eigentlichen Systems.

Deswegen wird das Gerät ja in den Bootloader bzw in die Recovery gebootet. Dort in dieser Sektion werden eben alle Updates ausgeführt, ausgenommen jetzt Firmware flashen mittels einer Software die auf dem eigenen Rechner läuft.

Das Androidsystem ist zu diesem Zeitpunkt NICHT! geladen. Also ist es auch kein Service bzw Programm innerhalb Android, sondern ein Prozess in der Recovery respektive Bootloader oder was auch immer dafür bei den einzelnen Herstellern verantwortlich ist.

Nachtrag:

Wie drückt man das jetzt am besten noch aus -.- Ist es eben schwer zu beschreiben. Aber dieser Prozess im Recovery lädt dann einfach nur das Script und bindet die entsprechenden Systemlaufwerke ein (die ja so oder so verfügbar sind, egal ob das System nun gestartet ist oder nicht) und prüft dann eben.

Natürlich lässt sich aus dem Updaterscript nicht schlüssig feststellen welcher Prozess dafür verantwortlich ist.
 
Hi

Ja genau jetzt komm ich schön langsam dort hin was ich wissen will was ich noch nicht ganz verstehe .. :).
Wenn es im Recovery "gebootet" ist läuft läuft dann bereits Linux ?
Oder erstmal auch nicht ? Ein propitäres System ? Ja was denn genau ?
Weil man kann ja im Recovery flashen, Filesystem mounten, löschen etc. Und das Recovery-System ist ja offensichtlich so mächtig scripte auszuführen. Was läuft denn dann ? weil offensichlich könne ja leute sowas wie ein ClockworkMod Recovery schreiben.
Aber Linux kann nicht laufen weil sonst könnte ich ja nicht beim ein custom image flashen. Damit flashe ich ja gerade auch Linux :).

Und wenn ich mir so das headerfile recovery.c ansehe: Sehe ich:

#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <getopt.h>
#include <limits.h>
#include <linux/input.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
#include <dirent.h>

Das ist ja schon ganz schön viel.

Also hab ich auf meinem Handy ein Betriebsystem welches recovery.c ausführen kann.
Und noch ein Betriebsystem auf dem Android läuft ?
Und der Bootloader entscheidet welches geladen wird ? :blink:
 
Das Recovery ist ein zweites System auf dem Gerät und läuft unabhängig von dem "normalen" System. Und ja, das ist auch ein Linux-basiertes System.
 
Man flasht einfach den heruntergeladenen RUU und voilà.
 
1. "RUU" ist ein HTC-Konstrukt. Andere Hersteller haben da eigene Lösungen.
2. OTA-Updates sind in der Regel keine Komplettpakete und eigentlich von dem was hier beschrieben wird auch allgemein gültig.
 
  • Danke
Reaktionen: Hasan94
Achsoo, was Neues gelernt. ^^
 
Thyrion schrieb:
Das Recovery ist ein zweites System auf dem Gerät und läuft unabhängig von dem "normalen" System. Und ja, das ist auch ein Linux-basiertes System.

Aha jetzt aber :D
Ok daran hab ich gar nicht gedacht 2 Linux-basierte System.

Der Grund warum ich das ganze hinterfrage ist, eigentlich das.
Wenn ein Gerät Verschlüsselt ist. Dann geht kein OTA mehr. Warum ? Wird der Bereich wo die Apps liegen auch verschlüsselt ? D.h ich starte mit einem System will Apps installieren /updaten (das macht ja OTA auch) tja und jetzt das aber Verschlüsselt -> geht nicht. ?? Oder was genau wird den Verschlüsselt ?

Noch ne Frage. Zu Root-Rechte. D.h wenn ich einer App Root-Rechte gebe kann die auch aus dem Android ausbrechen ? Und z.B ein Rootkit oder sonst was böses installieren/irgendwas manipulieren ? Ich dachte Android Apps sind nur Java Programme in ihrer VM.
Andererseits kenne ich eine App die qausi ein Terminal ist, da kann ich ja richtige Linux Befehle absetzten. Also ist es wohl auch irgendwie möglich richtig "native" Programme zu schreiben und die dann auszuführen ?
 
Naja, du missverstehst das bisschen. Android hat mit einem reinen Linux fast nur noch den Kernel gemeinsam ;) Der Rest läuft völlig anders.

Daher muss man hier ein wenig umdenken. Die Frage wegen den root-rechten beantworte ich jetzt nicht, denn die kannst du zu 100% selbst beantworten.

Auch kannst du ein Androidgerät, zumindest das Grundsystem nicht einfach verschlüsseln. Das würde danach garnicht mehr booten können, weil es eben keinen Bootloader in dem Sinne gibt. Zumindest nicht so wie man es auf einem richtigen PC kennt. Denn wenn man Linux verschlüsselt, muss nämlich auch der Bootloader bzw die Parameter angepasst werden und das zum Teil manuell und das geht bei Android NICHT!

Was geht ist: Du kannst die Firmware selbst signieren und im Bootloader eine Funktion einbauen, die eben einen Check durchführt, ob der Fingerprint auch echt ist, wenn nicht -> kein booten

So macht das Motorola z.B. derzeit. Denn da ist der Bootloader signiert und lässt sich nicht knacken (okay es gibt zwar laut xda eine Lösung, aber das ist nur ein ByPass).

Android-Apps sind NICHT nur reines Java. Es muss IMMER ein bisschen nativer Code dabei sein, denn sonst könnte die App garnicht starten.

Das Terminal, was du meinst ist nur ein Zugang zu den Standardbefehlen von Android. Und nein, selbst hier gibt es Unterschiede. Es gibt noch nicht mal eine RICHTIGE Shell. Es ist einfach nur eine einfache sh, mehr nicht, mit Standardbefehlen kommt man nicht weit, hier muss man dann auf die Busybox greifen, die alles mitbringt.

Am besten dann noch eine bash installieren, damit man vernüftig arbeiten kann. Direkt auf dem Telefon jedoch macht das keinen Spaß, dann doch lieber den Umweg über das Android SDK und dann mittels adb direkt auf das Telefon. Geht schneller und ist komfortabler.

Wegen nativen Apps schreiben: Einfach so geht das natürlich nicht.Denn es läuft kein X.Org Server. Du kannst also nicht einfach irgendein Programm nehmen, dass crosscompilen und hoffen das es läuft.

Das funktioniert bei reinen Terminalprogrammen, aber nicht bei solchen, die eine grafische Oberfläche haben, hier muss man selbst Hand anlegen und den Kram dann in Eclipse schreiben ;)
 
Hallo

Äm reden wir von selben ? Ich stell mir das nicht so vor das gesammt Gerät verschlüsseln. Und Signierung in dem Zusammenhang versteh ich jetzt auch nicht.

Es gibt bei Android 4.0 eine funktion Gerät Verschlüsseln.
Telefon verschlüsseln - Android OS-Hilfe
Ich frage mich, wenn das gemacht wurde ? Wieso geht dann kein OTA mehr ? Ich sehe eben keinen Grund, wenn nur "Google-Konten, App-Daten, Musik und andere Medien sowie heruntergeladene Informationen" Verschlüsselt werden?
Daher was wird genau Verschlüsselt ? Daher dachte ich (wie im Post davor) das vielleicht ein Teil verschlüsselt wird wo beim updaten zugegriffen wird der aber im updatemodus nicht entschlüsselt ist. Oder warum sonst ?

Und zum 2ten ...
Naitve Apps brauchen ja keine "Oberfläche". Also ich denke jetzt nicht daran das ich irgend ein GUI Zeugs zu "crosscompilieren".
Aber wenn ich über die Shell mein "Simple clac" welches 2 Zahlen addiert welches ich über die Konsole eingeben habe und mir dort das erbegnis ausdruckt. Ist das auch ein Programm.

"Es muss IMMER ein bisschen nativer Code dabei sein, denn sonst könnte die App garnicht starten."
Verstehe ich jetzt nicht ? Was muss denn dabei sein ? Was ist das bisschen nativer Code ?

Gruß
 
Bei einem OTA werden meist Systemdateien aktualisiert und Systemanwendungen aktualisiert und ggfs ein neuer Kernel installiert. Da die Verschlüsselung aber nur die Userdaten betrifft, kann ein OTA durchgeführt werden.

Sorry, wusste nämlich garnicht das man mittels ICS verschlüsseln kann lol :D Wieder was gelernt ;)
 
Otandis_Isunos schrieb:
Bei einem OTA werden meist Systemdateien aktualisiert und Systemanwendungen aktualisiert und ggfs ein neuer Kernel installiert. Da die Verschlüsselung aber nur die Userdaten betrifft, kann ein OTA durchgeführt werden.
Ja eben und das geht eben dann NICHT mehr! :D
Daher meine Frage warum ? Und daher will ich verstehen wie ein OTA funktioniert ? Weil es für mich keinen Grund dafür gibt ...
 

Ähnliche Themen

cehuisken
Antworten
1
Aufrufe
688
Andy
Andy
J
Antworten
1
Aufrufe
1.129
mblaster4711
mblaster4711
C
Antworten
0
Aufrufe
815
Christianistmeinname
C
Zurück
Oben Unten