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