function candles_2020

    % Holiday greetings.
    
    colors = get(gca,'colororder');
    flames = init;
    tic
    while toc < 3600
        if mod(toc,20) > 15
            c = 'k';
        else
            i = randi(length(colors));
            c = colors(i,:);
        end
        j = randi(length(flames));
        flames(j).FaceColor = c;
        pause(1/6)
    end
    
    % ---------------------------------------------
    
    function flames = init
        clf
        axis([0 1 0 1])
        axis off
        for k = 1:5
            [x,y] = base(k);
            patch(x,y,'w')
            [x,y] = edge(k);
            flames(k) = patch(x,y,'k');
        end
    end
        
    function [x,y] = base(k)
        xo = [.21 .33 .45 .57 .69];
        ys = [.52 .30 .38 .30 .44];
        x = xo(k) + .10*[0 1 1 0 0];
        y = ys(k)*[0 0 1 1 0];
    end

    function [x,y] = edge(k)
        xo = [.21 .33 .45 .57 .69];
        yo = [.52 .30 .38 .30 .44];
        v = [2,0,0,2,3,5];
        t = 0:0.1:5;
        e = makima(0:5,v,t);
        x = xo(k) + .01*[e 10-fliplr(e)];
        y = yo(k) + .08*[t fliplr(t)];
    end
    
    % Inspired by Patsy and
    % <https://www.amazon.com/gp/product/B075JDVR53>.
end