synced from Hasee PC, pls refer to the comment of github