M""MMMMM""MM          dP dP             MMP"""""""MM MP""""""`MM MM'""""'YMM M""M M""M 
M  MMMMM  MM          88 88             M' .mmmm  MM M  mmmmm..M M' .mmm. `M M  M M  M 
M         `M .d8888b. 88 88 .d8888b.    M         `M M.      `YM M  MMMMMooM M  M M  M 
M  MMMMM  MM 88ooood8 88 88 88'  `88    M  MMMMM  MM MMMMMMM.  M M  MMMMMMMM M  M M  M 
M  MMMMM  MM 88.  ... 88 88 88.  .88    M  MMMMM  MM M. .MMM'  M M. `MMM' .M M  M M  M 
M  MMMMM  MM `88888P' dP dP `88888P'    M  MMMMM  MM Mb.     .dM MM.     .dM M  M M  M 
MMMMMMMMMMMM                            MMMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMM MMMM