getprop("ro.product.device") == "olivelite" || abort("E3004: This package is for \"olivelite\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/olivelite_ru/olivelite:10/QKQ1.191014.001/V11.0.1.0.QCPRUXM:user/release-keys");
ui_print("Target: Xiaomi/olivelite_ru/olivelite:10/QKQ1.191014.001/V11.0.2.0.QCPRUXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/olivelite_ru/olivelite:10/QKQ1.191014.001/V11.0.1.0.QCPRUXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/olivelite_ru/olivelite:10/QKQ1.191014.001/V11.0.2.0.QCPRUXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/olivelite_ru/olivelite:10/QKQ1.191014.001/V11.0.1.0.QCPRUXM:user/release-keys or Xiaomi/olivelite_ru/olivelite:10/QKQ1.191014.001/V11.0.2.0.QCPRUXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
show_progress(0.100000, 10);
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/boot:33554432:fdf7b77ac281c0cb509aa21fef411248fbbd7b80",
                      "EMMC:/dev/block/bootdevice/by-name/boot:33554432:5c78d913b84b47be9fa2c1b2cd6158a267b91901") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:33554432:fdf7b77ac281c0cb509aa21fef411248fbbd7b80\" or \"EMMC:/dev/block/bootdevice/by-name/boot:33554432:5c78d913b84b47be9fa2c1b2cd6158a267b91901\" has unexpected contents.");
apply_patch_space(66359296) || abort("E3006: Not enough free space on /cache to apply patches.");

# ---- radio update verification ----

