(cherry picked from commit e9a005dfcf4d2249235aeff4da85b321dddc1ca9) (cherry picked from commit c48640ffbd3852b75f898325ae0b3ea0ba864578) (cherry picked from commit f24684ca9cd70326e24376a33cda937c98295af0) (cherry picked from commit 054594c6145711c60f3cb848f08e515c4179f0c4)