(cherry picked from commit6ad1a042bc) (cherry picked from commite686b9c297) (cherry picked from commitc644427b77) (cherry picked from commita0a3a8e794)
(cherry picked from commit6ad1a042bc) (cherry picked from commite686b9c297) (cherry picked from commitc644427b77) (cherry picked from commita0a3a8e794)