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