function vanity2address(vanity){
	var address = "";
	for (i = 0; i < 38; i+=2)
		address += String.fromCharCode(parseInt(vanity.substr(i,2),16));
	return address;
}

function address2vanity(address){
	var vanity = "";
	for (i = 0; i < 19; i++)
		vanity += address.charCodeAt(i).toString(16);
	return vanity;
}

function blockSigner(blockNumber){
	return eth.getBlock(blockNumber).extraData.substr(2,38);
}


function getSigners(){
	var signers = clique.getSigners();
	var dict = {};
	for (var i = 0; i < signers.length; i++){
		dict[address2vanity(signers[i].substr(2,19))] = true;
	}
	return dict;
}

function lastSeen(){
	var signers = getSigners();
	var last = eth.blockNumber;
	for(var i = 0; i < 720; i++){
		if (Object.keys(signers).length == 0) break;
		var block = last - i;
		var signer = blockSigner(block);
		if (signer in signers){
			console.log(vanity2address(signer)+": "+block);
			delete signers[signer];
		}
	}
	for (signer in signers)
		console.log(vanity2address(signer)+": -1");
}

lastSeen();