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