(cherry picked from commit 9195a6e302028ed3921d1016ac2fa5754f06ebf0) (cherry picked from commit 55142849db02a9191db0dd6f4e1401ff19ec242a) (cherry picked from commit 082a707bae4bb97444a34c00eecd62975807388d) (cherry picked from commit 896dc7c7801adaa4460fa6c19a4f452a6a6112d8)