Page 51 of 54 FirstFirst ... 414950515253 ... LastLast
Results 1,251 to 1,275 of 1345

Thread: OFFICIAL Social Slayer/SMART Not Working Thread

  1. #1251
    Join Date
    Jul 2012
    Posts
    279
    Mentioned
    5 Post(s)
    Quoted
    46 Post(s)

    Default

    I found out the mistake I did. I'm posting so everyone with the similar problem can also get it solved. Instead of downloading the new .991 version with everything in it, I found the .exe of Simba and sticked to it. It explains why I didn't have any folder in the Simba folder. Make sure that you download 0.99 from the correct place (http://villavu.com/forum/showthread.php?t=85725) if you have the same issue as me.

    I'm now facing a different issue though. I get no error message, but the smart client doesn't open up after I press play. Will look around the forum to try to find what the issue is, but I don't mind if someone PMs me the solution.

    EDIT: Can't find the problem at all after searching for over an hour. Would appreciate any help.
    Last edited by Wardancer; 07-27-2012 at 10:54 PM. Reason: To avoid a double post

  2. #1252
    Join Date
    Mar 2012
    Posts
    13
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    hey i did everything suggested smart 7.2 and new simba and put benland files in plugins and getting this error

    getting error in paintsmart tab unknown indintified at line 40
    smartgetdebugdc

  3. #1253
    Join Date
    Jul 2009
    Location
    Australia
    Posts
    667
    Mentioned
    0 Post(s)
    Quoted
    7 Post(s)

    Default

    Quote Originally Posted by runing low View Post
    hey i did everything suggested smart 7.2 and new simba and put benland files in plugins and getting this error

    getting error in paintsmart tab unknown indintified at line 40
    smartgetdebugdc
    Please search the error before posting. http://villavu.com/forum/showthread....martgetdebugdc
    Change
    Simba Code:
    {$I SRL/SRL/Misc/PaintSmart.Simba}
    to
    Simba Code:
    {$IFDEF SIMBAMAJOR980}
      {$I SRL/SRL/Misc/PaintSmart.Simba}
    {$ELSE}
      {$I SRL/SRL/Misc/SmartGraphics.Simba}
    {$ENDIF}

    ~Caotom

  4. #1254
    Join Date
    Mar 2012
    Posts
    13
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Caotom View Post
    Please search the error before posting. http://villavu.com/forum/showthread....martgetdebugdc
    Change
    Simba Code:
    {$I SRL/SRL/Misc/PaintSmart.Simba}
    to
    Simba Code:
    {$IFDEF SIMBAMAJOR980}
      {$I SRL/SRL/Misc/PaintSmart.Simba}
    {$ELSE}
      {$I SRL/SRL/Misc/SmartGraphics.Simba}
    {$ENDIF}

    ~Caotom
    wow thanks for quick reply

    i took your advice and am now getting this error

    [Error] C:\Users\Kevin\Desktop\gump astral.Simba(115:20): Unknown identifier 'SmartGetDebugDC' at line 114
    Compiling failed.


    also i added the plugins, was there anything i needed to add to includes folder?

    edit: also my debug window doesn't seem to be popping up, would anyone help via teamviewer?

    msn:jadfailz@hotmail.com
    Last edited by runing low; 07-28-2012 at 12:23 AM.

  5. #1255
    Join Date
    Dec 2011
    Posts
    94
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    I've got the same error and i've tried the fix and it still doesn't work. :/

  6. #1256
    Join Date
    Jul 2009
    Location
    Australia
    Posts
    667
    Mentioned
    0 Post(s)
    Quoted
    7 Post(s)

    Default

    Trying simply changing
    Simba Code:
    {$I SRL/SRL/Misc/PaintSmart.Simba}
    to
    Simba Code:
    {$I SRL/SRL/Misc/SmartGraphics.Simba}
    Simba may be having trouble recognising that you are updated to 0.99 or above.

    ~Caotom

  7. #1257
    Join Date
    Dec 2011
    Posts
    94
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    I tried that. Unknown identifier 'Smart_server' at line 318

    I get this error now.

  8. #1258
    Join Date
    Mar 2007
    Location
    USA
    Posts
    1,433
    Mentioned
    1 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by AusKingdom View Post
    I tried that. Unknown identifier 'Smart_server' at line 318

    I get this error now.
    Change:
    Simba Code:
    begin
      Smart_Server := 72;
      Smart_Members := True;
      Smart_Signed := True;
      Smart_SuperDetail := False;
      SetupSRL;
    end.
    to:
    Simba Code:
    begin
      SRL_SixHourFix := True;
      Smart_FixSpeed := True;

      SetupSRL;
    end.

    Any other errors like this, refer to this thread -> http://villavu.com/forum/showthread.php?t=84334
    I'm Silent SPY
    Secret project: 0%
    Need help? Send me a PM

  9. #1259
    Join Date
    Jun 2012
    Posts
    9
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    yeah they should put up a tut on what to do now, and possibly add a forum thread for working scripts and scripts that need to be updated. Sorta like the old reflection scripts thread they have.

    But what do I know, I am just a poor ol nooblet..

  10. #1260
    Join Date
    Mar 2007
    Posts
    5,125
    Mentioned
    275 Post(s)
    Quoted
    901 Post(s)

    Default

    Quote Originally Posted by dvander222 View Post
    yeah they should put up a tut on what to do now, and possibly add a forum thread for working scripts and scripts that need to be updated. Sorta like the old reflection scripts thread they have.

    But what do I know, I am just a poor ol nooblet..
    There are plenty of posts around the forums on how to fix the issues...

    Forum account issues? Please send me a PM

  11. #1261
    Join Date
    Dec 2011
    Posts
    100
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    When trying to run multiple scripts it will pair them to each other resulting in one session. It doesn't open it's own smart but takes over one that is already being used. Running the scripts in the same Simba but separate tabs doesn't work either.

  12. #1262
    Join Date
    Mar 2007
    Location
    USA
    Posts
    1,433
    Mentioned
    1 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by iiNveRsioN View Post
    When trying to run multiple scripts it will pair them to each other resulting in one session. It doesn't open it's own smart but takes over one that is already being used. Running the scripts in the same Simba but separate tabs doesn't work either.
    Try using SetupSmart(true);

    In your scripts.

    Edit: I should clear that up, call that function before after SetupSRL;
    Last edited by Silent; 07-28-2012 at 05:54 AM.
    I'm Silent SPY
    Secret project: 0%
    Need help? Send me a PM

  13. #1263
    Join Date
    Dec 2011
    Posts
    100
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Silent SPY View Post
    Try using SetupSmart(true);

    In your scripts.

    Ok, I'll give it a try.
    Last edited by iiNveRsioN; 07-28-2012 at 05:26 AM.

  14. #1264
    Join Date
    Dec 2011
    Posts
    100
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Ok, it seems to be okay for the moment. Another thing is that when you close smart/simba it doesn't close the process smartremote.. so they build up unless you close them manually by killing the process.

  15. #1265
    Join Date
    Mar 2007
    Posts
    5,125
    Mentioned
    275 Post(s)
    Quoted
    901 Post(s)

    Default

    Quote Originally Posted by iiNveRsioN View Post
    Ok, it seems to be okay for the moment. Another thing is that when you close smart/simba it doesn't close the process smartremote.. so they build up unless you close them manually by killing the process.
    Just checked my processes.. You are right.


    Forum account issues? Please send me a PM

  16. #1266
    Join Date
    Mar 2012
    Posts
    13
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Silent SPY View Post
    Try using SetupSmart(true);

    In your scripts.

    Edit: I should clear that up, call that function before after SetupSRL;
    thanks for all your help silent spy, I'm having a issue where i make it to the rs log in screen but it doesn't type user pass in, also there's no debug window so i'm not sure what the error is

    do i jus log in manually or what?

  17. #1267
    Join Date
    Jul 2012
    Location
    Australia
    Posts
    553
    Mentioned
    1 Post(s)
    Quoted
    4 Post(s)

    Default

    So I can't really get any scripts working...
    Anyone able to share any script that is? I'd appreciate it!
    Sinking. Always. Sinking.

  18. #1268
    Join Date
    Mar 2007
    Posts
    5,125
    Mentioned
    275 Post(s)
    Quoted
    901 Post(s)

    Default

    Quote Originally Posted by runing low View Post
    thanks for all your help silent spy, I'm having a issue where i make it to the rs log in screen but it doesn't type user pass in, also there's no debug window so i'm not sure what the error is

    do i jus log in manually or what?
    Have you filled out the username and password section in DeclarePlayers?

    Forum account issues? Please send me a PM

  19. #1269
    Join Date
    Mar 2007
    Posts
    5,125
    Mentioned
    275 Post(s)
    Quoted
    901 Post(s)

    Default

    Quote Originally Posted by Law and Justice View Post
    So I can't really get any scripts working...
    Anyone able to share any script that is? I'd appreciate it!
    Better off posting the script that isn't working for you here

    Forum account issues? Please send me a PM

  20. #1270
    Join Date
    Jul 2012
    Location
    Australia
    Posts
    553
    Mentioned
    1 Post(s)
    Quoted
    4 Post(s)

    Default

    Quote Originally Posted by [J]ustin View Post
    Better off posting the script that isn't working for you here
    Yeah true.

    Well, I'm trying to get this one working:
    Simba Code:
    program new;
    {$DEFINE SMART}
    {$I SRL/SRL.simba}
    //{$I srl/srl/misc/debug.simba}
    {$IFDEF SMART}
      {$I SRL/SRL/Misc/SmartGraphics.Simba}

    {$ENDIF}
    var
      a,b:TBox;
      StartTime, StartExp, angleOne, angleTwo:integer;
      firsttime, detected:boolean;
      STime, breakTimeS :integer;

    const
      breakTime= 55;   // break after X amount of minutes
      breakLength= 12;  // break for X amount of minutes
      totalTimeOnPlayer= 200;   // play for a total amount of minutes
      detectionType= 1;  //if you have issues with 0 (detects when stopped chopping), use 1.

    procedure declareplayers;
    begin
      HowManyPlayers := 1;
      NumberOfPlayers(HowManyPlayers);
      CurrentPlayer := 0;

      Players[0].Name := '';
      Players[0].Pass := '';
      Players[0].Active := True;
      Players[0].Strings[0] := 'VE';   // Location: VN,VE,CW
    end;

    ///////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////
    //                        DONT GO PAST HERE                  //
    ///////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////

    function AutoColorIvy: Integer;
    var
      arP: TPointArray;
      arC: TIntegerArray;
      tmpCTS, i, arL: Integer;
      X, Y, Z: Extended;
    begin
      tmpCTS := GetColorToleranceSpeed;
      ColorToleranceSpeed(2);
      SetColorSpeed2Modifiers(0.06, 0.15);

      FindColorsSpiralTolerance(MSCX, MSCY, arP, 4421725, MSX1, MSY1, MSX2, MSY2, 5);
      if (Length(arP) = 0) then
      begin
        Writeln('Failed to find the color, no result.');
        ColorToleranceSpeed(tmpCTS);
        SetColorSpeed2Modifiers(0.2, 0.2);
        Exit;
      end;

      arC := GetColors(arP);
      ClearSameIntegers(arC);
      arL := High(arC);

      for i := 0 to arL do
      begin
        ColorToXYZ(arC[i], X, Y, Z);

        if (X >= 9.11) and (X <= 15.81) and (Y >= 11.95) and (Y <= 20.87) and (Z >= 5.94) and (Z <= 10.05) then
        begin
          Result := arC[i];
          Writeln('AutoColor = ' + IntToStr(arC[i]));
          Break;
        end;
      end;

      ColorToleranceSpeed(tmpCTS);
      SetColorSpeed2Modifiers(0.2, 0.2);

      if (i = arL + 1) then
        Writeln('AutoColor failed in finding the color.');
    end;

    function AutoColorNest: Integer;
    var
      arP: TPointArray;
      arC: TIntegerArray;
      tmpCTS, i, arL: Integer;
      X, Y, Z: Extended;
    begin
      tmpCTS := GetColorToleranceSpeed;
      ColorToleranceSpeed(2);
      SetColorSpeed2Modifiers(0.47, 1.24);

      FindColorsSpiralTolerance(MSCX, MSCY, arP, 3885645, MSX1+1, MSY1+1, MSX2-1, MSY2-1, 8);
      if (Length(arP) = 0) then
      begin
        Writeln('Failed to find the color, no result.');
        ColorToleranceSpeed(tmpCTS);
        SetColorSpeed2Modifiers(0.2, 0.2);
        Exit;
      end;

      arC := GetColors(arP);
      ClearSameIntegers(arC);
      arL := High(arC);

      for i := 0 to arL do
      begin
        ColorToXYZ(arC[i], X, Y, Z);

        if (X >= 4.22) and (X <= 8.40) and (Y >= 4.48) and (Y <= 8.83) and (Z >= 2.94) and (Z <= 8.01) then
        begin
          Result := arC[i];
          Writeln('AutoColor = ' + IntToStr(arC[i]));
          Break;
        end;
      end;

      ColorToleranceSpeed(tmpCTS);
      SetColorSpeed2Modifiers(0.2, 0.2);

      if (i = arL + 1) then
        Writeln('AutoColor failed in finding the color.');
    end;

    procedure antiban();
    begin
      case random(200) of
        1: begin MakeCompass(RandomRange(angleOne-20,angleTwo+20)); makeCompass(RandomRange(angleOne,angleTwo)); end;
        2: PickUpMouse;
        3: begin RandomAngle(True); setangle(SRL_Angle_Low);  end;
        4: begin HoverSkill(skill_Woodcutting,false); mmouse(50,50, 300,200); end;
        5..10: mmouse(50,50, 300,200);
      end;
    end;

    procedure findIvy();
    var
      i, highATPA : integer;
      x, y : integer;
      TPA : TPointArray;
      ATPA : T2DPointArray;
    begin
      FindColorsSpiralTolerance(MScx, MScy, TPA, AutoColorIvy, MSX1, MSY1, MSX2, MSY2, 2);
      ATPA := splitTPA(TPA,6);
      //debugATPAbounds(ATPA);
      //SMART_DebugATPA(false, ATPA);

      highATPA := high(ATPA);
      for i := 0 to highATPA do
      begin
        MiddleTPAEx(ATPA[i], x, y);
        MMouse(x-2, y-2, 4, 4);
        getmousepos(x,y);
        wait(300 + random(400));
        if isUpText('Ivy') then
        begin
          mouse(x,y,0,0,true);
          case random(4) of
            1: begin wait(400+random(300)); mmouse(x-100,y-100, 200, 200); end;
          end;
          break;
        end;
      end;
    end;

    function findNest():boolean;
    var
      i, highATPA : integer;
      x, y : integer;
      TPA : TPointArray;
      ATPA : T2DPointArray;
    begin
      result:=false;
      FindColorsSpiralTolerance(MScx, MScy, TPA, AutoColorNest,54, 193, 506, 261, 2);
      ATPA := splitTPA(TPA,10);
      //debugATPAbounds(ATPA);
      //SMART_DebugATPA(false, ATPA);

      highATPA := high(ATPA);
      for i := 0 to highATPA do
      begin
        MiddleTPAEx(ATPA[i], x, y);
        MMouse(x-2, y-2, 4, 4);
        getmousepos(x,y);
        wait(300 + random(400));
        if isUpText('nest') then
        begin
          mouse(x,y,0,0,true);
          case random(4) of
            1: begin wait(400+random(300)); mmouse(x-100,y-100, 200, 200); end;
          end;
          result:=true;
          break;
        end;
      end;
    end;

    function detectBirdNestMessage():boolean;
    var
      x,y:integer;
    begin
      result:=false;
      if(findcolor(x,y,255, 9, 428, 84, 457))then
      begin
        writeln('Detected Bird Nest');
        if(findNest)then
          result:=true;
      end;
    end;

    procedure PrintProggy();
    var
      background: TBox;
      x,y,i: Integer;
      Exp,ExpPerHour:integer;
      boxpoints: Array of TPoint;
    begin
      {$IFDEF SMART}
      Exp := GetXPBarTotal-StartExp;
      ExpPerHour := (3600*Exp) / ((Getsystemtime-StartTime)/1000+1);
      if(firsttime)then
      begin
        SMART_clearcanvas();
        background.X1:= MMx1-30;
        background.Y1:= MMy1-10;
        background.X2:= MMx2+62;
        background.Y2:= MMy2+7;
        setarraylength(boxpoints, ((background.X2-background.X1)*(background.Y2-background.Y1)));
        i:=0;
        for x:= background.X1 to background.X2-1 do
        begin
          for y:= background.Y1 to background.Y2-1 do
          begin
            boxpoints[i]:= point(x,y);
            inc(i);
          end;
        end;
        SMART_DrawDotsEx(false, boxpoints, 3160642);
      end else
      begin
        background.X1:= 590;
        background.Y1:= 78;
        background.X2:= 723;
        background.Y2:= 122;
        setarraylength(boxpoints, ((background.X2-background.X1)*(background.Y2-background.Y1)));
        i:=0;
        for x:= background.X1 to background.X2-1 do
        begin
          for y:= background.Y1 to background.Y2-1 do
          begin
            boxpoints[i]:= point(x,y);
            inc(i);
          end;
        end;
        SMART_DrawDotsEx(false, boxpoints, 3160642);
      end;

      SMART_DrawText(MMX1-20, MMY1, 'UpChars', 'Warrior''s IvyCutter', ClLime);
      SMART_DrawText(MMX1-20, MMY1+15, 'UpChars', 'By, x[Warrior]x3500', ClLime);
      SMART_DrawText(MMX1-20, MMY1+30, 'UpChars', '------------------------', ClLime);
      SMART_DrawText(MMX1-20, MMY1+55, 'UpChars', 'Player: ' + Players[CurrentPlayer].Name, ClLime);
      SMART_DrawText(MMX1-20, MMY1+70, 'UpChars', 'Total Exp: ' + inttostr(Exp), ClLime);
      SMART_DrawText(MMX1-20, MMY1+85, 'UpChars', 'Exp per Hour: ' + tostr(ExpPerHour), ClLime);
      SMART_DrawText(MMX1-20, MMY1+100, 'UpChars', 'Total Time: ' + inttostr(GetTimeRunning/1000/60) + ' minutes', ClLime);
      SMART_DrawText(MMX1-20, MMY1+110, 'UpChars', '------------------------', ClLime);
      {$ENDIF}
    end;

    procedure proggy();
    var
      Exp, ExpPerHour: integer;
    begin
      cleardebug();
      Exp := GetXPBarTotal-StartExp;
      ExpPerHour := (3600*Exp) / ((Getsystemtime-StartTime)/1000);
      writeLn('---------- Warrior''s -----------');
      writeLn('---------- IvyCutter  -----------');
      writeLn('Total Time: ' + TimeRunning);
      writeLn('Exp Earned: ' + IntToStr(Exp));
      writeLn('Exp Per Hour: ' + IntToStr(ExpPerHour));
      writeLn('--------------------------------');
    end;

    procedure initBreakTime();
    begin
      breakTimeS:= breakTime*60-((breakTime*60)*(1/10))+random((breakTime*60)*(2/10));
      STime:=GetSystemTime();
    end;

    function detectBreakTime():boolean;
    begin
      result:=false;
      if((Getsystemtime-STime)/1000>breakTimeS)then
        result:=true;
    end;

    function detectTotalRunTime():boolean;
    begin
      result:=false;
      if((Getsystemtime-StartTime)/1000/60>TotalTimeOnPlayer)then
        result:=true;
    end;

    procedure doBreak();
    var
      breakingFor:integer;
    begin
      breakingFor:= breaklength*60-((breaklength*60)*(1/10))+random((breaklength*60)*(2/10));
      writeln('Breaking for: '+inttostr(breakingFor/60)+' minutes.');
      writeln('Start Break Time: '+MStoTime(Getsystemtime,Time_Bare));
      logout();
      wait(breakingFor*1000);
      loginplayer();
      setangle(SRL_Angle_Low);
      makeCompass(RandomRange(angleOne,angleTwo));
    end;

    procedure setupPlayer();
    begin
      case Players[CurrentPlayer].Strings[0] of
       'VN','FN': begin angleOne:=180; angleTwo:=180; end;
       'VE','T': begin angleOne:=90; angleTwo:=90; end;
       'FS','CW': begin angleOne:=0; angleTwo:=0; end;
       'A': begin angleOne:=270; angleTwo:=270; end;
      end;
      if(not(LoggedIn))then
        LoginPlayer;
      setangle(SRL_Angle_Low);
      makeCompass(RandomRange(angleOne,angleTwo));
      if(not(IsXPBarOpen))then
        ToggleXPBar(true);
      if(StartExp=0)then
        StartExp := GetXPBarTotal;

      a.X1:= 243;
      a.X2:= 280;
      a.Y1:= 86;
      a.Y2:= 174;

      b.X1:= 242;
      b.X2:= 268;
      b.Y1:= 103;
      b.Y2:= 126;

    end;


    begin
      {$IFDEF SIMBAMAJOR980}//<--- THIS
    Smart_Server := 0;
    Smart_Members := False;
    Smart_Signed := True;
    Smart_SuperDetail := False;
    {$ELSE}//<--- THIS
    SRL_SIXHOURFIX := TRUE;
    SMART_FIXSPEED := TRUE;
    {$ENDIF}

      setupsrl;
      DeclarePlayers;
      StartTime := GetSystemTime;
      StartExp := GetXPBarTotal;
      firsttime := true;
      repeat
        setupPlayer();
        repeat
          initBreakTime();
          repeat
            printProggy();
            firsttime:=false;
            findIvy();
            wait(400+random(300));
            detected:=false;
            repeat
              antiban();
              proggy();
              if(findnormalrandoms)then
              begin
                setangle(SRL_Angle_Low);
                makeCompass(RandomRange(angleOne,angleTwo));
              end;
              case detectionType of
                0: detected:= (averagepixelshift(b,200,2000)<900);
                1: detected:= (averagepixelshift(a,200,2000)<1000);
              end;
            until(detected) or (detectBirdNestMessage);
            wait(random(400));
            findnormalrandoms();
          until(detectBreakTime);
          doBreak();
        until(detectTotalRunTime);
        nextplayer(false);
      until(allplayersinactive);

    end.

    But I keep getting this error:
    Simba Code:
    Current player:
    Error: Exception: The Points you passed to DrawATPA exceed the bitmap's bounds at line 90
    The following DTMs were not freed: [SRL - Lamp bitmap, 1]
    The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, 4]

    I would also like this one to work:
    Simba Code:
    program ChaosMossKiller;
    {$i srl/srl/misc/smart.simba}
    {$i srl/srl.simba}
    {$i sps/sps.simba}
    {$i srl/srl/misc/debug.simba}
    {$i srl/srl/misc/paintsmart.simba}
    const
    //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    //========================ChaosMossKiller by hunt3rx3=======================v6.0
    //READ THESE CAREFULLY!===================================================19 May
    //*YOU MUST SET UP XP COUNTER FOR TRAINED LEVEL, OTHERWISE SCRIPT WONT WORK!====
    //*FOOD:========================================================================
    //  -ONLY EATS LOBSTERS AND PEACHES=============================================
    //  -DONT USE B2P WITH BONECRUSHER! COMMON SENSE================================
    //*CHARM LOOTING:===============================================================
    //  -WILL PICK UP CHARMS WHAT YOU CAN SEE WITH YOUR EYES!=======================
    //  -WONT RIGHT CLICK ALL THE LOOT PILES!=======================================
    //  -HAVE 1+ OF EACH AT START!==================================================
    //*SPECIAL ATTACKS:=============================================================
    //  -ONLY PRIMARY WORN WEAPONS, WONT SWITCH WEAPONS!============================
    //  -KORASI NOT SUPPORTED! WOULD MESS UP THE SCRIPT!============================
    //==============================================================================
      SRLStats_User       =   '';                                                   // Your SRL Stats ID (If you dont have one then just leave it as it is)
      SRLStats_Password   =   '';                                                   // Your SRL Stats Password (If you dont have one then just leave it as it is)

      Username        =     '';
      Password        =     '';

      TrainedSkill    =     'Strength';                                             // Attack, Strength, Defence, Range
      XPCounter       =     2;                                                      // 1,2,3
      EatAt           =     700;                                                    // 100-999

      BonesToPeaches  =     True;
      PickUpCharms    =     True;

      UseSpecAttacks  =     False;                                                   // Only worn weapons. Not supported: Korasi.
      SpecUsage       =     55;                                                     // Spec usage of worn weapon. Supported: 25, 50, 55, 60, 100

      PaintStatus     =     True;                                                   // set Private Chat off for this
      PaintDebug      =     True;

      TakeScreenShots =     True;                                                   // (~100 kb jpeg, wont eat memory)
      ScreenShotsPath =     'C:\Simba\Screenshots\ChaosMossKiller\';


      DebugWindow = False;
      DebugLines  = False;
    //==============================================================================
    //===========UPDATES: [url]http://villavu.com/forum/showthread.php?t=74029===========[/url]
    //==============================================================================
    //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

      Version = 'v6.0';


    var
      X, Y: Integer;
      StartTime, StartXp, StartXPtillNext, TrainedLevel, HpLevel : Integer;
      WorldHops, B2PUsed, FoodUsed, GoldCharms, GreenCharms, BlueCharms, CrimsonCharms : Integer;
      SpecWait, SpecTime, SpecNumber : Integer;
      LastXP : Extended;
      LevelString : String;
      doreport, b2p : Boolean;



    procedure DeclarePlayers;
    begin
      NumberOfPlayers(1);
      CurrentPlayer := 0;
      with Players[0] do
      begin
        Name := UserName;
        Pass := Password;
        Active := True;
      end;
    end;



    procedure MakeScreenShot(const FilePath : String);                              //example: 'C:\Simba\Screenshots\ChaosMossKiller\levelups'
    var
      fileName : String;
      Year, Month, Day : Word;
      i : Integer;
    begin
      if TakeScreenShots then
      begin
        if not DirectoryExists(ScreenShotsPath) then
          CreateDirectory(ScreenShotsPath);
        if not DirectoryExists(FilePath) then
          CreateDirectory(FilePath);
        DecodeDate(Date,Year,Month,Day);
        i := 0;
        repeat
          i := i+1;
          FileName := ToStr(Year) + '-' + ToStr(Month) + '-' + ToStr(Day) + ' (' + IntToStr(i) + ').jpg';
        until not FileExists(FilePath + FileName)
        SaveScreenShot(FilePath + FileName);                                        //example: 2012-3-21 (1).jpg
      end;
    end;



    procedure OpenDebugWindow(TPA: TPointArray; ATPA: array Of TPointArray; PaintBox: Boolean; Box: TBox);  //box is for the dying Moss giant
    var
      BMP, x,y, i, Color : Integer;
      TPABox: TBox;
    begin
      BMP := BitmapFromClient(0,0,MSX2,MSY2);                                       //making a bitmap, adding the mainscreen image to it
      DrawTPABitmap(BMP,TPA,clRed);                                                 //adding TPA to the bitmap

      for i := 0 to high(ATPA) do
      begin
        if i = 0 then
          Color := clYellow
        else
          Color := clBlack;

        TPABox := getTPABounds(ATPA[i]);                                            //getting the box of the TPA
        for x := TPABox.x1 to TPABox.x2 do
        begin
          FastSetPixel(BMP, x, TPABox.y1, Color)                                    //drawing lines
          FastSetPixel(BMP, x, TPABox.y2, Color)                                    //drawing lines
        end;
        for y := TPABox.y1 to TPABox.y2 do
        begin
          FastSetPixel(BMP, TPABox.x1, y, Color)                                    //drawing lines
          FastSetPixel(BMP, TPABox.x2, y, Color)                                    //drawing lines
        end;
      end;

      if PaintBox then                                                              //this is for the dying Moss giant
      begin
        for x := Box.x1 to Box.x2 do
        begin
          FastSetPixel(BMP, x, Box.y1, ClRed)                                       //drawing lines
          FastSetPixel(BMP, x, Box.y2, ClRed)                                       //drawing lines
        end;
        for y := Box.y1 to Box.y2 do
        begin
          FastSetPixel(BMP, Box.x1, y, ClRed)                                       //drawing lines
          FastSetPixel(BMP, Box.x2, y, ClRed)                                       //drawing lines
        end;
      end;
      DebugBitmap(BMP);
      FreeBitmap(BMP);
    end;



    function CurrentTime: string;                                                   //function for time, example [17:53:59]
    var
      Hour, Mins, Sec, MSec: Word;
    begin
      DecodeTime(Now, Hour, Mins, Sec, MSec);
      Result := ('['+Padz(IntToStr(Hour), 2) + ':' + Padz(IntToStr(Mins), 2) + ':' + Padz(IntToStr(Sec), 2)+'] ');
    end;



    procedure EndScript(Reason : String);                                           //function for ending, message box will pop up
    begin
      MakeScreenShot(ScreenShotsPath + 'stops\');
      Disguise('Stopped');
      Writeln(CurrentTime + Reason);
      MessageBox(CurrentTime + Reason,'ChaosMossKiller',0);                         //message box as warning
      TerminateScript;
    end;



    procedure StatusWithPaint(What : String);                                       //Painting status on SMART
    begin
      Status(What);
      if PaintStatus then
      begin
        SMART_ClearCanvasArea(IntToBox(MSX1,320,MSX2,343));
        SMART_DrawTextEx(False,8,322,SmallChars,What,ClWhite);                      //drawing the text
      end;
    end;



    procedure Report;
    var
      XP, XPHour, PrayXP, XPtillNext, TimeRun : Extended;                           //i have no clue why, but integer with Round() wont work
      done : Boolean;
      fails : Integer;
    begin
      if not DoReport then Exit;
      fails := 0;
      done := True;
      repeat                                                                        //reading XPCounter for xp gained
        if (fails = 5) then
        begin
          Writeln(CurrentTime+'Failed to read XPBar. Turning off Reports.');
          DoReport := False;
          Exit;
        end;
        XP := GetXPBar(XPCounter)-StartXP;
        if (XP + StartXP = -1) then                                                 //if fails to read xpbar it gives -1
        begin
          done := False;
          fails := fails+1;
        end;
      until done

      TimeRun := TimeFromMark(StartTime);
      PrayXP := Round(XP / 240 * 15);
      XPHour := Round(XP * (3600000 / TimeRun));
      XPtillNext := StartXPtillNext - XP + LastXP;                                  //LastXP = 0 untill we get a levelup

      if (XPtillNext < 0) then                                                      //levelup check
      begin
        fails := 0;
        done := True;
        repeat                                                                      //getting new level and xp till next
          if (fails = 5) then
          begin
            Writeln(CurrentTime + 'Failed to get level/XPs. Turning off Reporting.');
            DoReport := False;
            Exit;
          end;
          TrainedLevel := GetSkillLevel(TrainedSkill);
          if (TrainedLevel = -1) then                                               //if fails to get level it gives -1
          begin
            done := False;
            fails := fails+1;
          end;
          StartXPtillNext := XPTillNextLevel(TrainedSkill);
          if (StartXPtillNext = -1) then                                            //if fails to read xp it gives -1
          begin
            done := False;
            fails := fails+1;
          end;
        until done

        XPtillNext := StartXPtillNext;
        LastXP := Round(XP);                                                        //we store the 'xp gained till now' (round is needed cause extended and integer)
        MakeScreenShot(ScreenShotsPath + 'levelups\');                              //this will make a screenshot of our levelup:)
        Wait(RandomRange(3000,5000));
      end;

      ClearDebug;
      Disguise('ChaosMossKiller [' + FloatToStr(XPHour) + ']');
      WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
      WriteLn(' ChaosMossKiller ' + Version);
      WriteLn(' * Time Running: ' + MsToTime(Round(TimeRun),Time_Formal));
      WriteLn(' * ' + LevelString + ' XP Gained: ' + FloatToStr(XP) + ' (' + FloatToStr(XPHour) + ')');
      Writeln(' * ' + LevelString + ' Level: ' + IntToStr(TrainedLevel) + ', XP till next: ' + FloatToStr(XPtillNext));
      Writeln(' * B2P: ' + IntToStr(B2PUsed) + '  Food: ' + IntToStr(FoodUsed))
      if PickUpCharms then
        Writeln(' * Charms: ' + IntToStr(GoldCharms) + '/' + IntToStr(GreenCharms) + '/' + IntToStr(BlueCharms) + '/' + IntToStr(CrimsonCharms))
      else
        Writeln(' * Not picking up charms.');
      WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
    end;



    procedure Antiban;                                                              //basic antibans
    begin
      case Random(2400) of
        1..2:
        begin
          StatusWithPaint('Checking trained level.');
          TrainedLevel := GetSkillLevel(TrainedSkill);
          HoverSkill(TrainedSkill,false);
          Wait(RandomRange(1000,3000));
          GameTab(tab_Inv);
          StatusWithPaint('Back to fighting.');
        end;
        3..4:
        begin
          StatusWithPaint('Checking hp level.');
          TrainedLevel := GetSkillLevel(TrainedSkill);
          HoverSkill(SKILL_HITPOINTS,false);
          Wait(RandomRange(1000,3000));
          GameTab(tab_Inv);
          StatusWithPaint('Back to fighting.');
        end;
        5..6:
        begin
          StatusWithPaint('Checking random level.');
          TrainedLevel := GetSkillLevel(TrainedSkill);
          HoverSkill('random',false);
          Wait(RandomRange(1000,3000));
          GameTab(tab_Inv);
          StatusWithPaint('Back to fighting.');
        end;
        7..8: PickUpMouse;
        9..14: CompassMovement(-180,180,false);
        180..460: SleepAndMoveMouse(RandomRange(300,1200));
      end;
    end;



    function BreakB2P : Boolean;
    var
      TabDTM : Integer;
      fails : Integer;
      done : Boolean;
    begin
      TabDTM := DTMFromString('78DA633CC4C4C070899101194CEEED65F802148289326E03AA398BAA868181894184014DCD0D026AF602D53C20A0E614116A2E01D55C2742CD79FC6A00BDB80E80');
      if not (GetCurrentTab = tab_Inv) then
        GameTab(tab_Inv);
      Wait(RandomRange(200,400));
      fails := 0;
      done := False;
      repeat
        if FindDTM(TabDTM,X,Y,MIX1,MIY1,MIX2,MIY2) then
        begin
          Mouse(X,Y,5,5,mouse_left);                                                //clickig on B2P tab
          Inc(B2PUsed);
          Wait(RandomRange(6000,8000));                                             //it takes long to break it
          Result := True;
          done := True;
        end else
        begin
          if not (GetCurrentTab = tab_Inv) then                                     //sometimes it fails to switch tabs for the first time
            GameTab(tab_Inv);
          fails := fails+1;
        end;
        if (fails = 5) then                                                         //trying to find DTM 5 times max
        begin
          Result := False;
          done := True;
        end;
      until done
      FreeDTM(TabDTM);
    end;



    function EatFood(var foodDTMString : String): boolean;
    var
      FoodDTM, EatTime, CurrentHP, fails : Integer;
      done : Boolean;
      colorstring : String;                                                         //this is for a return value, not using it
    begin
      FoodDTM := DTMFromString(foodDTMString);
      if not (GetCurrentTab = tab_Inv) then
        GameTab(tab_Inv);
      Wait(RandomRange(200,400));

      fails := 0;
      done := False;
      repeat
        if FindDTM(FoodDTM,X,Y,MIX1,MIY1,MIX2,MIY2) then
        begin
          CurrentHP := GetMMLevels('hp', colorstring);
          MarkTime(eatTime);
          repeat
            MultiMouse(X,Y,80,2,true);
            Wait(RandomRange(400,800));
            if ( GetMMLevels('hp', colorstring) > (CurrentHP + 30) ) then           //checking if HP is increased
            begin
              Inc(FoodUsed);
              done := True;
              Result := True;
            end;
            if (TimeFromMark(eatTime) > 10000) then
            begin
              Result := False;
              done := True;
            end;
          until done
        end
        else
        begin
          if not (GetCurrentTab = tab_Inv) then                                     //sometimes it fails to switch tabs for the first time
            GameTab(tab_Inv);
          fails := fails+1;
          Wait(500);
        end;

        if (fails = 5) then                                                         //trying to find DTM max 5 times
        begin
          Result := False;
          done := True;
        end;
      until done
      FreeDTM(FoodDTM);
    end;



    function ChooseOptionCharms(What : String) : Boolean;                           //modified SRL function, this will loot charms if possible
    var
       B: TBox;
       i, H, x: Integer;
       T: TPoint;
       Options: Array of TOptions;
    begin
      Result := False;
      Options := GetChooseOptions('action');
      if (Length(Options) < 1) then
        Exit;
      H := High(Options);

      for i := 0 to H do
      begin
        if PickUpCharms then                         //if charms looting is enabled
        begin
          if Pos('ake Gold', Options[i].Str) > 0 Then
          begin
            StatusWithPaint('Found a Gold charm!');
            Inc(GoldCharms);
            Report;
            Result := True;
            B := Options[i].Bounds;
            GetMousePos(T.x, T.y);
            if PointInBox(T, B) then
              ClickMouse2(true)
            else
              MouseBoxEx(B.x1 + 5, B.Y1, B.x2 - 5, B.Y1 + 5,5, 1);
            Exit;
          end;

          if Pos('ake Green', Options[i].Str) > 0 Then
          begin
            StatusWithPaint('Found a Green charm!');
            Inc(GreenCharms);
            Report;
            Result := True;
            B := Options[i].Bounds;
            GetMousePos(T.x, T.y);
            if PointInBox(T, B) then
              ClickMouse2(true)
            else
              MouseBoxEx(B.x1 + 5, B.Y1, B.x2 - 5, B.Y1 + 5,5, 1);
            Exit;
          end;

          if Pos('ake Blue', Options[i].Str) > 0 Then
          begin
            StatusWithPaint('Found a Blue charm!');
            Inc(BlueCharms);
            Report;
            Result := True;
            B := Options[i].Bounds;
            GetMousePos(T.x, T.y);
            if PointInBox(T, B) then
              ClickMouse2(true)
            else
              MouseBoxEx(B.x1 + 5, B.Y1, B.x2 - 5, B.Y1 + 5,5, 1);
            Exit;
          end;

          if Pos('ake Crims', Options[i].Str) > 0 Then
          begin
            StatusWithPaint('Found a Crimson charm!');
            Report;
            Inc(CrimsonCharms);
            Result := True;
            B := Options[i].Bounds;
            GetMousePos(T.x, T.y);
            if PointInBox(T, B) then
              ClickMouse2(true)
            else
              MouseBoxEx(B.x1 + 5, B.Y1, B.x2 - 5, B.Y1 + 5,5, 1);
            Exit;
          end;
        end;

        if Pos(What, Options[i].Str) > 0 Then                                       //this will check for 'attack' or 'take bones' (nowhere else using ChooseOptionCharms)
        begin
          Result := True;
          B := Options[i].Bounds;
          GetMousePos(T.x, T.y);
          if PointInBox(T, B) then
            ClickMouse2(true)
          else
            MouseBoxEx(B.x1 + 5, B.Y1, B.x2 - 5, B.Y1 + 5,5, 1);
          Exit;
        end;
      end;

      B := Options[0].BigBox;                                                       //to mmouse away
      x := Max(B.X1 - 52, 0);
      if x = 0 then
        x := B.X2+10;
      MMouse(x, Max(B.Y1 - 50, 0), 40, B.Y2-B.Y1);
      Wait(200 + Random(100));
    end;



    function FindMoss(ClickOnIt: Boolean) : Boolean;                                //returns true only if clicked on a Moss giant
    var
      RedX, RedY, ExcX, ExcY, i, MinPoints, DetectTime, UptextTime, RedHpBarDTMTime, RedHpBarDTM : Integer;
      TPA, MossTPA : TPointArray;
      ATPA : Array of TPointArray;
      MossColors, Tolerances : Array of Integer;
      ExcludeNearRedHpBar : Boolean;
    begin
      Result := False;
      MarkTime(DetectTime);
      //6257521 (8)   portal színe, tökéletes
      //2173227 (5)   nincs már sötét fal (eddig 7 jó volt)
      //2372406 (8)   nincs már (12 volt) nagyon kicsi barna fából
      //2309694 (7)   nincs nagyon nagyon kicsi barna fából
      //3303025 (14)  sárgásbarna, tökéletes
      //4482405 (13)
      MossColors := [6257521, 2173227, 2372406, 2309694, 3303025, 4482405];
      Tolerances := [8,       5,       8,       7,       15,      13];
      MinPoints := 200;

      for i:=0 to High(MossColors) do
      begin
        FindColorsTolerance(MossTPA,MossColors[i],MSX1,MSY1,MSX2,MSY2,Tolerances[i]);
        AppendTPA(TPA,MossTPA);
      end;

      ExcludeNearRedHpBar := False;
      RedHpBarDTM := DTMFromString('mWAAAAHicY2FgYNgCxOeh+AIQRwFxOBDHQtk7GTgYrNmZ4FgEKIaMGdEwCAAAoEoGcA==');
      if WaitFindDTMex(RedHpBarDTM,X,Y,MSX1,MSY1,MSX2,MSY2,10,100) then             //if found redbar then we will exclude points around it
      begin
        ExcludeNearRedHpBar := True;
        RedX := X;
        RedY := Y+50;
        ExcX := 35;
        ExcY := 60;
      end;
      FreeDTM(RedHpBarDTM);

      if (High(TPA)> 0) then
      begin

        if ExcludeNearRedHpBar then                                                 //excluding near RedHpBar
        begin
          SortTPAFrom(TPA,Point(redX,redY));
          InvertTPA(TPA);
          for i:=0 to High(TPA) do
            if (Abs(TPA[i].x - RedX) < ExcX) and (Abs(TPA[i].y - RedY) < ExcY) then
              Break;
          SetArrayLength(TPA,i);
        end;

        SortTPAFrom(TPA,Point(MSCX,MSCY));                                          //excluding points near middle
        InvertTPA(TPA);
        for i:=0 to High(TPA) do
        if (Abs(TPA[i].x - MSCX) <  25) and (Abs(TPA[i].y - MSCY) <  25) then
          Break;
        SetArrayLength(TPA,i);

        ATPA := SplitTPA(TPA,10);                                                   //splitting TPAs

        SortATPASize(ATPA,True);                                                    //excluding TPAs with less than MinPoints points
        for i:=0 to High(ATPA) do
        begin
          if High(ATPA[i]) < MinPoints then
            Break;
        end;
        if i = 0 then Inc(i);
        SetArrayLength(ATPA,i);

        SortATPAFromFirstPoint(ATPA,Point(MSCX,MSCY));                              //making the closest TPA the first in the array


        if DebugWindow then                                                         //DebugWindow
          OpenDebugWindow(TPA,ATPA,true,IntToBox(RedX-ExcX,RedY-ExcY,RedX+ExcX,RedY+ExcY));

        if High(ATPA[0]) < MinPoints then                                           //to avoid errors
          Exit;


        if ClickOnIt then
        begin
          if MiddleTPAEx(ATPA[0],X,Y) then                                          //getting the middle point of the TPA, moving mouse there then looking for uptext
          begin
            MMouse(X,Y,0,0);
            MarkTime(UptextTime);
            if WaitUpText('ttack',200) then
            begin
              if DebugLines then                                                    //DebugLines
                Writeln('Found Moss in ' + IntToStr(TimeFromMark(DetectTime)) + ' ms. Uptext was ' + IntToStr(TimeFromMark(UptextTime)) + ' ms.');
              case Random(6) of                                                     //random left or rigth click (5:1)
                0..4:
                begin
                  ClickMouse2(mouse_left);
                  if DidRedClick then
                    Result := True;                                                 //returns true = clicked on moss
                  Exit;
                end;
                5:
                begin
                  ClickMouse2(mouse_right);
                  if ChooseOption('ttack') then
                    Result := True;                                                 //returns true = clicked on moss
                  Exit;
                end;
              end;
            end else
              if DebugLines then                                                    //DebugLines
                Writeln('Found Moss in ' + IntToStr(TimeFromMark(DetectTime)) + ' ms, but failed to find UpText.');
          end;
        end;                                                    //PaintDebug: clearing the drawings on SMART
      end;
    end;



    function FindBones(X1,X2,X3,X4: Integer) : Boolean;                             //returns true if uptext is 'Take'
    var
      TPA : TPointArray;
      ATPA : Array of TPointArray;
      i : Integer;
      MinPoints, xmid, ymid : Integer;
    begin
      MinPoints := 50;
      FindColorsTolerance(TPA,11975103,X1,X2,X3,X4,25);

      SortTPAFrom(TPA,Point(MSCX,MSCY));                                            //excluding points near middle
      InvertTPA(TPA);
      for i:=0 to High(TPA) do
        if (Abs(TPA[i].x - MSCX) <  20) and (Abs(TPA[i].y - MSCY) <  25) then
          Break;
      SetArrayLength(TPA,i);

      if (High(TPA)> 0) then
      begin

        ATPA := SplitTPA(TPA,10);                                                   //splitting the TPA

        SortATPASize(ATPA,True);                                                    //excluding TPAs with less than MinPoints points
        for i:=0 to High(ATPA) do
        begin
          if High(ATPA[i]) < MinPoints then
            Break;
        end;
        if i = 0 then Inc(i);
        SetArrayLength(ATPA,i);

        if DebugWindow then                                                         //DebugWindow
          OpenDebugWindow(TPA,ATPA,false,IntToBox(0,0,0,0));

        if (High(ATPA[0]) < MinPoints) then                                         //to avoid errors
          Exit;

        if MiddleTPAEx(ATPA[0],xmid,ymid) then                                      //getting the middle point of the TPA, moving mouse there then looking for uptext
        begin
          MMouse(xmid,ymid,0,0);
          Wait(100);
          if IsUpTextEx('ake') then
          begin
            Result := True;                                                         //returning true
            GetMousePos(X,Y);
            Exit;
          end;
        end;
      end;
      Result := False;

    end;



    function FindCharm(Which: String; Colors, Tolerances: TIntegerArray; MinPoints: Integer) : Boolean;  //returns true if uptext is 'Take'
    var
      TPA, CharmTPA : TPointArray;
      ATPA : Array of TPointArray;
      i : Integer;
      xmid, ymid : Integer;
    begin
      for i:=0 to High(Colors) do
      begin
        FindColorsTolerance(CharmTPA,Colors[i],MSX1,MSY1,MSX2,MSY2,Tolerances[i]);
        if DebugLines then                                                          //DebugLines
          if (High(CharmTPA) > 0) then
            Writeln('[Charms] Found ' + IntToStr(High(CharmTPA)) + ' pixels for Color: ' +IntToStr(Colors[i]) + '. Tolerance is: ' + IntToStr(Tolerances[i]));
        AppendTPA(TPA,CharmTPA);
      end;

      SortTPAFrom(TPA,Point(MSCX,MSCY));                                            //excluding poinst near middle
      InvertTPA(TPA);
      for i:=0 to High(TPA) do
        if (Abs(TPA[i].x - MSCX) <  30) and (Abs(TPA[i].y - MSCY) <  30) then
          Break;
      SetArrayLength(TPA,i);


      if (High(TPA)> 0) then
      begin
        ATPA := SplitTPA(TPA,15);                                                   //splitting the TPA

        SortATPASize(ATPA,True);

        if High(ATPA[0]) < MinPoints then                                           //getting only the biggest TPA (it everything is fine, this function wont find any extra pixels)
          Exit;

        if DebugWindow then                                                         //DebugWindow
          OpenDebugWindow(TPA,ATPA,false,IntToBox(0,0,0,0));

        if MiddleTPAEx(ATPA[0],xmid,ymid) then                                      //getting the middle of the TPA, moving mouse there then looking for uptext
        begin
          MMouse(xmid,ymid,0,0);
          Wait(100);
          if PaintDebug then
              SMART_ClearCanvasArea(IntToBox(MSX1,MSY1,MSX2,MSY2));
          if IsUpTextEx('ake') then
          begin
            Result := True;                                                         //returning true
            GetMousePos(X,Y);
            Exit;
          end;
        end;
      end;
      Result := False;
    end;



    procedure FindAllCharms;                                                        //this will call the FindCharm() for all the charms with the given parameters
    var
      Colors, Tolerances : Array of Integer;
    begin
      if PickUpCharms then                                                          //if charms enabled
      begin
        StatusWithPaint('Looking for charms.');

        Colors     := [5804446,5935011,5344659,5735582,5472916];
        Tolerances := [10,10,10,10,10];
        if FindCharm('Gold',Colors,Tolerances,1) then
        begin
          Mouse(X,Y,0,0,mouse_right);
          if ChooseOption('ake Gold') then
          begin
            StatusWithPaint('Picking up gold charm.');
            Inc(GoldCharms);
            Report;
            Wait(1000);
            repeat until not IsMoving
            Wait(500);
          end;
        end;

        Colors     := [5010263,6982265,5471587,5730659];
        Tolerances := [10,5,5,4];
        if FindCharm('Green',Colors,Tolerances,1) then
        begin
          Mouse(X,Y,0,0,mouse_right);
          if ChooseOption('ake Green') then
          begin
            StatusWithPaint('Picking up green charm.');
            Inc(GreenCharms);
            Report;
            Wait(1000);
            repeat until not IsMoving
            Wait(500);
          end;
        end;

        Colors     := [6183977,8552249];
        Tolerances := [10,10];
        if FindCharm('Blue',Colors,Tolerances,1) then
        begin
          Mouse(X,Y,0,0,mouse_right);
          if ChooseOption('ake Blue') then
          begin
            StatusWithPaint('Picking up blue charm.');
            Inc(BlueCharms);
            Report;
            Wait(1000);
            repeat until not IsMoving
            Wait(500);
          end;
        end;

        Colors     := [3295859,2567297,3290481];
        Tolerances := [8,8,10];
        if FindCharm('Crimson',Colors,Tolerances,1) then
        begin
          Mouse(X,Y,0,0,mouse_right);
          if ChooseOption('ake Crims') then
          begin
            StatusWithPaint('Picking up crimson charm.');
            Inc(CrimsonCharms);
            Report;
            Wait(1000);
            repeat until not IsMoving
            Wait(500);
          end;
        end;

      end;
    end;



    function WaitInFight(Timeout: Integer) : Boolean;                               //waits until Timeout or till we get into a fight (will return true in this case)
    var
      X,Y,XP1,XP2,ShieldDTM,Time : Integer;
    begin
      XP1 := GetXPBar(XPCounter);
      MarkTime(Time);
      ShieldDTM := DTMFromString('mQwAAAHicY2ZgYGBlYWAQAmIOIJZmZGCQAmJ1IGax9mT4+/cvA9eCJwxcQHUwzIiEgQAAxXEFvA==');
      repeat
        XP2 := GetXPBar(XPCounter);
        if (XP2 > XP1) then
        begin
          if DebugLines then
            Writeln('XP is increased, we are fighting.');
          if PaintDebug then
          begin
            SMART_DrawBoxEx(false,IntToBox(524,54,543,73),ClYellow);
            Wait(100);
            SMART_ClearCanvasArea(IntToBox(520,50,547,77));
          end;
          Result := True;
          FreeDTM(ShieldDTM);
          Exit;
        end;
        if (TimeFromMark(Time) > 3000) and FindDTM(ShieldDTM,X,Y,MSX1,MSY1,MSX2,MSY2) then   //if xp is increased or shield dtm found (3000 seconds is for not the detect the blue shield of the previous fight)
        begin
          if DebugLines then
            Writeln('Blue shield found, we are fighting.');
          Result := True;
          FreeDTM(ShieldDTM);
          Exit;
        end;
      until (TimeFromMark(Time) > Timeout)
      FreeDTM(ShieldDTM);
      Result := False;
    end;



    function FindRedBar : Boolean;
    var
      X,Y,RedBarDTM : Integer;
    begin
      Result := False;
      RedBarDTM := DTMFromString('mlwAAAHicY2dgYDBnZmCQBWIZKB0ExQpA3AiUr2OA0C1QDOPvZOBgsGZnwsBdDIwM+AAjHgwFAAvPB5w=');
      if FindDTM(RedBarDTM,X,Y,MSX1,MSY1,MSX2,MSY2) then
      begin
        if DebugLines then
          Writeln('Found redbar, we killed it.');
        if PaintDebug then
        begin
          SMART_DrawBoxEx(false,IntToBox(X-30,Y-10,X+30,Y+10),ClYellow);            //drawing box around the redbar
          Wait(100);
          SMART_ClearCanvasArea(IntToBox(MSX1,MSY1,MSX2,MSY2));
        end;
        Result := True;
      end;
      FreeDTM(RedBarDTM);
    end;



    procedure HopWorld;
    var
      FailTime : Integer;
    begin
      StatusWithPaint('Hopping.');
      Inc(WorldHops);

      MarkTime(FailTime);
      repeat
        ExitToLobby;
        if TimeFromMark(FailTime) > 30000 then                                      //sometimes RS crashes when going to lobby (black screen)
          EndScript('Failed to exit to lobby when hopping.');
      until LobbyScreen;

      OpenWorldScreen;
      SelectWorld(RandomWorld(true,false));                                         //member world, not pvp

      MarkTime(FailTime);
      repeat
        LoginPlayer;
        if TimeFromMark(FailTime) > 60000 then                                      //sometimes RS crashes at login (black screen)
          EndScript('Failed to login after hopping.');
      until LoggedIn

      Wait(RandomRange(500,6000));
      ToggleXPBar(true);
      SetAngle(SRL_ANGLE_HIGH);
    end;



    procedure WalkToCenter;                                                         //simple SPS walking to center (will improve in the future)
    begin
      StatusWithPaint('Walking to center.');
      SPS_WalkToPos(Point(335, 374));                                               //no need randomness, because its not accurate
    end;



    procedure SpecialAttack;
    var
      X,Y,DTM100,DTM75,DTM60,DTM55,DTM50,DTM25,i,FailTime : Integer;
    begin
      if UseSpecAttacks and ((TimeFromMark(SpecTime) > SpecWait) or (SpecNumber > 0)) then //will enter if specials are turned on AND (if its time to check for special OR we have remaining specials to do)
      begin
        StatusWithPaint('Checking special attack.');
        DTM100 := DTMFromString('mWAAAAHicY2FgYHBgYmCwB+IjULyQkYFhHRAvAOI1QFyzIo9BSl+EwT/XkiGi2oGBC6gHGTOiYRAAAPnmCNY=');   //DTMS for 100%,75% ... special bars
        DTM75  := DTMFromString('mQwAAAHicY2ZgYLBnguAFIMzIwLAWiJcBsXOyIYOmpwJDep83AxdQHQwzImEgAAD6tQXo');
        DTM60  := DTMFromString('mQwAAAHicY2ZgYHBgYmCwB+IuIF7EyMCwhhFCt2wuZTDyUmWYcKSegQuoDoYZkTAQAAAooAdH');
        DTM55  := DTMFromString('mQwAAAHicY2ZgYGhmgeDjQCzNxMCgCcSyQOycbMggpS/CMOFIPQMXUB0MMyJhIAAA5cgFbA==');
        DTM50  := DTMFromString('mQwAAAHicY2ZgYHBgYmCwB+JaIF7EyMCwhhFCt2wuZTDyUmWYcKSegQuoDoYZkTAQAAAl1Qc6');
        DTM25  := DTMFromString('mQwAAAHicY2ZgYHBgYmCwB+IoIF7EyMCwhhFCt2wuZTDyUmWYcKSegQuoDoYZkTAQAAAeUAcX');
        SpecNumber := 0;
        MarkTime(FailTime);
        repeat
          if (TimeFromMark(FailTime) > 5000) then Exit;                             //if failed to switch tabs, then it exits
          GameTab(tab_Combat);
        until (GetCurrentTab = tab_Combat)
        SpecNumber := 0;                                                            //no matter if we have remaining specials to do, we will set it to 0 and determine it again
        case SpecUsage of                                                           //determining how many specials we can do
          100:
            if FindDTM(DTM100,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 1;
          60:
            if FindDTM(DTM60,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 1;
          55:
            if FindDTM(DTM55,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 1;
          50:
          begin
            if FindDTM(DTM50,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 1;
            if FindDTM(DTM100,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 2;
          end;
          25:
          begin
            if FindDTM(DTM25,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 1;
            if FindDTM(DTM50,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 2;
            if FindDTM(DTM75,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 3;
            if FindDTM(DTM100,X,Y,MIX1,MIY1,MIX2,MIY2) then
              SpecNumber := 4;
          end;
        end;
        MarkTime(SpecTime);
        SpecWait := RandomRange(15000,60000);                                       //next spec check in 15-60 seconds
        if SpecNumber > 0 then                                                      //if we can spec
        begin
          StatusWithPaint('Using special attack.');
          MouseBox(574,416,706,428,mouse_left);
          Dec(SpecNumber);
        end else                                                                    //it cant do spec
        begin
          StatusWithPaint('Not enough special.');
          Wait(RandomRange(500,4000));
          StatusWithPaint('Back to fighting.');
          MarkTime(FailTime);
          repeat
            if (TimeFromMark(FailTime) > 5000) then Exit;
            GameTab(tab_Inv);
          until (GetCurrentTab = tab_Inv)
        end;
        FreeDTM(DTM100);
        FreeDTM(DTM75);
        FreeDTM(DTM60);
        FreeDTM(DTM55);
        FreeDTM(DTM50);
        FreeDTM(DTM25);
      end;
    end;



    procedure LoginCheck;
    begin
      if not LoggedIn then
      begin
        StatusWithPaint('Logging in.');
        if not LoginPlayer then
          EndScript('We got logged out somehow and cant log in.');
      end;
    end;



    procedure HpCheck;
    var
      colorstring, lobs, peaches : String;
      FailTime, Amount : Integer;
      done : Boolean;
    begin
      if (GetMMLevels('hp', colorstring) < EatAt) then
      begin
        MarkTime(FailTime);
        repeat
          if not b2p then                                                           //if not using B2P yet then we eat a simple food (lobster)
          begin
            StatusWithPaint('Eating lobster.');
            Amount := 120;                                                          //healing amount for lobster
            lobs := 'mggAAAHicY2NgYPjPxMDAzczAwMcMYX8E4p9ALMbIwMAKxNxArMAI4fMC8f4EGaAuJgwsAiSxYUYcGAIAcgoGSA==';
            if not EatFood(lobs) then
            begin                                                                   //if out of food
              if not BonesToPeaches then                                            //if not using B2P, then we log out
                EndScript('Out of food.')
              else
                b2p := True;                                                        //lets start using B2P
            end;
          end;
          if b2p then
          begin
            StatusWithPaint('Eating peaches.');
            Amount := 80;                                                           //healing amount for peach
            peaches := '78DA632C60626070626440069B3B52194480344C94310FA8C60C550D030313AA9A32A01A0B026A6A806A1C08A8A906AA7127A006E4663F026A52883007A4C69E809A4CC2FE0200D76708C1'
            if not EatFood(peaches) then                                            //if out of peaches
            begin
              StatusWithPaint('Breaking B2P.');
              if not BreakB2P then                                                  //if out of tablets
                EndScript('Out of B2P tablets.');
              if not EatFood(peaches) then                                          //if broke tablet but cant eat peaches
                EndScript('Failed to eat peaches after broking B2P.');
            end;
          end;
          if (GetMMLevels('hp', colorstring) > (HpLevel * 10 - Amount)) or (TimeFromMark(FailTime) > 30000) then  //if we no need to eat more (current hp > (maxhp - healamout))       (30 seconds timeout for fail safe)
            done := True;
        until done
      end;
    end;



    procedure NoobCheck;
    begin
      if  Length(GetMinimapDotsin('player',592,49,662,120)) > 0 then
      begin
        StatusWithPaint('Found a noob, waiting.');
        MakeScreenShot('C:\Simba\Screenshots\ChaosMossKiller\noobs\');
        Wait(RandomRange(5000,10000));
        HopWorld;
      end;
    end;



    function BonesCheck : Boolean;
    var
      LookedForBones : Integer;
    begin
      Result := False;
      if BonesToPeaches then
      begin                                                                         //if using B2P then we need to collect bones
        if not InvFull then
        begin
          LookedForBones := 0;
          repeat
            if FindBones(MSX1,MSY1,MSX2,MSY2) then
            begin
              StatusWithPaint('Picking up bones.');
              Mouse(X,Y,0,0,mouse_right);
              ChooseOptionCharms('ake Big');
              Wait(1000);
              repeat until not IsMoving
              Result := True;
            end;
            Inc(LookedForBones);
          until (InvFull) or (LookedForBones = 5)                                   //looking for bones max 5 times (failsafe)
        end;
      end;
    end;



    procedure RandomsCheck;
    begin
      if FindNormalRandoms then
        EndScript('Random event found!');
    end;



    procedure AmmoCheck;                                                             //function for Ranging
    var
      i : Integer;
      done : Boolean;
    begin
      if LevelString = 'RNG' then
        if FindChatBoxText('You have no ammo',8,ClBlack) then                                //ammo check
        begin
          StatusWithPaint('Out of ammo.');
          Wait(1000);
          if srl_inFight then
          begin
            StatusWithPaint('Still fighting, removing weapon.');
            repeat until GameTab(tab_Inv)
            if InvFull then
            begin
              i := 5;
              done := False;
              repeat
                MMouseItem(i);
                if IsUpTextMultiCustom(['Bury','ury','Eat','at']) then
                begin
                  ClickMouse2(mouse_right);
                  if ChooseOptionMulti(['Drop','rop']) then
                    done := True;
                end;
                Inc(i);
              until done
            end;
            repeat until GameTab(tab_Equip);
            MouseBox(573,294,594,311,mouse_left);
            StatusWithPaint('Removed weapon.');
            EndScript('Out of ammo.');
          end;

        end;
    end;



    procedure SetupScript;
    begin
      ClearDebug;
      Disguise('ChaosMossKiller');
      Status('Starting script.');
      Smart_Server := 10;
      Smart_Members := True;
      Smart_Signed := True;
      Smart_SuperDetail := False;
      SetupSRL;
      ActivateClient;
      DeclarePlayers;
      SetupSRLStats(680, SRLStats_User, SRLStats_Password);
      SPS_Setup(RUNESCAPE_OTHER,['chaos_tunnels']);
      if PaintDebug then
        SMART_ClearCanvas;
      Status('Logging in.');
      LoginPlayer;
    end;



    procedure Startup;
    var
      fails, FailTime : Integer;
      done : Boolean;
    begin
      if srl_inFight then
      begin
        StatusWithPaint('Waiting till fight is over.');
        repeat until not srl_InFight
      end;

      fails := 0;
      done := True;
      MarkTime(FailTime);
      repeat
        ToggleXPBar(True);
        TrainedLevel := GetSkillLevel(TrainedSkill);
        if (TrainedLevel = -1) then
        begin
          done := False;
          fails := fails+1;
        end;
        HpLevel := GetSkillLevel('Hitpoints');
        if (HpLevel = -1) then
        begin
          done := False;
          fails := fails+1;
        end;
        StartXPtillNext := XPTillNextLevel(TrainedSkill);
        if (StartXPtillNext = -1) then
        begin
          done := False;
          fails := fails+1;
        end;
        StartXP := GetXPBar(XPCounter);
        if (StartXP = -1) then
        begin
          done := False;
          fails := fails+1;
        end;
        if (fails = 3) or (TimeFromMark(FailTime) > 30000) then
          EndScript('Startup fail. Cant get level/read xps.');
      until done

      case TrainedSkill of
        'Attack'   : LevelString := 'ATK';
        'Strength' : LevelString := 'STR';
        'Defence'  : LevelString := 'DEF';
        'Range'    : LevelString := 'RNG';
      end;

      case DebugLines of
        true:   doreport := False;
        false:  doreport := True;
      end;

      b2p := False;
      LastXP := 0;
      WorldHops := 0;
      B2PUsed := 0;
      FoodUsed := 0;
      GoldCharms := 0;
      GreenCharms := 0;
      BlueCharms := 0;
      CrimsonCharms := 0;

      if UseSpecAttacks then
      begin
        SpecNumber := 0;
        SpecWait := RandomRange(15000,45000);
        MarkTime(SpecTime);
      end;

      ClearDebug;
      WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
      WriteLn(' ChaosMossKiller ' + Version);
      WriteLn(' - HP level      : ' + IntToStr(HpLevel));
      Writeln(' - ' + LevelString + ' level     : ' + IntToStr(TrainedLevel));
      Writeln(' - XP till next  : ' + IntToStr(StartXPtillNext));
      Writeln(' - XP Bar        : ' + IntToStr(StartXP));
      WriteLn(' - Starting script...');
      WriteLn('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

      MarkTime(StartTime);
      SetAngle(SRL_ANGLE_HIGH);
    end;



    procedure Main;
    var
      DetectTime, KillTime : Integer;
      done : Boolean;
    begin
      repeat

        StatusWithPaint('Looking for Mosses.');
        done := False;
        MarkTime(DetectTime);
        repeat
          if (TimeFromMark(DetectTime) > 180000) then                               //180 seconds failsafe
            EndScript('Cant find Mosses.');
          if FindMoss(true) then                                                    //if clicked on moss
          begin
            if WaitInFight(4000) then                                               //checking if we are fighting
              done:=True
          end else
          begin                                                                     //if failed to attack moss
            StatusWithPaint(IntToStr(TimeFromMark(DetectTime))+'ms');
            case Random(20) of
              0: CompassMovement(-120,120,false);                                   //rotating camera for better view
            end;
            LoginCheck;
            RandomsCheck;
            if (TimeFromMark(DetectTime) > 10000) then                              //walking back to middle
              WalkToCenter;
          end;
        until done                                                                  //we are fighting now


        StatusWithPaint('Fighting.');
        MarkTime(KillTime);
        repeat
          Antiban;
          AmmoCheck;
          if (TimeFromMark(KillTime) < 5000) then                                   //we dont want to waste special attack, so we only using it in the first 5 seconds
            SpecialAttack;
          if ((TimeFromMark(KillTime) > 5000) and (FindRedBar)) then                //we are looking for redbar after 5 seconds of fighting
            Break;                                                                  //end of fight
          Wait(500);
        until ((TimeFromMark(KillTime) > 10000) and (not srl_inFight))              //failsafe is: 10 seconds and no hpbar above the player -> end of fight


        StatusWithPaint('Killed Moss. Took '+MsToTime(TimeFromMark(KillTime),Time_Formal)+'.');
        Report;
        stats_Commit;                                                               //committing stats (no variebles yet, only time)
        BonesCheck;                                                                 //this will look for bones if needed and pickst them up
        FindAllCharms;                                                              //this will look for charms and picks them up
        LoginCheck;
        NoobCheck;                                                                  //this will look for other players around
        HpCheck;                                                                    //this will check hp and eat (use b2p) if needed

      until False
    end;



    begin

      SetupScript;
      Startup;
      Main;

    end.

    But again, I'm unable to get it working.

    If you'd be able to help, I'd be very appreciative!
    Sinking. Always. Sinking.

  21. #1271
    Join Date
    Mar 2012
    Posts
    13
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by [J]ustin View Post
    Have you filled out the username and password section in DeclarePlayers?
    of course i did

    I'm using aligndude's astral rcer

    it gets to the login screen then it doesn't even try to type in user pass

  22. #1272
    Join Date
    May 2012
    Location
    Pittsburgh
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Simba Code:
    program Ghouler;
    {$DEFINE SMART}
    {$i SRL/srl.simba}
    {$i SRL/SRL/skill/fighting.simba}
    {$i sps/sps.simba}
    {$IFDEF SIMBAMAJOR980}
      {$I SRL/SRL/Misc/PaintSmart.Simba}
    {$ELSE}
      {$I SRL/SRL/Misc/SmartGraphics.Simba}
    {$ENDIF}
    Const
    //Change this to no if you dont want paint and are to lazy to disable debug.
      Paint = 'No';

    //True for it to pick up charms
    //False for it to not pick up charms.
      Charmer = True;

    //Yes to pickup Effigies, no to not pick them up
    //This still may be buggy.
      Effigy = 'No';

    //True to pickup Champion Scroll, False to not pick them up
    //This still may be buggy.
      ChampionScroll = False;

      var
      foodnumber,P,T,Z,Exp,Charms,XPH,BMP,Kills,MSpeed,RandAmount:Integer;
      DCols: Array of Integer;
      Drops: Array of String;


    procedure DeclarePlayers;
    Begin
      HowManyPlayers := 1;
      NumberOfPlayers(HowManyPlayers);
      CurrentPlayer := 0;

      With Players[0] Do
      Begin
        Name        := '';     //Player username.
        Pass        := '';     //Player password.
        Nick        := ''; //Player nickname - 3-4 letters of Player username.
        Active      := True;
      End;

    End;

                     //\
                    // \\
                   //DO \\
                  // Not \\
                 // Change\\
                // Anymore \\
               //-----------\\
              //_____________\\
             // Made by Laake \\
            //_________________\\
           //###################\\
          //#####################\\
         //#######################\\
        //#########################\\
       //##  Dont Change anymore  ##\\
      //#############################\\
     //###############################\\
    //_________________________________\\


    Procedure RandomThing;
    Begin
       MakeCompass(RandomRange(0,360));
    end;

    Function UInFight: Boolean;
    begin
      Writeln('Checking for fight');
      Wait(100);
      Writeln('Pixel shift of '+IntToStr(averagePixelShift(IntToBox(235, 101, 290, 184), 120, 360)));
      if (averagePixelShift(IntToBox(235, 101, 290, 184), 120, 360) < 150) then RandomThing;
      if (averagePixelShift(IntToBox(235, 101, 290, 184), 120, 360) > 400) then
      Begin
        Result := True;
        Exit;
      end else
      if not InFight then
        Result :=False;
        Exit;
    end;

    procedure SetupChar;

    begin

    SetupSRL();
    Loginplayer();
    SetAngle(0);
    ClickNorth(0);
    end;

    Procedure ToBank;
    Var
      myPath: TPointArray;
    begin
      SPS_Setup(RUNESCAPE_SURFACE, ['13_6','14_6']);
      myPath := [Point(5502, 2599), Point(5513, 2597), Point(5523, 2593), Point(5532, 2592), Point(5542, 2591), Point(5550, 2593), Point(5558, 2597), Point(5567, 2600), Point(5576, 2605), Point(5586, 2612), Point(5594, 2622), Point(5603, 2632), Point(5610, 2642), Point(5617, 2652), Point(5626, 2659), Point(5634, 2671), Point(5641, 2684), Point(5647, 2695), Point(5656, 2698), Point(5666, 2700), Point(5672, 2705), Point(5679, 2714), Point(5684, 2730), Point(5695, 2740), Point(5711, 2740), Point(5726, 2740), Point(5739, 2735), Point(5751, 2732), Point(5762, 2730), Point(5772, 2725), Point(5783, 2722), Point(5797, 2717), Point(5811, 2714), Point(5824, 2714), Point(5835, 2713), Point(5846, 2715), Point(5860, 2722), Point(5874, 2727)];
      SPS_WalkPath(myPath);
    end;

    Procedure ToGhouls;
    Var
      myPath: TPointArray;
    begin
      SPS_Setup(RUNESCAPE_SURFACE,['14_6','13_6']);
      myPath := [Point(5878, 2728), Point(5870, 2728), Point(5857, 2722), Point(5849, 2720), Point(5840, 2719), Point(5827, 2717), Point(5813, 2716), Point(5798, 2716), Point(5784, 2722), Point(5773, 2732), Point(5757, 2739), Point(5741, 2742), Point(5727, 2745), Point(5712, 2743), Point(5699, 2737), Point(5685, 2728), Point(5678, 2712), Point(5666, 2700), Point(5653, 2689), Point(5642, 2679), Point(5633, 2672), Point(5628, 2666), Point(5618, 2656), Point(5612, 2645), Point(5607, 2631), Point(5595, 2619), Point(5582, 2610), Point(5571, 2604), Point(5559, 2596), Point(5548, 2596), Point(5536, 2597), Point(5524, 2599), Point(5512, 2599)];
      SPS_WalkPath(myPath);
    end;

    procedure MSI_RandomFKey;
    var
      i, randInt, randKey, currTab: Integer;
      keys: array[0..4] of Word;
    begin
      currTab := GetCurrentTab();

      keys[0] := VK_F1;
      keys[1] := VK_F2;
      keys[2] := VK_F3;
      keys[3] := VK_F4;
      keys[4] := VK_F5;

      randInt := Random(6);

      case randInt of
        0..4:
          begin
            KeyDown(keys[randInt]);
            wait(35+random(85));
            KeyUp(keys[randInt]);
          end;

        else
          for i := 1 to 3 do
          begin
            randKey := Random(5);
            KeyDown(keys[randKey]);
            wait(35+random(85));
            KeyUp(keys[randKey]);
          end;
      end;
      wait(75+random(100));
      GameTab(currTab);
    end;
    Function Eat(What: String): Boolean;
      var
        I: Integer;
    begin
      Result := False;
        If Not LoggedIn then Exit;
        if (foodnumber=1) then Exit;
        if (HPPercent < 70) then
      If InvEmpty then Logout
      else
        for i := 1 to 28 do
        begin
         if ExistsItem(i) then
          InvMouse(I, 3);
          if IsUpText(What) then
          begin
            ClickMouse2(True);
            Wait(RandomRange(350, 525));
              Result := True;
            Exit;
          end else
        end;
    end;


    procedure GAntiBan;
    begin
      writeln('Choosing random antiban');
      case random(11) of
        0 : begin
            GameTab(27);
            Wait(randomrange(400,800));
            end;
        1 : begin
            RandomMovement;
            end;
        2 : begin
            MSI_RandomFKey;
            end;
        3 : begin
            RandomRClick;
            end;
        4 : begin
            end;
        5 : begin
            HoverSkill(skill_strength,false);
            end;
        6 : begin
            HoverSkill(skill_hitpoints,false);
            Wait(randomrange(300,600));
            end;
        7 : begin
            GameTab(23);
            end;
        8 : begin
            PickUpMouse;
            end;
        9 : begin
            Wait(randomrange(1000,2000));
            end;
        10 : begin
            HoverSkill('attack',false);
            end;
      end;
    Wait(randomrange(500,1000));
    end;

    Procedure LoadBMP;
    begin
      BMP := BitmapFromString(517, 143, 'meJzsvWuQHMeZLYYIzE4gZqJ6' +
            'u9VdrC50Nau7Wf1A9/Swe16YAUBQpN6gpAAJgg/wJUpae1fSiqIok' +
            'YIoiBBISnf/3PD1vfYKAEE8yNX94WsbjrCD3iUBENAywhF0WA7+ur' +
            'RNYEYRy/XduAqHZUd4/7VP5en8kNOPmp7BgCJ3K6OnoqYqK59fnvN' +
            'l5peZqVTqU5/6VEpf0+k0rn+sXDKZTCmHGz4RD/SfyWTSyskT3H9K' +
            'Od7gCj/8Sp5LIPJQ/CeVs5VLa4d7Bp7NZhnpLbfcwpD5FW54hc+Mc' +
            'gxBkpfRjt4QGt4iEMdxcHVdF1cGy4d8gitixA2uck/HwBkLn+BffC' +
            'jxblcOnzja4Tmu8kQCySrHJ/TAiJh4JJUh86F8aBYOUyJvxTEiCYQ' +
            'fsuikACVSZlPiZaQSHW/kITzAM0NjAqQAJViKRC6Xc5WTUmLBonCY' +
            'DNzwK0bBh8McK9EMiilhMqQkET5D4yv8i2SwOuBwg38ldz0l1lN6i' +
            'MXzPNa+1J0EKxXHf+EZV6SECUBEvBHBM0uVZSLFlTFcT5Zxxec9fq' +
            'TYWXTmVywK0wNrUJJqSjglkAGatcyKkEKQBouiY8GKoLJA+Lynmhi' +
            'INBPzRrxJY+8RY7PtSMVJS2Q588ZsYuKkKCQxlEMRdaaNkUpGpP2K' +
            'UMlbfmICHQuWTsBTcExqXJBKypB+CKfi+IkgJO8FtczwxZkAa34ru' +
            'C0P8UQSgHgty5I0wy0aLhXTQUwHMR3oEuspvZgOYjqI6SCmg1tiOo' +
            'jpIKaDmA5iOojpIKaDmA5iOojpIKaDmA5iOojpIKaDmA7+WdKBcIG' +
            'J2Ent6N9MuZkMFh3/lTo1kcp8JQwihSnR8UNJg1SEKUUiQiZZmGUu' +
            'VSlVQJEgGJoh8JUpbybay8NbFFhRSAggxDGB7n7AZNvhv/hEohAZp' +
            'qOMCWIwWIYM8MGN2TTECaAx+9Ks+EREVzIi4C+Fw4coNCkKJoNfES' +
            'JM0GMTkLYvTU9C4xMTFXtwSTIoIYgzuU9y2gPFUlCSMJExafJSwnQ' +
            'kICl8li0TwFe4QSELQUjgJq1IbeKaU85MuWRE4jVrkxFJLFKPJu8z' +
            'LrztwX8Tr24x6EzAygRVceLZLIpbDMKS2ElYkhKT0ym0wqRStmZEk' +
            'sdbDB3JxGeROjNMkVVGKgArAiOq1C0G0ZjtQopUHjLxuM/n80yVyR' +
            '2OoW6JXEnWTAk0C0dKUtqR5JRQIDAyEJdMAO/HRhO1TBW3R0k2dWw' +
            'GYgK+gJv5lvgmVMWQGZp4Jh0I/guAMyUxHcR0ENNBTAcxHcR0ENNB' +
            'TAcxHcR0ENNBTAf9dCBDUoKi5uhTyphTkKglVZ/SQ/EZw5mw3FM4P' +
            'YUmXGCOlaX1aLApkI4e1ZR7ES3Tg4lIIv89uHGLMQYubQd1zSFiwR' +
            'ORc76iTOKG8bJZSXMzAaQHQwSR2I5k4DprDGLzxsQcaUoCjAJubt9' +
            'g6S16BF54R7ImTCFgnjXGe209yCw4YD5hCvshXVquNCVzlqQn5ciU' +
            'lB4RWHItQM28b9euB3X5LV+ZKCTRsQAZrHxuBmg6vBIuwI2UQ0/sZ' +
            'rX6vs9PpMqYFwqDWXF84iknAQpimzAFz59Sc2FZg7ulFqTuhF/MzN' +
            'p9Y+YCoZQEiUgEQApQgE6cIJWEI2k2IVpSxfyyxBidxMhSdbRK4xj' +
            '8aCKwaD4iPI7hzGZCnyx8+VdaU047kSKzCYgTZBA5lHCkiEwCNTHB' +
            'NfQ0x5igETpIG7Nsdt+MnqDcLX1qkuBejwpNVU0glMqbSQG3aJU4M' +
            '8SZ6rqo3D14LmEyqJgORPxiOojpIKaDmA5iOojpwInpIKaDmA5iOo' +
            'jpIKYDLeExHTgxHcR0ENNBTAcxHcR0ENNBTAcxHcR0ENNBTAcxHcR' +
            '0ENNBTAfapbUZmMkLqdUGpRKRpMQ2TK3w7x//8R9LOk1wFniRhN2y' +
            'ejWibRhDijPFz6wjqV8BE7ZEaW7SisVbzyeOYVUoUiHNWQRMCIL/m' +
            'jfb9dJIgSaTPsQREySRgg8SjoCG3EvUhClH8wvjknbHNGf0UmW2IB' +
            'Tadr0GlkEJnpiFk9WGiz34bIIhg9pugHY+nxcIlTKXpi0Nx9UWgI6' +
            '2icWNfIt/cW8WZn85S+AmnOaUNabUlDyU0kCwfIgbQLe8vfXWWxmj' +
            'FDLumR7JjtCxoJlkhK9wRZgIStLMtJmVCIdg6Qf3vMGVaRA5dA3zV' +
            '8mFsABrx+QpXAlijJFKggn+AsimdJkMZQo2qUpKm4VmIvZ2bcYsX2' +
            '03WF7ilZxKSYos4R5llVfOxGoTV6UqeyBX0iCVxXDkiRSa2XboWOl' +
            'sbrdoO1JpAnS4R7LpRwRAYjSTsd3gI5NrsnrNvrRNQT+G/ym9YYLQ' +
            'q6u3O+BXVADSxkptU5EWrVWQ09aGsqaCLdqFpEE89+C8efMpbcOf0' +
            'lam8gnexnQQ00FMB9tjOojpwJD87TEd3Bw6QFlYE/+FNd4Z+Jsc74' +
            'xt/fdjW87Lb9uW8+nknyZTaWv8/xj21fjY781P8HMSxz+edGC7rjX' +
            '+5rCM4LdtrNOTF3vyfEwH2z9yOkARWBP/5eiCOrHlvJf9TsZB/X4w' +
            'uqBmrOMfTzqADFnjf7NeQf3D0oGd9VD4yfGO6/ylZT09CrZkM9+K6' +
            'eBG6CCZSlnjfx0hJ/hNQFrCkr9gNpZk8s9se45JRQ77SWF87B//aM' +
            'v78hvb8n568q8Z7zA6gEyan+CXHH/PXd07SCS/EJHUsa1/1yPV2dS' +
            'xrnRFQjfyOLblXfNDC99m71VfDS2fibGONfbvI0Hmd2YJEGSG0UEy' +
            '9cWoWhj7u+g66kn/JGjUvc+a+MuIxJt1il96/LznLYXYFeY6Cj0GS' +
            'gVKLJP+dja7cDPoYE3mjUiS6y6S8tBu+0mhX1Ad62+Y/mF00C+omW' +
            '3v9fQO1iuoXuZFlsYaIjdIUHO5A9FVtl5BBbTm3e8MpAP0o9asiNF' +
            '/Sqp/fyMhTIaB/ONYmOzr6GSNn3Dd+2I6GJ0O8Beh2A+Rww9Vsb8z' +
            'tuUNAo7t3BsRiAKcZSVg73VFd+x8Oj2TsD67pmRK/UIyXfvbSgjXA' +
            'Kie1mq2mvTEeVSZlejVMSyFBuNb3h/fujy2dZnNYXLL+1nvG469mM' +
            '0spDJudETW2IdrpkRn552I3oHqZ0VB98TW5VFyreO6yFz3q1X9/vU' +
            'nbyBtSFNEMkaUinz+/k2kg4EYvq4khcyeOxARSL+gphQzRhD0QEF1' +
            'Mt8CZGyCoE4+NaKgOrmvQ1BzzuLNENSbTQcsw21b3r9BRmBQ41t/P' +
            '9atwYu6s/BiTAfD6EDSE3pO2xHDNaM1gYtdIt72xpr+BXBQR5nUny' +
            'USn4uuVlMyw57I5H+zAQmh1me21sS2/2Wthkk0AIa84VjnISEDaYi' +
            'ex7eGbTMapfsg9zyClSFoOA6thDKZz0fjMNHAGvvdmlk2c21NXBg9' +
            'belJqFVXN0Uq/NyfC5hwTJ6DPDIgnFOj7hwoINSwQIQy2MXIZHMRw' +
            'zXrE9SJ/3F0QZ1Q6nEyvW9dgpqa/G8/ekHNKAVjYO/pRgTVTZxnBc' +
            'nkCOoxZGcoDJtHB9u2/u7GuaCvcK4zLLUvGTeTsSzcyEwEx75oV2Y' +
            'Sn6t3Bb9FbxeW1dZ6rrYJNFH6Fr3rlAC+rSdMhQgcw1pPqMGknoy2' +
            'KeJAiowZZrTNoSSmh0Qk8PTqbeWyhvXmQDpIJD67gSZmlDm6ZstsA' +
            'uOhwj9SJ5T+SQegymEJ6PlkYuu7G0sk9D1I2vjWD3VQ71njwLr/db' +
            'h/ZOrDVdio+pvRvZLRla416QDXaAVvYmztViNaLrMc1s740NpZ7Rl' +
            'FfeFGGqYpFd0ZH+tELrd4I3SQynzpDyWopAPbzQ/jx4+PoKbGT+jB' +
            'oqEovQFB/QjoIBzc2/LhJtKBNUgjcpInYjoYRgcKitfdLxhe5u91+' +
            '+MTbw0UdRNw0MqssfOZzGxE78CUTPQiJ8b+ozUeNWY+SlK7DXzrxQ' +
            'jB6wFSqJTpcXTbF6PpYM0xHHNcmvKZS50YRgc9QxM9A9QTW98fJb9' +
            'jq1TWsGpy6WNqIrW362FmWQX+/2y6VKAlbpgOFBRvnAtuUFBT4+fz' +
            '+V0RvYOPj6AiqaDdNabG1i+o+czJj4AOJraCDv6x5zmpViW499UoY' +
            'Rp0+R6HCj3vQEwHPXQQeggNDNaYOB7lJ6qRGr74D2t6G32wyBTLaH' +
            '1mJNkIVa8PqXopxPv/RpOiMKkJJUXRwr+m0rW6lYXC6aVPFAoFyF5' +
            'BOYof2lo4aD/5y8i8jIQ2JlyMb3k3QiUWn5syeNtX3e+Zo0bFYpG8' +
            'wEZHgpAn9ABHzMF1lLnsdSVpvYKKlBdyf56yvzpKzX4cBBXodiPd2' +
            'H5B9RUdsEbMmkLlWZPHb7xqrOsktW7Mj/4NnERDFiiEgvlsfcwjGy' +
            'OFk/RHcy9yh2MsqZPJBVcf/GfSwS3Grtq2cTKdeHBWLxu8xVjjmdb' +
            'H0olFmYTgGuslbX0Gn9hS2vo4yIxxTKHMKYhZYD8d4BWYY1MYgWAS' +
            'jST946ugg1TiZyyHZMqOqM3JsTVmTteRVNWCVFL/IdonYUGkiICWc' +
            '74dKkXZrCjYZpM0kzo+8femPt/z89IXCtr10wGu0booGuyIHQSzOV' +
            'hjv1nTm2aEv98sqZDqprWS7+9eLx2EitlatpE3VVBDGzDnpVKphPR' +
            'ksoVPhKC69rdRtqZNwlBB3RYlqE7iAgDktttuG0gHincG9LDW+6NF' +
            '0LYty5s7WDQRVuWHZl8PdOnY96GvF9OBSQfKvDPsfSdRbpMDGKFHe' +
            'KLBRxQqszkoe7bf9fvRrezdNXsHbGVmmJMIs28co8c0LiKp4nOzdO' +
            'BVgYdpi9Jt+k3Tb6B3MGripR57pp63bbuO/5xeRKtRRRdmIQU/iV9' +
            'vllSYajY6COuiAyfnU1BVkgZ0zT4CQV2zd/BPXlCH9Q6iGUH0gYmx' +
            'DyGx/WNBJvPqAhmaMBn5hDdlRfz7fqmOSIOmyzeSaugvpoOBdDCwf' +
            'U2E8nC9iaHMJ7edTiSe6vEzvuVDqQs0h9Db8E7osKnkaDqAGhytcQ' +
            '0yk34nmXw5Yqg52oahJ8D+3zAJ3Bb2dqOwaPUMXdgHz1rnN9Y7GJ0' +
            'OLN33j244XHk0sfX8sGLpl4oQqSbOJFPfj5YKs8Y5e74xOhgxScnE' +
            'uWTmB5srqKPQwQYEdWLLO6nUzz8RgppTU8n9dJB2/Cgp1Uw9MbY8M' +
            'fa7bVt/Y21915r4r62J0xOT3xvb8j+ZqZ3Y8r5tn7HGhxq/XQ9t6/' +
            'uKR/4Oqn4y+4C1jryEOkk8WNRPB4mJv46Qw9VTkO+CVd30sYzzxeh' +
            'FWONbfhMBOKTpYQoA63d8yxs9IaxznDNsvLnUCWU6u8FWZgqegFhS' +
            're6JnjuImKHrX6mUHnsfIgeZFNkzZ6/CqeRIOpgcW8cQa9fCMJIOw' +
            'vHqLcuTIcusrZ6ZUmFn90WXydiW3xhfnc9sOx8Ee5lxZJMjMMgyng' +
            'jU8CGeQPNMWRfWJajl3MvZ/FciRjA+PoLqpk6oxbZDrXk3IKgWF3o' +
            'Ui9ElMLqgJsfeR+0EQXDbbbeVlBPtxVdVFTF3IJo5iXIi7OK9m0r+' +
            '61Ty2LbJZ1BZiS0X0+n7fP8ggkWAqqMxnA6krxHSwT+Ob/0He9v5h' +
            'L1rMuxADSXiPsOAUAJ9fzczIu0O/xL8fcNRS5E1CJ7eXoYg7KnFzs' +
            'Rh3sh6c5lido0NNLJ6W4NbjC0Z6barbQYF2LfrrSm36xXonD6Wie+' +
            'sPpZUwjQ5xTZc2jij01an/UogJh2stS/EsiG679qJY/gaIURo8sQT' +
            'pbVu6uhfiHtrNwfRZNAcIF0oE8v6XkQrU3A6rLH/zlzdAxTN5/+17' +
            '+/NOYtr0sEo/VZzySQks1DY008H4bqDyMGiCDoYmIw1x8y1xjg02H' +
            '6pcFMvQiqiOzJ9jfGNddGB6hoMRcv+JOUzL5XLd+LDlP2Vj7+gAre' +
            'RcSv5zGYJquP8q2x2Ke/uWpMO1iuotqq1fjoAjDKizHgn5z8zNv4i' +
            'UyJT4X9kzFOkxztZ55cTyT+hH00H3yY4I8Do6jZ7ByiTsa1/DyUt7' +
            'd4/uXUog1iDegfokouMxXSg6WDEAnyX3SvJmqN33N1m3TFi53SUH0' +
            'cR+7vb0Wpwn8Z10UmeQCWG1lnhgtBI6F6r8RpLWd8YpXewfv3wjby' +
            'aO9hA7wBa8XotWMbDT6IGi9YzgPAuly1vN/YWy6pNnieSdw0bu8hs' +
            'e79U+jywGqrmiHQQPRbRnyQ3cb5cLnOsCYHwfjLz+Y+hoGaV2W0IK' +
            'ZFWQOsV1FF6BxsQVD9zcmDvQOjgBn/cI2VbuDRmqMlcHx38A1plIv' +
            'WvrPH/d81PJC+JLVDADsZ0MDodjBmTO9QQsqlj/XQgY1/b1RZVzGP' +
            'ENgg347c6qe/Rrp504IQFOHThUvRsWp9GcTGX6K5njADqdZpzh6kd' +
            'RgfoHSQTA5RGGS4e0ayoJ3k3Qgf9UpG3X+ynA1p0A/DRvng1AQT3m' +
            '0gH/UkqZV/qpwO5QYy4oSL6BxdUL/Nid+za99PpL2yWoIKjOTCOVj' +
            'Csi7QBQf1I6GDoAF3Xj+oQRfsZGKxZPunxsD8e08FG6SBc352wRjI' +
            't3oYO+HDL9k3/9c3NvUtDUKGDiH0eoltZnzl3d+4geqR3zT74uugg' +
            'erBobJCCuuaPNTsQ9tfUGPulIpkYSSoGmqmMSAcRAykDk5RKnhglS' +
            'R8HQfWy3xE6iNpedZ2Cyt5BNl/cXEEdRgfRcwej/0YxAN5YmCZdps' +
            'ff8P3dTHlMB6PQQV/3KhTdRHIkVSp6+HRjFRqhxgy0ABE6QOEkU18' +
            'a+u3wVtYzm4aQ3cRFtAWU5FrWPlGppW5jtjL0W/PedzdGBxGWRazB' +
            '9ZJFNB30S0Vo1JGOwmr5DcSWG6eDgUlK2c+OJld/eEEVOoC4Rux3u' +
            'i5BzUxeZAc2YupkzdT2C6qaj3tqGB14uXv83D3JzJdvsADX7B2s69' +
            'c3r/S+m/rPwQVMfEwHG+gdyMKWRCQ0GVUw2NZuTW1kY7+BrayU/y7' +
            'LMxpRo8VvtcFGqNAm1Ax19KKb0YdkxQ6kaIdKFxyllALJ7drWnDsw' +
            'kfDG1aroMeqBUpEcTRUf2CcC1CPXHMnh6A1bKB2RRw1EXFxXklKpk' +
            'yMm6Q8uqKSDEDQit41dr6CiGxsED27W3IEpqBzoYwVxuA/XPCKa7B' +
            'WDDew+tLl0MEhVeKNQOIg0i1kpDUpp5yxP4NgYOdomxqjb9Z4qpAN' +
            'z+xTiMAfMs8b5pK5xoIOJ/Fl9Qoqjj2LJ6tNghUFMR/T29OEX3AqS' +
            'D3P6AAszFkef4SuD+bInqqNO0+DuHPh244NFo9HBNihdN6E1jZJUk' +
            'dtS9iXWThZ0sNHdVPra70Wun6LOoEIevNfNeodkh9FBuK3QRi2LVO' +
            'I/XO9E8zrnDt79COgAzvYq60rSiHTwcRBUzh04qolueMF1v6BOgg7' +
            '8p4hmSlAHWN1sTFAH0oHinSjDnhF/mz5Y1Lf6LLTiKxbviOlgvXSw' +
            'WhgUHUz8V6NUQXQrMxdabtv64Zi2Q9vwun5ZmWgOF7ij0UH0kKw+R' +
            'OP6Bgugg7R1wvV3b57BRhQdrLmNPDIevTppXaVq6GbrkIqkNZJU3D' +
            'w66E9SKvHvRknSH1xQrS3n7dHoYL2CGh47kjiZK96x6YI6kA7CIb5' +
            'w+mAkxWBNCdzcuYPVG5u/MaZPtYvpYBAdRK/0vL5N4mS48ePaRwyo' +
            'JTO/37Z16K4jplWMuv9tiLH2txPWC0Pb41Z4/nB86+/Gtg4Gq9U6w' +
            'Ls8qcT3d6PQrOQPBiZj2KYNAxOgQ0YhvFH0vru2OXekMPcv9swnQ8' +
            'PIHTt2EB45XBlK6Vo7g61rVfIov+h1B/1SkYRUjLCff88uBBSnYu5' +
            'lAj7xpFqtmhSAm7JyeOt4hWFTov1JSiFJ1n93kwQ15z+VTP5sEwWV' +
            'i6FQ48PmRzYmqBNb3kDvYM31XOsV1Jyy4EXtQFZRX6wj1F00X0uux' +
            '9U+FZOhdWjUMuo1B4ukk6W2jR2w/WlksV/fNUvmCGTGipNZuEe+kD' +
            'vIHv6tVCq+2rhVDnsV+oCf7frs7Jxx2ixN7Fx1tiy/whVBZfXppUR' +
            's80AoVx/caQYi0XGigZMI5nPzxCh57uiTc3kV0pHl0r6xcesqOogY' +
            'rlw1IPkujZld977ojSWH2WP3BKsE43fbxn4XbnCN9pu+bzKUgf87Q' +
            'jKtsZEGMUQH8O0X14TTCO16UCsLlS7QQcYtRqdkPab772+YDpROuL' +
            'ZyO/pI7NgI27/0SwUYoVh8ILoj07cd3LvrooN8aBE6dPynP0kpNXL' +
            'uBUHEpMMGBDWcN3cf/EQI6oQaLFrTQHe9gjqMDkqVysAKCpd+b13m' +
            'RlgMB/2R5HjHz/2VH+xN2X86seXC2OQJjsEitFqthupGyKFCXi4PH' +
            'uPqmxEIFYD0v4nIyPgqhSEs9lzqxZgO+ukg+hzw/pG35Pj5VCZqiG' +
            'nNnwxi6A0YL24LBxxen9j2LyMEfs3Vstaqma/usUepxNDeqwjVtq0' +
            'f4jesXQzQK7ZBH/6rYW0nOrSedBJ7x7deCDL/TuFeLZ//ih/sz+V2' +
            '+7nQEC6b862J1yOCiugdmBChEP63o9QOc7HGdsqDxmNHlAq9gf/1k' +
            'x/zmZNr0oHauCCItpnsSZK97byd27vpgmqnfjU58Z99IgQ1EwrqAO' +
            'G5EUH1U6Gg+j4Y/ECpep/v7y0XwtXf+WJlYKMws9DdvXDsNxNjf5/' +
            'c8i74eiwJOng/MXkiYQGcDwod+NVqVO+716r2IuigWn3YSkWZkxks' +
            '/K6wcEwHPXQQfdhWn5i9MTm29oTRiDN0crSHqh1A0DvW+P8V0cpGW' +
            'UNqnmxija1xFhU9r7mSy1Tn1B41a1iqb2Cl8MCfUl//9+jjuiZHow' +
            'M1GPsfR4mUh4WtWSYbkIqew+jxy1u/GbF3gHZk54JNT1IsqJslqNs' +
            'gqMPXEQ/bhn1s6zVuMEVOnAxPYn3Ttq7mSj8aZZOKHjqIlpC+pevh' +
            'JooxHfTQATylI00ZNyAb41t/t2Zz6DOWfi+xbe0tRzbRILlnqfuNh' +
            '6a2juluEL1ZrcwcARgPj43r1fBH7B3IAAK65HY+b41d6fHc3exU9e' +
            'v1GO+m7djfkxiZO6gUv4eGhnbHqzRA7pMGB4Lg29C6PQhsZ//mJml' +
            'jgpqcjAW1tyQ393TjcBPssXfHx347sfV/iygQoYP0lvO12qHoNXcD' +
            'B74oaRyh5RQ5/+W6dbyl7HH81tPno+X0md2caOacclYtxue0rwC1p' +
            'zdH3a5OjuMT8dbdnERNEzMcoQYyC7mD08TCFOJBiCanzhD0DEc2MS' +
            'evt+uFEtzOVELooQN4SzvPbMqRIvKL3uO3Z1aRums282I64wwctup' +
            'ZDrMpB4v0DKSoEfg1zhYZPVi1bfK6944YUlC9eJVGFNvOKG3qnWGl' +
            '0b8dJUo4Y7/U4y2Zutqvl6oNrtWZZVt/syln35hSYXITzVRGpwP8a' +
            '+ee3RRrRjNJ6xLUiS3vl7yfu4WyNX6t338sqJtVL6NvA2jSAe2dhn' +
            'Uk+3c05XZ8MR300AEeqn3eNo0RovvgffXybmr8vOctZVKfz6Sesu3' +
            'PhXvUuPmxLRfMTjfBxEKLGP/vb/D8WatvlxvV/d+EjAuAbN5gUXez' +
            'Sn2odG/jndw2dAjIOBurO0pvjTB+YtaOGmK60aKW30CrxXXRQTinP' +
            'GR6cWO/9Qqqs+18tXp33ttf8A+Xy/uRNqdYARz1C2oyFNT/4Z+PoG' +
            '5272Dw9q1D6uVidgJ08Jl19g7eiHsHw+ggbWdv/ERyQ9KiVIWBZ2N' +
            '52e8M6x3wp2wD3ukqaVvf27Ds9Z8VMrnl3VL+u6kbHoiYVPCiU/gR' +
            'KV0Rg0V98v9O1jofvfmPtbqtqVz0nuS1KcW+gcEivhqmmd+M4u0XV' +
            'KS5WvxedBpuqqCGh+9k773xjG+6oA6kA7W4eyPZX2fv4I1RBovi3s' +
            'HodNBdQBFpZTRaPa4652JNOTeX6lvWU6N88kdds+rzVuLMBuQ2tAk' +
            '3pGJyyzvF3PdKpTtC4/Zwl/VrG8y4svkUKd3E3sEwvDLGqEcsZ7X6' +
            'Jvfn0cuc+5WoDEhkeCtbl1RIsM74O5XKXRXl1kUH9BZtZbSuJK1LU' +
            'EkHVuq5UT7ZdEH13acKhT0ojejjANbI+M0R1M3tHaCHRcMnTamrjN' +
            'yGDRYN3ChjoBBSsGM66KcDc30cXPTxYSP+pA+u1INe84aBdJB3v7P' +
            'mGfE9I89e+sR620XfTsjvBO6/4X7LIdpUq7bz3AYYAcoMVx4ZYyz/' +
            '56a0srG1NvKN0KMGopmbeyq6xPqVKPTEc8W7blwnZw2KsT1+QfaVq' +
            'akptCk0OiC/SQ1siXXlKtrRIp0ckStWbpARrPULqqXoIFo/7xfUXO' +
            'pErlS9cUGlCVaIV+Wy7Ty7gewPEtT/cINlaN2swaJ1zx2gfPptTem' +
            'Z56ZJbWYn3ncKX5zccrKU/y7KkyK3Y8cO3nPVQ1k7MX4jtnMJM6GY' +
            'C4G5ASMfEmaJ/MR5/pvXjlZAudVGSkIEcgSnWBbR3olx8Z50w4e48' +
            'fXZnbzn3o8SgiSDSd2uVy6TpBhvBB3QnAmBbHgfeDaH9fYOoulgoN' +
            'KFjjNrJ+P+cJiVsuoXr9rSUH6Be65Wq6GuhQ5EF8VNMuSFtSdSe2Y' +
            'PVRN7z3V/VSvtQ+BqoPui+JwIm8w6LENucLDIGgRNfuZktD1evxIF' +
            'OoAmj+ygZKz0j25EKswaDJyTgPoN0wH+pc52g0lal6CuSQcDBdXP/' +
            'TkRRtlsrFtQK7nXmHehA2IUu0vJkBc2IqgTW97L5X5VD+4JFz/W6z' +
            'coqBHLITfw2zAdrGlrqo1a32NzcBPnYzoYhQ7CsaPU05nUXzrOF8c' +
            'nXugRVDFU6xFdNi5p+176wkRqFyClX8hFP8k5x8zcwaHAJ9KfG/bJ' +
            'JJDcf5neWDs85YR77Sbsb45tOTvsw2z6rO9/1lPWwqjfCDpQ48Nd7' +
            'Wsy+RtI0aqmtHV5Yvz341s/NEsgtI9yThSCvWaP1RnvBLXD2ya+Z8' +
            '4qprb+PpH/xdiW/3lYHgcmPp9/eWzbyxF+kolzEW/zmYu3aceDYOC' +
            'S2VLEJ86294PgC2gmKBPSAUoml33Oc0+Vy/ePJ1/emFRU3UuTzmdu' +
            'sHcgdKCS9CPXOVnw948nNpikgn1x0rk7QlBR/vXgXyAxTCfTNj09P' +
            'ensi/6EBu1EGC42h0NGlKAOrq8JNAr7HEqe42aS94F0oMbNrnUFNT' +
            'WSoCL8vPdKUL3bXEdsj3f84Nlt254yBTW59fdWFkX67roENWX/fHT' +
            '/a/4cGwD+2rC36S3v12rfajQakE+WD0cUUdQJpxARbC7xvqxzielg' +
            'FDqQh7hPJr6eSh7LZu92nLtc905ZMaFy4eO5593NATS84jqOidRn/' +
            'ijcXfwCUsgCkf2g5FtEZ46DCR2Ye5qVjOO0pBUMowOuKKF/NkBZ1i' +
            'Q7pI1CB0Qkrwyt6ZrtXJBW5rqvj6GPmX1JFkmlc59NbjmXz/8naL8' +
            '0ckuNd2rBKQReKJfHJn4hEpgCElb/LF+rmeJd9V5DRBBF+EdouOJe' +
            'dnLDEx4HYB4rJuOZuGftM6f0IDIsIchx5/10wNDEmVjHFgHPPXQgK' +
            'A3n2H9qZ172/S/gh+yjUiSdea+Yz3++2fwqPieksy9gZb+MXAfOJT' +
            '7fFDqAIw4gkW72W47982LxS0FwT60W9tHolK8mHlYqX0KYzWYTV8Y' +
            'ymfkCklRyLhINzIhwA8yHT6a2nw4YMj3QAZr4LT8ZRgfcJK1oOGaB' +
            'fsxplGg64L+cTHHciyKotn0OglrL/xwpZE5t/wsQ1FLxz8rlLyI9T' +
            'r4KQa2XTyGdQb0+tu06hidRQcF/anueSVjF7FkkkuXGnLIQRG458C' +
            '4SyBtJLb+SSSJxzBplkrteENvZHvEV/LDMdSVW+WHNcAPpQC1VCWS' +
            'rPdYd08NAYjrYMB1sN5a88ZXkwtfHtfTQQV6twmOyP6F0UK7Xc9lX' +
            'POdk2HwKZbS1IP+6nXnKzXxX6ECi4AJG3lNKU7kylKVa6RcEFoZMq' +
            'Sbs8/6TSwdsy+JMOmANAj166AAtFw+ZzZtBB+Kf+GPSAaGMr0w6YK' +
            'ERKz6hdADgQ//Iz74SWkQo21ffPefY38s7Twsd0LMgIfPLlKfzdXa' +
            '6WRT0jGYi7Y6tKaaDf/J0sF3tp8oDd/gtY3HVumamVqbLJZDtxv6u' +
            'Avjyr+zAJpPy5kpwySCzJl9JEZnARYxlLZNQ6PBVSZ/HRFmVG8JLD' +
            '33Q8SHCQS0DiHAPQaKkUdgok4KN8OO5B8AI9fphBJp1flFw/8Kx73' +
            'TspyqVhyUKExIpb03lCFBsO2yVJAI6gAn3AWObwr+ItKEcsZSIJ1n' +
            'gV0yYEKWwkiTGhHre36a2ghGx53O2ZbYdBsvEhLqiAnNp0YQ1Njpk' +
            'Clf8e/vtt6Nw8MokULH/YciIBd7wCXzSPxyyKSVDx3vBfKkL3PMTQ' +
            'iJTQrwlBJEW+RDhC8gT+eEBPvEK98Rt+JEnTJgAGvMoZSVcgGu73R' +
            'Y6YN5ZlYL8jJQlg1e4abVavGFOBVgoXQJHrBQqJKQGoSeBIHoQRsA' +
            'V3lhofAhvzLLr7IegVirPQVDd7L/IO79ws5/JOk+Xyw+xRbDEWAKs' +
            'Dgob7pllwWd6lq+EieCkHlloDARXJpjyIEIugsG6QDpF/dhhONYm6' +
            'xc1xWKXhsMPWbaih7DVsNhZ1AyEFScNgUVKmWRm2SIYPnNnfsh7Vq' +
            'swCK7kJrY40SqpiAoEEdAIZQLj8q+J/1RlBTaJllSzqSrTJwMh+5A' +
            'LqEh4xmFtvCHSir5N9hGWMTlI1Ht+TgiN6WB0OijUanb6YjFzqRLS' +
            'wb6c+xe58p+mEi97yZdjOojp4ONDB1DlIah++mIlpIN7oLr49W+lk' +
            'z/PJV6O6SCmg5gONoUOIJC2V0mPdyrFV/K1Wib1ei5xTo0Chedvxn' +
            'QQ08HHhA7wBIKaUoLq1+vp5Gt+6vV0vsYt2WM6iOkgpoNNoQNIcNE' +
            '/XPKew32mMDW55f1C4ede7uF89sGYDmI6+PjQASrV956DoOIJiMDa' +
            '8n5Q+kUu91A++0BMBzEdjEIHecPJ1IbML0uYgv857QTk5Z5JIuwTn' +
            '4t621hKNWMXOvCNhX6kA/5L8ROY5T3bDitXYM03ZooFOREvPZf1vC' +
            'Sbkkgd7inGBBy2BQEE3FMCZRoU/3ru4XzuVKNxEKHk898qeX+WdR5' +
            '27KfK5TsZBVsZw79NTb+y1fBzBkUJr+hZSKZBxN6cYGVjF6g0WwfD' +
            'YdkGesacBVXT09OCqNI0TOBls6rpGUbeM7UVPQMrDg8Jaywo3MzMz' +
            'LSVI3+xVEklgZoT51fMAjwDGwm/JAI8EehG9vEWz9lUWVb8nOGwlA' +
            'QWBHwIBXzFMGdnZ5lOBM5q5T0c3uJfXDkpzJQIGJpZJkSwoFg1+Fd' +
            'SK45pQH5nlLtdO77iQyZPykFqh3UhgiHTr6wmUWYkgyZyMj1SyAww' +
            '0CYKTHM+92PfexWCCoks+N+uFL6TdQ5lnacbjc8KetORJVmVLGphH' +
            'EqpsDATz39Z7xIO/mWZCBcL8tOJNApdCo/wSm/MEb6FPPCGr8QDom' +
            'aFmoIhOoloLAIOvLIlkkBN3hdKotZBxc+cJedzEUvmvaRNNUTtyat' +
            'JZFZfTq9BzuklyYRr0WBL2vBDYLOgHbGX9zLvnNOrnkWLllnsot6F' +
            'mw/FogZX8k5JTW0LB3l6ZpmQjqvo5/g2poP10gHhiPKcdb6VdX5Rr' +
            'e4TbSqmg5gOPiZ0ID04ODf77Zz7F7XaPpZeTAcxHcR0sOl0QGkxO9' +
            'cxHcR08DGkA6ZTSi+mg5gOYjqI6SCmg5gOYjqI6SCmg5gOYjqI6SC' +
            'mg5gORqQDYru3epdUTnPn9Co5/ivQTT/MhUkBLIqS4QjOt6oFmHzC' +
            'NDPLUjK3apdXU+3l1UsyaY1Q1isfK8rehln29eR4RVlc8EPc7DAsH' +
            'CrasXEFegkqwWFaObH0oMBAJtmWdygbDAohYYHiQdAoaeMfE6uFUE' +
            'wAwROEyejgh21QWiUjYstiFGyABCvKLRs7hVl4p6xXfdLt0KZB/La' +
            'qV0CXtU2OEJnpx+S+HdqQA+ksa9OXae3YfpER+JmbmyOS9zMIXaDs' +
            'Q1BoLEx6pmspJ5xIdjYxgWDLimCZmKzElPB52Mbn5qaKz88pJ+U5p' +
            'Zc/IwF4zgTwIf9l1FL4DJzlQ8GQJIFo8BUeMi9EUQTilevTlbOF/E' +
            'PTtVfn5+fxRKKDo7QIwwpB1/QSWhYm67es7XkonCYF0FxHghKYohC' +
            'K/RUBXEpJeJzfssRYKawCFhFLDFf4QdYoKiY5itojyo9UIqWXhIJv' +
            'cb1NL3mWwmfyGBrpkuLN8hc2YZkwzaIt4BVzVNdmRcJczJpUqGhck' +
            'nIBDQohWytjJIkQ/1kybALMFGnLlEOWJ3We2/QK60CZ3vl6AwTCVA' +
            '+U0RWMPRNw7aEAE9iJqPTMcIQgxA/tiIixPSxT0Ds5CAd5fUuexdG' +
            'eU/T2Pjr40h+EDsLgcveYZZhFUM4za9JBIQiy7j7P/qHnHO+SQvHe' +
            'fjrgXpcV7yLYoqR2S6OE2N7+lHXNGu9uZZke71RLrwgdBMGBCDqol' +
            'Bvl8v2Vyr39dFAAhAeHiwW0nfvQYrP28773arP6akwHG6aDcr3VrD' +
            '4fQQdW5rC5ZWU+c8n33q4WTwkiAeas5FnxgLqea54VOgiqzanK8yj' +
            'sZvMB/Dnpw7nsK4D3fjqo15Dsh4QOapVHyuXDYIVC/nS99JOBdOD4' +
            '96cTy7K/HMVM6ADSgqgj6EBp5Aeg7uAa00FMBx8ZHVjjb1JivcxVk' +
            'w6SqS+Zbc1Nv+n79zDladvjw0L2rYF0kHFL4qGfDpycn568mp58K5' +
            '15K5k83r8VbcG5Gi428PcPo4OeM1wA75nkW0XnmtBBz5FVKTTG4iV' +
            'KCGgjZb1iJa7vbOxYnXLhOYXBB7ygJkwx7IfQguCUNXlC0UrY0i3r' +
            'Wo8fPPTtZeBMTAej04Fsszzsh1Ktl15FNQ2kg2yiA/ooVQ5mM89XC' +
            'pfgx80/ZCVXBoZjCoA8zKWvTU8/2E8HgFFr/O3+cDKo5dKr1ngYhZ' +
            '/ogDKEDgCs6cQpUzAgZlAYoFGEYuYfsBKXTImqFF8x6UDJYffbsns' +
            'tpoOYDj4iOkh0jzZwM2+59vc9b58TckT36OQk2kj2L1Opp63JLmvY' +
            'k51k+vvdT5KdgXSQsr8qHgb2Dmw3H31+BxpIwT9ZKd47Ch3Y451i8' +
            'YdhjyD1bM5+KwgOp6yTPRA9peig4Acp5zknfVEwAVcnfc11TqKpIg' +
            'rPP2wlTkeDEpu25/7Qsrrwle6jgyxCTizHvYP10YF1as2SFxhPW53' +
            '+Q3lqxbenKgdD8Gw0/OLzAzG8+3kfHTjWNfD7wN4BkmrZR/oDKSQ6' +
            'rv2qlb3Mf1vB26QD4GvaPZzNXLK0tkAx89xTjfKPQzHr0zrsUMd4t' +
            'p8OPOgq5funpg7GdBDTwUdLB1fd7D4nu0/6C5Bh132anQUr8X1QQz' +
            'J51Ul8IEfV5DNXo+kAHvrpwM35Qi4h44Bfxq8mk28lJ1cRRJC70N8' +
            '78CsVzznZ3zvIJq9Cw2fvAC1R6e3XsQLkMlU5hXA8UIk+e73oXxK4' +
            'yKeuQWcLe/G1mps4nc314hIavpW5/hBYlE1dtdDLUIcaFIJT6NQHw' +
            'QGZOwiqD9SqDwTe8+ggxHQwIh04fq3oXSjlnq9W70u7B0zduDsLU5' +
            'my7FdDgLXfVjB7KqOU/1z2cg7/Zi5BRQdyVisH87mDterzmTyYfSW' +
            'bWe7BXne8U6qcalYfgM8deu6ggBos3Rd4P6nX7++hA782bYZQy3bw' +
            'lrBfn35QxqPq+WXSQbnVssYvGWLWVRsK6WuNxsFwHKhWsxKnIJYpp' +
            'ZmkNLWhh8saR1GEzyfRBq/Vy6fi3kFMBx8xHfjOW7bBBZBV339G5g' +
            '5COpjshNuqAxgT3ydZFAo/GEgHVuqHVHjgYQAd+D5jAb/4ueNezvf' +
            '8ezznmZy7D55db79lXeDnlcpz/b0DO7cfyciARJJvZe0TaZCIdRHd' +
            '9nI5pIOcW/Tci6nwODMo8NfYEkkHfrHCkC3VtS+XD7ulacls4F/U7' +
            'bTbO6j5F2XuoICG75+C5KQzh8N+R7c7cI10UKsdBhd4/gFQkjmVHD' +
            'SbZJyM2ls+poNoOoDLe2iGoIPqQDrAjWX/RPULlr1MR3oT05XLpco' +
            'jrI5qbhne8uUGOmgZ+zRKPl+81NNNAB0gFvB1vngQvcI1p5KRVpGK' +
            '6dLb001A6P1SCF51vptUu4OHteaclehGlwt1+8PEdjaZSuEStQ7yR' +
            'cgIqa5M2lan6J1UfVh8guxfS6k+RbF8WDxXiq/EdBDTwU2igxDnB5' +
            '2DmRjvZDNvMkAa/FjJZyjPudzTpINuF3uyk/d+INPKRWU7RzrgLzv' +
            'ZKfjPmvPL8GpNdqcMOJok08quc0/Oe456PjR5P/1KEOyvK1uvmrYU' +
            'VYNFJ9g6Sv4JN9elDz8NWK7ZuSBU1/2LnnugUAvbUTpsaFeB2BAR6' +
            'PApZz/79VTtfO8nHMUtZjqQRuheVuJVpg3AMq1MSigV08pUMp072F' +
            'NWqfEBcwfUFdWY8yVLDywzNDRACDbnH9k08C+1SoprXdthsk3hLW3' +
            'qOJXZUAaKZb3dSlmb1dXV5ipCELfprd3F8LWhNqjhjQg/g2Ueid5k' +
            'QEIEboCHbO98ztTioRBlQ+9iRKIhDbFtLiwssBXT/86dO1kC+JcNk' +
            'K1PgIL3TFLae7ArP6is1hFGh6BAB3w4Pf0TK/Nj+lmsXalWXmgsLg' +
            'L2AfXt9hErezTUB5Kd5tQLlcYha/yyWTWZ8QFzB6SehrZlZREhzZC' +
            'K5uxsxgkHi9wEfm/XW0cq/hl4KOQfqreOWsnLUuPwD88LrceY/kbh' +
            'Ur02DTHLZX9EjkDPIpwrn5rlvxwUTelDfkEf6KWGhyhpiYIHzz9Jr' +
            'ca1Oug39dTmlJp5Z2FKVZICWF8sc1Yu0VuqEveoCyonU3qGvaEMgF' +
            'mbJBRiJq6oUHyIa1Pb8ZLcEQirnqIlSo7IFa8UbxN74RD7lLbymtO' +
            'OMiNJwhMzF0LE4oTNCc7kJtGmKtpEVoisoe2Wm9oud4eyZGOZ1LUZ' +
            's6SZzFjRjigHeKwr29pAHfaR08cQCHSL7Q1glmai9EPPt+odh3y97' +
            '9Ct+jwFQnrJ2HyJjiwj2nVJbaBEJ4GQILy+fZPMJQMFfaJKPx0kNR' +
            '2osaC/scY/6DbDzJuZxNOe932hg+TkB2bbgX8neTVf+HLe+3Le3dd' +
            'PB5DkLDwUv1Lw95f8r5rmRsnMPf2NsecX5C5U9V5SA+kAv5J7AYET' +
            '4bszvOrIP07biQ5mq0MqObZDcIbeWAcj1B70Sw8WC6dIAcVkp9I4K' +
            'HQwVbxUD3XFh5rVB/rpIJW+1jN2HbZc96KXexaBExyoaqKPUPdepb' +
            'DFdLBeOqh5y5Iq0kFm9eww/g3pYHbWGr/S1TGcZU7vBsnO7Oyhysx' +
            'MDx3IL1RvshfLwZF0+lQ0HQybUbJ1YjxFW62FBSt5xtIDjOnMqXop' +
            'FLNc/r5ycJpym090mrOHRMwg556/X4TTUqYUvndvoYYOwgXOKYRdB' +
            'vQp1ElMMR3EdHCT6AAdB6r6yYlOzvllGvca84H2tvOmlzmOBDium4' +
            'Q+r8b27dQHyUTYU8hMXoViA/gFKfjuiUCOUkJPPx2afEAnDz1MnnB' +
            'T1wq5kyxDZiHszpRKPSeJo6fgZr9cLO8npLthR3t/VW+QWNZ7byJ8' +
            'OeaVdqS59Cup9CtmUIG93GgcNOkg5ZwUBBioGSrdb7leP20lTlGBb' +
            'NVPy1iK9FuFDvK5aww8rU7D3KGMAwtqs7vp6QchfkHrsXIeoZ2Gvl' +
            'opn2m3H15Qjq0SOMPGBQkkWrJholKmjDU4FGAKKkWazRktgv7l2ym' +
            '9OIitg6JOzzv0Np4kFKEVtixCBEAPDMWWu6QcCWvXrl14i3/b2uE5' +
            'I2VeBKhliEyGI/Ct0AE/hBMAwRMODnCN2O2rHaduM4lOxbk8P/8o/' +
            'QOW00BRVX3l/LJA9FL9CsOXcRvW4Pz0WQSumKK3dzDTOBNWaLtd9V' +
            '8ohqp+WGVe+X5UWav+0LRe6EQ2nFlaMg1W7UHWSnaqM+VftouPSRR' +
            'WaoA3itns1JlM/mEGNVu5XGnMhL2M8SsQ1HrxXD53KV85SGUD/aBm' +
            '83mUBugGhII+JqWCxcjBOuoMrC8pbVyJopAo1BQLH/esPn4uUhRSn' +
            'hoVoUBy7R6FZIdeg0nB4FfwQNzGDcK8XW9di6A4sHP76s1sBWm5jJ' +
            'HEISHX9QogNAqqDSx5Oi4zFAnhEwq5CBsVp6ZepbJDL+vYoVeombQ' +
            'i0TGRspaQ7aut9rBl3tn6mnqFXUWvKJQlb7IMsKIWytX06XgycnWr' +
            '2nu5rI9NLBi71+5QS+SoQntqJ2fSR04tYbtN72NcNk5kk3V2HDaXh' +
            'ahkAX7l672jc3oP6ltX73HaMzA1mA4Aa5NXnewvvew+K/kDYQTXec' +
            'vP3QM6kOGd5MQHogwH/snb9PmSnh8oc83AyVdNDyV9RGMuXwzUqFH' +
            'YjygWs/ZXXed4Mf9DGV5LO344N10oc/BnGB3giaU716CDsFhK96Wy' +
            '95oqX634drHcKASHZUZPfk4aHZ9TPXOLgB08cROdQv5tkw6yhUbdv' +
            'yR0oIaSuuPVFdCBuk+H2Tzl+YcL/inyYBcfEIjdHUOe8pchZjEdjE' +
            'IHYbek/pBY8lScZZMORKkOJ/f76IBjRF11PQk6OAqkrU69QDqQMSL' +
            'cTJXPoMoqwemM84IpOah0dIzADsPooJTs1GvnWD4ogXz9CfZErHAi' +
            'uGMlz/E+53Ty7mvDxKzqX7acbgZBBygBBFVuLzGodOJ6rxN0kPa6W' +
            'UZ/kx23mA5iOripdABBzbr7XPv76CAUvOPpzD3JZFd1dyY7jvtFoQ' +
            'P0DnoMe8AamdQFy7rapYDSKz0Wg6nwqwvsXOA+7x2X0Z6eX2ayI7O' +
            '9A+nALwL8fyS9Az99rVK5F35y3r1i9llIQ6FqVsoNJ33KylxKWdcN' +
            'ljjty04oZ6xQ3eV6K5N4m0Dh2h2TQfKrDYq6oKEatWW02aE/3Q0pJ' +
            'jtx72BdvYNM/iFNBx3G2EMHqqa60/Tl0pVG40itcLQ2/2hG4/Z8Fd' +
            '2KeRkpygxS6ft/wOp6cDqid4BgkXGhA9x41Uft1BUzEGjys7MvsOh' +
            'YFLgpBDURM5CFMIXQQRhUbaEnPaCDoNm1mC2oGaiYDmI6uNl0EIpo' +
            '+mo6vc9Jv1kofNnzfSdzvAf2h9FBz2/Y1Op1zIcfezAdKOOl7rdl7' +
            '0Kx0EsHpeK9QbVqO8+mJkO2KqF3ULzXz99XqtybSj/H2GvBqZAOGu' +
            'gdHCjmurMJyk7pXgbVQwdQR10NPmYiC8Hpfsv2Lg0lwlmGbN+0sqV' +
            'mD13vJxnnsiiN/LWDyzEdjEgH4WpipfmX88tF/9D89Fn6V8M+3Q5X' +
            '2e7AJxJWnZqdaf+s3Xi4NY3gH21NP4o+QquwkskexYdTAJOpQ635e' +
            'dBEIX/aDU1Pe6tspnxZV9k1115u9dFBY2kJn+ccVOgyQu6hg0zhUQ' +
            'mqXrw8N/cInuPDHjpA2xYxM+eyq85KpXyGQeEqw01d3QOM4L0t3KF' +
            'MIGI6iOngZtGBl/0+v5VPurZPvp9394XWPjk/k/nL5OTxNLB64s3k' +
            'xAd2+mpq8gQ0eTsckL+qKaCrhFfzFwu1Wsp6xbZWe9DLCgrZt5ASW' +
            'ZvQ8xb35UJobud6+2m3uYoOKhU/+6Mg2J/LfyXI3+d795aKr7A6wB' +
            'T5cjmPGK1TNW8Z9YjSLBZ+7Pn7U9ZFL3VhGB0Q01ra8Qm6DPXgSKV' +
            '8sFw+XKtCsA+m3cPp8Wtc7hpUm+nMqVKmYxry0VmZH9e9txtAp9Zj' +
            '5eBIxj7dqp9mK4jpYPTeQQikjRk3f2SmccbsHdRrD4YrvxKXMonle' +
            'n650V6anXphpo3kPTw/yIVzB1Oz89NHQ0bIH3HHOxIpBQAhW85PWW' +
            'Xl8v2ssunaqyYdhDA4/Wi1coix9NABbnBFSmYaP8UTFNpAOiDYcvJ' +
            'URXoE6Ud1N0FnM4eEDloLC43yQdY+/OcLB7MJUMBp+GRpx3QQ08FN' +
            'pAM1B91PB7fqjebCtQDoRCSfsRNXc9mnHeeLOXdf1v1Kxj4BjAUyh' +
            '/6RWn8/5wgI4DnvXnABPJRKX6U5UDH/FXMqmemXSXOZWC+Wy65zEj' +
            'hf9E6WjbP2zLkDmv7KXL/ciAW+KcmB3lWyos9eHIUO6vVwj5pio+F' +
            'Z6Gs8X0XzLN9fLDfymUvcegLeSkW02cOQrYJ7Suigcd0e+zFBy5gO' +
            'NkAH8lboIERR+ye+vTxVeR4VhB8ShodM3jA6gAfew085QLA/Re+j4' +
            'p8ROmACwrfl+xl7T++ApSG5GEgHcBzzGZEOFOw8hAqvTh2qlH+60D' +
            'pKOoBg0O6lDAiqP5TPnGpWn8eHMR3EdHCz6YBWT2EXQPGCfEW8ZVC' +
            '0lZJ7rmIo6vN8C+osY7GJkvuulZFyRGmxAeO3gT68mEUkFlO06WKZ' +
            's0Jr+phUWRoj4N/QJ+fKKxqwsWZvV+fAUkLok5VLMaNhJ5sJW8Ht2' +
            'hiPjau12sBy2jDDw41fbQKXqpWD5fwRbnTT0OtcEDhFmo7Gimx0iJ' +
            'TQgYesAkkAUWtO74cp8RLPpZkLQhKOxDBvWhnvSWaFUwBKgkJ0kh1' +
            'khODAAAXrmFTqzwQKFpcJrfxKUiisOmUYxCKPzJGAM5/wylpgdmg6' +
            'yCjEsQzhE1kgTgpN0LGcdxsOPuEfNxIRSnjPnj14gsBL0/Ol7Mp08' +
            'xFUGRRyVhajZvmwxokDLBwWCz8n7wiuSiUifFyZAHjDvyQIkhFBUi' +
            'JisJJ+JpK6QVvZG+N+h978mVXJKhD6ltS21TKuljIKpbLBUhXwZ+C' +
            'CqAiB6TQrXRhTpII+TVqkwz1pThQbhk8SFP/SauiT9/CAV1IsrEQK' +
            'jOSCzNLjSPeSC4oB/21pW1Omraa3B5R2yue0mBW0pzcWKTllWq+Jo' +
            '5Yyq42oWQ7iM9CHehPHyMKy2JNNr2FsKl5XSwXDrdfUlsu+cbwyrv' +
            'BZ0MedB+pEeFGMc2pra9phCrIRRWlJjvtb1c7PNCMv6V3ui3q9m0B' +
            '3j5OzDIjA9B/TwabQgWgmFMuYDj7+dMDEMC4CdUwHMR3EdBDTQUwH' +
            'MR3EdBDTQUwHMR3EdBDTQUwHMR3EdBDTQUwHMR3EdBDTQUwH/XQg2' +
            '2gQ5Ok8ffCZr/fH41583AQDPvPG8ceSQoZfVqcYc4I70NtWyL46zB' +
            '3zK1xQ0gfFcnK8po+s5bWqXV0fMoiS5D48DJb1wiqg/2ltdUAS4f0' +
            'OfRoy7ue0k2ZFEWUrMKF7VttgUELoZ1qZH4gBAz1QZihvDE2IANe2' +
            'NshhsEAtJoBAB8/wI3hFOqDdC/0zRmIIQYOgx5ZCpmDrmFKHGjNJ0' +
            'rqJ2AQcaf5sj0yGEJPwy6y2S5FUCQLwrVhJsRG1tGtr86eeb6XMmW' +
            'a+EpRor7Y+YjaJ7YRKApEwJsufIdyhHHADV/rEvSSYWUMgRG/BSQF' +
            '/oiIBgQmY1uZbxE8WtQRu5oXohFd79+6FT97ACddTc2BhEjHwiiXG' +
            'eJFHySBTy2Kf0nZlU9riFJ9AtlmbAqeChLfrg9iYWWodZjrn9LY/j' +
            'EWqEuGwnEVsWnprI3EU8ra2VpI6JT8yUgobUZecxXuGAA9S75SBGW' +
            '02RvhFU2JK4MTCimImLCx8xzRQSBhIUx+KWtMHj4rCRpRmjHzO9rW' +
            'gdl5qaavCpj7MjsU7pcyQGAtfUbMl/jSUvSJQqKEPgK7rrWxoKDWl' +
            'D2G/TR/syD2CZN82UZKLykaIaEkYFMsfKr20JpLtyCQE+cREYFoxF' +
            'Y3jlbnjnNABzY0KxlarMR3EdBDTQUwHMR3EdBDTQUwHMR3EdBDTQU' +
            'wHA+kA8C6LzrjujLDPrwr6pHvHcQpq81VukWoOWAXGcol+xxTKbIJ' +
            '4Y/mQWZgR5ojwzmolzsuwvzxnUQsFcNFHQy1s4ZKrllqhQyK4XS8x' +
            '4wCszBdQwGRAHveUAUFdQjFKyRzQbumlNGyht+s9n+FThnzZZuENY' +
            'szRbwExQTxKNSGOdADP02rREMMn4gnUC5tw5JYw1VbL1jimym9bxq' +
            'gsxZvthQggg6ioBYp6D8T1A6l4IE7KE97M6jVBvEFdSCIJAuQ7+ue' +
            'QPqLg8DWbPK4zevWWEA2LBT45egz/t6t1WBIIYRN+cPPpT3/6zjvv' +
            '5Lg9rvwEDrCM//cufANp4EM8gU+Gw1KSPApystAIX2Eltpe46QQ+Z' +
            'IUiCsFAwhcRWNyimk1A4PAp5SZ1vaBXH7Mo4Jh4hszcIUySiHB3W6' +
            '2NmtWOIezQW1hziodgy7wgDVImLOSe2sSHTJ7IEsWMIs1WQMlhQbE' +
            '5LOihe5YnpZoZYSLn9KpGmS8TmSe6ipDTmev7EPge7VhBTLkoD5Ql' +
            'tggRElEkWGLTelGnzGo11UIz0X/aeqdr6lH0MGssiqQySWWMANIyt' +
            'vtmme9QZwnJGreqWlVHZZKk0NTH6JAyZMbzNr0GjdAnMxEynQqMJW' +
            'ILJJJTqPoKLwj4E4cRlMzeMoqCPmHHVU5IQYCdqnjPMrSYDmI6+ET' +
            'QgVrA+3gPHTSnQAePD6ODVnPv3OzroIAN04Hr/WSp/TMr+8JC7XIP' +
            'HdTgp3b0D0gHrdZjQXDgE0QHKLFa4exS+4mYDmI62DAdQOZjOvjnR' +
            'gdF/4XZ2UNCB3ZwzLVPt4tXvOLR3bOvE45y4WmY4SaBtXTnzju/2U' +
            'MHdukJf7wzN3tsYeEloQO/+Q0nvSJbC2bGO4vtc0IH0+Eg4iNCB0j' +
            'D9PSDDSB/9nJP78Byf2buMhe4V4Li5VbtnEDl/J495nE5aaSkeTYE' +
            'nanrexPBJwJfqv9sFDoo5I/U6/cLHdiln3nZc4F70c0fma69OowOU' +
            'BzTlRc+AjrgzlGNBlrBI41227WPBMVzM40zQge1+flS8qxXOFsurb' +
            'j2q4vto8PoYH7uyWg6qDTaiKvVguwdQpG6zpGcc7ndOD2MDsINxxq' +
            'H4DmmgxHpwPXvcSbfyuf3ZZ19PLZYvnKzX/Zy9+DVKHTg+oHnXLCs' +
            'kwXnaj8dFEEHal+jYXSQcvZnJq+mM5eC/MWCf9jzD6esV9LWtazal' +
            'bpYOBiUfmTSgeMfSIdbp16TRsdjaPrpoFxvtepHIugA7xdaj1VBB8' +
            '1HTDqoNecgulOhudmhqZmZnPNT136bcj6QDqqVqXIZzfZQTAc3Qgc' +
            'Z/1DEjrgC5uGe1ckVkw6as7vbtXMz7SXLfc1Rp88slFeEDhb27nXS' +
            'v7KMna69JBjhKCofOFZqzvVsQtvd6ReAH55NE77Kj3d27z7WQwcIZ' +
            'KF1tN56zMsebdUuIy4/eLLniCWkNpe8nPMv29lz/VHMBSuQld2zXx' +
            'tGBzwrJ/oXJDsc1zLpoFZ5xCtermcv99SmG7T41YJKcD8d5Mozst1' +
            'rDx2oE9/O2ap4w61Z+3YOx0M7u5JJDj6BbtVesvUr5rlCQ+taRWEP' +
            'iav/4UBpQbON6WAUOuCmowN/ycneV5mJjuftEzrI5osRn/f/is61i' +
            'N6BbHOaNrbIzmZwvZhOXEtZ1/C8oM5EDjsOtVraOmVups0zMaEPtF' +
            'oPhScjFx9oNh9AHRWCh+Q0c0ufk2XSQaHe6oECJWa9h6YNO2O33xt' +
            '0tpgONk4HxpE0PT+iEKCv1Oz2DgrjoIOXpXdgFx/PuytyAIHQATjC' +
            'Kb9U8P5WA8tyJjzMdAV6LMA87B3MzQ2Eplyy42UvW+m/5b/Nxq/lF' +
            'E75gQWgThAqgxq449fmWygqpcrZgVxzPV9hX+Z1MEI/HchJzQN/aR' +
            '6gkOy0WkdLlUfUSW2rIvJwzV42I1ponZPjJOrZzkA6EEauOJ1+Omj' +
            'UHrd0CfefDeciSUnQwZAzB/FJ8RxTUgYdDDq31DY+N1lgcFwjIk9Y' +
            'RA/FdBBBB3iF2JPpfcPK0EmCEY77ueOpjHu9gaSvMlNuodzdv9q6l' +
            'kteDYL9ck7ZsB9U/VLph8wUOhqy/17IBerI4zU/R08BVYAeSdo9nM' +
            '1csvR5l+nwpLNrnnsKHQHUYNZ73koM1U8gkwsLR3eqlU2od782zS3' +
            'lQ8AfHyp7udGOUKHsLS4+jm4vYZ8d4UVlfDKrzYGIgfNqDRr7FxyL' +
            'FjsiEsdOvdJnXq8qggeOXezUi62Q3wVl5yOj35RwrkGb16Y7TAkHo' +
            'onSMsJAExdg9ac//WlzJBxPaOxBgZlTy6wI7At6907GyBVApCFGx2' +
            '/hOBhy1113cZAZIfCV2MAs6Y1JGaCt1e92cQVBwT8eMhB/6klWkKA' +
            'E6OCuu36OtO3duzcc9Nu7d7H9eKbwCENouCHchYV2xx0C4w0DherZ' +
            'lfn5R1FEfrVJGXCUOOH51NRBTj1Mz98hdODjmnrNSf82RNrs5RBs3' +
            'SulZGdp6YlwS/PSE+32UQV3K35upec0NC1XELMV272SWQ1lUNRZES' +
            'R0ochGu53Rp7y1CiusTXnrBg+zgwyKtIMXu1EY53Ki82Ilw2M3bbf' +
            'LFHhiu91OynywghqnlZoZbCp7Hz00/ZWm3oVVcAO8y3PfkP1K4zRY' +
            'rDl1iNSPt4324+X2E9KOQCgcmELtwE9tfl6dExe+LadAVWdZJiaL1' +
            'bIdOdiuUUQPIqwsdNNqzbOo3EbjYQ64hVMS048qxWDZyV7sKWc/0b' +
            'HUqeX8ZRJhXbf19q1LagdaygYfst1xPIGWToLtLXWAMl1LmReSAsS' +
            'aiLhNUoCHHcZeyhwPwVuaEglikws4hM4nNAqiZZGs4TU/ZFCytpc3' +
            'QgSkBgZLOqDhKK+kA0AuuUNWovXTQTr9S6B6EpWbO55z9hX8/dD/v' +
            'dw9eOtkC3nveDp53HWeTtlfMYDxqus/mxrvnnHmWp18/odeEEhPoe' +
            'JdFDso5DOlaMJNXS0WTpX8r/bTAfKf0lTiQcmvHeC4EK3FvHKdLYs' +
            'jQnilzkHuCkBQfFtORSmkr0EH4EyB5RyB/7S9XMquWInTGX1apZK9' +
            'MLRWcYXY5ZamQ4ExZBJ8UW+dm59+FLJHHR4+q1OHCvWHwvMN82+vI' +
            'XtJANFKTAcbo4N86QkC7+Li0T462HO9kLNrs3OgeLk6NWuluho7IG' +
            'im/TM5dww42VLnpgWgAz2+0QreBrajpZMOUGtO5ZvdV+UV0EH3vnY' +
            '5qD1GmZkprSA75faSl1yxs+cQbLWJGN/OaGWYcS21X0NdNWcPtWtH' +
            '6/WHkOsAmnbyCqEVKspAOvDUCTvwMD9/tI8O2tdh38jj7t1fgx/UZ' +
            'qMNfD6K6Gz3KNMQoLPgXmEJ79nz4kA6sNI/IgLPzr7QQweNxcVK8D' +
            'r5FElqt4/MzX6tWDm0a+aYdCrRMWZ0CGGq8VMkBvlp1R+iUevszK6' +
            '9e78RFtfMrunK2YVwK3iI96NW7iXdfFbmq5dDc03US1h6XTqYm3uh' +
            '3X68EDy81P7Zgl58rbp1Z6Ti2FQhjdDxWsFpeEtnnofm4CbCjFfaD' +
            'zM0Ww0fxXTQTweC4b7zVhhIbr+rzsSR2WTP923ni3n7RNrJm20tpQ' +
            'ZqULD5wnMZ+4e2df1oyxCZ1QxCQc0XuD40/wvhyZiZSwN7B8i/ZZ0' +
            'EJVnWtZp/kda8Qgfleh3avmddqzQOOulTnntYxohC7qg+ny02+S/w' +
            'vx62ZU0H6iDLHJQNfZBiWnUo2HxatXOo+kpwxC092KPIsfvQmn4Us' +
            'jc79cKsPlZADuqy1LGGRD9ER9mDOKUzhyF76LwH7pXmnidF9vbMvR' +
            '7Twch0cMXUFZvBChCDgZAa4BpLSyhbaPKO97f9LCBHYbJ30JydvWP' +
            '+67ZimV2NKzPtpdbCY/nc88R/6KIhHTSbGYUqfgqa5NtB7Vw+sQzU' +
            'gsJfnQdM/ZYB7m3+reUes7Q+X68dndq1CynJK4HhtEJ4TPPci9PzX' +
            'xctRX5ID3KN9EDLDRWMyqGgdnSxfRSFgyqpZ8/t2vWESQe1ubnM+G' +
            'WvsOpwvUp+GQVC3G6rXTVYlVau2ztAHqmQozZZcUDRoL2IQEBbPQe' +
            'u1dLhnPtAOhBVp9E4YvYO8o3dQnADh09RGl7tHNNMLStsbvUjpANc' +
            'uTqDC3DAvBRvp/x1fo7eFtiB03xebbFbp+ODpwlqhRWhg3p+WehA1' +
            'lmk9amF9Wyn0m6zSYZawcyhmA4G0MHkm5Y68hiqvjqe8vpcAB66ma' +
            'uAa4QTrkdz91nW010uUNCNOgqCZ5kRpMo81J7Z1HQQsEsLfC65J4b' +
            '0DsKj09g18IJaIX3RSveeUxzWvn8xnLoODqTdA/y3Vm3Wmg8ojgj7' +
            'C2W7I3RAYK81X+DcAVJbrZyydT80UMOJ0K/SfSKdHiJ75fyy0AH60' +
            'UIH03q3lrR7vzT85p49lD1EtGfPkzEdjDxYFKrf88Gvodj39A6u00' +
            'H7CQ71h+dft34VuOf2LvxVOWjt3fsS0llrPsLRDNRCe3FR4CIcUXF' +
            'fm6lfAQTliwfrgCzlDfgDERJvPT8/19W6Z0srC3v3snfgpFZCOlhY' +
            'kDEoL9sdjWF1q+GpUOo8o4MQ8Rs2WFRptDNqRKVVvMxxLRO3hQ7qr' +
            'ces1OtdKU2tNGePLbSOCh1Qq+ekRjjApfoj4YmxuZWlu74J9X526l' +
            'A/HWTCyb4VlEzYR546JEE1d+/uGfPnidX1sA8S5jTvog/eLVigrjl' +
            'YZNKBXTo2h96BnpyS3gHHxEgHKtmD42KxmHSA3kF4ZF79IeBDPx0E' +
            '2U678TCKF9Q/U3otHiwaQgerzj4OT7pPfODlnkk7fij2kx3fv4d0Y' +
            'LvoHXzQ9aZPw0QvQOhgzfH/POigNHiwyE6dTCaPdwEfdBAcdhTg9/' +
            'wC/6JlnZLQ0ulTteLbteoDnn+/n3+FrwqJThOtO+wd9OL8VPFS2HA' +
            'MO8BGfjkoPSi9yJ5f2CL8y9XKCxk1FmTSAXoHdZ6bVn+onw4CFz2C' +
            'JyFsUPBaxXPxYNHodDBTfw358VOv9w8WNef2WKtNVpxwhPC3Qe1Kq' +
            '/wSyJ0LhHOFR8jmIf4Xu+w/0DSli+TJlVr1VZMO+meOuoBjDBYBwK' +
            'nietX56x+quVqk2aQDdBxM4uiCtt0JD9xcfJyUhKQuLDw2kA5a1bM' +
            't6MnJc/2DRXhrJS5dz6Dio9nSFRks6qeDevEyQdtPrczPvW6lfwVS' +
            'aFbOSLDTc3MpDhYlV5pTZ6zEqwVnGR766QAxthunUTUA4anSsaB4D' +
            'gwedh/qTzCiXPbyTDhYtIoOVH+qO6c/XbncQwe+HhProYOMstdVcx' +
            'PtRulniIvkqOYOuk21VT8d0Ttoqakoy/lpNpw/ei3uHfTQAXefsCa' +
            'Ps7h8561w9rlQcDJfcjLH8+6JsEdQLDrp7zuZp6zUD0WSXatjhcr8' +
            'dY09nOAuFlNrTSV7qas8T5PGRUgArVVLlQrPuGdoKHYwQqNxEF2Au' +
            'n8J3YFs5hSVfzE6YvdkYCzZxDLEOAPcVnRQyV1jVyKTWA4PH29BlQ' +
            'JEXLbDiapzQHtz5ktEa3bqDERiamamXjxa9M/MzYU2qGru4LqHebU' +
            'fhRjwQJzEZgO9coC/lT0K8a5VzkJ0iY2E2QVjrwAyxU61OSexXWxs' +
            'duodDBa1SQ+ecKnOTr0TAo232ZbFKomNgnPliJTr9BkIrpAxIjwTQ' +
            '4v3RWUIxH1BF5R5vNgCLeodO2VlE+fyaMhEUuMIszAOKcZcBUZUZx' +
            'QyyIwi4uA8zY2YhnDoRo1s2EoPDNwr9eq/Bb6VZ3bRfNEmXOsJ012' +
            'td3a1/gRAxAQ3556UDmA4L5zSs8C5jkxiGrDf4VBGJfg1YdlSOm2r' +
            'dZRVgyzMox7T/7YbSBhglw4Wa1dYJjJKozC2s2vmWGvhzqmZY4KZs' +
            'zOvlQqPNhuv0+SeheA3984HKyHBqTF/TnMIL8/qXWRZrcWpWRYI0p' +
            'nPXCqXXoPnQr1l6wIBo3FGICQad6Xd+jl6B+RQusrs7n4hX2yfE7v' +
            'rWnMO0I1Ihd1og0fZxnVqZhfTj9A41RsicO1cuf4zZM3WY2hMDz6k' +
            'tWo4AbHrWM55oZ+L0XOfmnqechjSgfdyCBFZFPLfspdHxyE4JzRMf' +
            'S2oHUVrymRf6G/1pANECppmw0QZVqemQGdCB5b+EM2Ty5Goj0nDuV' +
            '2fV0vjLloizajdfRv6HE+aHtFw3bQpIjtwYSDt4W9T2+nIbhVEdZo' +
            'SkSOUVUxAqMc9Uf1WtWFpWe3YzJtAn4wpSB7ojS8YrBj/d4f39UZD' +
            'juPIttW+PgSZO1Tw8346SGeesSbfDKeSnbfcnJ/PHk8mnvac48XiV' +
            'zLuV4ruCTe7L536fNb9IceRMhMdQDqSYSWvE0TRfQtRyGBRkLvALg' +
            'DzEi5tK+wv5J7lw346QE6t1HP8Nh1aAF4q+Icb5R/Tmis9qJtgpzt' +
            'OOJq0Sv/nZEE2Ear0osaDDqz04a5IBG8TA8XOPGNIKUSXVnkQLahD' +
            'xfJPK+Uzgi39fIGGgwCFDqC3SKSQN+n8TqvOb0wHI9KBlx1slpnH1' +
            'el2DdDxl7GRu1vv3H333YvalhURBa0FGe2Xb/fseZFJIjyqWdrFEE' +
            '6VAORzHYl0TqmsQgfhVHL1T+xUx0792kl1qOSHc7LFK3Ozx5rBsea' +
            'eJ22dmD1Tv0YsrTvv7HqLtEYDd8j87zA6QLci55wZWCDu+HUj0nq2' +
            'w8mRLg+mr2fHTl2/z6C7NH6dSUWYQ2PaZHcpQWv6rECoeHDtt/lVO' +
            'Anbfk2oM/I32ApUTKrK9vLU1EGhA5mvXyivsJcHF471af4d5VcEv/' +
            'ct7lDzF8ug/lpo8dudO6DNSUwHw3oHw38fyD2wOpd7mv0UhGtNnuB' +
            'z6OrF/AmhAzfVCfz9pAP0fMK+hgc6OBlBB1yGZiWujVLpUBUqlee4' +
            'EJh9N1RBIail0XGmJbZzXRqLoAM9viR0EGpB2rzEFPtRVrXID2qka' +
            'VBkyN4K2uB0868oe5wai+lgRDqogQ7coWjjJpb3zIVrk0XdLYAR7v' +
            '65SQcIHwRRnb+Dnyy1X8MrPO+hA0CNp+dVzaGkWrbTTwd8VU11ltR' +
            '+F9Dq2+2ju2e/NjeLkJ+cn3vSco8tVlbs3Iu7Zl5bvPPOXTNPNGdn' +
            '7eQ59EDt0mBAM4EaOm27PZgOKqADZ/C8hqX6BcggvsrXl643EJMOa' +
            'HqqKcBk0oG/NdfXhJ2RQbMh7eCyVzxqu1cGkpf5KzorNAhH++2hg3' +
            'p2pdp8ae/CS0IHeYPm5DdfvewVjmay1yfZkexCcHoYBxUS4VicLGa' +
            '3uvZjMR300cGgdWRu5q2MfaLnFbjA958hhhPGPf+rlnUynHidvBpK' +
            'UaprWVTIXRA6YMolU8PoAB5MW9brka4eEUqrDiYKmYfjmHQQjinpc' +
            'ULzZ/YOoJDU1X4ChDW7+Hhv4zLW7Mhvpnw5V3ghE6qmyyJ7xcpgnc' +
            '1Smt7S0hN+8+viAdIb08Hog0Uqqd+At1l83n4c2M6EKcvMB/fMPcl' +
            'k48O7teunA74l/g+kAwGiebVtKZPH8u+hAyYAjp+3FvbumXux3UaM' +
            'X2PIDPzOO++Um6mZXeF2Cmph2pR7JaOMRQVOBZxpdYZgg9pji+2jw' +
            'waLwmVi04+Gqd2zZ6pykJXCKYZ667Gl9hPh6rDSa5W5PdFQjI4qPm' +
            'nu3m2nXgtX2BW1/Y/BhpDV0M4qcTr0UDh7fUmOTnM4kxuu1+ietsP' +
            'iRcot50irGJJao/14rXA245wpZVdmZsIlCU01E72gtvsIF3ZVDlE5' +
            'N+mgtfDNucbXvNrRhfJf7d37DUpI0F5suCuk4CW1LW13sjt7tFW4j' +
            'DJByPXa0bT9arVyph4cmWog5KOt6XmEn/FfSI8v10th/71cb9WL5+' +
            'bmHmGyw0qMB4tW08GtPOAsc1wWrOHKGd505hk8d70vJ5PH08m3LLU' +
            'kjcvZ4IGQHmr+/v4wDUFQCw6E8x/qX8mCzLAQtIn5zAILgTfMJsL0' +
            'cvfIxtEh4IflcbBef4gbGQHtHfdw4J/yvZ/Uy4dl7oZVw31lOfWjx' +
            'jlnIBguVPfEpbTqcYAUVDLanO1aVOt5660WFDwCIGSGy5darXMzeo' +
            'NrtkrK3kz7CcheOTgCOa8Ep1vVo9PNR+q1n6BRttsPZ/JHMuPLjSC' +
            'E/XprATohtJE7lWPPF5LMLdSW9AY1HNqFf8I7YIfATjglVt+uNvMU' +
            '8BdoXVJbOpNiED4XQRNI2UhlRlImavk5M8U5aIIz+UiuJnhyDpeoC' +
            'EfMBDZ+5jOfIerO6sOq6ITCcIUf0gFyjSv+3aW3LyYgM8s79VJleT' +
            'u3e3c+9dpM+zU7eHK+/GtALmGWsc/pbdmYsM8oh5QT+eHw753a4Z7' +
            'bX8Mz7nnD0ObVBptMDEGGZGTyHTcUYiF/7nOfY4189rOfxT0ffvrT' +
            'n0b4eAKfNOBnZlnRBC7J7E5tQsBK7M7R33lnJXi9Nf3N6crZXdqJq' +
            'sAr55Hb7XN28bHZ0hVgmlC5mAHgmm/snlPmWH7wItgKBcJKnJv9Wm' +
            'Xuyd2NY6QtQmu58QS4YCb/DvQWzgUvtB6jYLAqQU+u92rVuTw9/SA' +
            'eoqXctfhNChsCqdcQ7zG0pWbwOt6iEPBwRm+XDZReDCeUl+rFlXC3' +
            'veI5trIlvQ/5rN6rnA2NJlJSa2RnFmaI26HpxMsoKLQpEseCdqHsz' +
            'TwxpzamRmNsq/2Riskz09M/AQLMTz8a1KYL9ttoiTuN7bWBA2wvXE' +
            'TPbe4kMdSmZCNxWkrQ6J2AQ5zZofbYF8whERB8hDhoLS9rist6ix7' +
            'Z8J8LlmWKmWDI8yi5kJkm91R9RQkP9P7Y1LcZDpmFREMTHdngWogA' +
            '0M3lA0zGQDrwcs/4/j3ZfN7LHBc6kB2z3eyX8Za72/XTQWBsW9Rdd' +
            'HYDdIAoWM6lypRlXWwULpF55VADNSJ0ICiBDu6PpgPUo+X8tGAvT1' +
            'Wer5QP1qoP4FqtTFUaDzeUpTfp4Ha1l1eoEy4s1JqPlLJnp0rHFha' +
            'OQlyg3ggdUIEMLVumDnGKqtF4eF7t0+gnXoX/cLv8xsPQQAoO6OAJ' +
            '0edjOtgAHcgEKKJgx+GfMB0winCLIW1a1k8HvOFDpnAgHUgvj7Avd' +
            'MCCkl4M6YCVK2Uyq7cJFTpYUDufEBg5M3vXXXdR2NAHCbIrwOFG8S' +
            'jIup8O5o3zQ6UHujE6KLeXat7K4sI3W5WXwXT9dMAC4baxbX2wCFX' +
            '6eX16xYI2oovpYG06QC/A97OJN83egdCBHHzzkdFBEBxgaUtHzKQD' +
            'RAV1hU+i6WBGHxFCkzAmo632+ZHegdABcabUnCu7oT5T8X8KHayfD' +
            'mb11i5tvYv7tDpDVnqaNO+M6SCmg3/CdEBxZTo5ynfz6IBFRCfDSj' +
            'Ed3Dw6MHc3+jjQgQwWDaQDXDk6dzPoYE6fUNYzWBTTQUwHMR3EdBD' +
            'TQUwHMR3EdBDTQUwH/+TpwDxMkyvX+BU/IVOQC7hWrju4pGaxb1t9' +
            'iGdguLI+HJmFYJ5Nw08CY1WdzJizWFjOcsYxt4olnsPJccmsGvKCT' +
            'PdPq7Nlp/Vpp5RqNkCulqW3Je1mjPOCdymrlV1qTai0QQFJkT2xQJ' +
            'jTxifzeutpuYc3wX9pg2yeXPMrTR5NQ6KQG1o7EO4W1ebD9C/J3qV' +
            'NcdjcFtXm9ru0RcpOfcisNBxkfEmfNks45YpmNmqGydZKvBVUYSx0' +
            '8DyndpDGFbkAMiBSRsFX0uJ26hOiyYPMOz6RZMuBwoQyIoycOExvA' +
            'm7IC/H809qRJlgpRGY4PMQ9UsWjkxH15z//eXjGKyI2w8e/8MPopJ' +
            'RYhixAlok8NEsAH+JzeMAN4mIgzCOe8DmqGNVH9iQ8kvKYa0bXow8' +
            'wBDGzZ9akGIl1xC5+iPB36VOkzao0K5FpM2uTOEzQJhXiHp8jzUzD' +
            'gj6XRwhXCmFBmzbdaTiGz+hYQQzBVCdE26FPBMIksaxY0cwI2w5K7' +
            'y7leM+gEBeewA/ZlqUkwi9qEiF9Rm+WzoZPxwZFpa6lD31m7bNxAU' +
            'BE96O+J/8CkbhaWVggNFPRZyLv0Ocy07X0AeU0Q6JPArU6ySuEenP' +
            'D6tAURy9ANlEUGEsuIHgS7fsJhV/RP72Jjk3boZLaRptI7utDzWhN' +
            'yrf4PKaDmA5iOojpIKaDmA5iOojpIKaDmA5iOojpIKaDmA5iOojpI' +
            'KaDmA4G0gGJIFyJpg5QkxkHOtIBb3hl1FxizFlmwfOy2o6vrNbWVV' +
            'c70Ac9cDYE3oj88qEwCJ4T9mXalxPE3JyQtcANA7lR56ya55Ua5wa' +
            'G3IGQc0BNdfIdZcPE/wW1ohYPdxoTTMRMNudFY9KKEkv4knW4FH62' +
            '3EU1PyszYhAw4pKsloVPTnRyqazgsDzcpWaTd6kpyDnjeMrdxqSqi' +
            'dsCX0gMwZCtnumc04fIswnsNJY2SyLZxhkjmxtnivfoDUsJvIQ4gj' +
            '/Ja0nPfS+qA8iYEmKdsBVTDkC+SzuCHglRCoF7nBK66QSuCbC8wZW' +
            'QznLYqx3vmTB6E4jmv1/4whfkLdPAf/mVMD6zw/InQJEIkCN8RbZl' +
            '2u7QDv/iIeuX0518KAlgpPN6RpWT14t6kndJTebuURPlzAVewT8Bk' +
            'x44jSvqAb0t6NXcO/VqcRIrfFIwuIUpgsWNgDZhn/JmksWiXseN5z' +
            'Nqt2chQVF+JDoEghJgGTIxiIJXlgBiJwVLccEbJ8pZcbxn4Us29yh' +
            'jgD3GJrcMfLeewWciqbAtGnYUovwwhbLEWFI7ow+NbalzWvmKPvGW' +
            '+sAuNZ9O7Y5fEUMW9U6nLX3aLCeRW9qJgcrUakeVtawWFJMvqAlz9' +
            'pbYSAynN3E9SrLANUGS2FjWm6NycjkwdkzlvDCRnyq3GAJRjSeAE9' +
            'Jv08do4tuYDmI6iOkgpoOYDmI6iOkgpoOYDmI6iOkgpoNhdMDzETi' +
            'yxL2PzM9l3Amfc9YAbxm1LDTgHnTceYlj+9yOifMFKBaO+TMjZW1t' +
            'S6va62NrtVq9fL9ME+CGQ3bVCkr+IOFdCpk1xSuriUi+Uxnq4waxy' +
            'L9chkD/cigGB10J4xzwJ7+wZEgiHHJc0vb8Ow0De7LAgnYybsllAu' +
            'QCSuy8tvAneuzSjm/vUFbraD4yBstIZVydDUFghI2USMIs7NKG5QQ' +
            '0ZoTIz9AkTLYd5hctjgPIHNVnSphyzgUwCsAImzZxj5iGD4nPkiq2' +
            'UxlpJ64SeInMe/RecAgEKC0m8TvV9Ar84CERmxGRDvaopQ34EBWHb' +
            '/mhoPoutd2cOfy+V5nTE3AYFD6RpDL9pGDOtpiTMkwtPFBzIDh88Y' +
            'tfJPKzhHFPROVDJBIemClWH6OQG8oGY9+tl7cwIsKRlAOLi+VPMSA' +
            'ccfZkpzby36kXRJgwyIgkCpn6oU7CKtutt/sjxbNeKAx36m33WAj0' +
            'TwVD+JcixGIXFmOZcEqF6gQnlVihEosAO0EYCSZ9sEaYWcZOn/Nq0' +
            'QHD3613VrzD2EVwQS/c2G3shShKHUNgEc2Gm8mE4MCJEqphzCAbLG' +
            'n0dnXuLWc3qOxJYyeY4CHpQI7IwQ1xnhQA+BJ0whMAGp9zEoHQDTw' +
            'UGCcGUgeWSVjBxtu0Ew+iZgOKOVuKeznvxpyH5ZWvyAhcgEAY50MG' +
            'TmX+D0UH4MNq9b5hdODnq0FwiqVn0kE29+OpyvNW5scz5csxHcR0E' +
            'NNBTAcxHXx86CDrl9zMW9bkiXzmaj8dFJHs4EA/HTj+AZ6V7Fmdcn' +
            'l/Dx2k3QNOeOby4aJ/GB0BoYNC/gj+LU1NFTOXRuwd1BcWWsGRHjq' +
            'o11GhhwbSQa5ySB1/c33L9MX2uYF00GgvLrSORtDBFOig9VgdPdP2' +
            '4zEdxHQQ00FMB59cOjBPTHYmO/n8PuECJ+cPPBNh2K+Su0Y64Bn3V' +
            'uYwzymwrGsmHfjFSuCfCkpVK30qpQ41cDLXyBo9v+x4p9j4KfddD4' +
            '9Krx2O6B1Y9hHXXs6nrhXqrXr2ciZ/Wp2+FB6LiQ7H9PSDJh00Z2c' +
            'zybPmkTdeEoxwtBmaqR5CoNOVR5aWnkDgQe1x85ReEodJB8XGzPXT' +
            'DcorMR3EdBDTQUwHn1A6gP6fdnyBu1z6ag8XpKyrTuKDUumrVvKZa' +
            'DrIKsQmHXiqX+C5F4nzAPNy+TnpHYT9gvS1tDoE2QpP2LxmJU4NCD' +
            'DRyTmXrcTb/LfmX4ymg/4QcskOPs8kOq79asFeDrKXVX9hIeO/kMt' +
            '2T5sFKYSnBLorQfHc7NQLEAavcLTnoPZVB+WoI9H76SAIzz77+t13' +
            '/0lMBzEdxHQQ08EniA7IBbjSxCiZ3idw5yav2u4zyfG/sayr7DJ4u' +
            'Wey+byclVlyL3CwSB1DECSTPwhBMn2tVDw1VTnISQQAfs7q+KX7rM' +
            'Ql0kEQPFvRrlSpVEv3pbL3MsCU1SFrsCtRSKOXcQCBo6grjbbQAXo' +
            'fqCOxIGId0bLI1mcdhiEMOWcTr2YaZ1Dp5VaLh1fiV61clvvp3Mri' +
            '4uPEBMs9Gp4tmF0J3BUreQ73GR6mrE7AxM1csMIpAx4UjufO+G93z' +
            'YSHFbI9UqQJQdxdbVGvUGOj2KW2R2PLoqEIBZKNbklv9SZgSzAR3G' +
            'MIhAsOcy3phVpLykCFcbGxoNAEABfUGiXCrJARI1pQu7exDQL64AE' +
            'pJ53Rg0ltpINderWRPBTjGYF9fsVN57imjJiPf4Gr+BfMiBt62KnX' +
            '65EQESC/ImvQHIWgyhtER5+CNl/60pfwXAJkcTFScz2gADgRBv5Z/' +
            'vgX94QmMtEutREf/RDJ9+jFVmQEPGeNMKmsaMYoOVpQq+dIXktqeR' +
            '0rFI2FPpf0AitW0069SxsrkVmjkDAXnPCSdO5Shm24uUM7lglNrZA' +
            'M5gXVyresWTKX1J3U42699dxuvZKOz+8yHIF6SZtX4UobJL69Qxtr' +
            'LSnTPraFvcrMTHgZGSGwi8yTl1lcVAkYKT/frZdJsnzoeU6vhQSwM' +
            'C48gWfI/B16hz15vkcvEtypzh+kfRHBH29baptKIWU84cJYsgDnIo' +
            'ULuL6VMCV72ZEa9LRpwIFxnoyGfznx2sVANahO9VgMhG4zlqqRdxg' +
            'CzTIRBRmhbGyCxyu/kiXDpANygRyRxrd0EXTg+n4u/Uuzj4BfcuID' +
            'QqibeyadeSY92bEm3pS3Beeqsi+9H3l0vC9b4xfhM5+5NDX1fJj4R' +
            'gNPKt5FJ3tfOnNpzVGmlGKBLuZ7F4PgAAJhOaNSMvmH1qQDSx1znw' +
            'YB2cuN8kHWJpcMF0AoCsDxdqZ8ptacE34pJjvNqReI5+Ssdu3KdTp' +
            'QB9p6bod8kQnZoUscjtWZa7wOWSoHR3LlQ/AWHtjq/XZq5hg9I6jd' +
            's6/HdBDTQUwHMR18suiAU8Ze7h7LerrLBbhOfGCrI5JlitlKPN3TO' +
            '9B0UOjq9onOVPFUwa9ZmUv/f3tnt9vGdcTxO90YFCiIAkWTBCmWIl' +
            'mRUkmakihS1JcDNE16EbdxYcsp0ps+QYAaSZCkLYo8Q/OhJE0Q5CU' +
            'SuzKa14isJ2Fn56eZbChVLnJRxOgcCMRytTy7ez7+v90z58yUMtNG' +
            '406l2czMPRa1vxIKC4aA/KJo9Qkyu5B5VKqclDJna2uvVsv3qu13P' +
            'E5xu/r4ShysydN+NonoLSddX/9dWwMEOw7agoPli3jf/dXTDan0tX' +
            'u5imj49FbjdL1zq9M/rpbfyWSfJKcoTB0HjAu1excDRzmNnpnLv3f' +
            'BpoUkJHeh3s1lnzpNOv0vwEFzYToe/yFwEDgIHAQOnkccqLHgYjgo' +
            'e+PCglzKfec4yC786vqH/LLgoHO33mpl5k/qhbNkuExwoEYBfcv4q' +
            'Lj4cWPl40qyOu2h2pTvZDIfJSP8i/J2cIXtIBm5yl88kK+VnjIeeA' +
            '0OhCbrzbeXq+0k3vf803Q+sqdVP8lV3vU9tew0l/9svXHaaR9X6/f' +
            'arc8zC1/K/lXVeX07mI1FvtU6bXaOOdfFVZWfNlaPW4MHQoHq3HQ0' +
            '+qs0s97h4ebqlzFYFDgIHAQOfvo4gAWSCoUCLMjMf28mzt8QLf1+u' +
            'lE5n0TPlByzzzIlVxYFAXdEjRdUe5MCERyo4MuepcxZsfSolP9Tq/' +
            'VbCmRp+Q5jRCLjPoCjbxlPr8x/o3oudYSTOuqRT6nUTPYzzlKrfCj' +
            'FKNW/XLx7OQfPOacW5CvPUsyeJ28BNu+ou3KOYSKXPZe3iVoSdlmY' +
            '8kRenVrVf6zWntTWH/D+Ijg4Ono/U/qbbHTaX4xGr0/UXoxHtZF5/' +
            'dq3xbNIChv7ulp2qOZaeg0d2dV11+yGaAU/GVoUEnrEWJea7piFDj' +
            'EZ6GLkbY3A0jXHfWMNCuMO2cbmX44TuQJL8g2WFY8snM2u+kMbmd8' +
            '5NlAwNFM0GUFGo2RD9hzpSmc5kfxLNrgGKZwXLcEd761SlbLBwYiA' +
            'HM8ZObvs59pmNuRcHDlRo7mD41BX6ToZMTdjVefnIEzOyDVTRHKFO' +
            'MqTbLl9Nw+BOU4EEQ51rTdSTP6suXb7KaTgOifmDQ+Lv9yUCA5Cyp' +
            'LkfXUYSLVSy9g9t3XJOYXAZSCw6Dy16azH2puuUK6Zn2Dq5RROJXQ' +
            'YmsMR+YR6siGl8UtLPKuQLRMDWKYt2zSSTQ1GI1XJnU7MBE8h9DQu' +
            'FdVBke6qFZu73tOoRtSdX57bmt2UjI2Yn/BoxDb1Dp0n5haAfgRPK' +
            'XO82w10RTOrj90JnvvMBBldi4HFHpE4NvCiKUfihAFxxo6MTdmdNk' +
            'AKELBiydcXyzYBxdyZA0SADm6PdijgFKJhDkJ9JfJM/DI26hY9R35' +
            'yDQ6K5fJS/iXmES3dmFarv54BRCX/tZzFZxbVi99w/XWN3SOf5eor' +
            '9cqbTCLNzD+uL5/JXaRxkDyNlx7VSnfq9VcoDXk1WFh86EPxjoPq/' +
            'LTVfLuvsYqk5DcGg8z8p/yrtTx9Jg5KlQ9Xcm/1e19I6RUr7/Xa77' +
            'Q2N5eyn1fLP5gpVFqWv899GIq/JTUTF7PT+sppRnCgOwUHGCYYXOp' +
            'oQKV6b4g9Iv0GIRTIN7+6OLJ2Tt8MHAQOAgeBg+cFB+nFBYk5uPwG' +
            '7q+FEb4kIStEKH7gOCgsTOuVV7gAEfxC/qNySXBwIle4sPxwce6sX' +
            'n50GQeN0iOfWMXbQVHYMTf7dtCt/xOnteBA6ihXvpeblwf7x/8JB2' +
            'uCg7lTefJfyAgRvsvMn8mje3v1hIrLVV+bHYCam25u/nlbl6rRvxK' +
            '3GL3hUvaUNwKBhS8lWFs599Ehx4GUYbk9mslWcNCXt4O5fzHiFG8H' +
            'gYPAQeDg+cJBJvuBs6BSeYOs8GW3XHhJiJCYlW98l0zgzH59oXvFb' +
            'xwHvB34/FjBQXn+rNn8DTiQPYXqKpovEt1oPEzj4GJYbG2tVHjTRX' +
            'V1aXoZB9e/HUid5irHhSU55pvrh7Pqpae93n384M3gQBplyWarpv/' +
            'SbwfN/Hlt5QQcSGeZAU1eSqb5rXNk1H4SOAgcBA4CB88RDir5D4qF' +
            '8nL+724ydhwUCy8lR0qGxZcTa0Tx5YYFvpkZLAIHlWazsvywsfpWs' +
            '/Y9DrivpsVxuIwDyge7sJQ2dpk0DtgppY2yXYkD2VOobcwoedqgLN' +
            'v5wuON2idYji7jYGi+TCWr7tZWd+O1ZDRp4cmSvi9sVM8Tg2znVqd' +
            'z13HQlc7Yf31gobfXun+sLn67tfWlr3UKHAQOAgeBg+cJB3pk2q+1' +
            '4yCZfVoqlS1umqTrcYDmJ85Im83/PQ4kBy9/aTOJTzypuPZ9lF8OK' +
            '1VeLSx90mt/+kwcyIa8EdSXz3d6f+l2fy9/G+sPhAXNznFt5e1++1' +
            '1wQGeUq+r0+631B2vlr4523t9LLX0NHAQOAgeBg58+DlB7wYE7rMj' +
            'n8/IpR8qGT1L6mTrQvnnzZtqXaU2TQ6FhMS5xZ40DcGZbsV6blA6R' +
            'Sclws7Lhy8DTpU0TQsHwdzpQt+RoOHrOcnKEPSGL1GP7fq58fyWbD' +
            'N3jqIEpqe3e6+uN41pDxPwYvtBgaEu02x0LJblpkQ5oqOSPE4Mtde' +
            '/v3XPH3BpIQhloq0iWZEuURndGMbGZorc05iCdbt+8QIx19T0z8Tj' +
            '40PzVIx1c7diiIUwsEiJFwRlBocvLwKZrovbeHQ5soiMdEB0+0ECE' +
            '9EGkm7mg0v1FCQ90Rih6SA/dNEccY5twSBdm4ijp0EISsHNfE3myA' +
            'Thk+wVNOCtAPA/Uiz6fiKqci0mVFBoEJE+5sIH6XkDGUewDc87vWY' +
            '00HOq2RV0kcZgc0FUn+Vy2S5Z/sh+PEwcWfPNAZ5ZS+NQdeTLrEnG' +
            'eWFRT7npis3Dx+8H90qj6Go2CahpbmMt9jWLpbhzkMGmQNFrq1GnO' +
            'qanNfQs0wIRbqgMuA3efhUvFuTzKfli5q5OZwTeCLxtoLJOHgSa5O' +
            'TJoNrJN26OUJBPphhzDzxHqcSr+wrZFFKWlcWFU9K45RaGnjFLzqz' +
            '1ChBSRqzodmd9uW4iETUvsxMUNPivwayG/RcEQefmKgvEVkUH85Ve' +
            'rGkCTA1B7D5rJsy5+J3Dm2bDIBZJQZvdBgaKih8SOYdvVmwmrPu/U' +
            'meKi6pjAAQVYkW3Rc6CDeq+m0v8DDhBtFqDxAOk42NG5xBiCAweBg' +
            '8BB4CBwEDgIHAQOAgeBg8BBGgcktwuwIT9hqbLkwFeGtjiYr1x83e' +
            'K41S2x+M4LhIV7UlyUhpShF478ipviHuVTDgAByH5fYxxQTV1LlDy' +
            'hM6lExvxpAFK5hEugsiALMiitIhne73SQdNlgSJC+NtBFu5xo1xxp' +
            'wgVa1NCC7g004qS3K2CxZzEKEerbumYWdUL/ZSdSQ2/dMY+RHLNr7' +
            'kMxBAwtBiWY8OXDdPOJuRJlrB6RoRPJLbsmD22lsEvKgS5idXzQ6e' +
            'jyXBj/QtBQb5SZzutKyCg6Y+Pc1KEGgvTTcXYGlqHJoTr/fFEX+WI' +
            'mQKgZgsbQgNTsmyfSXVt07LfM9TBkzdm5EWqBG5ScsRfIwaxKlk9G' +
            '+51HnEJyBgpcNjW4p6tlsWLIfswckigHckA/j8zzqlexwwuiwSwKE' +
            '0X1J4RdWwfNFW6qa1l4Kj+kRSH4tF4qdKQuN10tyZ/2P9Qlum5j4m' +
            'B/6tgxL6ZAHKGmwCmlfQujyZMJtcmv0gP1aUPSbVtIfmDRTimoiS5' +
            'yZyU7lD8yT6S0EMlNWinmhkP1hkoZ0pch3cAWX8sFgzw6oHxlWfSe' +
            'RWXdMo+m0pF50qMvb6lXyS2LMMtz17YlN89RdNgQMa75tlsQME0iZ' +
            'e5FGRuBL0CWT5AhIiY7Rdy6GkDTTaVEyXRracuiZKL5Tg2U3P+FsW' +
            'DVQmci9W6NBQSSMCI0UgGIEW0R2IqFyOTRHXMw+yFO4CBwEDgIHAQ' +
            'OAgeBg8BB4CBwEDgIHAQOAgeBg8BB4CBwEDgIHAQOAgeBg8BB4CBw' +
            'EDgIHAQOAgfX4IAlyYg8i5Hl682bN0sa/oAZSixnk0/Zz7QlOYZpS' +
            '1yeZO6ToLhxPplf6jhgmpYkWNDUuJ+sTaYYQYkUGnNEXdVZiczUU9' +
            'lDlTHXFFJQ9ds2Qa5liYmmPuOUxiafUKlv6VYqyeUx68z137dJZMW' +
            'U14mlLXMCj8iwQZdEtzd1iTHbCBedHWUAVeRD06V3MxGUzDmejX1d' +
            'Q7qn8xgPNaZwV4NEoxV9jaS8ozMVudSRzlcEVQMLoCwl4OrkWe2kA' +
            'ukyVxYZnGjUgD2bI4o8IgVeCF2NPcH2tq4DlZ6+p1MTkU2kXjaQdH' +
            'JDChBwxAp1kl8hkhMNCc3EUT+j5+Zde2KTY8e24pu7QPkPLfEvdu5' +
            'YKAEQBhqONIoByJCdXIzPw2Qq7EhXLrssT2wWK1xAh6k7FNux5XJ0' +
            'YDEXKHwO9uvkqcYfNhDGTVsmv2uThF1dOcCfLrh+r0cuTMoWPUfGK' +
            'XwHpewcpqJdy3+leRzp2nNvP5Ju69JyZP+2LcGGjH5HPJyk0cAd0f' +
            'h5bOOH/mhEQQ11gigKTxlySQOLYuC9iQ16HA8eY40oTU+nDQx16im' +
            'JRzue4vZ0UjTI6GqYA/YTPKVniWdOHilZFM/zp8gUaobmo1e+RzbY' +
            'ww953HX3C8yrn3lyJoQBmi962NJwyaKx0IHkk0J9py9thgg+Ud/np' +
            'rIuQM4lAi66zVdflYxcg4nAQeAgcBA4CBwEDgIHgYPAQeAgcBA4+H' +
            'E44F+OAywIbji4jAPuPW0+QNg9upz8lpEuLpjVfwyXzeCgY6sCHQd' +
            'UCssPZ3CwpUsRwQELA92scCUOfKc3G2kYmBu2ND0TB+j5RMd+EX9a' +
            '/sjcu+2Yly36O5KexoH3YqRvU5dJ0hFmcOBH7qpJIo0DpNhxIFc4g' +
            'wOEKI0DYOoj22QlffkyDhCQPXVERt/HHIAyMOZM16aC0jhgAB/xgQ' +
            'K+QW5YJTjGcSDb0MdxwJVfjwO0aAYHbtfgh6CTfGAfgjO2Fc3U4K4' +
            'ZfRwHL+jCWOwmsudKHLidyHGwZ47yOGyk62fTOOBcFBeZgAOaNIPb' +
            'MzjgTrd/6LbOmxmGA/Tc65ELk1vAMOE4oCq5qdsauNNxQIuCZY6DL' +
            'V0mz0W62nslUnoUO2hzHMhPbmkAU55bvJH4c4jjAMNBmtFD9U1Hf3' +
            'Qc+KMRRcrtz+CABu84mJgzQIwIaRzwledMT79Q/5luf0TzwQGiBA5' +
            '+noqPiV6hYDz3/jgcNDS0pSs/FgH/bJrPh/8GB2g1T+/IO9ZhThc4' +
            'CBwEDgIHgYPAQeAgcBA4CBwEDgIHgYPAQeAgcBA4CBwEDgIHgYPAQ' +
            'eAgcHA9DiJFihQpUqRIkSJFihQpUqRIkSJFihQpUqRIkSJFihQpUq' +
            'SZ9G9Sawuz');

    end;
    procedure LoadVars;
    begin
      Drops:=['old charm','ffigy', 'rimson charm', 'reen charm', 'lue charm']

    end;

    Procedure XPcalc;
    Begin
    Exp := (Kills*266);
    End;

    Procedure XPhour;
    Begin
    XPcalc;
    XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
    End;

    Procedure DoThePainting;
    Begin
    If Paint = 'Yes' then
      begin
      XPhour;
      LoadBMP;
      SMART_DrawBitmap(False, BMP, Point(0, 337));
      SMART_DrawText(130, 395, UpCharsEx, '' +IntToStr(Kills)+  '', clRed);
      SMART_DrawText(130, 420, UpCharsEx, '' +IntToStr(Exp)+ '', clRed);
      SMART_DrawText(130, 445, UpCharsEx, ''+IntToStr(XPH)+'', clRed);
      SMART_DrawText(325, 395, UpCharsEx,''+TimeRunning+' ', clRed);
      SMART_DrawText(440, 420, UpCharsEx, ''+IntToStr(Charms)+'', clRed);
      FreeBitmap(BMP);
     end;
     end;
         Procedure Proggy;

    begin
      ClearDebug;
      XPHour;
      Writeln('********************************************');
      Writeln('*      |*/\GhoulerV4/\*|      *');
      Writeln('********************************************');
      Writeln('*You have killed ' + IntToStr(Kills) + 'Ghouls');
      Writeln('*And have Gained ' + IntToStr(Exp) + 'EXP');
      Writeln('*And have Gained ' + IntToStr(XPH) + 'XP/H');
      Writeln('*And have Picked up ' + IntToStr(Charms) + 'Charms');
      Writeln('* Ran for ' + TimeRunning + '');
      Writeln('********************************************');
      end;

          //Euphamism thanks, through YoHo
    procedure SMART_DrawBitmapWithTextMulti(Clear: Boolean; Bitmap: Integer; BmpPlacement: TPoint; TP: TStringArray; Shadow: Boolean; TxtPlacement: TPoint; Font: string; Colour: TColor);
    var
       Width, Height, bmp,
      I, B, H, Pic, TPH, Numb: Integer;
      Offset: TPoint;
      TTP: TPointArray;
       ATPA: T2DPointArray;
      Canvas: Integer;
       Colors: TIntegerArray;
    begin

      if (not SMART_DebugSetup) then
        SMART_SetupDebug();


      TPH := High(TP);

      Offset := IntToPoint(TxtPlacement.x - BmpPlacement.x, TxtPlacement.y - BmpPlacement.y);

      Pic := CopyBitmap(Bitmap);

      for I := 0 to TPH do
      begin

        TTP := LoadTextTPA(TP[i], SmallChars, H);

        for B := 0 to High(TTP) do
        begin

          Numb := ((I + 1) * 13);

          if Shadow then
            try

              FastSetPixel(Pic, TTP[b].x + 1 + Offset.x , TTP[b].y + Numb + 1 + Offset.y,131072);
            except
            end;

          try

            FastSetPixel(Pic, TTP[b].x + Offset.x, TTP[b].y + Numb + Offset.y, Colour);
          except
          end;
        end;
      end;
      begin
      GetClientDimensions(Width, Height);
      Bmp := BitmapFromString(22, 24, 'meJw9lEko/VEUx5+/OQobsraTIh' +
            'bm9+OZp5ANKdkrGWIlpSgbJVmIDVlQYqXIApk2Ssos8/R4Hh4yJLz' +
            '/p9837yxu5957zvd8z7n3HMMwUlJSSkpKMjIy0tPTc3JysrKybDZb' +
            'ZmYmWw7ZGoaRnJzMyqFuWbOzsz1bvABJS0vLy8tjm5SUZDOFrUAwR' +
            'gcBS7xyc3OtViu+HAqBq4KCAhQscSkqKmpsbBwbG1teXl5bW1taWp' +
            'qYmGhqaiovL1cgcRC47U+44gQcLA8ODs7Pz+12+/39/ePj4/Pz8+v' +
            'rq9Pp3N/f7+zsLC4uTk1NJTruKATFHVgwS0tLx8fH8cXR5XI9PT2h' +
            'vLy83N7enp6egvPw8HB0dDQ3N1dbW0u4/Px8VQMhL9aZmRnFJRz2K' +
            'Hd3d+Bw+Pv7+/X1BdrHxwchZmdnYaKsVUz4dHd3X19fu0zBEdqHh4' +
            'fT09NDQ0N7e3tutxvf7+/vn58f2QwODlJV6gkO7pQInoQGhBXa6+v' +
            'rZBoZGent7U36b29vgLy/v6OQCyEAqaqqwp3SQYP08YKkw+HAYHV1' +
            'NSwszGKx/DOFW3zdpoAgMwLxRvjyjvylzc1NEMiX9fj4mHPcfXx8L' +
            'KZER0cvLi7yKHiR19XVld5oZ2enuroaGjU1NTwfFaN6gFAlPz8/X1' +
            '9fouPu7+8vnNDQUPSoqCiM4QmNm5ublpYWylhXV3dycqLUwBkYGAg' +
            'JCbH8iZeXF2geKHRCQwB3KLW3t0MYBP0fTgAHgXA4kgVlFBNY6YT6' +
            'bG1tqdrgtLW18RxkwT9hCwG4LSwsBAcHy0XuQUFBKNomJCSQheoAb' +
            'T6/Ksnb6RUQwCsqKlRGD3NtgWpubnaaQrjd3V0elM9AIsPDw8Dyi8' +
            '7OzqgGa0xMTEBAAEFFBvfAwMC4uDglCwEizs/P6zeCUFlZub29zS1' +
            'vDcLl5SV5tba2xsbGRkREhIeHx8fHd3R04IWNyogN6YNAc4EADk3H' +
            'OUwuLi4+Pz9Flf+8sbFBjpQa2uCr6VD6+/vpJs/ESExMLCsrGx0d5' +
            'ZZc9GfUYqz4UjS7KSj8/KmpKRrZMEUIkGGlEXp7ewmnxmSFDy3pMA' +
            'UcNc7IyAh9JBe1FQpNChT9jtLQ0LCysqLorEocYUtSXV1dJK55qEG' +
            'niWo1hXMQNBXr6+t7enroqcnJSV6qr6+Pj1dYWIgLlpqTMhYZrphy' +
            'nINMCPFhOKvImrGeeYixxjg2oqEOxUtjExxuxUfhsAEfe2a4nk+Tm' +
            'Vsp/wHgCRiF');

      SetArrayLength(ATPA, Length(TP));
      for I := 0 to High(ATPA) do
      begin
        ATPA[i] := LoadTextTPA(TP[i], UpChars, H);
        for B := 0 to High(ATPA[i]) do
          ATPA[i][B].y := ATPA[i][B].y + i*(H);
      end;
      if Length(Colour) = 4 then
      begin
        SetArrayLength(Colors, Length(TP));
        for i := 0 to High(Colors) do
          Colors[i] := Colour;[1]
      end else
        Colors := Colours;

      DrawATPABitmapEx(bmp, ATPA, Colors);
     // Canvas := TCANVAS.Create;
     // Canvas.Handle := SmartGetDebugDC;
    //  DrawBitmap(Pic, Canvas, BmpPlacement.x, BmpPlacement.y);
     Canvas := CreateBitmap(Width, Height);                               //Creates a bitmap using the client's dimensions.
      SetPersistentMemoryBitmap(Canvas, SmartDebugArray, Width, Height);   //Essentially Makes Our Bitmap Point To Smart's Debug Canvas.
      FastDrawTransparent(Placement.X, Placement.Y, BMP, Canvas);          //Draw Our Bitmap On Smart's Canvas at the specified Position.
      ResetPersistentMemoryBitmap(Canvas);                                 //Reset The Canvas Bitmap to point to NULL data. AKA Nothing. Prevents leaks.

      FreeBitmap(Canvas);                                                  //Free Our Canvas Bitmap.
      FreeBitmap(bmp);
    end;


    //credits to Flight for helping with this.
    Function FindGhoul(Var X,Y: Integer): Boolean;
      var
        CTS,I,T,J: Integer;
        TPA,T1,T2: TPointArray;
        Box:TBox;
        PBox: TPointArray;
        ATPA:T2DPointArray;

        begin
        MarkTime(J);
      repeat
        Result := False;
        CTS := GetColorToleranceSpeed;
        PBox := TPAFromBox(IntToBox(240, 130, 290, 190));

        ColorToleranceSpeed(2);

        SetColorSpeed2Modifiers(0.20, 1.60);

         FindColorsSpiralTolerance(MSCX, MSCY, T1,(11652298), MSX1, MSY1, MSX2, MSY2, 3);
         FindColorsSpiralTolerance(MSCX, MSCY, T2,(11652298), MSX1, MSY1, MSX2, MSY2, 8);
         ColorToleranceSpeed(CTS);
         TPA := ClearTPAFromTPA(TPA, PBox);
         TPA := CombineTPA(T1,T2);
         ATPA := TPAtoATPAEx(TPA,30,30);
         SortATPAFrom(ATPA,Point(257,157));

    For i := 0 to High(ATPA) do
    begin
        if (Length(TPA) < 1) then
          Exit;
         Box := GetATPABounds(ATPA);
         SMART_DrawDotsEx(false, TPA, 65320);
         MiddleTPAEx(ATPA[i],X,Y);
         MMouse(X,Y,5,5);

        if WaitUpText('ck Gho', 50) then
        begin
          GetMousePos(X, Y);
          ClickMouse2(True);
          Result := True;
          SMART_ClearCanvasArea(Box);
          Exit;
        end else
        Result := False;
        end;
        Until (TimeFromMark(J) > 3500);
        End;
    Function FindObjOnScreen(Up,Option:Array of String;Color,Tolerance1,Tolerance2:Integer;MC2:Variant;Hmod,Smod:Extended): Boolean;
      var
      X,Y:Integer;
        CTS,I,T,J: Integer;
        Box:TBox;
        TPA,T1,T2,Pbox: TPointArray;
        ATPA:T2DPointArray;

        begin
        MarkTime(J);
      repeat
        Result := False;
        CTS := GetColorToleranceSpeed;
        PBox := TPAFromBox(IntToBox(245, 135, 280, 185));

        ColorToleranceSpeed(2);

        SetColorSpeed2Modifiers(Hmod,Smod);

         FindColorsSpiralTolerance(MSCX, MSCY, T1,(Color), MSX1, MSY1, MSX2, MSY2, Tolerance1);
         FindColorsSpiralTolerance(MSCX, MSCY, T2,(Color), MSX1, MSY1, MSX2, MSY2, Tolerance2);
         ColorToleranceSpeed(CTS);
         TPA := ClearTPAFromTPA(TPA, PBox);
         TPA := CombineTPA(T1,T2);
         ATPA := TPAtoATPAEx(TPA,20,20);
         SortATPAFrom(ATPA,Point(257,157));

     For i := 0 to High(ATPA) do
    begin
        if (Length(TPA) < 1) then
          Exit;
         Box := GetATPABounds(ATPA);
         SMART_DrawBoxEx(False,IntToBox(Box.X1,Box.Y1,Box.X2,Box.Y2),65320);
         SMART_DrawDotsEx(false, TPA, 65320);
         MiddleTPAEx(ATPA[i],X,Y);
         MMouse(X,Y,5,5);
         if WaitUpTextMulti(Up, 400) then
        begin
          GetMousePos(X, Y);
          ClickMouse2(MC2);
          ChooseOptionMulti(Option);
         SMART_ClearCanvasArea(Box);
          Result := True;
          Exit;
        end;
        end;
        Until (TimeFromMark(J) > 3500);
        End;

    Function PickupCharms:Boolean;
    Var
      X, Y: Integer;
    begin
    If Charmer = False then Exit;
    If Charmer = True then
    begin
      FindNormalRandoms;
      If FindObjOnScreen(['ake', 'Take', 'ke', 'ak'],['harm'],6397359,4,8,False,0.38,0.55) Then
      Begin
      Wait(500);
        writeln('You have found the some Charms!');
        While IsMoving do
        Wait(50);
        FindNormalRandoms;
        Wait(RandomRange(300,400));
        Inc(Charms);
      End;
      end;
      end;

    procedure GetOutF;
    begin
      case random(2) of
        0 : begin
            KeyDown(VK_Tab);
            wait(35+random(100));

            wait(35+random(100));
            KeyUp(VK_Tab);
            wait(25+random(70));

            wait(35+random(100));
            end;
        1 : begin
            ExamineInv;
            end;
      end;
    end;

    procedure GMoveMouse;
    begin
      case random(4) of
        0 : begin
            mMouse(5,25,10,20);
            end;
        1 : begin
            mMouse(250,150,40,40);
            end;
        2 : begin
            mMouse(505,350,50,50);
            end;
        3 : begin
            mMouse(30,315,20,40);
            end;
      end;
    end;
     //laakes
    Procedure RAntiBan;
    begin
      Wait(randomrange(200,400));
      case random(RandAmount) of
        0 : begin
              writeln('Random Wait AntiBan');
              Wait(randomrange(1100,2500));
            end;
        1 : begin
              GAntiBan;
            end;
        2 : begin
              writeln('pickup mouse / GMoveMouse');
              PickUpMouse;
              Wait(randomrange(25,100));
              GMoveMouse;
              Wait(randomrange(250,300));
            end;
        3 : begin
              writeln('Double GMoveMouse');
              GMoveMouse;
              Wait(randomrange(45,100));
              GMoveMouse;
            end;
      end;
    end;
    //laake's
    Procedure KillGhouls;
    var
    sX,sY,X,Y,J: Integer;
    begin
    Repeat
         If FindGhoul(X,Y) then
         Wait(1950);
         Until UInFight or InFight;
         If FindBlackChatMessage('omeone else is fighting') then begin
         RandomThing;
         GetOutF;
         End;
        If UInFight or Infight then
        WriteLn('You are Ghouling this Ghoul!');
        Inc(Kills);
        begin
          repeat
          Proggy;
          DoThePainting;
          FindNormalRandoms;
          Eat('Eat');
          RAntiBan;
          until (not UInFight) or (not OthersInFight) or (not LoggedIn)
        end;
        wait(randomrange(200,300));
      end;

    Procedure PickScroll;
    Begin
    If ChampionScroll = False then Exit;
    If ChampionScroll = True then
    Begin
      FindObjOnScreen(['ake', 'Take', 'ke', 'ak'],['croll'],9621212,4,9,False,0.02,3.25);
    End;
    end;
    Procedure PickEffigy;
    Begin
    If Effigy = 'No' then Exit;
    If Effigy = 'Yes' then
    Begin
      FindObjOnScreen(['ake', 'Take', 'ke', 'ak'],['ffigy'],8290940,1,3,False,1.73,0.01);
    End;
    end;

    begin
     {$IFDEF SMART}
        {$IFDEF SIMBAMAJOR980}
          Smart_Server := 72;
          Smart_Members := True;
          Smart_Signed := True;
          Smart_SuperDetail := False;
        {$ELSE}
          SRL_SixHourFix := True;
          Smart_FixSpeed := True;
        {$ENDIF}
      {$ENDIF}
      SetupChar;
      LoadVars;
      DoThePainting;
      repeat
      MarkTime(Z);
      Repeat
      Wait(500);
      DoThePainting;
      FindObjOnScreen(['Bank', 'ank', 'ooth'],['ank'],7567226,1,3,True,1.59,0.48);
      Until DidRedClick or (TimeFromMark(Z) > 2500);
      If DidRedClick then
      repeat
      Wait(50);
    until BankScreen;
    begin
      Proggy;
    DepositAll;
    wait(50 + Random(250));
      Proggy;
    Withdraw(0, 0, 28);
    wait(50 + Random(250));
      Proggy;
    Deposit(1,1,false);
    wait(50 + Random(250));
      Proggy;
    CloseBank;
    end;
     ToGhouls;
     repeat
     DoThePainting;
     Proggy;
     KillGhouls;
     DothePainting;
      PickupCharms;
      DoThePainting;
      PickEffigy;
      DoThePainting;
      PickScroll;
      DoThePainting;
      until (hppercent<50);
      ToBank;
      DoThePainting;
      Proggy;
      FindNormalRandoms;
      until not LoggedIn
      writeln('stopping script');
      Proggy;
    TerminateScript;
    end.


    I'm stuck here with an error ";" on line 1121
    i attempted to follow brandons manual graphics draw fix but got caught up here, any suggestions on whats wrong? Thank you in advance

  23. #1273
    Join Date
    Jan 2012
    Posts
    369
    Mentioned
    6 Post(s)
    Quoted
    91 Post(s)

    Default

    Quote Originally Posted by [J]ustin View Post
    Just checked my processes.. You are right.

    That's quite annoying me as well... If you find a solution on how to close those instances share please

  24. #1274
    Join Date
    Dec 2011
    Posts
    100
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by speedster View Post
    That's quite annoying me as well... If you find a solution on how to close those instances share please
    Download 'KillProcess'

    Allows you to kill multiple processes instantly instead of going through task manager one by one.

  25. #1275
    Join Date
    Jan 2012
    Posts
    16
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    I was going to try the official fix but i got an error and gave up. Ill keep using the patch fix for a couple of months until the admins get all this mess sorted out. I'm definitely not going to spend 4 hours+ searching around the forums just to update a simple fix.

Page 51 of 54 FirstFirst ... 414950515253 ... LastLast

Thread Information

Users Browsing this Thread

There are currently 2 users browsing this thread. (0 members and 2 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •