cherrypicks 3a6c9e3bb982b1cad8cfbcac2b1c906ddac1e7b6 4358b8db795c197c03423b65f1c21e4998e18877 4ffdc99c5fee8e8f62cddd4f815b132c06c83711 df40782b62f30f41f39aa3717d10428d29753dcc fbf7fe1b01f5271375919d65d20cc0e2fa9c09e8 f7ce57e5b2880a42fe5238235b4d55a8204a0e52 8ca546ec883191bdbd2825883eca323a68cfea56 8b98125ad31d5430e845eaf6a8cce2f9eeddd3df d421602c2475c6842cbef757bb647d8f19485e9d a361781e084c552518a3a90277a1455071aa0774