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