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