getprop("ro.product.device") == "andromeda" || abort("E3004: This package is for \"andromeda\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/andromeda/andromeda:9/PKQ1.190321.001/V12.0.1.0.PEMMIXM:user/release-keys");
ui_print("Target: Xiaomi/andromeda/andromeda:9/PKQ1.190321.001/V12.0.2.0.PEMMIXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/andromeda/andromeda:9/PKQ1.190321.001/V12.0.1.0.PEMMIXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/andromeda/andromeda:9/PKQ1.190321.001/V12.0.2.0.PEMMIXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/andromeda/andromeda:9/PKQ1.190321.001/V12.0.1.0.PEMMIXM:user/release-keys or Xiaomi/andromeda/andromeda:9/PKQ1.190321.001/V12.0.2.0.PEMMIXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
show_progress(0.100000, 5);
apply_patch_check("EMMC:/dev/block/bootdevice/by-name/boot:134217728:ed64951d2381513d7cd4ca69f6193725a1228640:134217728:d58f530a28f1708c7e340eb211412fd710723a2b") || abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:ed64951d2381513d7cd4ca69f6193725a1228640:134217728:d58f530a28f1708c7e340eb211412fd710723a2b\" has unexpected contents.");
apply_patch_space(181960704) || abort("E3006: Not enough free space on /cache to apply patches.");
show_progress(0.100000, 70);
if (range_sha1("/dev/block/bootdevice/by-name/system", "2354,1,239,254,528,8326,8870,8871,9638,9639,9641,9645,9647,9649,9651,9652,9654,9655,9656,9657,9658,9660,9661,9663,9664,9667,12248,12249,12255,13492,15554,15555,16908,17125,17136,17549,17913,18814,18824,18874,18878,19259,19269,19347,19577,20390,20397,20400,20443,20652,20688,20718,20933,21024,21522,21543,21550,21826,21853,21989,29407,29504,29568,30226,30738,30739,31050,31571,31704,31731,32045,32392,32768,32990,40071,40093,40229,40269,40333,40339,40562,40578,40605,40635,40670,40684,42584,42711,43235,43315,43323,43368,43874,43875,43930,43951,44132,44133,44461,44791,45055,45299,45363,45364,52196,52218,52245,52283,52286,52387,52652,52746,52882,52888,52897,52913,53257,53774,53781,53837,53844,53916,54647,55451,55968,56546,56576,57814,57823,59741,59779,60360,60398,60547,61709,61905,61926,61930,64162,64275,64338,64339,64379,64714,64744,64891,64906,65054,65080,65120,66543,68023,73995,73996,83185,83335,83406,83652,84591,85395,91867,91868,91923,91924,93009,93011,94370,94371,98304,98526,98583,98586,99260,99261,100713,100714,108552,108553,116428,116429,119133,119134,120842,120843,121826,121828,124004,124006,124437,124440,124517,124519,124560,124565,131400,131403,131419,131422,131801,131804,131806,131808,131816,131819,131888,131890,132216,132219,136193,136196,136209,136210,136212,136214,136222,136223,136228,136230,136254,136255,136259,136261,136304,136309,139627,139628,139631,139633,139644,139645,139879,139881,140282,140308,140363,140364,140373,140375,140387,140845,140848,140850,140892,149086,154519,154520,154523,154525,154551,154552,154554,154556,154566,154567,154591,154593,154627,154628,161570,161571,161921,161922,162328,162329,162332,162334,162343,162344,162346,162348,162370,162371,163560,163562,163840,164062,164641,164644,165824,165827,167957,167960,168018,168021,168037,168038,168963,168965,169859,169860,171251,171253,174507,174508,174512,174515,174971,174974,176339,185661,185677,185678,192843,192844,200894,200897,201002,201003,201005,201007,201024,201025,202088,202090,203557,203624,203629,203632,203768,203769,203773,203774,203786,203788,203813,203814,203816,203818,203825,203828,203838,203839,203888,203890,204007,204012,205246,205248,205452,205453,205948,205950,206675,206703,206705,206707,206723,214916,224116,224117,224581,224584,229376,229598,231899,231900,231921,231923,231932,231933,231937,231939,231945,231946,232046,232047,232267,232269,233077,233078,233080,233082,233121,233122,234353,234355,235317,235318,235320,235322,235371,235372,235374,235376,235403,235404,235410,235412,235436,235439,235651,235652,235752,235754,236070,236073,236574,236575,237889,237891,239617,239618,241205,241207,243410,243411,243413,243415,243425,243426,255047,255048,255314,255317,255374,255377,255417,255418,255443,255444,255448,255450,255467,255470,256603,256604,257786,257789,257879,257882,257894,257895,265567,265568,266344,266345,266350,266352,266358,266359,266698,266700,267372,267373,267381,267383,267806,267807,267959,267961,268458,268459,268468,268470,268479,268480,268487,268489,268503,268506,271916,271917,271919,271921,271947,271948,272846,272848,273665,273666,274273,274275,276101,276104,283468,283469,283472,283474,283639,283640,283653,283655,283672,283673,283675,283677,283690,283691,283828,283830,284603,284604,284988,284990,285847,285850,287327,287329,288155,296570,305219,305220,321547,321548,321550,321552,321562,321563,322764,322766,324637,324638,330877,330878,330880,330881,331511,331513,331782,331783,331790,331792,331800,331801,331845,331847,332151,332152,332445,332447,334075,334078,335032,335033,335118,335120,335132,335135,335973,335976,335993,335996,336088,336089,336091,336092,336094,336096,336108,336111,337059,337060,339683,339686,339971,340673,340905,340907,341179,341180,341225,341227,341402,341403,341405,341407,341423,341424,341435,341437,341445,341446,341448,341450,341456,341457,342763,342765,345395,345396,346315,346317,346377,348043,348102,349770,350096,350098,350294,350295,353405,353408,354182,354183,355872,355874,357872,357873,357900,357902,358056,358059,358351,358352,363748,363749,367136,367137,369198,369200,370705,370706,371045,371047,373108,373109,373111,373113,373123,373124,373126,373128,373167,373168,373172,373174,373175,373176,373334,373335,384910,384912,384916,384917,384930,384931,384943,384944,384949,384950,384955,384956,384960,384961,384969,384970,384973,384974,384977,384978,384993,384994,384997,384998,385003,385004,385008,385009,385027,385028,385048,385049,385065,385066,385079,385080,385091,385092,385102,385103,385109,385110,385114,385115,385124,385125,385135,385136,385150,385151,385165,385166,385177,385178,385182,385183,385187,385188,385190,385191,385196,385197,385209,385210,385219,385220,385224,385225,385229,385230,385232,385233,385245,385246,385256,385257,385266,385267,385269,385270,385273,385274,385278,385279,385293,385294,385296,385297,385304,385305,385312,385313,385328,385329,385334,385335,385346,385347,385364,385365,385382,385383,385393,385394,385410,385411,385418,385419,385426,385427,385430,385431,385441,385442,385446,385447,385449,385450,385461,385462,385464,385465,385469,385470,385479,385480,385488,385489,385500,385501,385508,385509,385512,385513,385520,385521,385526,385527,385532,385533,385546,385547,385561,385562,385567,385568,385578,385579,385590,385591,385593,385594,385598,385599,385601,385602,385604,385605,385610,385611,385631,385632,385634,385635,385640,385641,385651,385652,385661,385662,385667,385668,385678,385679,385685,385686,385698,385700,385702,385703,385705,385706,385710,385711,385717,385718,385739,385740,385756,385757,385768,385769,385771,385772,385775,385776,385784,385785,385787,385788,385797,385798,385800,385801,385820,385821,385827,385828,385831,385832,385834,385835,385837,385838,385849,385850,385854,385855,385857,385858,385862,385863,385868,385869,385873,385874,385879,385880,385889,385890,385898,385899,385918,385919,385924,385925,385927,385928,385930,385931,385941,385942,385947,385948,385951,385952,385958,385959,385963,385964,385974,385975,385981,385982,385988,385989,385992,385993,385996,385997,386000,386001,386020,386021,386026,386027,386033,386034,386040,386041,386058,386059,386061,386062,386065,386066,386071,386072,386083,386084,386091,386092,386103,386104,386114,386115,386124,386125,386128,386129,386135,386136,386139,386140,386144,386145,386149,386150,386152,386153,386157,386158,386167,386168,386172,386173,386175,386176,386185,386186,386189,386190,386198,386199,386212,386213,386223,386224,386229,386230,386235,386236,386244,386245,386255,386256,386263,386264,386266,386267,386270,386271,386283,386284,386292,386293,386295,386296,386302,386303,386308,386309,386313,386314,386320,386321,386337,386338,386345,386346,386348,386349,386351,386352,386354,386355,386358,386359,386361,386362,386376,386377,386385,386386,386388,386389,386397,386398,386415,386416,386419,386420,386424,386425,386430,386432,386435,386436,386438,386439,386443,386444,386449,386450,386456,386457,386477,386478,386484,386485,386494,386495,386500,386501,386515,386516,386520,386521,386532,386533,386539,386540,386554,386555,386564,386565,386569,386570,386574,386575,386577,386578,386584,386585,386591,386592,386597,386598,386609,386610,386619,386620,386626,386627,386633,386634,386636,386637,386646,386647,386655,386656,386669,386670,386681,386682,386694,386695,386709,386710,386713,386714,386721,386722,386734,386735,386743,386744,386746,386747,386753,386754,386760,386761,386767,386768,386782,386783,386793,386794,386801,386802,386809,386810,386814,386815,386819,386820,386823,386824,386826,386827,386847,386848,386852,386853,386856,386857,386861,386862,386865,386866,386873,386874,386881,386882,386890,386891,386894,386895,386903,386904,386933,386936,386937,386938,386940,386941,386942,386943,386944,386945,386947,386948,386949,386950,386951,386952,386954,386955,386956,386957,386958,386959,386961,386962,386963,386964,386965,386966,386967,386968,386969,386970,386971,386972,386973,386974,386976,386977,386978,386979,386983,386984,386985,386986,386987,386989,387012,387013,387034,387035,387049,387050,387069,387070,387078,387079,387087,387088,387101,387102,387105,387106,387177,387178,387223,387224,387225,387228,387234,387235,387243,387245,387263,387264,388373,388375,388377,388378,388483,388485,388495,388497,388503,388504,388510,388511,388515,388517,388913,388915,389129,389130,390247,390248,394536,394537,395743,396405,396457,396458,397956,397957,399219,400458,402248,402249,403649,403650,404012,404013,408630,408631,421266,421267,421552,421554,421555,421556,421557,421558,421559,421560,421561,421562,421563,421564,421565,421566,421567,421568,421569,421570,421571,421572,421573,421574,421575,421576,421577,421578,421579,421580,421581,421582,421583,421584,421585,421586,421587,421588,421589,421590,421591,421592,421593,421594,421595,421596,421597,421598,421599,421600,421601,421602,421603,421604,421605,421606,421607,421608,421609,421610,421611,421612,421613,421614,421615,421616,421617,421618,421619,421620,421621,421622,421623,421624,421625,421626,421627,421628,421629,421630,421631,421632,421633,421634,421635,421636,421637,421638,421639,421640,421641,421642,421643,421644,421645,421646,421647,421648,421649,421650,421651,421652,421653,421654,421655,421656,421657,421658,421659,421660,421661,421662,421663,421664,421665,421666,421667,421668,421669,421670,421671,421672,421673,421674,421675,421676,421677,421678,421679,421680,421681,421682,421683,421684,421685,421686,421687,421688,421689,421690,421691,421692,421693,421694,421695,421696,421697,421698,421699,421700,421701,421702,421703,421704,421705,421706,421707,421708,421709,421710,421711,421712,421713,421714,421715,421716,421717,421718,421719,421720,421721,421722,421723,421724,421725,421726,421727,421728,421729,421730,421731,421732,421733,421734,421735,421736,421737,421738,421739,421740,421741,421742,421743,421744,421745,421746,421747,421748,421749,421750,421751,421752,421753,421754,421755,421756,421757,421758,421759,421760,421761,421762,421763,421764,421765,421766,421767,421768,421769,421770,421771,421772,421773,421774,421775,421776,421777,421778,421779,421780,421781,421782,421783,421784,421785,421786,421787,421788,421789,421790,421791,421792,421793,421794,421795,421796,421797,421798,421799,421800,421801,421802,421803,421804,421805,421806,421807,421808,421809,421810,421811,421812,421813,421814,421815,421816,421817,421818,421819,421820,421821,421822,421823,421824,421825,421826,421827,421828,421829,421830,421831,421832,421833,421834,421835,421836,421837,421838,421839,421840,421841,421842,421843,421844,421845,421846,421847,421848,421849,421850,421851,421852,421853,421854,421855,421856,421857,421858,421859,421860,421861,421862,421863,421864,421865,421866,421867,421868,421869,421870,421871,421872,421873,421874,421875,421876,421877,421878,421879,421880,421881,421882,421883,421884,421885,421886,421887,421888,421889,421890,421891,421892,421893,421894,421895,421896,421897,421898,421899,421900,421901,421902,421903,421904,421905,421906,421907,421908,421909,421910,421911,421912,421913,421914,421915,421916,421917,421918,421919,421920,421921,421922,421923,421924,421925,421926,421927,421928,421929,421930,421931,421932,421933,421934,421935,421936,421937,421938,421939,421940,421941,421942,421943,421944,421945,421946,421947,421948,421949,421950,421951,421952,421953,421954,421955,421956,421957,421958,421959,421960,421961,421962,421963,421964,421965,421966,421967,421968,421969,421970,421971,421972,421973,421974,421975,421976,421977,421978,421979,421980,421981,421982,421983,421984,421985,421986,421987,421988,421989,421990,421991,421992,421993,421994,421995,421996,421997,421998,424273,424274,425696,425697,427824,427825,429330,430905,430921,430922,430943,431839,431928,431929,432222,432223,444108,444109,447365,447422,447436,449910,449987,449988,450039,450486,450559,451567,451595,451602,452707,452714,452944,453411,453415,453598,453599,453604,453607,453608,453610,454029,462594,462595,464243,464244,466752,466753,467897,467898,477938,477939,480762,480819,480833,481499,481557,481558,481564,482952,483041,483042,483060,483439,485734,485735,485868,485869,487787,487788,487800,487802,499222,499224,499521,499522,499545,499546,499637,499638,499838,499923,499928,500171,501488,501525,501545,501554,501644,501681,501682,501687,501748,501753,501825,501831,501837,501842,501873,501986,502383,502387,502398,502403,502419,502540,502590,502598,502689,503103,503109,503151,503177,503182,503187,503193,503375,503376,503382,503387,503390,503413,503438,503443,503510,503513,503520,503638,503646,503655,503660,503662,503678,503766,503771,503801,504286,504329,504372,504378,504423,504430,504455,504458,504460,504464,504661,504917,504918,504938,504939,505012,505013,505065,505884,505885,513032,513034,513410,513412,513544,513545,513554,513555,513597,513599,515674,516564,523381,523382,523386,523387,524288,530360,535338,535339,537667,537668,537770,537772,537778,538363,538508,538510,538519,538520,538710,538712,538718,538719,540053,540055,540073,540074,542765,542767,542835,542836,542846,542848,542854,542855,542888,542890,542897,542900,542910,542911,543282,543284,543296,543297,543305,543307,543313,543314,543373,543375,543381,543382,543456,543458,543465,543466,550260,550262,550355,550358,550908,550910,550925,550926,551194,551196,551203,551204,551211,551213,551219,551222,551385,551387,551397,551398,560038,560039,561281,561283,561314,561315,561321,561324,561344,561345,561375,561377,561383,561384,561813,561815,561825,561826,570018,573051,577109,577110,577340,577342,577353,577356,579288,579289,580107,580109,580137,580140,580150,580151,582629,582631,582703,582704,582853,582855,582863,582866,582933,582934,582971,582972,585655,585657,589181,589182,589196,589198,589205,591175,591185,591186,605715,605716,607571,615763,627771,627774,627980,627981,630183,630185,630234,630235,639340,639342,639431,639432,641515,641516,641546,641548,641556,644251,644258,644259,644585,644587,644604,652797,660034,660035,666538,666539,669228,669230,669274,669275,670611,670612,682501,682503,682621,682622,682680,682682,682690,682693,683205,683206,683332,683334,683340,683341,683401,683403,683411,683412,683420,683421,683438,683440,683447,683448,683490,683492,683498,683501,683527,684223,685720,685721,692371,692373,692405,692406,692481,692483,692583,692586,693137,693138,693223,693225,693233,693234,699381,699383,699480,699481,699580,699582,699590,699593,699657,699658,700668,700670,700695,700696,701424,701426,701441,701444,704384,705563,705565,705572,705576,705577,705583,705585,705591,705594,706657,706658,709519,709521,709585,709586,710382,710384,710402,710405,712613,712614,726524,726526,726618,726619,726626,726628,726634,726635,726641,726642,731476,731478,731522,731523,737112,737114,737193,737194,741307,741309,741349,741350,741362,741364,741370,741371,741382,741383,744156,744158,744207,744208,744537,744539,744551,744554,744563,744566,745985,745988,746562,746563,746624,746626,746632,746633,752867,752869,752934,752937,752951,752953,753270,753271,757044,757046,757095,757096,757288,757290,757300,757301,757578,757580,757592,757595,764651,764654,766884,766885,766892,766894,766904,766905,768145,768146,768151,768153,768159,768162,768333,768334,768354,768356,768362,768365,768410,768411,768564,768566,768574,768575,769110,777304,791735,791737,797291,797292,797320,797321,797334,797335,797342,797343,797346,797347,797367,797368,797461,797462,797467,797472,797474,797475,797476,797477,797478,797479,797480,797481,797482,797483,797484,797485,797486,797487,797488,797491,797492,797493,798046,798047,798048,798049,798979,798980,798987,798988,799541,799542,799543,799545,799546,799549,800407,800680,800695,800697,800898,800899,800905,800906,800909,800912,800914,802264,802562,802563,802647,802649,802653,802654,802669,802765,802766,802767,802779,802959,802962,802968,803008,803009,803013,803014,803020,803021,803027,803028,803030,803031,803263,803264,803341,803342,803639,803860,804341,804379,804787,804795,804842,804906,805159,805209,810604,810605,816893,816894,817977,817978,818503,818504,819200,819422,820733,820734,821127,821128,830473,830474,837601,837602,837843,838222,840717,841350,841481,841505,841546,841647,841654,841720,841735,841758,841763,843377,843402,845010,845262,845540,845713,845715,845780,845781,851693,851694,859453,859454,859457,859459,859475,859477,859481,859482,859508,903458,917316,917503,917504") == "1068d585df70d73bb8c419ea547662e747cf3718" || block_image_verify("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat")) then
ui_print("Verified system image...");
else
check_first_block("/dev/block/bootdevice/by-name/system");
ifelse (block_image_recover("/dev/block/bootdevice/by-name/system", "2354,1,239,254,528,8326,8870,8871,9638,9639,9641,9645,9647,9649,9651,9652,9654,9655,9656,9657,9658,9660,9661,9663,9664,9667,12248,12249,12255,13492,15554,15555,16908,17125,17136,17549,17913,18814,18824,18874,18878,19259,19269,19347,19577,20390,20397,20400,20443,20652,20688,20718,20933,21024,21522,21543,21550,21826,21853,21989,29407,29504,29568,30226,30738,30739,31050,31571,31704,31731,32045,32392,32768,32990,40071,40093,40229,40269,40333,40339,40562,40578,40605,40635,40670,40684,42584,42711,43235,43315,43323,43368,43874,43875,43930,43951,44132,44133,44461,44791,45055,45299,45363,45364,52196,52218,52245,52283,52286,52387,52652,52746,52882,52888,52897,52913,53257,53774,53781,53837,53844,53916,54647,55451,55968,56546,56576,57814,57823,59741,59779,60360,60398,60547,61709,61905,61926,61930,64162,64275,64338,64339,64379,64714,64744,64891,64906,65054,65080,65120,66543,68023,73995,73996,83185,83335,83406,83652,84591,85395,91867,91868,91923,91924,93009,93011,94370,94371,98304,98526,98583,98586,99260,99261,100713,100714,108552,108553,116428,116429,119133,119134,120842,120843,121826,121828,124004,124006,124437,124440,124517,124519,124560,124565,131400,131403,131419,131422,131801,131804,131806,131808,131816,131819,131888,131890,132216,132219,136193,136196,136209,136210,136212,136214,136222,136223,136228,136230,136254,136255,136259,136261,136304,136309,139627,139628,139631,139633,139644,139645,139879,139881,140282,140308,140363,140364,140373,140375,140387,140845,140848,140850,140892,149086,154519,154520,154523,154525,154551,154552,154554,154556,154566,154567,154591,154593,154627,154628,161570,161571,161921,161922,162328,162329,162332,162334,162343,162344,162346,162348,162370,162371,163560,163562,163840,164062,164641,164644,165824,165827,167957,167960,168018,168021,168037,168038,168963,168965,169859,169860,171251,171253,174507,174508,174512,174515,174971,174974,176339,185661,185677,185678,192843,192844,200894,200897,201002,201003,201005,201007,201024,201025,202088,202090,203557,203624,203629,203632,203768,203769,203773,203774,203786,203788,203813,203814,203816,203818,203825,203828,203838,203839,203888,203890,204007,204012,205246,205248,205452,205453,205948,205950,206675,206703,206705,206707,206723,214916,224116,224117,224581,224584,229376,229598,231899,231900,231921,231923,231932,231933,231937,231939,231945,231946,232046,232047,232267,232269,233077,233078,233080,233082,233121,233122,234353,234355,235317,235318,235320,235322,235371,235372,235374,235376,235403,235404,235410,235412,235436,235439,235651,235652,235752,235754,236070,236073,236574,236575,237889,237891,239617,239618,241205,241207,243410,243411,243413,243415,243425,243426,255047,255048,255314,255317,255374,255377,255417,255418,255443,255444,255448,255450,255467,255470,256603,256604,257786,257789,257879,257882,257894,257895,265567,265568,266344,266345,266350,266352,266358,266359,266698,266700,267372,267373,267381,267383,267806,267807,267959,267961,268458,268459,268468,268470,268479,268480,268487,268489,268503,268506,271916,271917,271919,271921,271947,271948,272846,272848,273665,273666,274273,274275,276101,276104,283468,283469,283472,283474,283639,283640,283653,283655,283672,283673,283675,283677,283690,283691,283828,283830,284603,284604,284988,284990,285847,285850,287327,287329,288155,296570,305219,305220,321547,321548,321550,321552,321562,321563,322764,322766,324637,324638,330877,330878,330880,330881,331511,331513,331782,331783,331790,331792,331800,331801,331845,331847,332151,332152,332445,332447,334075,334078,335032,335033,335118,335120,335132,335135,335973,335976,335993,335996,336088,336089,336091,336092,336094,336096,336108,336111,337059,337060,339683,339686,339971,340673,340905,340907,341179,341180,341225,341227,341402,341403,341405,341407,341423,341424,341435,341437,341445,341446,341448,341450,341456,341457,342763,342765,345395,345396,346315,346317,346377,348043,348102,349770,350096,350098,350294,350295,353405,353408,354182,354183,355872,355874,357872,357873,357900,357902,358056,358059,358351,358352,363748,363749,367136,367137,369198,369200,370705,370706,371045,371047,373108,373109,373111,373113,373123,373124,373126,373128,373167,373168,373172,373174,373175,373176,373334,373335,384910,384912,384916,384917,384930,384931,384943,384944,384949,384950,384955,384956,384960,384961,384969,384970,384973,384974,384977,384978,384993,384994,384997,384998,385003,385004,385008,385009,385027,385028,385048,385049,385065,385066,385079,385080,385091,385092,385102,385103,385109,385110,385114,385115,385124,385125,385135,385136,385150,385151,385165,385166,385177,385178,385182,385183,385187,385188,385190,385191,385196,385197,385209,385210,385219,385220,385224,385225,385229,385230,385232,385233,385245,385246,385256,385257,385266,385267,385269,385270,385273,385274,385278,385279,385293,385294,385296,385297,385304,385305,385312,385313,385328,385329,385334,385335,385346,385347,385364,385365,385382,385383,385393,385394,385410,385411,385418,385419,385426,385427,385430,385431,385441,385442,385446,385447,385449,385450,385461,385462,385464,385465,385469,385470,385479,385480,385488,385489,385500,385501,385508,385509,385512,385513,385520,385521,385526,385527,385532,385533,385546,385547,385561,385562,385567,385568,385578,385579,385590,385591,385593,385594,385598,385599,385601,385602,385604,385605,385610,385611,385631,385632,385634,385635,385640,385641,385651,385652,385661,385662,385667,385668,385678,385679,385685,385686,385698,385700,385702,385703,385705,385706,385710,385711,385717,385718,385739,385740,385756,385757,385768,385769,385771,385772,385775,385776,385784,385785,385787,385788,385797,385798,385800,385801,385820,385821,385827,385828,385831,385832,385834,385835,385837,385838,385849,385850,385854,385855,385857,385858,385862,385863,385868,385869,385873,385874,385879,385880,385889,385890,385898,385899,385918,385919,385924,385925,385927,385928,385930,385931,385941,385942,385947,385948,385951,385952,385958,385959,385963,385964,385974,385975,385981,385982,385988,385989,385992,385993,385996,385997,386000,386001,386020,386021,386026,386027,386033,386034,386040,386041,386058,386059,386061,386062,386065,386066,386071,386072,386083,386084,386091,386092,386103,386104,386114,386115,386124,386125,386128,386129,386135,386136,386139,386140,386144,386145,386149,386150,386152,386153,386157,386158,386167,386168,386172,386173,386175,386176,386185,386186,386189,386190,386198,386199,386212,386213,386223,386224,386229,386230,386235,386236,386244,386245,386255,386256,386263,386264,386266,386267,386270,386271,386283,386284,386292,386293,386295,386296,386302,386303,386308,386309,386313,386314,386320,386321,386337,386338,386345,386346,386348,386349,386351,386352,386354,386355,386358,386359,386361,386362,386376,386377,386385,386386,386388,386389,386397,386398,386415,386416,386419,386420,386424,386425,386430,386432,386435,386436,386438,386439,386443,386444,386449,386450,386456,386457,386477,386478,386484,386485,386494,386495,386500,386501,386515,386516,386520,386521,386532,386533,386539,386540,386554,386555,386564,386565,386569,386570,386574,386575,386577,386578,386584,386585,386591,386592,386597,386598,386609,386610,386619,386620,386626,386627,386633,386634,386636,386637,386646,386647,386655,386656,386669,386670,386681,386682,386694,386695,386709,386710,386713,386714,386721,386722,386734,386735,386743,386744,386746,386747,386753,386754,386760,386761,386767,386768,386782,386783,386793,386794,386801,386802,386809,386810,386814,386815,386819,386820,386823,386824,386826,386827,386847,386848,386852,386853,386856,386857,386861,386862,386865,386866,386873,386874,386881,386882,386890,386891,386894,386895,386903,386904,386933,386936,386937,386938,386940,386941,386942,386943,386944,386945,386947,386948,386949,386950,386951,386952,386954,386955,386956,386957,386958,386959,386961,386962,386963,386964,386965,386966,386967,386968,386969,386970,386971,386972,386973,386974,386976,386977,386978,386979,386983,386984,386985,386986,386987,386989,387012,387013,387034,387035,387049,387050,387069,387070,387078,387079,387087,387088,387101,387102,387105,387106,387177,387178,387223,387224,387225,387228,387234,387235,387243,387245,387263,387264,388373,388375,388377,388378,388483,388485,388495,388497,388503,388504,388510,388511,388515,388517,388913,388915,389129,389130,390247,390248,394536,394537,395743,396405,396457,396458,397956,397957,399219,400458,402248,402249,403649,403650,404012,404013,408630,408631,421266,421267,421552,421554,421555,421556,421557,421558,421559,421560,421561,421562,421563,421564,421565,421566,421567,421568,421569,421570,421571,421572,421573,421574,421575,421576,421577,421578,421579,421580,421581,421582,421583,421584,421585,421586,421587,421588,421589,421590,421591,421592,421593,421594,421595,421596,421597,421598,421599,421600,421601,421602,421603,421604,421605,421606,421607,421608,421609,421610,421611,421612,421613,421614,421615,421616,421617,421618,421619,421620,421621,421622,421623,421624,421625,421626,421627,421628,421629,421630,421631,421632,421633,421634,421635,421636,421637,421638,421639,421640,421641,421642,421643,421644,421645,421646,421647,421648,421649,421650,421651,421652,421653,421654,421655,421656,421657,421658,421659,421660,421661,421662,421663,421664,421665,421666,421667,421668,421669,421670,421671,421672,421673,421674,421675,421676,421677,421678,421679,421680,421681,421682,421683,421684,421685,421686,421687,421688,421689,421690,421691,421692,421693,421694,421695,421696,421697,421698,421699,421700,421701,421702,421703,421704,421705,421706,421707,421708,421709,421710,421711,421712,421713,421714,421715,421716,421717,421718,421719,421720,421721,421722,421723,421724,421725,421726,421727,421728,421729,421730,421731,421732,421733,421734,421735,421736,421737,421738,421739,421740,421741,421742,421743,421744,421745,421746,421747,421748,421749,421750,421751,421752,421753,421754,421755,421756,421757,421758,421759,421760,421761,421762,421763,421764,421765,421766,421767,421768,421769,421770,421771,421772,421773,421774,421775,421776,421777,421778,421779,421780,421781,421782,421783,421784,421785,421786,421787,421788,421789,421790,421791,421792,421793,421794,421795,421796,421797,421798,421799,421800,421801,421802,421803,421804,421805,421806,421807,421808,421809,421810,421811,421812,421813,421814,421815,421816,421817,421818,421819,421820,421821,421822,421823,421824,421825,421826,421827,421828,421829,421830,421831,421832,421833,421834,421835,421836,421837,421838,421839,421840,421841,421842,421843,421844,421845,421846,421847,421848,421849,421850,421851,421852,421853,421854,421855,421856,421857,421858,421859,421860,421861,421862,421863,421864,421865,421866,421867,421868,421869,421870,421871,421872,421873,421874,421875,421876,421877,421878,421879,421880,421881,421882,421883,421884,421885,421886,421887,421888,421889,421890,421891,421892,421893,421894,421895,421896,421897,421898,421899,421900,421901,421902,421903,421904,421905,421906,421907,421908,421909,421910,421911,421912,421913,421914,421915,421916,421917,421918,421919,421920,421921,421922,421923,421924,421925,421926,421927,421928,421929,421930,421931,421932,421933,421934,421935,421936,421937,421938,421939,421940,421941,421942,421943,421944,421945,421946,421947,421948,421949,421950,421951,421952,421953,421954,421955,421956,421957,421958,421959,421960,421961,421962,421963,421964,421965,421966,421967,421968,421969,421970,421971,421972,421973,421974,421975,421976,421977,421978,421979,421980,421981,421982,421983,421984,421985,421986,421987,421988,421989,421990,421991,421992,421993,421994,421995,421996,421997,421998,424273,424274,425696,425697,427824,427825,429330,430905,430921,430922,430943,431839,431928,431929,432222,432223,444108,444109,447365,447422,447436,449910,449987,449988,450039,450486,450559,451567,451595,451602,452707,452714,452944,453411,453415,453598,453599,453604,453607,453608,453610,454029,462594,462595,464243,464244,466752,466753,467897,467898,477938,477939,480762,480819,480833,481499,481557,481558,481564,482952,483041,483042,483060,483439,485734,485735,485868,485869,487787,487788,487800,487802,499222,499224,499521,499522,499545,499546,499637,499638,499838,499923,499928,500171,501488,501525,501545,501554,501644,501681,501682,501687,501748,501753,501825,501831,501837,501842,501873,501986,502383,502387,502398,502403,502419,502540,502590,502598,502689,503103,503109,503151,503177,503182,503187,503193,503375,503376,503382,503387,503390,503413,503438,503443,503510,503513,503520,503638,503646,503655,503660,503662,503678,503766,503771,503801,504286,504329,504372,504378,504423,504430,504455,504458,504460,504464,504661,504917,504918,504938,504939,505012,505013,505065,505884,505885,513032,513034,513410,513412,513544,513545,513554,513555,513597,513599,515674,516564,523381,523382,523386,523387,524288,530360,535338,535339,537667,537668,537770,537772,537778,538363,538508,538510,538519,538520,538710,538712,538718,538719,540053,540055,540073,540074,542765,542767,542835,542836,542846,542848,542854,542855,542888,542890,542897,542900,542910,542911,543282,543284,543296,543297,543305,543307,543313,543314,543373,543375,543381,543382,543456,543458,543465,543466,550260,550262,550355,550358,550908,550910,550925,550926,551194,551196,551203,551204,551211,551213,551219,551222,551385,551387,551397,551398,560038,560039,561281,561283,561314,561315,561321,561324,561344,561345,561375,561377,561383,561384,561813,561815,561825,561826,570018,573051,577109,577110,577340,577342,577353,577356,579288,579289,580107,580109,580137,580140,580150,580151,582629,582631,582703,582704,582853,582855,582863,582866,582933,582934,582971,582972,585655,585657,589181,589182,589196,589198,589205,591175,591185,591186,605715,605716,607571,615763,627771,627774,627980,627981,630183,630185,630234,630235,639340,639342,639431,639432,641515,641516,641546,641548,641556,644251,644258,644259,644585,644587,644604,652797,660034,660035,666538,666539,669228,669230,669274,669275,670611,670612,682501,682503,682621,682622,682680,682682,682690,682693,683205,683206,683332,683334,683340,683341,683401,683403,683411,683412,683420,683421,683438,683440,683447,683448,683490,683492,683498,683501,683527,684223,685720,685721,692371,692373,692405,692406,692481,692483,692583,692586,693137,693138,693223,693225,693233,693234,699381,699383,699480,699481,699580,699582,699590,699593,699657,699658,700668,700670,700695,700696,701424,701426,701441,701444,704384,705563,705565,705572,705576,705577,705583,705585,705591,705594,706657,706658,709519,709521,709585,709586,710382,710384,710402,710405,712613,712614,726524,726526,726618,726619,726626,726628,726634,726635,726641,726642,731476,731478,731522,731523,737112,737114,737193,737194,741307,741309,741349,741350,741362,741364,741370,741371,741382,741383,744156,744158,744207,744208,744537,744539,744551,744554,744563,744566,745985,745988,746562,746563,746624,746626,746632,746633,752867,752869,752934,752937,752951,752953,753270,753271,757044,757046,757095,757096,757288,757290,757300,757301,757578,757580,757592,757595,764651,764654,766884,766885,766892,766894,766904,766905,768145,768146,768151,768153,768159,768162,768333,768334,768354,768356,768362,768365,768410,768411,768564,768566,768574,768575,769110,777304,791735,791737,797291,797292,797320,797321,797334,797335,797342,797343,797346,797347,797367,797368,797461,797462,797467,797472,797474,797475,797476,797477,797478,797479,797480,797481,797482,797483,797484,797485,797486,797487,797488,797491,797492,797493,798046,798047,798048,798049,798979,798980,798987,798988,799541,799542,799543,799545,799546,799549,800407,800680,800695,800697,800898,800899,800905,800906,800909,800912,800914,802264,802562,802563,802647,802649,802653,802654,802669,802765,802766,802767,802779,802959,802962,802968,803008,803009,803013,803014,803020,803021,803027,803028,803030,803031,803263,803264,803341,803342,803639,803860,804341,804379,804787,804795,804842,804906,805159,805209,810604,810605,816893,816894,817977,817978,818503,818504,819200,819422,820733,820734,821127,821128,830473,830474,837601,837602,837843,838222,840717,841350,841481,841505,841546,841647,841654,841720,841735,841758,841763,843377,843402,845010,845262,845540,845713,845715,845780,845781,851693,851694,859453,859454,859457,859459,859475,859477,859481,859482,859508,903458,917316,917503,917504") && block_image_verify("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat"), ui_print("system recovered successfully."), abort("E1004: system partition fails to recover"));
endif;
if (range_sha1("/dev/block/bootdevice/by-name/vendor", "24,1,106,107,109,120,269,6168,7866,7870,32770,32864,98306,98400,163842,163936,229378,229472,294914,295008,314724,386991,393125,393215,393216") == "a9bc798d41fa42c8d87f4bbe241551add9d2959a" || block_image_verify("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat")) then
ui_print("Verified vendor image...");
else
check_first_block("/dev/block/bootdevice/by-name/vendor");
ifelse (block_image_recover("/dev/block/bootdevice/by-name/vendor", "24,1,106,107,109,120,269,6168,7866,7870,32770,32864,98306,98400,163842,163936,229378,229472,294914,295008,314724,386991,393125,393215,393216") && block_image_verify("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat"), ui_print("vendor recovered successfully."), abort("E2004: vendor partition fails to recover"));
endif;

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

