Upstream merge bdd1a73eaa0978ca33722a38f707c7c1599773fa..ede7dad318318fb984449e1e7f3aacc9220b3a88