<blocksapp="Snap! 4.0, http://snap.berkeley.edu"version="1"><block-definitions="map %'function' over %'lists'"type="reporter"category="lists"><inputs><inputtype="%repRing"></input><inputtype="%mult%l"></input></inputs><script><blocks="doWarp"><script><blocks="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><blocks="doSetVar"><l>mapone</l><blocks="reifyScript"><script><blocks="doIf"><custom-blocks="empty? %l"><blockvar="data"/></custom-block><script><blocks="doReport"><blocks="reportNewList"><list></list></block></block></script></block><blocks="doReport"><blocks="reportCONS"><blocks="evaluate"><blockvar="function"/><list><blocks="reportListItem"><l>1</l><blockvar="data"/></block></list></block><blocks="evaluate"><blockvar="mapone"/><list><blocks="reportCDR"><blockvar="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><blocks="doSetVar"><l>mapmany</l><blocks="reifyScript"><script><blocks="doIf"><custom-blocks="empty? %l"><blocks="reportListItem"><l>1</l><blockvar="data lists"/></block></custom-block><script><blocks="doReport"><blocks="reportNewList"><list></list></block></block></script></block><blocks="doReport"><blocks="reportCONS"><blocks="evaluate"><blockvar="function"/><custom-blocks="map %repRing over %mult%l"><blocks="reifyReporter"><autolambda><blocks="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><blockvar="data lists"/></list></custom-block></block><blocks="evaluate"><blockvar="mapmany"/><list><custom-blocks="map %repRing over %mult%l"><blocks="reifyReporter"><autolambda><blocks="reportCDR"><l/></block></autolambda><list></list></block><list><blockvar="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><blocks="doIfElse"><custom-blocks="empty? %l"><blocks="reportCDR"><blockvar="lists"/></block></custom-block><script><blocks="doReport"><blocks="evaluate"><blockvar="mapone"/><list><blocks="reportListItem"><l>1</l><blockvar="lists"/></block></list></block></block></script><script><blocks="doReport"><blocks="evaluate"><blockvar="mapmany"/><list><blockvar="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definitions="empty? %'data'"type="predicate"category="lists"><inputs><inputtype="%l"></input></inputs><script><blocks="doReport"><blocks="reportEquals"><blockvar="data"/><blocks="reportNewList"><list></list></block></block></block></script></block-definition><block-definitions="keep items such that %'pred' from %'data'"type="reporter"category="lists"><inputs><inputtype="%predRing"></input><inputtype="%l"></input></inputs><script><blocks="doWarp"><script><blocks="doIf"><custom-blocks="empty? %l"><blockvar="data"/></custom-block><script><blocks="doReport"><blocks="reportNewList"><list></list></block></block></script></block><blocks="doIfElse"><blocks="evaluate"><blockvar="pred"/><list><blocks="reportListItem"><l>1</l><blockvar="data"/></block></list></block><script><blocks="doReport"><blocks="reportCONS"><blocks="reportListItem"><l>1</l><blockvar="data"/></block><custom-blocks="keep items such that %predRing from %l"><blockvar="pred"/><blocks="reportCDR"><blockvar="data"/></block></custom-block></block></block></script><script><blocks="doReport"><custom-blocks="keep items such that %predRing from %l"><blockvar="pred"/><blocks="reportCDR"><blockvar="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definitions="combine with %'function' items of %'data'"type="reporter"category="lists"><inputs><inputtype="%repRing"></input><inputtype="%l"></input></inputs><script><blocks="doWarp"><script><blocks="doIf"><custom-blocks="empty? %l"><blocks="reportCDR"><blockvar="data"/></block></custom-block><script><blocks="doReport"><blocks="reportListItem"><l>1</l><blockvar="data"/></block></