(cherry picked from commit 4cec9975c0e2c2fcca090888dc2c5e149c5be1e9) (cherry picked from commit 3de0bf9a35094f3c2ac216992d861729251b6a3d) (cherry picked from commit c3b2b377f19293797a88f4636f07e2ab8e18c78b)
(cherry picked from commit 4cec9975c0e2c2fcca090888dc2c5e149c5be1e9) (cherry picked from commit 3de0bf9a35094f3c2ac216992d861729251b6a3d) (cherry picked from commit c3b2b377f19293797a88f4636f07e2ab8e18c78b)