(cherry picked from commit 811a9d4c6123643e0a2ae26c1ccf06717cb5f47b)
(cherry picked from commit a8c91f2bc819f570f8e07e489ba53b12a22ae0e6)
(cherry picked from commit 222b56e7bc38feb2a94ba0762e7120d6f75c2a8a)
(cherry picked from commit 490f6e2e6aa3f220cc98f257a3ca3b2bea48fb80)
(cherry picked from commit 8f3f90d4078d9d072d8ad4ccc3be35963b7435d6)
(cherry picked from commit 2b0da546c9dae40fbc1b2654387be80a17c1848f)