getprop("ro.product.device") == "surya" || abort("E3004: This package is for \"surya\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: POCO/surya_eea/surya:10/QKQ1.200512.002/V12.0.6.0.QJGEUXM:user/release-keys");
ui_print("Target: POCO/surya_eea/surya:10/QKQ1.200512.002/V12.0.7.0.QJGEUXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "POCO/surya_eea/surya:10/QKQ1.200512.002/V12.0.6.0.QJGEUXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "POCO/surya_eea/surya:10/QKQ1.200512.002/V12.0.7.0.QJGEUXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of POCO/surya_eea/surya:10/QKQ1.200512.002/V12.0.6.0.QJGEUXM:user/release-keys or POCO/surya_eea/surya:10/QKQ1.200512.002/V12.0.7.0.QJGEUXM: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:134217728:a1c124ec219b8601775c4c5e92726e2fc8d21246",
                      "EMMC:/dev/block/bootdevice/by-name/boot:134217728:ad89d9177f27a81d7480ce886d5cd471a9d970ce") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:a1c124ec219b8601775c4c5e92726e2fc8d21246\" or \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:ad89d9177f27a81d7480ce886d5cd471a9d970ce\" 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(map_partition("system"), "1784,1,195,223,232,285,286,546,550,562,563,582,583,1900,1901,2330,2331,26235,26236,27603,27604,32768,32770,32930,32949,33012,33013,33227,33229,33389,33393,33401,33402,33410,33414,33419,33420,33640,33641,33653,33657,33661,33662,34891,34897,34929,34930,34936,34942,34943,34944,34949,34955,34956,34957,35077,35083,35089,35090,36646,36647,36712,36713,37238,37242,37271,37272,37342,37344,37437,37441,37445,37446,37477,37483,37484,37485,37584,37590,37591,38959,41751,41755,41783,41784,41798,41804,41805,41806,41808,41809,45057,45061,45106,45107,45477,45481,45489,45490,45577,45583,45588,45589,45717,45721,45727,45728,45990,45991,46183,46187,46202,46203,50820,50824,50918,50919,50924,50930,50931,50932,51619,51623,51645,51646,51704,51705,51776,51780,51784,51785,53068,53072,53097,53098,53569,53575,53576,53577,55339,55343,55386,55387,55391,55397,55398,55399,55421,55425,55449,55450,57142,57146,57170,57171,58017,58021,58044,58045,58128,58132,58137,58138,61445,61447,65233,65234,65536,65555,66198,66199,66823,66827,68989,68990,69309,69313,69326,69327,69359,69363,69385,69386,69836,69840,70243,70244,70927,70931,70947,70948,73333,73337,73384,73385,73781,73785,73798,73799,75599,75600,81135,81139,81222,81223,82150,82154,82179,82180,84240,84241,86837,86838,89227,89231,89349,89350,98304,98306,98466,98485,102039,102043,102066,102067,104460,104464,104514,104515,106270,106274,106308,106309,106347,106353,106357,106358,109699,109700,110236,110240,110278,110279,112889,112890,114091,114095,114118,114119,114483,114489,114503,114504,115619,115623,115649,115650,115663,115669,115670,115671,131072,131091,136311,136312,136784,136785,137657,137661,137891,137892,138280,138286,138300,138301,138311,138315,138322,138323,143074,143075,145910,145914,145997,145998,148557,148561,148601,148602,148653,148657,148661,148662,148665,148671,148675,148676,148681,148687,148688,148689,152562,152566,152633,152634,152718,152722,152727,152728,152730,152736,152737,152738,152782,152788,152789,152790,154600,154606,154648,154649,155049,155055,155065,155066,155262,155266,155270,155271,155274,155278,155282,155283,155938,155944,155967,155968,156377,156381,156391,156392,156429,156435,156436,156437,159512,159516,159555,159556,159848,159852,159861,159862,159932,159936,159940,159941,160678,160682,160700,160701,160804,160808,160813,160814,162030,162034,162060,162061,163840,163842,164002,164021,166995,167071,167073,167074,168834,168838,168959,168960,168968,168974,168975,168976,169602,169606,169621,169622,171110,171114,171129,171130,173457,173461,173488,173489,174382,174386,174412,174413,174417,174423,174424,174425,174447,174453,174454,174455,174459,174463,174471,174472,174496,174502,174503,174504,177567,177571,177619,177620,177905,177909,177918,177919,178277,178283,178292,178293,179777,179781,179809,179810,180787,180791,181725,181726,183934,183938,183978,183981,184005,184006,184008,184009,184010,184011,184012,184013,184043,184044,186518,186522,186536,186537,187057,187061,187068,187069,189691,189696,189712,189713,190048,190049,190277,190278,191556,191557,191993,191994,193714,193715,196505,196510,196511,196512,196513,196514,196515,196516,196517,196518,196519,196520,196521,196522,196523,196524,196525,196526,196527,196528,196529,196530,196531,196532,196533,196534,196535,196536,196537,196538,196539,196540,196541,196542,196543,196544,196545,196546,196547,196548,196549,196550,196551,196552,196553,196554,196555,196556,196557,196558,196559,196560,196561,196562,196563,196564,196565,196566,196567,196568,196569,196570,196571,196572,196573,196574,196575,196576,196577,196578,196579,196580,196581,196582,196583,196584,196585,196586,196587,196588,196589,196590,196591,196592,196593,196594,196595,196596,196597,196598,196599,196600,196601,196602,196603,196604,196605,196606,196607,196627,196628,196629,196630,196631,196632,196633,196634,196635,196636,196637,196638,196639,196640,196641,196642,196643,196644,196645,196646,196647,196648,196649,196650,196651,196652,196653,196654,196655,196656,196657,196658,196659,196660,196661,196662,196663,196664,196665,196666,196667,196668,196669,196670,196671,196672,196673,196674,196675,196676,196677,196678,196679,196680,196681,196682,196683,196684,196685,196686,196687,196688,196689,196690,196691,196692,196693,196694,196695,196696,196697,196698,196699,196700,196701,196702,196703,196704,196705,196706,196707,196708,196709,196710,196711,196712,196713,196714,196715,196716,196717,196718,196719,196720,196721,196722,196723,196724,196725,196726,196727,196728,196729,196730,196731,196732,196733,196734,196735,196736,196737,196738,196739,196740,196741,196742,196743,196744,196745,196746,196747,196748,196749,196750,196751,196752,196753,196754,196755,196756,196757,196758,196759,196760,196761,196762,196763,196764,196765,196766,196767,196768,196769,196770,196771,196772,196773,196774,196775,196776,196777,196778,196779,196780,196781,196782,196783,196784,196785,196786,196787,196788,196789,196790,196791,196792,196793,196794,196795,196796,196797,196798,196799,196800,196801,196802,196803,196804,196805,196806,196807,196808,196809,196810,196811,196812,196813,196814,196815,196816,196817,196818,196819,196820,196821,196822,196823,196824,196825,196826,196827,196828,196829,196830,196831,196832,196833,196834,196835,196836,196837,196838,196839,196840,196841,196842,196843,196844,196845,196846,196847,196848,196849,196850,196851,196852,196853,196854,196855,196856,196857,196858,196859,196860,196861,196862,196863,196864,196865,196866,196867,196868,196869,196870,196871,196872,196873,196874,196875,196876,196877,196878,196879,196880,196881,196882,196883,196884,196885,196886,196887,196888,196889,196890,196891,196892,196893,196894,196895,196896,196897,196898,196899,196900,196901,196902,196903,196904,196905,196906,196907,196908,196909,196910,196911,196912,196913,196914,196915,196916,196917,196918,196919,196920,196921,196922,196923,196924,196925,196926,196927,196928,196929,196930,196931,196932,196933,196934,196935,196936,196937,196938,196939,196940,196941,196942,196943,196944,196945,196946,196947,196948,196949,196950,196951,196952,196953,196954,196955,196956,196957,196958,196959,196960,196961,196962,196963,196964,196965,196966,196967,196968,196969,196970,196971,196972,196974,196980,196981,197277,197278,197290,197291,197301,197304,197305,197306,197307,197308,197310,197311,197344,197345,197350,197351,197439,197442,197444,197445,198552,198553,198773,198774,198797,198798,198867,198868,198871,198876,198877,198878,198879,198880,198881,198882,199812,199813,199820,199821,200374,200378,200379,200380,225286,229378,229538,237928,241128,241644,244397,244398,248163,262919,266870,267556,270574,270584,276361,276362,276638,276639,277035,277036,277113,277114,277115,277116,277741,277742,277743,277744,277745,277746,277747,277748,277749,277750,277751,277752,277753,277754,277755,277756,277758,277759,277760,277761,277762,277763,277764,277765,277766,277767,277768,277769,277770,277771,277772,277773,277774,277775,277776,277777,277778,277779,277780,277781,277782,277783,277784,277785,277786,277787,277788,277789,277790,277791,277792,277793,277794,277795,277796,277797,277799,277800,277801,277802,277803,277804,277805,277806,277807,277808,277809,277810,277811,277812,277813,277814,277815,277816,277817,277818,277821,277822,277823,277824,277825,277826,277827,277828,277829,277830,277831,277832,277833,277834,277835,277836,277837,277838,278017,278018,278063,278064,278107,278108,278109,278110,278131,278132,278179,278180,278205,278207,278232,278233,278343,278344,278575,278576,278645,278646,278698,278700,278711,278712,278713,278714,278726,278727,278738,278739,278740,278741,278752,278754,278765,278766,278767,278768,278774,278775,278951,278952,278975,278976,279054,279055,279056,279057,279068,279069,279080,279081,279094,279095,279295,279297,279771,279772,280472,280473,280925,288545,289140,289642,289714,289994,290023,290025,290029,290033,290034,290038,290039,290043,290044,290046,290424,290426,290531,290535,290536,290540,290541,290545,290546,290550,290551,290555,290556,290560,290561,290565,290566,290570,290571,290575,290576,290578,290592,290596,290597,290599,290608,290612,290613,290617,290618,290622,290623,290628,290633,290637,290638,290640,290645,290649,290650,290654,290655,290659,290660,290662,290730,290732,290736,290740,290741,290745,290746,290750,290751,290755,290756,290760,290761,290763,290767,290769,290778,290782,290783,290787,290788,290792,290793,290795,290875,290879,290880,290882,290886,290890,290891,290893,290894,290898,290899,290903,290904,290908,290909,290911,290917,290921,290922,290926,290927,290931,290932,290934,290938,290942,290943,290947,290948,290952,290953,290957,290958,290962,290963,290967,290968,290970,290975,290977,290981,290999,291433,291435,291559,291605,291614,291639,291642,291652,291673,291679,291757,291759,291762,291806,291896,292275,294912,294914,295074,295099,300085,300116,300119,300144,301986,301996,313526,313527,313959,313969,314359,314360,315622,317102,322426,322427,324158,324159,324554,324555,324706,324709,326762,326763,327680,327704,329952,329953,330270,330271,335769,335770,335865,335866,335870,335871,335919,335920,335969,335970,336026,336027,336029,336030,336286,336287,336391,336392,336442,336443,337154,337155,337160,337161,337195,337196,337200,337201,337228,337229,337253,337254,337257,337258,337271,337272,337285,337286,337299,337300,337309,337310,337319,337320,337471,337472,337477,337478,337482,337483,337489,337490,337515,337516,337519,337520,337587,337588,337593,337594,337600,337601,337606,337607,337613,337614,337624,337625,337634,337635,337640,337641,337684,337685,337690,337691,337722,337723,337733,337734,337740,337741,337803,337804,337808,337809,337818,337819,337825,337826,337833,337834,337837,337838,337841,337842,337847,337848,337853,337854,337859,337860,337866,337867,337943,337944,337950,337951,337956,337957,337961,337962,337967,337968,338002,338003,338008,338009,338017,338018,338027,338028,338033,338034,338043,338044,338051,338052,338056,338057,338062,338063,338090,338091,338096,338097,338109,338110,338181,338182,338187,338188,338202,338203,338217,338218,338233,338234,338249,338250,338265,338266,338298,338299,338304,338305,338398,338399,338431,338432,338488,338489,338625,338626,338631,338632,338637,338638,338643,338644,338648,338649,339593,339594,339603,339604,339644,339645,339673,339674,340350,340351,340369,340370,340374,340375,340406,340407,340577,340578,340583,340584,340654,340655,340656,340657,340661,340662,340703,340704,340706,340707,340711,340712,340720,340721,340734,340735,341231,341232,341233,341234,341250,341251,341255,341256,341261,341262,341297,341298,341546,341547,341583,341584,341593,341594,341599,341600,341605,341606,341611,341612,341625,341626,341631,341632,341671,341672,341756,341757,341773,341774,341960,341961,342156,342157,342252,342253,342259,342260,343295,343296,344315,344316,345413,345414,346167,346168,348922,348923,352057,352059,352324,352325,353715,353717,353824,353825,353826,353827,353835,353836,354136,354137,360448,360472,362028,362039,362595,362596,364687,364688,375226,375227,375568,375631,382123,382124,382438,382439,388536,388537,392760,392761,392763,392764,392877,392878,392881,392882,392883,392884,393216,393240,393275,393276,394534,394568,459763,459776,459781,460696,460795,460828,469087,469089,475270,475272,475426,475430,475508,475510,475712,475714,475727,475731,481664,481666,482772,482774,482853,482855,483192,483194,483906,483908,486682,486684,486757,486761,486775,486779,487157,487159,487177,487179,489262,489264,496913,496915,496967,496971,497439,497441,498922,498924,499038,499040,499104,499106,499115,499119,500922,500924,501064,501066,528951,528953,533267,533269,539540,539542,542618,542620,570137,570139,570433,570437,582681,582683,590820,590822,597964,597966,608270,608272,612158,612162,612200,612204,612232,612236,612248,612251,612254,612256,614468,614470,614481,614485,614547,614549,614553,614557,622714,622726,625440,625441,628590,628594,628684,628685,628758,628762,628859,628860,628864,628870,628871,628872,628962,628966,628970,628971,631756,631758,631820,631824,631982,631984,635719,635720,636519,636520,637045,637047,638707,638709,640044,640048,640058,640062,640105,640109,648882,648884,648992,648994,651159,651161,651973,651975,652087,652089,652404,652406,652419,656431,658464,668900,669040,669041") == "2c6d117d556230d945553974c8152fd5c2b4c5f8" || block_image_verify(map_partition("system"), package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat")) then
