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