ui_print("Patching boot image...");
show_progress(0.100000, 10);
apply_patch("EMMC:/dev/block/bootdevice/by-name/boot:134217728:ed64951d2381513d7cd4ca69f6193725a1228640:134217728:d58f530a28f1708c7e340eb211412fd710723a2b",
            "-", d58f530a28f1708c7e340eb211412fd710723a2b, 134217728,
            ed64951d2381513d7cd4ca69f6193725a1228640, package_extract_file("patch/boot.img.p")) || abort("Failed to apply patch \"patch/boot.img.p \".");

# ---- radio update tasks ----

ui_print("Patching firmware images...");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymaster");
package_extract_file("firmware-update/hypvm.mbn", "/dev/block/bootdevice/by-name/hypbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/aop.mbn", "/dev/block/bootdevice/by-name/aop");
package_extract_file("firmware-update/xbl_config.elf", "/dev/block/bootdevice/by-name/xbl_config");
package_extract_file("firmware-update/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");
package_extract_file("firmware-update/uefi_sec.mbn", "/dev/block/bootdevice/by-name/uefisecapp");
package_extract_file("firmware-update/imagefv.elf", "/dev/block/bootdevice/by-name/imagefv");
package_extract_file("firmware-update/qupv3fw.elf", "/dev/block/bootdevice/by-name/qupfw");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/dspso.bin", "/dev/block/bootdevice/by-name/dsp");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/storsec.mbn", "/dev/block/bootdevice/by-name/storsec");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xbl");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/aop.mbn", "/dev/block/bootdevice/by-name/aopbak");
package_extract_file("firmware-update/xbl_config.elf", "/dev/block/bootdevice/by-name/xbl_configbak");
package_extract_file("firmware-update/uefi_sec.mbn", "/dev/block/bootdevice/by-name/uefisecappbak");
package_extract_file("firmware-update/qupv3fw.elf", "/dev/block/bootdevice/by-name/qupfwbak");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfgbak");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xblbak");
show_progress(0.600000, 600);
ui_print("Patching system image after verification.");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");
ui_print("Patching vendor image after verification.");
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat") ||
  abort("E2001: Failed to update vendor image.");

# ---- radio update tasks 2 ----

ui_print("Patching vbmeta dtbo logo binimages...");
package_extract_file("firmware-update/vbmeta.img", "/dev/block/bootdevice/by-name/vbmeta");
package_extract_file("firmware-update/dtbo.img", "/dev/block/bootdevice/by-name/dtbo");
show_progress(0.100000, 2);
