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