Refactor suggested by @lurch
diff --git a/main.cpp b/main.cpp
index f43031b..84aa1a8 100644
--- a/main.cpp
+++ b/main.cpp
@@ -6597,21 +6597,21 @@
         }
 
         bool tmp_bool;
-        if(p.contains("no_reboot_on_uf2_download")) {
-            if (get_json_bool(p["no_reboot_on_uf2_download"], tmp_bool)) {new_p.flags |= (tmp_bool ? PICOBIN_PARTITION_FLAGS_UF2_DOWNLOAD_NO_REBOOT_BITS : 0);}
-            else {fail(ERROR_INCOMPATIBLE, "Partition %d no_reboot_on_uf2_download value is not a valid boolean\n", pt.partitions.size());}
-        }
-        if(p.contains("ab_non_bootable_owner_affinity")) {
-            if (get_json_bool(p["ab_non_bootable_owner_affinity"], tmp_bool)) {new_p.flags |= (tmp_bool ? PICOBIN_PARTITION_FLAGS_UF2_DOWNLOAD_AB_NON_BOOTABLE_OWNER_AFFINITY : 0);}
-            else {fail(ERROR_INCOMPATIBLE, "Partition %d ab_non_bootable_owner_affinity value is not a valid boolean\n", pt.partitions.size());}
-        }
-        if(p.contains("ignored_during_riscv_boot")) {
-            if (get_json_bool(p["ignored_during_riscv_boot"], tmp_bool)) {new_p.flags |= (tmp_bool ? PICOBIN_PARTITION_FLAGS_IGNORED_DURING_RISCV_BOOT_BITS : 0);}
-            else {fail(ERROR_INCOMPATIBLE, "Partition %d ignored_during_riscv_boot value is not a valid boolean\n", pt.partitions.size());}
-        }
-        if(p.contains("ignored_during_arm_boot")) {
-            if (get_json_bool(p["ignored_during_arm_boot"], tmp_bool)) {new_p.flags |= (tmp_bool ? PICOBIN_PARTITION_FLAGS_IGNORED_DURING_ARM_BOOT_BITS : 0);}
-            else {fail(ERROR_INCOMPATIBLE, "Partition %d ignored_during_arm_boot value is not a valid boolean\n", pt.partitions.size());}
+        for (const auto& pair : std::vector<std::pair<std::string, uint32_t>>{
+            {"no_reboot_on_uf2_download", PICOBIN_PARTITION_FLAGS_UF2_DOWNLOAD_NO_REBOOT_BITS},
+            {"ab_non_bootable_owner_affinity", PICOBIN_PARTITION_FLAGS_UF2_DOWNLOAD_AB_NON_BOOTABLE_OWNER_AFFINITY},
+            {"ignored_during_riscv_boot", PICOBIN_PARTITION_FLAGS_IGNORED_DURING_RISCV_BOOT_BITS},
+            {"ignored_during_arm_boot", PICOBIN_PARTITION_FLAGS_IGNORED_DURING_ARM_BOOT_BITS},
+        }) {
+            const std::string json_flag = pair.first;
+            const uint32_t FLAG_BITS = pair.second;
+            if(p.contains(json_flag)) {  
+                if (get_json_bool(p[json_flag], tmp_bool)) {  
+                    new_p.flags |= (tmp_bool ? FLAG_BITS : 0);  
+                } else {  
+                    fail(ERROR_INCOMPATIBLE, "Partition %d %s value is not a valid boolean\n", pt.partitions.size(), json_flag.c_str());  
+                }  
+            }  
         }
         pt.partitions.push_back(new_p);
     }