\begin{tikzpicture}
	\input{src/tikz/alsk}

	%{{{ GRASP "
	% Nodes
	\matrix[row sep=3mm, column sep=-1mm] {
		& \node[alsk/scheme/split] (split) {}; \\
		\\
		\node[alsk/scheme/task] (ch0) {CH}; & \node[alsk/label] (chi) {\bf\scriptsize\dots}; &
		\node[alsk/scheme/task] (chn) {CH}; \\
		\node[alsk/scheme/task] (ls0) {LS}; & \node[alsk/label] (lsi) {\bf\scriptsize\dots}; &
		\node[alsk/scheme/task] (lsn) {LS}; \\
		\\
		& \node[alsk/scheme/join] (merge) {}; \\
		& \node[alsk/scheme/task] (select) {S}; \\
	};

	\node[above=3mm of split] (entry) {};
	\node[below=3mm of select] (return) {};

	% Frames
	\node[alsk/scheme/frame=colStruct,fit margins={top=1.5mm,bottom=1.5mm},
	fit=(ch0)(ls0)] (serial0) {};
	\node[alsk/scheme/frame=colStruct,fit margins={top=1.5mm,bottom=1.5mm},
	fit=(chn)(lsn)] (serialn) {};

	\node[alsk/scheme/frame=colStruct,fit margins={top=1.5mm,bottom=1.5mm},
	fit=(split)(select)(serial0)(serialn)] (grasp) {};

	% Links
	\begin{scope}[alsk/scheme/link]
		\draw[only on=<2>{ultra thick,colLinkIn}] (entry) -- (split);

		\draw[only on=<3>{ultra thick,colLinkIn}] (split.210) -- (serial0.north);
		\draw[only on=<3>{ultra thick,colLinkIn}] (split.330) -- (serialn.north);

		\draw[only on=<4>{ultra thick,colLinkIn}] (serial0.north) -- (ch0);
		\draw[only on=<4>{ultra thick,colLinkIn}] (serialn.north) -- (chn);

		\draw[only on=<5>{ultra thick,colLinkOut!50!colLinkIn}] (ch0) -- (ls0);
		\draw[only on=<5>{ultra thick,colLinkOut!50!colLinkIn}] (chn) -- (lsn);

		\draw[only on=<6>{ultra thick,colLinkOut}] (ls0) -- (serial0.south);
		\draw[only on=<6>{ultra thick,colLinkOut}] (lsn) -- (serialn.south);

		\draw[only on=<7>{ultra thick,colLinkOut}] (serial0.south) -- (merge.150);
		\draw[only on=<7>{ultra thick,colLinkOut}] (serialn.south) -- (merge.30);

		\draw[only on=<7>{ultra thick,colLinkIn}] (merge) -- (select);

		\draw[only on=<{2,8}>{ultra thick,colLinkOut}] (select) -- (return);
	\end{scope}
	%}}}
\end{tikzpicture}
