contract Lockable {
    uint public creationTime;
    bool public lock;
    address public owner;

    mapping( address => bool ) public lockaddress;

    event Locked(address lockaddress,bool status);
    event Unlocked(address unlockedaddress, bool status);

    constructor() public {
        creationTime = now;    
        owner = msg.sender;
    }

    // This modifier check whether the contract should be in a locked
    // or unlocked state, then acts and updates accordingly if
    // necessary
    modifier checkLock {
        if (lockaddress[msg.sender]) {
           revert();
        }
        //require(!lockaddress[msg.sender]);
        //assert(!lockaddress[msg.sender]);
        _;
    }

    modifier isOwner {
        require(owner == msg.sender);
        _;
    }

   

    // Lock Address
    function lockAddress(address target)
    external
    isOwner
    {
        require(owner != target);
        lockaddress[target] = true;
        emit Locked(target, true);
    }

    // UnLock Address
    function unlockAddress(address target)
    external
    isOwner
    {
        lockaddress[target] = false;
        emit Unlocked(target, false);
    }
}
// ----------------------------------------------------------------------------
// 'KEYSTONECOIN' token contract
//
// Deployed to : TBD
// Symbol      : KSC
// Name        : KEYSTONECOIN
// Total supply: 20000000000
// Decimals    : 18
//
// THANKS.
//
// (c) by KEYSTONECOIN / NOV 2019. COPYRIGHT.
// ----------------------------------------------------------------------------
function unlockAddress(address target)
external
isOwner
{
    lockaddress[target] = false;
    emit Unlocked(target, false);
}

// UnLock Address