(cherry picked from commit 49c8b99863401e8ff80fc915aa894bd7a2319317) (cherry picked from commit 5e9995cc9a0c7fe597daf4231f11b51b4e35b5d4) (cherry picked from commit f3b27e8575c9f876a582e91251f84c29a95858ce)