(cherry picked from commit 8f6e14399a3e77e1bdcc5034f7601e9f62163dea) (cherry picked from commit 376a2439db9cd55ed1f2965cd876b811109990ba) (cherry picked from commit 05a570a1981597ab8d2615ed4752e63f0a21b32b)
(cherry picked from commit 8f6e14399a3e77e1bdcc5034f7601e9f62163dea) (cherry picked from commit 376a2439db9cd55ed1f2965cd876b811109990ba) (cherry picked from commit 05a570a1981597ab8d2615ed4752e63f0a21b32b)