(imported from commit 5d406cb6c5fe7b1fbd4da706f7ac6bb6e381cadb)
(imported from commit a1d4dd22c59f812f0eb4875dc70c89ce96a4b90c)