Prelims
a) R1C12 = {17/26/35}, no 4,8,9
b) R2C45 = {39/48/57}, no 1,2,6
c) R4C78 = {79}
d) R45C9 = {29/38/47/56}, no 1
e) R56C1 = {17/26/35}, no 4,8,9
f) R67C2 = {13}
g) R78C5 = {29/38/47/56}, no 1
h) R8C23 = {18/27/36/45}, no 9
i) R8C67 = {15/24}
j) R9C23 = {29/38/47/56}, no 1
k) R9C45 = {29/38/47/56}, no 1
l) R9C67 = {19/28/37/46}, no 5
m) 11(3) cage at R3C4 = {128/137/146/236/245}, no 9
n) 22(3) cage at R7C1 = {589/679}
o) 11(3) cage at R8C8 = {128/137/146/236/245}, no 9
p) 12(4) cage at R5C8 = {1236/1245}, no 7,8,9
q) 38(8) cage at R5C5 = {12345689}, no 7
1. 45 rule on N6 1 innie R5C7 = 6, clean-up: no 5 in R45C9, no 2 in R6C1, no 4 in R9C6
2. Naked pair {79} in R4C78, locked for R4 and N6, clean-up: no 2,4 in R45C9
3. Naked pair {38} in R45C9, locked for C9 and N6
4. 45 rule on N7 2 innies R7C23 = 3 = [12], R6C2 = 3, clean-up: no 5,7 in R1C1, no 5 in R56C1, no 7,8 in R8C2, no 6,7,8 in R8C3, no 9 in R8C5, no 9 in R9C2, no 8,9 in R9C3
5. R9C23 = [47/74/83] (cannot be {56} which clashes with 22(3) cage at R7C1), no 5,6
6. R6C1 = 7 (hidden single in R6), R5C1 = 1, clean-up: no 7 in R1C2, no 6 in 22(3) cage at R7C1
7. Naked triple {589} in 22(3) cage at R7C1, locked for C1 and N7, clean-up: no 4 in R8C23, no 3 in R9C3
8. R8C23 = [63], clean-up: no 2 in R1C1, no 5,8 in R7C5
9. Naked pair {47} in R9C23, locked for R9, clean-up: no 3,6 in R9C6, no 3 in R9C7
10. 14(3) cage at R7C3 contains 2 = {239/248/257}, no 1,6, no 9 in R7C4
10a. 1 in N8 only in R89C6, locked for C6
11. 45 rule on N78 3 remaining innies R789C6 = 11
11a. Min R78C6 = 4 -> no 8,9 in R9C6, clean-up: no 1,2 in R9C7
11b. R789C6 = 11 contains 1 = {128/146} (cannot be {137} because 3,7 only in R7C6) -> R7C6 = {68}, no 5 in R8C6, clean-up: no 1 in R8C7
12. 1 in 12(4) cage at R5C8 only in R6C789, locked for R6
13. R4C5= 1 (only remaining place in 38(8) cage at R4C5)
14. 3 in 38(8) cage at R4C5 only in R5C45, locked for R5 and N5 -> R45C9 = [38]
14a. 9 in R6 only in R6C3456, locked for 38(8) cage at R4C5, no 9 in R5C345
14b. 2 in 38(8) cage at R4C5 only in R5C56 + R6C456, locked for N5
15. R5C6 = 7, R5C2 = 9 (hidden singles in R5)
16. 45 rule on R9 1 innie R9C1 = 1 outie R8C8 + 2 -> R8C8 = 7, R9C1 = 9, R4C78 = [79], R9C7 = 8, R9C6 = 2
16a. R8C8 = 7 -> R9C89 = 4 = [31]
16b. Naked pair {56} in R9C45, locked for N8 -> R7C6 = 8, R8C5 = 4, R7C5 = 7, R78C1 = [58], R78C4 = [39], R8C6 = 1, R8C7 = 5, R8C9 = 2
16c. Clean-up: no 5,8 in R2C4, no 3,9 in R2C5
17. R5C5 = 3 (hidden single in R5)
18. 17(3) cage at R2C1 = {278/458} (cannot be {368} because 3,6 only in R2C1, cannot be {467} which clashes with R9C2), no 3,6, 8 locked for C2 and N1
18a. R2C1 = {24} -> no 2,4 in R23C2
18b. 5 of {458} must be in R3C2 (R2C12 cannot be [45] which clashes with R2C45), no 5 in R2C2
18c. Killer pair 2,5 in R1C2 and 17(3) cage, locked for N1
18d. Killer pair 7,8 in R2C2 and R2C45, locked for R2
18e. 5 in N1 only in R13C2, locked for C2
19. 11(3) cage at R3C4 = {128/146/245}, no 7
19a. 8 of {128} must be in R4C4 -> no 8 in R3C45
19b. 6 of {146} must be in R3C5 -> no 6 in R34C4
19c. {245} can only be [425] (cannot be [254,524] which clash with R2C45, combo blocker) -> no 2,5 in R3C4, no 5 in R3C5
20. 16(4) cage at R2C7 = {1249/1456/2356}
20a. 9 of {1249} must be in R3C6 -> no 9 in R23C7, no 3,4 in R3C6
20b. 4,9 of {1249}must be in R34C6, 5,6 of {1456/2356} must be in R34C6 -> no 3,4 in R3C6
21. 11(3) cage at R3C4 (step 19) = {128/146/245}
21a. Consider permutations for R2C45 = [48/75]
R2C45 = [48] => 11(3) cage = {128}
or R2C45 = [75] => R9C5 = [56] => 11(3) cage = {128}
-> 11(3) cage = {128} -> R3C45 = [12], R4C4 = 8
22. R6C3 = 8 (hidden single in R6)
22a. 6 in N4 only in R4C13, locked for R4
23. 16(4) cage at R2C7 (step 20) = {1456/2356} (cannot be {1249} because 1,2 only in R2C7) -> R3C6 = 6, R4C6 = 5
23a. 1,2 only in R2C7 -> R2C7 = {12}
23b. Naked pair {34} in R3C17, locked for R3
23c. R5C3 = 5 (hidden single in N4)
24. 45 rule on N1 4 innies R12C3 + R3C13 = 20 contains 1,9 = {1379/1469}
24a. R3C1 = {34} -> no 4 in R12C3
24b. 4 in N1 only in R23C1, locked for C1
25. R23C7 = [14] (cannot be [23] which is blocked by R23C1 = [24/43], not sure what sort of blocker this is), R6C7 = 2
and the rest is naked singles.