(cherry picked from commit 0402bada1989258ecbfdc437cb339322a1f55a97) (cherry picked from commit 173664d70f0ed3b1852b6703d32e796778fb1c78) (cherry picked from commit 04e71db1ce9572ae0641234a02b7db5d174668fd)
(cherry picked from commit 0402bada1989258ecbfdc437cb339322a1f55a97) (cherry picked from commit 173664d70f0ed3b1852b6703d32e796778fb1c78) (cherry picked from commit 04e71db1ce9572ae0641234a02b7db5d174668fd)