getprop("ro.product.device") == "davinci" || abort("E3004: This package is for \"davinci\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/davinci/davinci:11/RKQ1.200826.002/V12.1.1.0.RFJCNXM:user/release-keys");
ui_print("Target: Xiaomi/davinci/davinci:11/RKQ1.200826.002/V12.1.2.0.RFJCNXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/davinci/davinci:11/RKQ1.200826.002/V12.1.1.0.RFJCNXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/davinci/davinci:11/RKQ1.200826.002/V12.1.2.0.RFJCNXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/davinci/davinci:11/RKQ1.200826.002/V12.1.1.0.RFJCNXM:user/release-keys or Xiaomi/davinci/davinci:11/RKQ1.200826.002/V12.1.2.0.RFJCNXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
patch_partition_check(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:ec2a7374ea1daea995a573ad458da74aeec01f4e"),
                      concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:039d6f7f423e06db9fe977b76ea7434151ae5bbb")) ||
    abort(concat("E3005: \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:ec2a7374ea1daea995a573ad458da74aeec01f4e"),"\" or \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:039d6f7f423e06db9fe977b76ea7434151ae5bbb"),"\" has unexpected contents."));
apply_patch_space(134217728) || abort("E3006: Not enough free space on /cache to apply patches.");
if (range_sha1("/dev/block/bootdevice/by-name/system", "1186,1,382,508,522,536,545,547,552,554,555,931,932,933,934,1123,1124,1452,1453,1455,1456,2010,2011,2014,2015,2315,2316,3704,3705,7757,7758,13460,13461,21267,21268,21270,21271,21275,21276,21277,21278,21386,21387,21440,21441,21513,21514,21516,21518,22540,22541,22543,22545,28689,28690,28692,28694,28695,28696,28818,28819,28821,28823,28826,28827,28930,28932,29614,29615,29617,29618,29622,29623,29632,29633,29636,29637,32768,32771,34729,34730,34732,34734,34735,34736,34747,34749,35531,35532,35534,35535,36165,36166,37030,37031,37033,37034,37287,37288,37289,37290,37320,37321,37371,37372,37445,37446,37448,37449,37454,37456,38655,38656,38658,38659,38877,38878,38880,38881,39498,39500,39845,39847,40294,40295,40297,40298,40362,40363,40364,40365,40366,40367,40369,40370,40384,40386,40539,40540,40542,40544,40603,40604,40739,40740,40742,40743,40748,40749,44319,44320,47658,47659,48929,48930,52475,52476,57455,57456,62185,62186,63955,63956,65536,65537,69397,69398,69400,69402,69452,69455,69461,69462,70543,70545,70555,70557,70802,70803,70873,70874,71081,71082,71091,71092,72343,72346,72352,72353,72358,72359,76390,76391,76402,76403,76531,76532,76535,76536,76556,77868,79372,79373,79381,79382,79387,79388,79390,79391,82512,82513,82515,82516,82603,82604,82687,82688,84441,84442,84690,84691,85707,85708,86077,86078,87607,87608,92777,92779,98289,98290,98293,98294,98304,98307,99141,99143,99196,99197,99203,99204,99218,99219,99847,99848,100738,100739,101001,101002,101184,101185,103817,103818,104807,104808,108947,108948,112316,112317,113496,113497,120628,120629,122413,122414,123247,123248,123267,123270,125459,125460,128738,128739,128876,128877,129272,129273,129453,129454,131072,131073,132451,132452,133161,133162,135844,135845,136005,136008,137043,137046,138763,138764,138790,138791,138794,138797,141261,141262,141324,141325,141346,141347,142107,142110,142136,142137,142386,142389,142408,142409,142452,142453,143765,143766,143836,143837,143906,143907,144061,144062,152230,152231,152236,152237,155176,155177,155689,155690,158525,158528,162189,162190,162195,162196,162593,162594,163328,163329,163335,163336,163840,163843,166709,166710,168486,168487,181926,181928,187509,187510,187957,187958,187990,187991,187996,187997,188008,188009,188384,188385,188408,188409,189693,189694,189872,189873,189960,189963,189976,189979,190685,190686,191256,191257,192131,192134,196591,196592,196608,196609,201346,201349,203294,203295,203519,203520,206361,206362,206725,206726,208618,208619,211931,211932,214534,214539,214540,214541,214542,214543,214544,214545,214546,214547,214548,214549,214550,214552,218881,218882,220232,220233,228225,228226,228942,228943,229376,229379,233469,233470,234902,234903,240655,240656,262144,262145,268312,268313,269942,269943,272226,272227,273022,273023,277651,277652,281780,281781,285734,285735,291079,291080,291386,291387,291409,291410,291422,291423,291430,291431,291432,291433,291478,291479,291501,291502,291569,291572,291574,291575,291577,291578,291640,291641,291644,291649,291650,291651,291652,291653,291654,291655,292449,292450,292456,292457,293010,293012,293565,293567,293568,293569,293570,293571,293572,293573,293574,293575,293576,293577,293578,293579,293580,293581,293582,293585,294912,294915,295553,295555,295694,295695,295701,295703,295961,295962,295964,295966,296514,296515,296545,296546,296560,296561,296879,296880,297024,297025,297033,297035,298351,298352,312168,312169,320036,320037,322135,322136,322560,322561,326220,326221,327680,327681,331796,331797,343449,343952,343987,344274,344288,344290,344301,344302,359152,359153,360448,360449,363189,363190,364877,364878,365210,365211,365235,365236,365788,365796,370672,370673,371729,371734,377907,377908,379499,379908,382193,382194,387106,387107,389505,389506,389944,389945,390005,390006,393216,393217,398922,398933,402060,402371,403259,403260,407429,407430,421280,421286,425984,425985,438477,438478,453769,453770,458752,458753,463861,463863,477823,477824,481429,482002,489458,489461,491319,491320,491520,491521,492033,492034,496500,496501,497317,497321,497340,497341,497344,497345,497368,497369,497440,497441,497455,497456,497465,497466,497475,497476,497489,497490,497511,497512,497557,497559,497560,497561,497562,497563,497564,497565,497566,497567,497569,497570,497574,497575,497576,497577,497579,497580,497581,497582,497583,497584,497586,497587,497588,497589,497590,497591,497592,497593,497594,497595,497596,497597,497598,497599,497600,497601,497602,497603,497605,497606,497608,497609,497610,497613,497615,497617,497625,497626,497632,497634,497640,497641,497647,497648,497652,497653,498768,498769,498874,498876,498886,498888,498906,498908,498948,498949,498951,498966,498971,508159,508298,508331,508332,508333,508775,508778,511806,511807,512169,512170,512222,512223,513623,513624,514886,514887,516385,516387,516685,516686,521915,521916,521924,521925,521995,521996,524288,524289,548614,548615,551522,551523,551573,551576,557056,557057,558242,558243,558397,558398,558403,558404,558695,558696,558726,558727,559474,559475,559531,559532,566326,566327,566602,566603,569270,569272,569548,569549,569557,569558,570455,570456,571739,571740,573157,573158,574958,574959,574971,574972,574980,574981,575252,575253,575257,575258,575673,575674,575944,575945,575966,575967,575972,575973,578005,578006,578368,578369,584545,584546,586120,586123,588209,588210,589824,589825,593244,593245,596318,596319,604718,604719,622592,622593,623435,623438,624519,624522,624759,624760,640287,640288,643563,643564,644712,644713,654973,654974,655360,655361,669309,669310,673323,673324,677333,677334,677351,677352,677667,677668,685807,685808,685827,685828,688128,688129,691768,691769,691780,691781,692562,692563,700674,700676,702871,702872,702874,702875,703393,703394,704546,704547,704551,704552,708387,708388,708449,708450,714293,714294,717423,717424,717502,717503,717507,717508,717567,717568,717863,717864,720803,720804,720818,720819,720896,720897,721462,721463,727062,727063,727864,727865,728030,728031,728036,728037,728049,728050,730149,730152,730157,730158,730160,730161,730277,730278,730290,730291,745457,745458,753664,753665,762362,762363,764618,764619,768110,768111,771968,771969,771976,771978,772140,772141,772144,772145,772151,772153,772171,772172,772174,772175,772213,772216,772665,772666,773037,773038,774523,774524,774614,774616,774618,774619,774621,774622,774624,774625,774627,774628,774630,774631,774633,774634,774644,774645,774647,774648,774650,774651,774653,774654,774656,774657,774659,774660,774670,774671,774691,774692,774698,774699,774719,774720,774736,774737,774741,774742,774759,774760,774765,774766,774785,774786,774800,774801,774805,774806,774825,774826,774832,774833,774853,774854,774869,774870,774874,774875,774877,774878,774880,774881,774883,774884,774886,774887,774889,774890,774892,774893,774895,774896,774898,774899,774901,774902,774904,774905,774915,774917,774921,774922,775559,775562,775569,775570,775576,775577,775591,775592,775650,775651,775692,775695,775701,775702,775896,775897,775900,775901,775904,775905,775909,775910,775932,775933,776644,776645,776649,776650,776652,776653,776664,776665,776675,776676,776679,776680,776683,776686,776693,776694,776706,776707,776709,776710,776715,776716,776720,776721,776750,776751,776759,776760,776767,776768,776781,776782,776797,776798,776996,776998,776999,777000,777012,777013,777014,777015,777016,777017,777025,777026,777049,777050,777089,777094,777097,777100,777103,777106,777109,777111,777116,777117,777122,777125,777130,777131,777134,777136,777213,777214,777222,777223,778625,778626,779227,779228,779254,779255,784010,784012,786432,786433,790111,790112,795635,795636,801158,801159,801212,801213,804679,804680,805460,805461,806278,806279,806320,806321,815810,815811,819200,819203,821375,821376,822559,822561,822609,822610,823384,836419,837101,837102,837129,837130,837158,837161,837954,837955,837962,837963,838241,838244,838264,838265,838282,838284,838660,838661,838664,838665,838685,838686,838798,838799,838840,838842,838851,838852,838978,838979,839083,839084,839085,839087,884736,884739,903007,917316,917503,917504") == "09017b8980b024093098b38f90adeef32d9902d3" || 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", "1186,1,382,508,522,536,545,547,552,554,555,931,932,933,934,1123,1124,1452,1453,1455,1456,2010,2011,2014,2015,2315,2316,3704,3705,7757,7758,13460,13461,21267,21268,21270,21271,21275,21276,21277,21278,21386,21387,21440,21441,21513,21514,21516,21518,22540,22541,22543,22545,28689,28690,28692,28694,28695,28696,28818,28819,28821,28823,28826,28827,28930,28932,29614,29615,29617,29618,29622,29623,29632,29633,29636,29637,32768,32771,34729,34730,34732,34734,34735,34736,34747,34749,35531,35532,35534,35535,36165,36166,37030,37031,37033,37034,37287,37288,37289,37290,37320,37321,37371,37372,37445,37446,37448,37449,37454,37456,38655,38656,38658,38659,38877,38878,38880,38881,39498,39500,39845,39847,40294,40295,40297,40298,40362,40363,40364,40365,40366,40367,40369,40370,40384,40386,40539,40540,40542,40544,40603,40604,40739,40740,40742,40743,40748,40749,44319,44320,47658,47659,48929,48930,52475,52476,57455,57456,62185,62186,63955,63956,65536,65537,69397,69398,69400,69402,69452,69455,69461,69462,70543,70545,70555,70557,70802,70803,70873,70874,71081,71082,71091,71092,72343,72346,72352,72353,72358,72359,76390,76391,76402,76403,76531,76532,76535,76536,76556,77868,79372,79373,79381,79382,79387,79388,79390,79391,82512,82513,82515,82516,82603,82604,82687,82688,84441,84442,84690,84691,85707,85708,86077,86078,87607,87608,92777,92779,98289,98290,98293,98294,98304,98307,99141,99143,99196,99197,99203,99204,99218,99219,99847,99848,100738,100739,101001,101002,101184,101185,103817,103818,104807,104808,108947,108948,112316,112317,113496,113497,120628,120629,122413,122414,123247,123248,123267,123270,125459,125460,128738,128739,128876,128877,129272,129273,129453,129454,131072,131073,132451,132452,133161,133162,135844,135845,136005,136008,137043,137046,138763,138764,138790,138791,138794,138797,141261,141262,141324,141325,141346,141347,142107,142110,142136,142137,142386,142389,142408,142409,142452,142453,143765,143766,143836,143837,143906,143907,144061,144062,152230,152231,152236,152237,155176,155177,155689,155690,158525,158528,162189,162190,162195,162196,162593,162594,163328,163329,163335,163336,163840,163843,166709,166710,168486,168487,181926,181928,187509,187510,187957,187958,187990,187991,187996,187997,188008,188009,188384,188385,188408,188409,189693,189694,189872,189873,189960,189963,189976,189979,190685,190686,191256,191257,192131,192134,196591,196592,196608,196609,201346,201349,203294,203295,203519,203520,206361,206362,206725,206726,208618,208619,211931,211932,214534,214539,214540,214541,214542,214543,214544,214545,214546,214547,214548,214549,214550,214552,218881,218882,220232,220233,228225,228226,228942,228943,229376,229379,233469,233470,234902,234903,240655,240656,262144,262145,268312,268313,269942,269943,272226,272227,273022,273023,277651,277652,281780,281781,285734,285735,291079,291080,291386,291387,291409,291410,291422,291423,291430,291431,291432,291433,291478,291479,291501,291502,291569,291572,291574,291575,291577,291578,291640,291641,291644,291649,291650,291651,291652,291653,291654,291655,292449,292450,292456,292457,293010,293012,293565,293567,293568,293569,293570,293571,293572,293573,293574,293575,293576,293577,293578,293579,293580,293581,293582,293585,294912,294915,295553,295555,295694,295695,295701,295703,295961,295962,295964,295966,296514,296515,296545,296546,296560,296561,296879,296880,297024,297025,297033,297035,298351,298352,312168,312169,320036,320037,322135,322136,322560,322561,326220,326221,327680,327681,331796,331797,343449,343952,343987,344274,344288,344290,344301,344302,359152,359153,360448,360449,363189,363190,364877,364878,365210,365211,365235,365236,365788,365796,370672,370673,371729,371734,377907,377908,379499,379908,382193,382194,387106,387107,389505,389506,389944,389945,390005,390006,393216,393217,398922,398933,402060,402371,403259,403260,407429,407430,421280,421286,425984,425985,438477,438478,453769,453770,458752,458753,463861,463863,477823,477824,481429,482002,489458,489461,491319,491320,491520,491521,492033,492034,496500,496501,497317,497321,497340,497341,497344,497345,497368,497369,497440,497441,497455,497456,497465,497466,497475,497476,497489,497490,497511,497512,497557,497559,497560,497561,497562,497563,497564,497565,497566,497567,497569,497570,497574,497575,497576,497577,497579,497580,497581,497582,497583,497584,497586,497587,497588,497589,497590,497591,497592,497593,497594,497595,497596,497597,497598,497599,497600,497601,497602,497603,497605,497606,497608,497609,497610,497613,497615,497617,497625,497626,497632,497634,497640,497641,497647,497648,497652,497653,498768,498769,498874,498876,498886,498888,498906,498908,498948,498949,498951,498966,498971,508159,508298,508331,508332,508333,508775,508778,511806,511807,512169,512170,512222,512223,513623,513624,514886,514887,516385,516387,516685,516686,521915,521916,521924,521925,521995,521996,524288,524289,548614,548615,551522,551523,551573,551576,557056,557057,558242,558243,558397,558398,558403,558404,558695,558696,558726,558727,559474,559475,559531,559532,566326,566327,566602,566603,569270,569272,569548,569549,569557,569558,570455,570456,571739,571740,573157,573158,574958,574959,574971,574972,574980,574981,575252,575253,575257,575258,575673,575674,575944,575945,575966,575967,575972,575973,578005,578006,578368,578369,584545,584546,586120,586123,588209,588210,589824,589825,593244,593245,596318,596319,604718,604719,622592,622593,623435,623438,624519,624522,624759,624760,640287,640288,643563,643564,644712,644713,654973,654974,655360,655361,669309,669310,673323,673324,677333,677334,677351,677352,677667,677668,685807,685808,685827,685828,688128,688129,691768,691769,691780,691781,692562,692563,700674,700676,702871,702872,702874,702875,703393,703394,704546,704547,704551,704552,708387,708388,708449,708450,714293,714294,717423,717424,717502,717503,717507,717508,717567,717568,717863,717864,720803,720804,720818,720819,720896,720897,721462,721463,727062,727063,727864,727865,728030,728031,728036,728037,728049,728050,730149,730152,730157,730158,730160,730161,730277,730278,730290,730291,745457,745458,753664,753665,762362,762363,764618,764619,768110,768111,771968,771969,771976,771978,772140,772141,772144,772145,772151,772153,772171,772172,772174,772175,772213,772216,772665,772666,773037,773038,774523,774524,774614,774616,774618,774619,774621,774622,774624,774625,774627,774628,774630,774631,774633,774634,774644,774645,774647,774648,774650,774651,774653,774654,774656,774657,774659,774660,774670,774671,774691,774692,774698,774699,774719,774720,774736,774737,774741,774742,774759,774760,774765,774766,774785,774786,774800,774801,774805,774806,774825,774826,774832,774833,774853,774854,774869,774870,774874,774875,774877,774878,774880,774881,774883,774884,774886,774887,774889,774890,774892,774893,774895,774896,774898,774899,774901,774902,774904,774905,774915,774917,774921,774922,775559,775562,775569,775570,775576,775577,775591,775592,775650,775651,775692,775695,775701,775702,775896,775897,775900,775901,775904,775905,775909,775910,775932,775933,776644,776645,776649,776650,776652,776653,776664,776665,776675,776676,776679,776680,776683,776686,776693,776694,776706,776707,776709,776710,776715,776716,776720,776721,776750,776751,776759,776760,776767,776768,776781,776782,776797,776798,776996,776998,776999,777000,777012,777013,777014,777015,777016,777017,777025,777026,777049,777050,777089,777094,777097,777100,777103,777106,777109,777111,777116,777117,777122,777125,777130,777131,777134,777136,777213,777214,777222,777223,778625,778626,779227,779228,779254,779255,784010,784012,786432,786433,790111,790112,795635,795636,801158,801159,801212,801213,804679,804680,805460,805461,806278,806279,806320,806321,815810,815811,819200,819203,821375,821376,822559,822561,822609,822610,823384,836419,837101,837102,837129,837130,837158,837161,837954,837955,837962,837963,838241,838244,838264,838265,838282,838284,838660,838661,838664,838665,838685,838686,838798,838799,838840,838842,838851,838852,838978,838979,839083,839084,839085,839087,884736,884739,903007,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", "158,1,194,508,515,525,526,604,609,2283,2284,2288,2289,2351,2352,2354,2358,2597,2598,2601,2602,2605,2606,2615,2616,3438,3439,5868,5869,14455,14456,14468,14469,15395,15396,16030,16031,17039,17047,19300,19301,20950,20951,22222,22223,32768,32771,43941,43943,51339,51340,59378,59379,62404,62406,62435,62437,62919,62920,63004,63005,65536,65537,83626,83627,83631,83633,83651,83652,83697,83698,83716,83717,83719,83720,83770,83771,83774,83775,83833,83834,83840,83841,83866,83867,83903,83904,84008,84009,84066,84067,84319,84320,84333,84334,89593,89594,91316,91317,91328,91329,92005,92007,92052,92053,92166,92167,98304,98307,98987,98988,98990,98991,102020,102021,102022,102023,102071,102072,102495,102496,102552,102553,102855,102857,102858,102864,103188,103190,103195,103205,103210,103211,103213,103217,103358,103369,103809,131073,131578,163843,164348,196609,197114,229379,229884,262145,262650,294915,295420,327681,328186,339321,360448,360449,386991,393125,393215,393216") == "ae7ee90b2e8fd5eb326f2c4d914eb68e90fe7036" || 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", "158,1,194,508,515,525,526,604,609,2283,2284,2288,2289,2351,2352,2354,2358,2597,2598,2601,2602,2605,2606,2615,2616,3438,3439,5868,5869,14455,14456,14468,14469,15395,15396,16030,16031,17039,17047,19300,19301,20950,20951,22222,22223,32768,32771,43941,43943,51339,51340,59378,59379,62404,62406,62435,62437,62919,62920,63004,63005,65536,65537,83626,83627,83631,83633,83651,83652,83697,83698,83716,83717,83719,83720,83770,83771,83774,83775,83833,83834,83840,83841,83866,83867,83903,83904,84008,84009,84066,84067,84319,84320,84333,84334,89593,89594,91316,91317,91328,91329,92005,92007,92052,92053,92166,92167,98304,98307,98987,98988,98990,98991,102020,102021,102022,102023,102071,102072,102495,102496,102552,102553,102855,102857,102858,102864,103188,103190,103195,103205,103210,103211,103213,103217,103358,103369,103809,131073,131578,163843,164348,196609,197114,229379,229884,262145,262650,294915,295420,327681,328186,339321,360448,360449,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 ----


# ---- 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/imagefv.elf", "/dev/block/bootdevice/by-name/imagefv");
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/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/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
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/imagefv.elf", "/dev/block/bootdevice/by-name/imagefvbak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak");
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");
ui_print("Patching system image after verification.");
show_progress(0.800000, 0);
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.");
show_progress(0.100000, 0);
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.");
ui_print("Patching boot image...");
show_progress(0.100000, 10);
patch_partition(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:ec2a7374ea1daea995a573ad458da74aeec01f4e"),
                concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:039d6f7f423e06db9fe977b76ea7434151ae5bbb"),
                package_extract_file("boot.img.p")) ||
    abort(concat(        "E3008: Failed to apply patch to ",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:039d6f7f423e06db9fe977b76ea7434151ae5bbb")));

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

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