ui_print("Verified system image...");
else
check_first_block(map_partition("system"));
ifelse (block_image_recover(map_partition("system"), "1784,1,195,223,232,285,286,546,550,562,563,582,583,1900,1901,2330,2331,26235,26236,27603,27604,32768,32770,32930,32949,33012,33013,33227,33229,33389,33393,33401,33402,33410,33414,33419,33420,33640,33641,33653,33657,33661,33662,34891,34897,34929,34930,34936,34942,34943,34944,34949,34955,34956,34957,35077,35083,35089,35090,36646,36647,36712,36713,37238,37242,37271,37272,37342,37344,37437,37441,37445,37446,37477,37483,37484,37485,37584,37590,37591,38959,41751,41755,41783,41784,41798,41804,41805,41806,41808,41809,45057,45061,45106,45107,45477,45481,45489,45490,45577,45583,45588,45589,45717,45721,45727,45728,45990,45991,46183,46187,46202,46203,50820,50824,50918,50919,50924,50930,50931,50932,51619,51623,51645,51646,51704,51705,51776,51780,51784,51785,53068,53072,53097,53098,53569,53575,53576,53577,55339,55343,55386,55387,55391,55397,55398,55399,55421,55425,55449,55450,57142,57146,57170,57171,58017,58021,58044,58045,58128,58132,58137,58138,61445,61447,65233,65234,65536,65555,66198,66199,66823,66827,68989,68990,69309,69313,69326,69327,69359,69363,69385,69386,69836,69840,70243,70244,70927,70931,70947,70948,73333,73337,73384,73385,73781,73785,73798,73799,75599,75600,81135,81139,81222,81223,82150,82154,82179,82180,84240,84241,86837,86838,89227,89231,89349,89350,98304,98306,98466,98485,102039,102043,102066,102067,104460,104464,104514,104515,106270,106274,106308,106309,106347,106353,106357,106358,109699,109700,110236,110240,110278,110279,112889,112890,114091,114095,114118,114119,114483,114489,114503,114504,115619,115623,115649,115650,115663,115669,115670,115671,131072,131091,136311,136312,136784,136785,137657,137661,137891,137892,138280,138286,138300,138301,138311,138315,138322,138323,143074,143075,145910,145914,145997,145998,148557,148561,148601,148602,148653,148657,148661,148662,148665,148671,148675,148676,148681,148687,148688,148689,152562,152566,152633,152634,152718,152722,152727,152728,152730,152736,152737,152738,152782,152788,152789,152790,154600,154606,154648,154649,155049,155055,155065,155066,155262,155266,155270,155271,155274,155278,155282,155283,155938,155944,155967,155968,156377,156381,156391,156392,156429,156435,156436,156437,159512,159516,159555,159556,159848,159852,159861,159862,159932,159936,159940,159941,160678,160682,160700,160701,160804,160808,160813,160814,162030,162034,162060,162061,163840,163842,164002,164021,166995,167071,167073,167074,168834,168838,168959,168960,168968,168974,168975,168976,169602,169606,169621,169622,171110,171114,171129,171130,173457,173461,173488,173489,174382,174386,174412,174413,174417,174423,174424,174425,174447,174453,174454,174455,174459,174463,174471,174472,174496,174502,174503,174504,177567,177571,177619,177620,177905,177909,177918,177919,178277,178283,178292,178293,179777,179781,179809,179810,180787,180791,181725,181726,183934,183938,183978,183981,184005,184006,184008,184009,184010,184011,184012,184013,184043,184044,186518,186522,186536,186537,187057,187061,187068,187069,189691,189696,189712,189713,190048,190049,190277,190278,191556,191557,191993,191994,193714,193715,196505,196510,196511,196512,196513,196514,196515,196516,196517,196518,196519,196520,196521,196522,196523,196524,196525,196526,196527,196528,196529,196530,196531,196532,196533,196534,196535,196536,196537,196538,196539,196540,196541,196542,196543,196544,196545,196546,196547,196548,196549,196550,196551,196552,196553,196554,196555,196556,196557,196558,196559,196560,196561,196562,196563,196564,196565,196566,196567,196568,196569,196570,196571,196572,196573,196574,196575,196576,196577,196578,196579,196580,196581,196582,196583,196584,196585,196586,196587,196588,196589,196590,196591,196592,196593,196594,196595,196596,196597,196598,196599,196600,196601,196602,196603,196604,196605,196606,196607,196627,196628,196629,196630,196631,196632,196633,196634,196635,196636,196637,196638,196639,196640,196641,196642,196643,196644,196645,196646,196647,196648,196649,196650,196651,196652,196653,196654,196655,196656,196657,196658,196659,196660,196661,196662,196663,196664,196665,196666,196667,196668,196669,196670,196671,196672,196673,196674,196675,196676,196677,196678,196679,196680,196681,196682,196683,196684,196685,196686,196687,196688,196689,196690,196691,196692,196693,196694,196695,196696,196697,196698,196699,196700,196701,196702,196703,196704,196705,196706,196707,196708,196709,196710,196711,196712,196713,196714,196715,196716,196717,196718,196719,196720,196721,196722,196723,196724,196725,196726,196727,196728,196729,196730,196731,196732,196733,196734,196735,196736,196737,196738,196739,196740,196741,196742,196743,196744,196745,196746,196747,196748,196749,196750,196751,196752,196753,196754,196755,196756,196757,196758,196759,196760,196761,196762,196763,196764,196765,196766,196767,196768,196769,196770,196771,196772,196773,196774,196775,196776,196777,196778,196779,196780,196781,196782,196783,196784,196785,196786,196787,196788,196789,196790,196791,196792,196793,196794,196795,196796,196797,196798,196799,196800,196801,196802,196803,196804,196805,196806,196807,196808,196809,196810,196811,196812,196813,196814,196815,196816,196817,196818,196819,196820,196821,196822,196823,196824,196825,196826,196827,196828,196829,196830,196831,196832,196833,196834,196835,196836,196837,196838,196839,196840,196841,196842,196843,196844,196845,196846,196847,196848,196849,196850,196851,196852,196853,196854,196855,196856,196857,196858,196859,196860,196861,196862,196863,196864,196865,196866,196867,196868,196869,196870,196871,196872,196873,196874,196875,196876,196877,196878,196879,196880,196881,196882,196883,196884,196885,196886,196887,196888,196889,196890,196891,196892,196893,196894,196895,196896,196897,196898,196899,196900,196901,196902,196903,196904,196905,196906,196907,196908,196909,196910,196911,196912,196913,196914,196915,196916,196917,196918,196919,196920,196921,196922,196923,196924,196925,196926,196927,196928,196929,196930,196931,196932,196933,196934,196935,196936,196937,196938,196939,196940,196941,196942,196943,196944,196945,196946,196947,196948,196949,196950,196951,196952,196953,196954,196955,196956,196957,196958,196959,196960,196961,196962,196963,196964,196965,196966,196967,196968,196969,196970,196971,196972,196974,196980,196981,197277,197278,197290,197291,197301,197304,197305,197306,197307,197308,197310,197311,197344,197345,197350,197351,197439,197442,197444,197445,198552,198553,198773,198774,198797,198798,198867,198868,198871,198876,198877,198878,198879,198880,198881,198882,199812,199813,199820,199821,200374,200378,200379,200380,225286,229378,229538,237928,241128,241644,244397,244398,248163,262919,266870,267556,270574,270584,276361,276362,276638,276639,277035,277036,277113,277114,277115,277116,277741,277742,277743,277744,277745,277746,277747,277748,277749,277750,277751,277752,277753,277754,277755,277756,277758,277759,277760,277761,277762,277763,277764,277765,277766,277767,277768,277769,277770,277771,277772,277773,277774,277775,277776,277777,277778,277779,277780,277781,277782,277783,277784,277785,277786,277787,277788,277789,277790,277791,277792,277793,277794,277795,277796,277797,277799,277800,277801,277802,277803,277804,277805,277806,277807,277808,277809,277810,277811,277812,277813,277814,277815,277816,277817,277818,277821,277822,277823,277824,277825,277826,277827,277828,277829,277830,277831,277832,277833,277834,277835,277836,277837,277838,278017,278018,278063,278064,278107,278108,278109,278110,278131,278132,278179,278180,278205,278207,278232,278233,278343,278344,278575,278576,278645,278646,278698,278700,278711,278712,278713,278714,278726,278727,278738,278739,278740,278741,278752,278754,278765,278766,278767,278768,278774,278775,278951,278952,278975,278976,279054,279055,279056,279057,279068,279069,279080,279081,279094,279095,279295,279297,279771,279772,280472,280473,280925,288545,289140,289642,289714,289994,290023,290025,290029,290033,290034,290038,290039,290043,290044,290046,290424,290426,290531,290535,290536,290540,290541,290545,290546,290550,290551,290555,290556,290560,290561,290565,290566,290570,290571,290575,290576,290578,290592,290596,290597,290599,290608,290612,290613,290617,290618,290622,290623,290628,290633,290637,290638,290640,290645,290649,290650,290654,290655,290659,290660,290662,290730,290732,290736,290740,290741,290745,290746,290750,290751,290755,290756,290760,290761,290763,290767,290769,290778,290782,290783,290787,290788,290792,290793,290795,290875,290879,290880,290882,290886,290890,290891,290893,290894,290898,290899,290903,290904,290908,290909,290911,290917,290921,290922,290926,290927,290931,290932,290934,290938,290942,290943,290947,290948,290952,290953,290957,290958,290962,290963,290967,290968,290970,290975,290977,290981,290999,291433,291435,291559,291605,291614,291639,291642,291652,291673,291679,291757,291759,291762,291806,291896,292275,294912,294914,295074,295099,300085,300116,300119,300144,301986,301996,313526,313527,313959,313969,314359,314360,315622,317102,322426,322427,324158,324159,324554,324555,324706,324709,326762,326763,327680,327704,329952,329953,330270,330271,335769,335770,335865,335866,335870,335871,335919,335920,335969,335970,336026,336027,336029,336030,336286,336287,336391,336392,336442,336443,337154,337155,337160,337161,337195,337196,337200,337201,337228,337229,337253,337254,337257,337258,337271,337272,337285,337286,337299,337300,337309,337310,337319,337320,337471,337472,337477,337478,337482,337483,337489,337490,337515,337516,337519,337520,337587,337588,337593,337594,337600,337601,337606,337607,337613,337614,337624,337625,337634,337635,337640,337641,337684,337685,337690,337691,337722,337723,337733,337734,337740,337741,337803,337804,337808,337809,337818,337819,337825,337826,337833,337834,337837,337838,337841,337842,337847,337848,337853,337854,337859,337860,337866,337867,337943,337944,337950,337951,337956,337957,337961,337962,337967,337968,338002,338003,338008,338009,338017,338018,338027,338028,338033,338034,338043,338044,338051,338052,338056,338057,338062,338063,338090,338091,338096,338097,338109,338110,338181,338182,338187,338188,338202,338203,338217,338218,338233,338234,338249,338250,338265,338266,338298,338299,338304,338305,338398,338399,338431,338432,338488,338489,338625,338626,338631,338632,338637,338638,338643,338644,338648,338649,339593,339594,339603,339604,339644,339645,339673,339674,340350,340351,340369,340370,340374,340375,340406,340407,340577,340578,340583,340584,340654,340655,340656,340657,340661,340662,340703,340704,340706,340707,340711,340712,340720,340721,340734,340735,341231,341232,341233,341234,341250,341251,341255,341256,341261,341262,341297,341298,341546,341547,341583,341584,341593,341594,341599,341600,341605,341606,341611,341612,341625,341626,341631,341632,341671,341672,341756,341757,341773,341774,341960,341961,342156,342157,342252,342253,342259,342260,343295,343296,344315,344316,345413,345414,346167,346168,348922,348923,352057,352059,352324,352325,353715,353717,353824,353825,353826,353827,353835,353836,354136,354137,360448,360472,362028,362039,362595,362596,364687,364688,375226,375227,375568,375631,382123,382124,382438,382439,388536,388537,392760,392761,392763,392764,392877,392878,392881,392882,392883,392884,393216,393240,393275,393276,394534,394568,459763,459776,459781,460696,460795,460828,469087,469089,475270,475272,475426,475430,475508,475510,475712,475714,475727,475731,481664,481666,482772,482774,482853,482855,483192,483194,483906,483908,486682,486684,486757,486761,486775,486779,487157,487159,487177,487179,489262,489264,496913,496915,496967,496971,497439,497441,498922,498924,499038,499040,499104,499106,499115,499119,500922,500924,501064,501066,528951,528953,533267,533269,539540,539542,542618,542620,570137,570139,570433,570437,582681,582683,590820,590822,597964,597966,608270,608272,612158,612162,612200,612204,612232,612236,612248,612251,612254,612256,614468,614470,614481,614485,614547,614549,614553,614557,622714,622726,625440,625441,628590,628594,628684,628685,628758,628762,628859,628860,628864,628870,628871,628872,628962,628966,628970,628971,631756,631758,631820,631824,631982,631984,635719,635720,636519,636520,637045,637047,638707,638709,640044,640048,640058,640062,640105,640109,648882,648884,648992,648994,651159,651161,651973,651975,652087,652089,652404,652406,652419,656431,658464,668900,669040,669041") && block_image_verify(map_partition("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(map_partition("vendor"), "266,1,100,110,114,119,120,201,205,210,211,216,217,480,484,488,489,491,492,494,505,517,521,525,526,529,535,536,537,545,549,553,554,1165,1502,1579,1580,12263,12264,12441,12492,12917,12918,12922,12924,12943,12944,12948,12949,12954,12955,12956,12957,12960,12961,12962,12963,12966,12967,12968,12969,12972,12973,12974,12975,12978,12979,12980,12981,12984,12985,12986,12987,12991,12992,12997,12998,13002,13003,13007,13008,13012,13013,13486,13487,14391,14397,25648,25649,25931,25932,28740,28741,32768,32770,32837,32874,33991,33992,34830,34831,34835,34837,34854,34855,34890,34891,34900,34901,34903,34904,34956,34957,35007,35008,35014,35015,35040,35041,35191,35192,35591,35592,35594,35596,35660,35661,35731,35732,35799,35800,35802,35803,35805,35806,35865,35867,35869,35870,35934,35935,36005,36006,36073,36074,36076,36077,36079,36082,36083,36084,36146,36147,36213,36214,36216,36217,36220,36224,36226,36227,36229,36231,36233,38661,38721,38722,38794,38795,38797,38798,38860,38861,38931,38932,38940,38944,38945,38946,39145,39146,39212,39213,39215,39216,39219,39224,46644,46645,46809,46810,47119,47120,47181,47182,47331,47332,47411,47412,47444,47445,47521,47522,47589,47590,47662,47663,47755,47756,47828,47829,47874,47875,47979,47980,48023,48024,48026,48027,48059,48060,48221,48222,48293,48294,48346,48347,48671,48672,48674,48675,48769,48770,48894,48895,48969,48970,49003,49004,49067,49068,49139,49140,49690,49692,49697,49699,49767,49768,49820,49821,50348,50349,50634,98306,98373,163842,163909,229378,229445,262165,262167,276435,277431,281830,281900,281901") == "a52f7f367a3c36d640536e16b563adefae507aaf" || block_image_verify(map_partition("vendor"), package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat")) then
ui_print("Verified vendor image...");
else
check_first_block(map_partition("vendor"));
ifelse (block_image_recover(map_partition("vendor"), "266,1,100,110,114,119,120,201,205,210,211,216,217,480,484,488,489,491,492,494,505,517,521,525,526,529,535,536,537,545,549,553,554,1165,1502,1579,1580,12263,12264,12441,12492,12917,12918,12922,12924,12943,12944,12948,12949,12954,12955,12956,12957,12960,12961,12962,12963,12966,12967,12968,12969,12972,12973,12974,12975,12978,12979,12980,12981,12984,12985,12986,12987,12991,12992,12997,12998,13002,13003,13007,13008,13012,13013,13486,13487,14391,14397,25648,25649,25931,25932,28740,28741,32768,32770,32837,32874,33991,33992,34830,34831,34835,34837,34854,34855,34890,34891,34900,34901,34903,34904,34956,34957,35007,35008,35014,35015,35040,35041,35191,35192,35591,35592,35594,35596,35660,35661,35731,35732,35799,35800,35802,35803,35805,35806,35865,35867,35869,35870,35934,35935,36005,36006,36073,36074,36076,36077,36079,36082,36083,36084,36146,36147,36213,36214,36216,36217,36220,36224,36226,36227,36229,36231,36233,38661,38721,38722,38794,38795,38797,38798,38860,38861,38931,38932,38940,38944,38945,38946,39145,39146,39212,39213,39215,39216,39219,39224,46644,46645,46809,46810,47119,47120,47181,47182,47331,47332,47411,47412,47444,47445,47521,47522,47589,47590,47662,47663,47755,47756,47828,47829,47874,47875,47979,47980,48023,48024,48026,48027,48059,48060,48221,48222,48293,48294,48346,48347,48671,48672,48674,48675,48769,48770,48894,48895,48969,48970,49003,49004,49067,49068,49139,49140,49690,49692,49697,49699,49767,49768,49820,49821,50348,50349,50634,98306,98373,163842,163909,229378,229445,262165,262167,276435,277431,281830,281900,281901") && block_image_verify(map_partition("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;
if (range_sha1(map_partition("product"), "198,5402,5404,9747,9749,11890,11892,11948,11952,12673,12675,12691,12695,12759,12761,21769,21771,22293,22297,24141,24143,74262,74266,74398,74402,74418,74422,74436,74440,74467,74471,119795,119799,119819,119821,119835,119837,119850,119854,119870,119874,119888,119892,119899,119903,123021,123025,123082,123086,123094,123098,123126,123130,123152,123156,123177,123181,123209,123210,123783,123785,123789,123793,123794,123796,123801,123805,123806,123810,123811,123815,123816,123820,123821,123825,123826,123830,123831,123835,123836,123838,123845,123849,123850,123854,123855,123859,123860,123864,123865,123867,123868,123872,123873,123877,123878,123880,123881,123885,123886,123890,123891,123895,123896,123900,123901,123905,123906,123910,123911,123915,123916,123920,123921,123923,123927,123931,123932,123936,123937,123941,123942,123946,123947,123949,123950,123954,123955,123957,123958,123962,123963,123965,123966,123970,123971,123975,123976,123978,123979,123983,123985,123996,123997,124029,124030,124094,124095,124139,139514,139516,139567,139571,146443,146445,172154,172156,172582,172584,181895,181897,181942,181944,182084,182086,183342,183344,184421,184423,198262,198264,198672,198674,219691,219693,226347,226349,229146,229148,231597,231599,278425,278429,281004,281007,281296,281298,281309,281314,281336,281341,281353,281356,284690,284691,292085,296715,296789,296790") == "200994e439e5bca88eaca7d90775c3149e685152" || block_image_verify(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat")) then
ui_print("Verified product image...");
else
check_first_block(map_partition("product"));
ifelse (block_image_recover(map_partition("product"), "198,5402,5404,9747,9749,11890,11892,11948,11952,12673,12675,12691,12695,12759,12761,21769,21771,22293,22297,24141,24143,74262,74266,74398,74402,74418,74422,74436,74440,74467,74471,119795,119799,119819,119821,119835,119837,119850,119854,119870,119874,119888,119892,119899,119903,123021,123025,123082,123086,123094,123098,123126,123130,123152,123156,123177,123181,123209,123210,123783,123785,123789,123793,123794,123796,123801,123805,123806,123810,123811,123815,123816,123820,123821,123825,123826,123830,123831,123835,123836,123838,123845,123849,123850,123854,123855,123859,123860,123864,123865,123867,123868,123872,123873,123877,123878,123880,123881,123885,123886,123890,123891,123895,123896,123900,123901,123905,123906,123910,123911,123915,123916,123920,123921,123923,123927,123931,123932,123936,123937,123941,123942,123946,123947,123949,123950,123954,123955,123957,123958,123962,123963,123965,123966,123970,123971,123975,123976,123978,123979,123983,123985,123996,123997,124029,124030,124094,124095,124139,139514,139516,139567,139571,146443,146445,172154,172156,172582,172584,181895,181897,181942,181944,182084,182086,183342,183344,184421,184423,198262,198264,198672,198674,219691,219693,226347,226349,229146,229148,231597,231599,278425,278429,281004,281007,281296,281298,281309,281314,281336,281341,281353,281356,284690,284691,292085,296715,296789,296790") && block_image_verify(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat"), ui_print("product recovered successfully."), abort("E2004: product partition fails to recover"));
endif;

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

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

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

ui_print("Patching firmware images...");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
show_progress(0.600000, 600);

# --- Start patching dynamic partitions ---


# Patch partition system

ui_print("Patching system image after verification.");
block_image_update(map_partition("system"), package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");

# Update dynamic partition metadata

assert(update_dynamic_partitions(package_extract_file("dynamic_partitions_op_list")));

# Patch partition product

ui_print("Patching product image after verification.");
block_image_update(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat") ||
  abort("E2001: Failed to update product image.");

# Patch partition vendor

ui_print("Patching vendor image after verification.");
block_image_update(map_partition("vendor"), package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat") ||
  abort("E2001: Failed to update vendor image.");

# --- End patching dynamic partitions ---

show_progress(0.100000, 2);

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

ui_print("Patching vbmeta dtbo logo binimages...");
package_extract_file("firmware-update/vbmeta_system.img", "/dev/block/bootdevice/by-name/vbmeta_system");
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");
