function setXPAAssets(
        address XPAAssets_
    )
        public
        onlyOperator
    {
        require(
            XPAAssets_ != address(0)
        );
        if(
            XPAAssets_ == XPAAssets &&
            candidateXPAAssets != address(0)
        ) {
            emit eCancelNominatingXPAAssets(candidateXPAAssets);
            candidateXPAAssets = address(0);
            candidateTillXPAAssets = 0;
        } else if(
            XPAAssets == address(0)
        ) {
            
            emit eChangeXPAAssets(address(0), XPAAssets_);
            XPAAssets = XPAAssets_;
        } else if(
            XPAAssets_ != candidateXPAAssets &&
            candidateTillXPAAssets + 86400 * 7 < block.timestamp
        ) {
            
            emit eNominatingXPAAssets(XPAAssets_);
            candidateXPAAssets = XPAAssets_;
            candidateTillXPAAssets = block.timestamp + 86400 * 7;
        } else if(
            XPAAssets_ == candidateXPAAssets &&
            candidateTillXPAAssets < block.timestamp
        ) {
            
            emit eChangeXPAAssets(XPAAssets, candidateXPAAssets);
            dismissTokenOperator(XPAAssets);
            assignTokenOperator(candidateXPAAssets);
            XPAAssets = candidateXPAAssets;
            candidateXPAAssets = address(0);
        }
    }