program MyFractal{

    function myFractal(Integer n, Integer x1, Integer y1, Integer x2, Integer y2):void; 
	{
        if (n > 0)
		{
            myFractal(n - 1, x1 - (x2 / 4), y1 - (y2 / 4), x2 / 2, y2 / 2);
            myFractal(n - 1, x1 + (x2 - (x2 / 4)), y1 - (y2 / 4), x2 / 2, y2 / 2);
            myFractal(n - 1, x1 + (x2 - (x2 / 4)), y1 + (y2 - (y2 / 4)), x2 / 2, y2 / 2);
            myFractal(n - 1, x1 - (x2 / 4), y1 + (y2 - (y2 / 4)), x2 / 2, y2 / 2);
            setColor(255, 0, 0);
            drawRect(x1, y1, x2, y2);
            setColor(0, 255, 0);
            fillRect(x1 + 1, y1 + 1, x2 - 1, y2 - 1);
        }
    }

    function Main():void;
	var
	{
		Integer width = getWidth() / 2;
		Integer height = getHeight() / 2;
	}
    {
		myFractal(6, (getWidth() - width) / 2, (getHeight() - height) / 2, width, height);
		repaint();
    }

	constructor
	{
		setState(STATE_VGA);
	}
}