********* ***** ***** ** ******************* ** ********* ***** ************** ** ****** ******* ** ******** **** *** **********
*** ******* ******* ******* ** **** ****** **** ** ****** ** ** ***** *** ***** ****** ***** ******** ********* *****
********* ***** ***** ** ******************* ** ********* ***** ************** ** ****** ******* ** ******** **** *** **********
*** ******* ******* ******* ** **** ****** **** ** ****** ** ** ***** *** ***** ****** ***** ******** ********* *****