ui_print("Verifying radio-update...");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/rpm:169092:85f043c9ea092c3dc756111513f028fd1abf7491",
                      "EMMC:/dev/block/bootdevice/by-name/rpm:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/rpm:169092:85f043c9ea092c3dc756111513f028fd1abf7491\" or \"EMMC:/dev/block/bootdevice/by-name/rpm:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:85f043c9ea092c3dc756111513f028fd1abf7491",
                      "EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:85f043c9ea092c3dc756111513f028fd1abf7491\" or \"EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/devcfg:38076:bfdfa7164c2e6e2b26cbc90d9f6573c9ef4b5b69",
                      "EMMC:/dev/block/bootdevice/by-name/devcfg:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/devcfg:38076:bfdfa7164c2e6e2b26cbc90d9f6573c9ef4b5b69\" or \"EMMC:/dev/block/bootdevice/by-name/devcfg:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:bfdfa7164c2e6e2b26cbc90d9f6573c9ef4b5b69",
                      "EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:bfdfa7164c2e6e2b26cbc90d9f6573c9ef4b5b69\" or \"EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/aboot:779468:f49ea23c9fd64d6b96dde78e0e0fb1806526b959",
                      "EMMC:/dev/block/bootdevice/by-name/aboot:779468:5a350a0177045814bd8603d3f88990443ccff2f3") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/aboot:779468:f49ea23c9fd64d6b96dde78e0e0fb1806526b959\" or \"EMMC:/dev/block/bootdevice/by-name/aboot:779468:5a350a0177045814bd8603d3f88990443ccff2f3\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/abootbak:779468:f49ea23c9fd64d6b96dde78e0e0fb1806526b959",
                      "EMMC:/dev/block/bootdevice/by-name/abootbak:779468:5a350a0177045814bd8603d3f88990443ccff2f3") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/abootbak:779468:f49ea23c9fd64d6b96dde78e0e0fb1806526b959\" or \"EMMC:/dev/block/bootdevice/by-name/abootbak:779468:5a350a0177045814bd8603d3f88990443ccff2f3\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:98370aa95d636c4c9923e12ac5cf77553b5dc637",
                      "EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:4a62750920a3c40da5ccf547241d61f9cfb55d76") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:98370aa95d636c4c9923e12ac5cf77553b5dc637\" or \"EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:4a62750920a3c40da5ccf547241d61f9cfb55d76\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/keymaster:319776:2ed23c6a86f2326477ef6d3d8bcf3cb065095ede",
                      "EMMC:/dev/block/bootdevice/by-name/keymaster:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/keymaster:319776:2ed23c6a86f2326477ef6d3d8bcf3cb065095ede\" or \"EMMC:/dev/block/bootdevice/by-name/keymaster:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:2ed23c6a86f2326477ef6d3d8bcf3cb065095ede",
                      "EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:2ed23c6a86f2326477ef6d3d8bcf3cb065095ede\" or \"EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:2fa92d5eeaaed73dc4ff43ed1317a621cee89b7f",
                      "EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:9e2059ba2811c97e1805cc4dffc59d8e5b53a26d") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:2fa92d5eeaaed73dc4ff43ed1317a621cee89b7f\" or \"EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:9e2059ba2811c97e1805cc4dffc59d8e5b53a26d\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/sbl1:409044:305dd964644b0506b915591a6ab3846b9ca02bdb",
                      "EMMC:/dev/block/bootdevice/by-name/sbl1:408956:5a6e24babe653ce06588336c825abb0ef114c8fc") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/sbl1:409044:305dd964644b0506b915591a6ab3846b9ca02bdb\" or \"EMMC:/dev/block/bootdevice/by-name/sbl1:408956:5a6e24babe653ce06588336c825abb0ef114c8fc\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/sbl1bak:409044:305dd964644b0506b915591a6ab3846b9ca02bdb",
                      "EMMC:/dev/block/bootdevice/by-name/sbl1bak:408956:5a6e24babe653ce06588336c825abb0ef114c8fc") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/sbl1bak:409044:305dd964644b0506b915591a6ab3846b9ca02bdb\" or \"EMMC:/dev/block/bootdevice/by-name/sbl1bak:408956:5a6e24babe653ce06588336c825abb0ef114c8fc\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/tz:1527680:5630fd7afade862a12272b31e0dcff259b753f12",
                      "EMMC:/dev/block/bootdevice/by-name/tz:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/tz:1527680:5630fd7afade862a12272b31e0dcff259b753f12\" or \"EMMC:/dev/block/bootdevice/by-name/tz:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:5630fd7afade862a12272b31e0dcff259b753f12",
                      "EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:5630fd7afade862a12272b31e0dcff259b753f12\" or \"EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/modem:134217728:dd148fe60da3d556d5bdd62f181f2b16b08baa5a",
                      "EMMC:/dev/block/bootdevice/by-name/modem:134217728:6619dfa945cd3d293e5a090da4909ff6bdfcb1b2") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/modem:134217728:dd148fe60da3d556d5bdd62f181f2b16b08baa5a\" or \"EMMC:/dev/block/bootdevice/by-name/modem:134217728:6619dfa945cd3d293e5a090da4909ff6bdfcb1b2\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/dtbo:8388608:9fc2072b5ddef635766d2cd6f7adeae8cd3038bb",
                      "EMMC:/dev/block/bootdevice/by-name/dtbo:8388608:22b6fffb8dfe8b708474ab26fc13dd37ac48e4e5") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/dtbo:8388608:9fc2072b5ddef635766d2cd6f7adeae8cd3038bb\" or \"EMMC:/dev/block/bootdevice/by-name/dtbo:8388608:22b6fffb8dfe8b708474ab26fc13dd37ac48e4e5\" has unexpected contents.");
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/vbmeta:4096:aa2429c6ecf74efb3093521f5f27250e32aab2c6",
                      "EMMC:/dev/block/bootdevice/by-name/vbmeta:4096:235c3a4448a17189086360d5a948722d8963074e") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/vbmeta:4096:aa2429c6ecf74efb3093521f5f27250e32aab2c6\" or \"EMMC:/dev/block/bootdevice/by-name/vbmeta:4096:235c3a4448a17189086360d5a948722d8963074e\" has unexpected contents.");
