(cherry picked from commit 3fe41c65d84843f817a4f9ef8999dbf862db6674) (cherry picked from commit 1176a128d632925749db0a81a719fd8141c3cbb6) (cherry picked from commit c6939e933055cbe08c4d4f0a5d4bac152c953e35)
(cherry picked from commit 3fe41c65d84843f817a4f9ef8999dbf862db6674) (cherry picked from commit 1176a128d632925749db0a81a719fd8141c3cbb6) (cherry picked from commit c6939e933055cbe08c4d4f0a5d4bac152c953e35)