(cherry picked from commit 49c38898b0be64fc686d039ed2fb2dea1378df02) (cherry picked from commit ad140d1fc831735fb9335e27b38d2fc040847af1) (cherry picked from commit 85b23c323c80c5303bd0b7bdb066258792ca67d8)
(cherry picked from commit 49c38898b0be64fc686d039ed2fb2dea1378df02) (cherry picked from commit ad140d1fc831735fb9335e27b38d2fc040847af1) (cherry picked from commit 85b23c323c80c5303bd0b7bdb066258792ca67d8)