I think this `if (!lines)` block deserves a comment.  This confused me when I was looking at previously because I did not understand why we `push(null)` here.  Later I realized its because we need the number of entries in `parsedCards` to match the number of lines in order to detect our end of processing condition.