apply_patch_space(134217728) || 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", "178,1,616,759,773,803,810,830,831,1018,1023,1025,1026,1132,1133,1613,1614,1616,1618,1619,1620,1635,1636,1773,1782,1788,2101,2579,2602,2604,2605,2608,2609,2617,2618,2619,2620,4573,4694,6444,6466,7006,7007,7009,7010,7294,7295,7297,7298,7861,7863,13802,13803,13936,13937,16706,16708,17631,19101,22638,22639,22641,22643,22702,22703,22836,22838,22998,23002,23010,23011,23019,23023,23028,23029,23051,23055,23059,23060,27934,27935,27947,27951,27955,29204,29210,29214,29218,29219,29224,29228,29232,29233,29347,29353,29358,29359,31530,31534,31563,31564,31594,31598,31602,31603,31700,31704,31708,32770,33021,33022,33527,65537,66042,98306,98557,98558,99063,131073,131578,163842,164093,164094,164599,196609,197114,229378,229629,229630,230135,262145,262650,269909,269976,294914,295165,295166,295671,327681,328186,360449,360954,377154,380660,380662,380694,393217,393722,425985,426490,458753,459258,491521,492026,524289,524794,557057,557562,589825,590330,622593,623098,655361,655866,688129,688634,720897,721402,722387,819200,819202,884736,884738,1015808,1015809,1032011,1048363,1048575,1048576") == "c2853810dfc8068053443f166235e376889dea0c" || 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", "178,1,616,759,773,803,810,830,831,1018,1023,1025,1026,1132,1133,1613,1614,1616,1618,1619,1620,1635,1636,1773,1782,1788,2101,2579,2602,2604,2605,2608,2609,2617,2618,2619,2620,4573,4694,6444,6466,7006,7007,7009,7010,7294,7295,7297,7298,7861,7863,13802,13803,13936,13937,16706,16708,17631,19101,22638,22639,22641,22643,22702,22703,22836,22838,22998,23002,23010,23011,23019,23023,23028,23029,23051,23055,23059,23060,27934,27935,27947,27951,27955,29204,29210,29214,29218,29219,29224,29228,29232,29233,29347,29353,29358,29359,31530,31534,31563,31564,31594,31598,31602,31603,31700,31704,31708,32770,33021,33022,33527,65537,66042,98306,98557,98558,99063,131073,131578,163842,164093,164094,164599,196609,197114,229378,229629,229630,230135,262145,262650,269909,269976,294914,295165,295166,295671,327681,328186,360449,360954,377154,380660,380662,380694,393217,393722,425985,426490,458753,459258,491521,492026,524289,524794,557057,557562,589825,590330,622593,623098,655361,655866,688129,688634,720897,721402,722387,819200,819202,884736,884738,1015808,1015809,1032011,1048363,1048575,1048576") && 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", "52,1,457,570,578,588,592,597,598,679,683,688,689,952,956,961,962,964,965,1189,1197,1205,1206,1249,1255,1262,32770,32832,32833,33338,65537,66042,98306,98368,98369,98874,131073,131578,163842,163904,163905,164410,196609,197114,215780,229376,229378,229440,229441,257987,262077,262143,262144") == "c021aa8968b233aa2b6a70b77985d8b94d9457c3" || 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", "52,1,457,570,578,588,592,597,598,679,683,688,689,952,956,961,962,964,965,1189,1197,1205,1206,1249,1255,1262,32770,32832,32833,33338,65537,66042,98306,98368,98369,98874,131073,131578,163842,163904,163905,164410,196609,197114,215780,229376,229378,229440,229441,257987,262077,262143,262144") && 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...");
patch_partition("EMMC:/dev/block/bootdevice/by-name/rpm:169092:85f043c9ea092c3dc756111513f028fd1abf7491",
                "EMMC:/dev/block/bootdevice/by-name/rpm:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7",
                package_extract_file("patch/firmware-update/rpm.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/rpm:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7");
patch_partition("EMMC:/dev/block/bootdevice/by-name/devcfg:38076:bfdfa7164c2e6e2b26cbc90d9f6573c9ef4b5b69",
                "EMMC:/dev/block/bootdevice/by-name/devcfg:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8",
                package_extract_file("patch/firmware-update/devcfg.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/devcfg:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8");
patch_partition("EMMC:/dev/block/bootdevice/by-name/aboot:779468:f49ea23c9fd64d6b96dde78e0e0fb1806526b959",
                "EMMC:/dev/block/bootdevice/by-name/aboot:779468:5a350a0177045814bd8603d3f88990443ccff2f3",
                package_extract_file("patch/firmware-update/emmc_appsboot.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/aboot:779468:5a350a0177045814bd8603d3f88990443ccff2f3");
patch_partition("EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:98370aa95d636c4c9923e12ac5cf77553b5dc637",
                "EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:4a62750920a3c40da5ccf547241d61f9cfb55d76",
                package_extract_file("patch/firmware-update/cmnlib64_30.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:4a62750920a3c40da5ccf547241d61f9cfb55d76");
patch_partition("EMMC:/dev/block/bootdevice/by-name/keymaster:319776:2ed23c6a86f2326477ef6d3d8bcf3cb065095ede",
                "EMMC:/dev/block/bootdevice/by-name/keymaster:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3",
                package_extract_file("patch/firmware-update/km4.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/keymaster:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3");
patch_partition("EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:2fa92d5eeaaed73dc4ff43ed1317a621cee89b7f",
                "EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:9e2059ba2811c97e1805cc4dffc59d8e5b53a26d",
                package_extract_file("patch/firmware-update/cmnlib_30.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:9e2059ba2811c97e1805cc4dffc59d8e5b53a26d");
patch_partition("EMMC:/dev/block/bootdevice/by-name/sbl1:409044:305dd964644b0506b915591a6ab3846b9ca02bdb",
                "EMMC:/dev/block/bootdevice/by-name/sbl1:408956:5a6e24babe653ce06588336c825abb0ef114c8fc",
                package_extract_file("patch/firmware-update/sbl1.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/sbl1:408956:5a6e24babe653ce06588336c825abb0ef114c8fc");
patch_partition("EMMC:/dev/block/bootdevice/by-name/tz:1527680:5630fd7afade862a12272b31e0dcff259b753f12",
                "EMMC:/dev/block/bootdevice/by-name/tz:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d",
                package_extract_file("patch/firmware-update/tz.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/tz:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d");
patch_partition("EMMC:/dev/block/bootdevice/by-name/modem:134217728:dd148fe60da3d556d5bdd62f181f2b16b08baa5a",
                "EMMC:/dev/block/bootdevice/by-name/modem:134217728:6619dfa945cd3d293e5a090da4909ff6bdfcb1b2",
                package_extract_file("patch/firmware-update/NON-HLOS.bin.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/modem:134217728:6619dfa945cd3d293e5a090da4909ff6bdfcb1b2");
patch_partition("EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:85f043c9ea092c3dc756111513f028fd1abf7491",
                "EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7",
                package_extract_file("patch/firmware-update/rpm.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7");
patch_partition("EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:bfdfa7164c2e6e2b26cbc90d9f6573c9ef4b5b69",
                "EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8",
                package_extract_file("patch/firmware-update/devcfg.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8");
patch_partition("EMMC:/dev/block/bootdevice/by-name/abootbak:779468:f49ea23c9fd64d6b96dde78e0e0fb1806526b959",
                "EMMC:/dev/block/bootdevice/by-name/abootbak:779468:5a350a0177045814bd8603d3f88990443ccff2f3",
                package_extract_file("patch/firmware-update/emmc_appsboot.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/abootbak:779468:5a350a0177045814bd8603d3f88990443ccff2f3");
patch_partition("EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:2ed23c6a86f2326477ef6d3d8bcf3cb065095ede",
                "EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3",
                package_extract_file("patch/firmware-update/km4.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3");
patch_partition("EMMC:/dev/block/bootdevice/by-name/sbl1bak:409044:305dd964644b0506b915591a6ab3846b9ca02bdb",
                "EMMC:/dev/block/bootdevice/by-name/sbl1bak:408956:5a6e24babe653ce06588336c825abb0ef114c8fc",
                package_extract_file("patch/firmware-update/sbl1.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/sbl1bak:408956:5a6e24babe653ce06588336c825abb0ef114c8fc");
patch_partition("EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:5630fd7afade862a12272b31e0dcff259b753f12",
                "EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d",
                package_extract_file("patch/firmware-update/tz.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d");
ui_print("Patching boot image...");
show_progress(0.100000, 10);
patch_partition("EMMC:/dev/block/bootdevice/by-name/boot:33554432:fdf7b77ac281c0cb509aa21fef411248fbbd7b80",
                "EMMC:/dev/block/bootdevice/by-name/boot:33554432:5c78d913b84b47be9fa2c1b2cd6158a267b91901",
                package_extract_file("boot.img.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/boot:33554432:5c78d913b84b47be9fa2c1b2cd6158a267b91901");

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

ui_print("Patching firmware images...");
patch_partition("EMMC:/dev/block/bootdevice/by-name/rpm:169092:85f043c9ea092c3dc756111513f028fd1abf7491",
                "EMMC:/dev/block/bootdevice/by-name/rpm:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7",
                package_extract_file("patch/firmware-update/rpm.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/rpm:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7");
patch_partition("EMMC:/dev/block/bootdevice/by-name/devcfg:38076:bfdfa7164c2e6e2b26cbc90d9f6573c9ef4b5b69",
                "EMMC:/dev/block/bootdevice/by-name/devcfg:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8",
                package_extract_file("patch/firmware-update/devcfg.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/devcfg:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8");
patch_partition("EMMC:/dev/block/bootdevice/by-name/aboot:779468:f49ea23c9fd64d6b96dde78e0e0fb1806526b959",
                "EMMC:/dev/block/bootdevice/by-name/aboot:779468:5a350a0177045814bd8603d3f88990443ccff2f3",
                package_extract_file("patch/firmware-update/emmc_appsboot.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/aboot:779468:5a350a0177045814bd8603d3f88990443ccff2f3");
patch_partition("EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:98370aa95d636c4c9923e12ac5cf77553b5dc637",
                "EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:4a62750920a3c40da5ccf547241d61f9cfb55d76",
                package_extract_file("patch/firmware-update/cmnlib64_30.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/cmnlib64:265016:4a62750920a3c40da5ccf547241d61f9cfb55d76");
patch_partition("EMMC:/dev/block/bootdevice/by-name/keymaster:319776:2ed23c6a86f2326477ef6d3d8bcf3cb065095ede",
                "EMMC:/dev/block/bootdevice/by-name/keymaster:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3",
                package_extract_file("patch/firmware-update/km4.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/keymaster:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3");
patch_partition("EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:2fa92d5eeaaed73dc4ff43ed1317a621cee89b7f",
                "EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:9e2059ba2811c97e1805cc4dffc59d8e5b53a26d",
                package_extract_file("patch/firmware-update/cmnlib_30.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/cmnlib:205672:9e2059ba2811c97e1805cc4dffc59d8e5b53a26d");
patch_partition("EMMC:/dev/block/bootdevice/by-name/sbl1:409044:305dd964644b0506b915591a6ab3846b9ca02bdb",
                "EMMC:/dev/block/bootdevice/by-name/sbl1:408956:5a6e24babe653ce06588336c825abb0ef114c8fc",
                package_extract_file("patch/firmware-update/sbl1.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/sbl1:408956:5a6e24babe653ce06588336c825abb0ef114c8fc");
patch_partition("EMMC:/dev/block/bootdevice/by-name/tz:1527680:5630fd7afade862a12272b31e0dcff259b753f12",
                "EMMC:/dev/block/bootdevice/by-name/tz:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d",
                package_extract_file("patch/firmware-update/tz.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/tz:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d");
patch_partition("EMMC:/dev/block/bootdevice/by-name/modem:134217728:dd148fe60da3d556d5bdd62f181f2b16b08baa5a",
                "EMMC:/dev/block/bootdevice/by-name/modem:134217728:6619dfa945cd3d293e5a090da4909ff6bdfcb1b2",
                package_extract_file("patch/firmware-update/NON-HLOS.bin.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/modem:134217728:6619dfa945cd3d293e5a090da4909ff6bdfcb1b2");
patch_partition("EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:85f043c9ea092c3dc756111513f028fd1abf7491",
                "EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7",
                package_extract_file("patch/firmware-update/rpm.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/rpmbak:169092:c999fbaff3aa2c42e3f2a2417c149b5b76b7f4a7");
patch_partition("EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:bfdfa7164c2e6e2b26cbc90d9f6573c9ef4b5b69",
                "EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8",
                package_extract_file("patch/firmware-update/devcfg.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/devcfgbak:38076:4d85a5b90e7ce6c6cf801a46a6ca958cfe4180b8");
patch_partition("EMMC:/dev/block/bootdevice/by-name/abootbak:779468:f49ea23c9fd64d6b96dde78e0e0fb1806526b959",
                "EMMC:/dev/block/bootdevice/by-name/abootbak:779468:5a350a0177045814bd8603d3f88990443ccff2f3",
                package_extract_file("patch/firmware-update/emmc_appsboot.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/abootbak:779468:5a350a0177045814bd8603d3f88990443ccff2f3");
patch_partition("EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:2ed23c6a86f2326477ef6d3d8bcf3cb065095ede",
                "EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3",
                package_extract_file("patch/firmware-update/km4.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/keymasterbak:319776:e51f9548bdb0385d42a8c1a6f4b6faea8faa1cb3");
patch_partition("EMMC:/dev/block/bootdevice/by-name/sbl1bak:409044:305dd964644b0506b915591a6ab3846b9ca02bdb",
                "EMMC:/dev/block/bootdevice/by-name/sbl1bak:408956:5a6e24babe653ce06588336c825abb0ef114c8fc",
                package_extract_file("patch/firmware-update/sbl1.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/sbl1bak:408956:5a6e24babe653ce06588336c825abb0ef114c8fc");
patch_partition("EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:5630fd7afade862a12272b31e0dcff259b753f12",
                "EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d",
                package_extract_file("patch/firmware-update/tz.mbn.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/tzbak:1527680:2edb6a88b9fb6bfc3de56dd57a4eaba553c17f4d");
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.");
show_progress(0.100000, 2);

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

ui_print("Patching vbmeta dtbo logo binimages...");
package_extract_file("firmware-update/splash.img", "/dev/block/bootdevice/by-name/splash");
patch_partition("EMMC:/dev/block/bootdevice/by-name/dtbo:8388608:9fc2072b5ddef635766d2cd6f7adeae8cd3038bb",
                "EMMC:/dev/block/bootdevice/by-name/dtbo:8388608:22b6fffb8dfe8b708474ab26fc13dd37ac48e4e5",
                package_extract_file("patch/firmware-update/dtbo.img.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/dtbo:8388608:22b6fffb8dfe8b708474ab26fc13dd37ac48e4e5");
patch_partition("EMMC:/dev/block/bootdevice/by-name/vbmeta:4096:aa2429c6ecf74efb3093521f5f27250e32aab2c6",
                "EMMC:/dev/block/bootdevice/by-name/vbmeta:4096:235c3a4448a17189086360d5a948722d8963074e",
                package_extract_file("patch/firmware-update/vbmeta.img.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/vbmeta:4096:235c3a4448a17189086360d5a948722d8963074e");
