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