(Also, renamed aggregate "member" to "constituent", since "member" is rather vague.)
HN3V252LIH47SV655UM22DJUWEXVFAT265A7AGKLG6W73E3FE3ZAC M6WGSGNMB53OI77MZKW4BRFFX3YNARSBKZI37RIOJY5FJKWIRTJAC JJHVQGELU4HADD7VGKJMIXFK4WU6PSLPWTRQV365LO5OO7X66J6AC ODNCGFQ5FPKFI624BVMLW7PJ2EFJOR3TY66OCZM42UNNTWBCF2TQC PMNWRTGJ4GVSMSSAWSUD57B26PCRAHMZIQ5SIWJIK7A74ENKEQLAC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC 2GUAKGTBTNFFER343SQWSLFYIXXHJLDSGH5JHF7QMC3AVZB7Q3TQC K22TMPH534XFKE6MWYRZSOCRWB7MCBKTMUBIBDF36FJR5DF5UE3AC CAFO4ATEEGH75AMJ2CAE2FI6IUXAOY4TTJWIQHZFKKITUJGXXXTAC 3PNG7NIBQQURUUPRVQXYL342OT7JUUYOMY2JJNP6YDX7SYJDZMYAC Z6MDQIGODVE7RXX5U5D64EEC2ZDEZ36Z4ZMPFYIHWBG42IXUDYFQC <td>[% INCLUDE renderStatus build=build icon=0 %]</td>
<td>[% INCLUDE renderStatus build=build icon=0 %][% IF isAggregate;nrMembers = 0;nrFinished = 0;nrFailedMembers = 0;FOREACH b IN build.members_;nrMembers = nrMembers + 1;IF b.finished; nrFinished = nrFinished + 1; END;IF b.finished && b.buildstatus != 0; nrFailedMembers = nrFailedMembers + 1; END;END;%];[%+ IF nrFinished == 0 && nrFailedMembers == 0 %]all [% nrMembers %] constituent builds succeeded[% ELSE %][% nrFailedMembers %] out of [% nrMembers %] constituent builds failed[% IF nrFinished < nrMembers %]([% nrMembers - nrFinished %] still pending)[% END %][% END %][% END %]</td>