        /* the first run: the sheet, the two cards it offers, and the state
           it read out of the config — "<folder>:<account>:<flag>".
           setupWrites is the number of times the store has stamped
           setup_done, and a PREVIEW must leave it where it found it: that
           is the whole proof that the door in You is not a door onto Kyle's
           own config, and the phone walk asserts it on his phone. */
        setupUp: !!document.querySelector('.halfsheet.up .setup'),
        setupCards: [].map.call(document.querySelectorAll('.halfsheet.up .setup .sheet-sec'), function (s) { return s.textContent.trim(); }).join('|'),
        setupState: (function () { try { return __ss.setupState(); } catch (e) { return ''; } })(),
        setupWrites: (function () { try { return __ss.setup.writes; } catch (e) { return -1; } })(),
        /* the note the blocked screen carries, and the rows it offers: a
           row goes away because the config changed, not because a flag was
           flipped, which is why the count is the thing worth reading */
        setupNotes: document.querySelectorAll('.screen .setup-note').length,
        setupRows: document.querySelectorAll('.screen .setup-note .row').length,
        setupNoteText: [].map.call(document.querySelectorAll('.screen .setup-note .row .t'), function (t) { return t.textContent.trim(); }).join('|'),
        signIn: ((document.querySelector('.signin .signin-t') || {}).textContent || '').trim(),
