Sync latest changes out

2d66fc45185e98cfe11a824822ce44a90388cdeb
d8a2f12498fa5390c8d95bb391250724c130a2d0
7172b1d5daff92b65dc6326f79286eab9d93548c
f1a5a4c58e304c40b6710ac305833695a4628d82
2f61996ec30245182c3b783986c2b3b8f50265a0
cfdc8845829d080dd2c745f59a8b2b8b8c3a91f7
00037b3ec243223655a58f57b58558877c296754
121b29089916f49a0198a778eeb2236c1e639eef
c91f95a092051c44bb9e241f7551f47cfdce8e36
2496757364442bb2e333467cc2f2e4d1815f8e48