33333333333333333333333333333333333333333333#3333333333333#333333333333333#3333333333#33333333333333323333333333333333#33333#333"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!""""""""""""""""""""""""ýðîÝíÞÐíÞÝàÞÝîÝîÝîÝíÐíÞàÞÝÝîÝíîÝíÝíÞ íÞÝÞÝîÝî îÝ ðÝíÞÝàÞÝîÐÝîÝîÝíÝíÞàÞÝÐÝîîÝíÞÝíÞ íÞÝÞÝîÝîÝîÝ ÝíðíÞÝîÐÝîÝÐîÝíÝíÞíÞÝÐÝîÐîÝÝíÞÝíÞÝÞÝî ÝîÝîÝíÝííÞ ðÝîÝíàÝíÞÐíÞÝÞÝîÝîÝàÝíÐíÞÞÝîÝÝîÝ îÝíÝíÞíÞÝÞÝÝî îîîÞÝÝîÞÝÝÞÝÝÝÞÝÝÝÞÝÝÝÞÝÝÝÞÝÝÝîîîÝÝíÝÝíîÝÝÝíÝÝÝíÝÝÝíÝÝÝíÝÝÝíÝîîÝÐíàÞÝîÐàÝííÞÞ ÝîÝ îÝÝíàÞÐÝîÝàÐíÞÞÝÝî Ýí ÝííÞÐÝÐîÝíÐàÞÝÝîî Ý íÞ ÞÝÝîàÝÐíÞÝàÐîÝÝÝíÞ Ýî ÞÝÝÝÞÝÝÝîýÿÿàýÿÿàýÿÿàþÿÿîîîðÝÝÝíÝÝÝíÿÿßîÿÿßÿÿßÿÿïîîî333333333333333330303333303303333333À ÌÀÌÀÌÌÌÀÀÌÌÀ ÌÌ ÐÝÝ ÝàÝàÝàÝàÞÝÝÝ ÝàÝíÐÝÝàÝàÝ ÐÝÝÝÝÝ3333333333333333333333333333333333333333333333333333333333333333Ð ÝÐÝÐÝÝÝÐÐÝÝÐ ÝÝ îîîîÞÝýÿîÝÿÿàÝÿÿàÝÿÿàÞýÿîîîðîîîîÿßÝíÿÿÝîÿÿÝÿÿÝÿßíîîîîîîîÞÝýÿîÝÿÿàÝÿÿàÝÿÿàÞýÿîîîðîîîîÿßÝíÿÿÝîÿÿÝÿÿÝÿßíîîî333333333333333333333333033033333333033303333333îîîÞÝÝîÞÝÝÞÝÝÝÞÌÜÌÞÝÝÝÞÝÝÝÞÝÝÝîîîÝÝíÝÝíîÝÝÝíÜÌÜíÝÝÝíÝÝÝíÝÝÝíðÝÝÝÝÐÝÝÝÐÝÝÝÝÝÝÝÝÝÐÝÝÐÝÝÝÝÝÝÝÝÝ ÝÝÝ ÝÝÝÝÝÝÝÝ ÝÝ ÞÝÝÝÞÝÝÝîýÿÿàýÿÿàýÿÿàþÿÿîîîðÝÝÝíÝÝÝîÿÿßÿÿßÿÿßÿÿïîîîÝÝÝÝÐÝÐÝÝÝÐÐÝÝÝÝÝ Ý ÝÝ  >À?Ì ÀÌÌ ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌ À ÌÀ ÌÀ ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÀÌ Ì À ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌ À À Ì À ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌ ÀÌÀ Ì À À ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÀÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌ ÀÌ Ì ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌ ÀÌ À À À ÌÀ ÌÀ À ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÀ Ì Ì À ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌ À Ì Ì Ì Ì À Ì ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌ À À À Ì À À ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÀÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌ ÌÌÀ ÌÀÀ ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌ À ÌÌ À ÌÌ À À Ì À ÌÌ ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌ ÌÀ À Ì ÌÀ Ì Ì ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌ Ì À Ì Ì Ì ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀ ÌÀÌ ÀÀ Ì À Ì ÀÀÀ À ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª Ì Ì Ì ÌÌ À Ì ÀÀ Ì Ìªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª À À ÀÀ ÌÌÌÀ À À À Àªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª ÌÌÀÀÌ À Ì À À Ì Àªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª À ÌÀ ÀÀ Ì Ì À Ì ÌÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ Ì À Ì À ÀÀÀ Ì À ÌÀ Ì À ÀÀ Ì ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀ Ý ÀÌ ÌÌÀÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÀ Ð ÀÌ ÌÌ ÌÀ ÀÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÀÀÝ À À À ÌÀÀÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌ Ð À À ÀÀÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÀÐÝÀ Ì À Ì Ì Ì ÀÌ Ì ªªªªÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌ Ì Ì ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÀ À ÌÀ ÌÀ ÌÀ Ì̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ ÀÌÀÀÌÀÀÌÀÀÌÌÀÀ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ ÌÀ ÀÀ ÀÀ ÀÀÀÀ À̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌÌ Ì Ì ÀÀÀÀÀÌ ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌ Ì Ì ÀÌ ÀÌ Ì̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÀ À ÌÀ ÌÀ ÌÀ ÀÀ ÀÀ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ ÀÌÀÀÌÀÀÌÀÀ ÀÀ ÀÌ ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ ÌÀ ÀÀ ÀÀ ÀÀ ÀÀÌ À̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌÌ Ì Ì ÀÌ À ÀÌ ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌ Ì Ì ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÀ À ÌÀ ÌÀ ÌÀ ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ ÀÌÀÀÌÀÀÌÀÀÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ ÌÀ ÀÀ ÀÀ ÀÀÀÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌÌ Ì Ì ÀÀÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌÌ Ì ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÀ ÌÌÌÀÌÀÌ Ì ÀÀÌ ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ ÌÌÌ À ÌÀ ÀÀ ÌÀÌ ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌ ÌÌ ÌÌ ÌÀ ÀÀÌÀÌ ÀªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌÌ Ì À ÌÀ ÀÌ ÌÌ ªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªÀ̪ªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÌÌÌÌÌÌÌÌÌ̬ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÊÌÌÌÌ̪ªªªªªªªªªªªªªªªªªªªªªªªªªÀÌ ÀÌÌ Ì Ì ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª ÌÀ À ÌÀ ÌÀ ̪ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌÌ ÀÌÀÀÌÀÀÌÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª Ì ÌÀ ÀÀ ÀÀ ÀªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÌÌÀÌÌÌ Ì Ì ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÚݪªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÝ­ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÝꮪªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÝêÞݪªªªªªªªªªªªªªªªªªªªªªªªªª ÌÀÌ ÀªªªªªªªªªªªªªªªªªªªªªªªªªªÝê®ÝÝ­ªªªªªªªªªªªªªªªªªªªªªªªª À À ÀÌ ÌÀ ÌÀ ÀªªªªªªªªªªªªªªªªªªªªªªªªªªÝê®Ýªªªªªªªªªªªªªªªªªªªªªªªªªª ÀÀÌ À ªªªªªªªªªªªªªªªªªªªªªªªªîîîîîîîªªªªªªªªªªªªªªªªªªªªªª Ì ÌÀÀ Ì À ÌÀªªªªªªªªªªªªªªªªªªªªªªªªÞÝýÏüßÝíªªªªªªªªªªªªªªªªªªªªªªªªÌ À ÀÀ Ì Ì Ì À À ªªªªªªªªªªªªªªªªªªªªªªªªîÝÿÌÏÿÝªªªªªªªªªªªªªªªªªªªªªªÀªªªªªªªªªªªªªªªªªªªªªªªªêÝÿÌÏÿÝ®ªªªªªªªªªªªªªªªªªªªªªªªªÀ ÌÌ À À ªªªªªªªªªªªªªªªªªªªªªªªªêÝÿÌÌÿÝ®ªªªªªªªªªªªªªªªªªªªªªªªªÌ ªªªªªªªªªªªªªªªªªªªªªªªªêÞýÌÏßí®ªªªªªªªªªªªªªªªªªªªªªªªªÀ ÀÌ À À À À ªªªªªªªªªªªªªªªªªªªªªªªªªîîîîîªªªªªªªªªªªªªªªªªªªªªªªÌ Ì ªªªªªªªªªªªªªªªªªªªªªªªªªªªú¯ªªªªªªªªªªªªªªªªªªªªªªªªªªªÀÌ ÀÌÌÌ Ì PUUUUUUUUUffföofffUUUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUUUîÝíÞÝîÝíUUUUUUUUUUUUUUUUUUUUUUUUÌÀÌÌÌ UUUUUUUUUUUUUUUUUUUUUUUUÖíÞÝîÝínUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUæÞÝîÝíÞmUUUUUUUUUUUUUUUUUUUUUUUUÀÀ À À À À UUUUUUUUUUUUUUUUUUUUUUUUfÝîÝíÞÝfUUUUUUUUUUUUUUUUUUUUUUUUÌ UUUUUUUUUUUUUUUUUUUUUUUUfîÝíÞÝîfUUUUUUUUUUUUUUUUUUUUUUUUÀ ÀUUUUUUUUUUUUUUUUUUUUUUUUfÖíÞÝîmfUUUUUUUUUUUUUUUUUUUUUUUUÀ UUUUUUUUUUUUUUUUUUUUUUUUfæÞÝîÝmfUUUUUUUUUUUUUUUUUUUUUUUUÌ ÌÌÀÌÌÌ 3333333333333333333333333"ÝîÝí"33333333333333333333333333333333333333333333333333#îÝíÞ23333333333333333333333333ÐÝÝÝÝÝÝÝÝÝÝÝÍÌÌÌÌ333333333333333333333333#ÒíÞ-23333333333333333333333333ÐÐ3ÌÌÌÌ<33333333333333333333âÞÝ.33333333333333333333333333ÐÀÀ À À Ð33333ÃÌÌÌÌ3333333333333333"Ýî"33333333333333333333333333ÐÌ Ð3333333333ÌÌÌÌ<33333333333#îÝ233333333333333333333333333ÐÀ Ð33333333333333ÃÌÌÌÌ33333333Ó=333333333333333333333333333ÐÀ Ð3333333333333333333ÌÌÌÌ<333ã>333333333333333333333333333ÐÌ ÀÌÌÌÐ33333333333333333333333ÃÌÌÌ<3333333333333333333333333333ÐÐ333333333333333333333333333Ã3333333333333333333333333333ÐÀÌÌÌÌÌÌÌÌÌÌÐ33333333333333333333333333333333333333333333333333333333ÐÐ33333333333333333333333333333333333333333333333333333333ÐÀÀ À À Ð33333333333333333333333333333333333333333333333333333333ÐÌ Ð33333333333333333333333333333333333333333333333333333333ÐÀ Ð33333333333333333333333333333333333333333333333333333333ÐÀ Ð33333333333333333333333333333333333333333333333333333333ÐÌ ÀÌÌÌÐ33333333333333333333333333333333333333333333333333333333ÐÐ33333333333333333333333333333333333333333333333333333333ÐÝÝÝÝÝÝÝÝÝÝÝÝ3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333B(-- title: Drill Digger Beta -- author: SirWobb79 (admiralerkal79 via discord) -- desc: Drilling game where one must dig very far -- license: MIT License -- version: 1b11092025 -- script: lua engines = {} powerBase = 3 power = 0 balance = 0.0--e600 depth = 0.0 tile = {index=1, hp=0} tileHPs = {}--{10, 25, 35, 50, 75, 100, 150, 200} interval = 500--e400 add = 1.0 addIncLimits = {1, 100} mult = 1.01 mode = 1 if mode == 1 then hpInit = add elseif mode == 2 then hpInit = 1 end coords = {2, 24} displacement = 11 helpText = { "Z | Buy Engine", "X | Merge Engines", "UP/DOWN | Camera movement", "LEFT/RIGHT | Change Buy Level", " / | Manual Drill", } fastDig = true autoMerge = false engineSpawnCatchUp = false engineSpawnOffset = 1 engineSpawnLevel = 1 engineSpawnPriceBase = 2.5 engineMergePriceBase = 3 bulkEngine = 1 bulkMerge = 1 manualPower = 0.25 --for i=1, 10 do --table.insert(tileHPs, 4^i) --end --tile.hp = tileHPs[tile.index] function newTile() --tile.index = math.random(1, #tileHPs) if depth ~= 0 then if mode == 1 then hpInit = hpInit + add elseif mode == 2 then hpInit = hpInit * mult end end tile.hp = hpInit--tileHPs[tile.index] end newTile() function pretty(n) local short = { lowEnd = {"", "K", "M", "B", "T", "Qu", "Qi", "Sx", "Sp", "O", "N"}, first = {"", "U", "D", "T", "Qu", "Qi", "Sx", "Sp", "O", "N"}, second = {"D", "V", "Tg", "Qug", "Qig", "Sxg", "Spg", "Og", "Ng", "C"}, } local show = n local dupN = n local zeroSets = 1 if n == math.huge then return "Infinity" end if n == -math.huge then return "-Infinity" end while math.log(math.abs(show), 10) >= 3 do show = show / 1000 --trace(show) zeroSets = zeroSets + 1 end if zeroSets <= 11 and zeroSets ~= 0 then return string.format("%.3f", show)..short.lowEnd[zeroSets] elseif zeroSets >= 12 then return string.format("%.3f", show)..short.first[((zeroSets-12)%10)+1]..short.second[math.floor((zeroSets-2)/10)] --math.floor(zeroSets/10)+1 elseif zeroSets == 0 then return tostring(dupN) --elseif index == 1 then --return string.format("%.3f", show)..short[index] end end function addEngine(level) table.insert(engines, level) end function getPower() local cols = {1, 2, 3, 4, 5, 6, 9} local pow = 0.0 max = 0 for i=1, #engines do --print(engines[i], 32, 0+((i-1)*6)) if engines[i] > max then max = engines[i] end spr(264, drillX, 108-(i*16)+camY, 0, 1, 0, 0, 2, 2) rect(drillX+4, 108-(i*16)+11+camY, 8, 2, cols[((engines[i]-1)%#cols)+1]) print(engines[i], drillX+2, 112-(i*16)+camY, 15, true, 1, true) pow = pow + (powerBase^(engines[i]-1)) end if pow == math.huge then return 1.7976931348623158e308 end return pow end markerY = 124 function depthMarker() local spacing = 10 local mult = 16 local interval = spacing*mult local deadzone = 16 local offset = math.floor(-(camY-(depth*16))//interval) local depthOffset = offset--(camY) for i=-1+offset, 1+offset do lineY = ((markerY+((i*interval)+camY-(depth*16))))-16-- % (240+(deadzone*2))) - deadzone line(128, lineY, 156, lineY, 0) if lineY-2 > 30 and lineY-2 < 107 then local text = pretty((i*spacing)).." m" local offsetText = #text*4 print(text, 128-offsetText, lineY-2, 12, true, 1, true) end end end clouds = { {x=-10, y=35, a=13, b=7, speed=1/12}, {x=28, y=72, a=13, b=5, speed=1/10}, {x=74, y=7, a=15, b=7, speed=1/8}, {x=100, y=93, a=11, b=7, speed=1/6}, {x=60, y=26, a=11, b=5, speed=1/4}, } randomCloud = false if randomCloud then clouds = {} for i=1, math.random(5, 8) do --trace(i) table.insert(clouds, { x=math.random(-20, 200), y=math.random(-3, 104), a=(math.random(1, 3)*2)+9, b=(math.random(1, 2)*2)+4, speed=1/math.random(2, 14) }) end end --trace("-----") function surface() rect(128, 0+camY-(depth*16), 112, 108, 10) rect(128, 108+camY-(depth*16), 112, 8, 5) rect(128+48, 108+camY-(depth*16), 16, 8, 6) for i=1, #clouds do --elli(clouds[i].x+128+1, clouds[i].y+1+camY-(depth*16), clouds[i].a, clouds[i].b, 13) elli(clouds[i].x+128, clouds[i].y+camY-(depth*16), clouds[i].a, clouds[i].b, 12) clouds[i].x = clouds[i].x + clouds[i].speed if clouds[i].x >= 128+clouds[i].a*2 then clouds[i].x = -clouds[i].a*2 end end rect(0, 0, 128, 136, 0) end speed = 0 broken = 0 data = {} for i=1, 60 do table.insert(data, 0) --trace(i) end function ifBreak() --[[speed = 0 data[1] = broken broken = 0 --trace("-----------") for i=#data, 2, -1 do data[i] = data[i-1] --trace(data[i]) end for i=1, #data do speed = speed + data[i] --trace(speed) end]] --speed = speed/#data --speed = 0--(tile.hp/math.max(power, 1))/tile.hp--broken if tile.hp <= 0 then depth = depth + 1 balance = balance + add--max--hpInit--tileHPs[tile.index] newTile() if depth%interval == interval-1 then if mode == 1 then add = add + math.random(addIncLimits[1], addIncLimits[2]) end end end end function reverseSort(a, b) return a > b end --for i=1, 10 do --addEngine(1)--math.random(1, 5)) --end --addEngine(1) camY = 0 drillX = 176 anim = { drillBit = 0 } pair = false max = 1 tileHPs = {} manualState = 0 manualTotal = 0 for i=1, max do table.insert(tileHPs, math.floor(4^i)) end --trace(#data) function TIC() cls(0) map() pair = false prev = 0 index = 0 for i=#engines, 1, -1 do if engines[i] == prev then index = i engineMergePrice = engineMergePriceBase^(engines[index]-1) pair = true break end prev = engines[i] end engineSpawnPrice = engineSpawnPriceBase^(engineSpawnLevel) dataTotal = 0 for i=#data, 2, -1 do data[i] = data[i-1] --trace(data[i]) end for i=1, #data do dataTotal = dataTotal + data[i] --trace(speed) end surface() power = getPower() speed = ((power+(manualTotal*dataTotal))/hpInit) for i=1, #helpText do print(helpText[i], 0, 0+((i-1)*6), 12, true, 1, true) end --balance = math.floor(balance)/1 print(pretty(speed).." m/s", 0, 43, 12) print(pretty(power).." DPS", 0, 50, 12) print(pretty(depth).." m", 0, 57, 12) print(#engines.." Engine(s)", 0, 64, 12) print("$"..pretty(balance), 0, 78, 12) print("Level "..engineSpawnLevel.." Engine:\n$"..pretty(engineSpawnPrice), 0, 98, 12, true, 1, true) if #engines >= 2 and engines[index]then print("Merge Level\n"..tostring(engines[index]).." Engines:\n$"..pretty(engineMergePrice), 0, 111, 12, true, 1, true) end --print(pretty(x), 64, 64, 12) --print(x, 64, 70, 12) spr(288, drillX, 116+camY, 0, 1, 0, 0, 2, 1) for i=1, 4 do spr(304, drillX, 116+(i*8)+camY, 0, 1, 0, 0, 2, 1) end spr(256+(math.floor(anim.drillBit%4)*2), drillX, 108+camY, 0, 1, 0, 0, 2, 2) if power ~= 0 then anim.drillBit = anim.drillBit+(1/2)--((1/4)*power) end tileHPtext = pretty(tile.hp) initHPtext = pretty(hpInit) offset = math.max(#tileHPtext*4, #initHPtext*4) offset1 = #tileHPtext*4 offset2 = #initHPtext*4 print(tileHPtext, 120-offset1, 120, 12, true, 1, true) print(initHPtext, 120-offset2, 128, 12, true, 1, true) print(pretty(100*tile.hp/hpInit).."%", 88, 112, 12, true, 1, true) rectb(118-offset-1, 118, offset+5, 17, 13) line(118-offset+1, 126, 119, 126, 12) line(121, 118, 183, 125+camY, 12) depthMarker() if manualState == 0 then spr(290, coords[1], coords[2], 0) spr(307, coords[1]+displacement, coords[2], 0) spr(292, drillX, (-16*#engines)+camY+92, 0, 1, 0, 0, 2, 2) spr(290, drillX+6, (-16*#engines)+camY+101, 0) if btnp(6) then manualState = 1 anim.drillBit = anim.drillBit+1 end data[1] = 0 elseif manualState == 1 then spr(306, coords[1], coords[2], 0) spr(291, coords[1]+displacement, coords[2], 0) spr(294, drillX, (-16*#engines)+camY+92, 0, 1, 0, 0, 2, 2) spr(291, drillX+6, (-16*#engines)+camY+101, 0) if btnp(7) then data[1] = 1 manualState = 0 anim.drillBit = anim.drillBit+1 if #engines == 0 then --tile.hp = tile.hp - manualPower manualTotal = manualPower*1 else --max --tile.hp = tile.hp - (manualPower*(powerBase^max)) manualTotal = manualPower*(powerBase^max) end remaining = manualTotal --remaining = (power/60) --print(remaining, 32, 32) --tile.hp = tile.hp - power/60 while remaining > 0 do if remaining >= tile.hp then remaining = remaining - tile.hp tile.hp = 0 --broken = broken + 1 else tile.hp = tile.hp - remaining remaining = 0 end ifBreak() end else data[1] = 0 end end if btn(0) and camY ~= (depth*16) then camY = camY + 1 end if btn(1) and camY ~= -18 then camY = camY - 1 end if (btnp(2) or key(15)) and engineSpawnLevel ~= 1 then engineSpawnLevel = engineSpawnLevel - 1 end if (btnp(3) or key(16)) and engineSpawnPrice ~= 1e400 then engineSpawnLevel = engineSpawnLevel + 1 end if btnp(4) or key(17) then for i=1, bulkEngine do if balance >= engineSpawnPrice then addEngine(engineSpawnLevel) balance = balance - engineSpawnPrice end end end if (btnp(5) or key(23) or autoMerge) and #engines >= 2 and engineMergePrice ~= nil and pair then for j=1, bulkMerge do if balance >= engineMergePrice then prev = 0 index = 0 for i=#engines, 1, -1 do if engines[i] == prev then index = i break end prev = engines[i] end if index ~= 0 then engines[index] = engines[index] + 1 table.remove(engines, index+1) end balance = balance - engineMergePrice else break end end end if max >= engineSpawnLevel+engineSpawnOffset and engineSpawnCatchUp then engineSpawnLevel = max-engineSpawnOffset end --[[tileHPs = {} for i=1, max do table.insert(tileHPs, 4^i) end]] if not fastDig then tile.hp = tile.hp - power/60 ifBreak() if tile.hp == 0 then broken = broken + 1 end else remaining = (power/60) --print(remaining, 32, 32) --tile.hp = tile.hp - power/60 while remaining > 0 do if remaining >= tile.hp then remaining = remaining - tile.hp tile.hp = 0 --broken = broken + 1 else tile.hp = tile.hp - remaining remaining = 0 end ifBreak() end end table.sort(engines, reverseSort) end