contract Pausable {
  event Paused(address account);
  event Unpaused(address account);

  bool private _paused;
  address public pauser;

  constructor () internal {
    _paused = false;
    pauser = msg.sender;
  }

  /**
    * @return true if the contract is paused, false otherwise.
    */
  function paused() public view returns (bool) {
    return _paused;
  }

  /**
    * @dev Modifier to make a function callable only by pauser.
    */
  modifier onlyPauser() {
    require(msg.sender == pauser);
    _;
  }

  /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
  modifier whenNotPaused() {
    require(!_paused);
    _;
  }


  /**
    * @dev called by the owner to pause, triggers stopped state
    */
  function pause() public onlyPauser {
    require(!_paused);
    _paused = true;
    emit Paused(msg.sender);
  }

  /**
    * @dev called by the owner to unpause, returns to normal state
    */
  function unpause() public onlyPauser {
    require(_paused);
    _paused = false;
    emit Unpaused(msg.sender);
  }
}
/**
 * @title Pausable
 * @author Prashant Prabhakar Singh
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
function unpause() public onlyPauser {
    require(_paused);
    _paused = false;
    emit Unpaused(msg.sender);
  }
/**
 * @dev called by the owner to unpause, returns to normal state
 */