(cherry picked from commit 9cd0b93ad243f05e7dd17055782ac922dc91b6f0)
(cherry picked from commit ef1ddf0568444f2e9ea05a0e03d7e9d89f501cef)
(cherry picked from commit cd264666220a69d0159ce0ee996104ff25b4a5f2)
(cherry picked from commit 22d8ed2544a385cfa8621d4db2b436c376226c56)
(cherry picked from commit 430f7d651902ab1e3e44ae27d9821d9132ee8a63)
(cherry picked from commit b33f3e2fe82d1e8d5368024938333e6a8c907e76)
(cherry picked from commit 5d4f9e47165a3c0adb30a078e6605b62cadbfc50)
(cherry picked from commit 33b4f02d90fec41d8525b22f312afa564c955067)
(cherry picked from commit fe783424e1e7c999446277f5d34f3885c861092f)