
Apache MyFaces Html5 Demo
Copyright 2011 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product includes software developed at http://code.google.com/p/google-code-prettify/.

Notices for files :
    mother_goose_flv.flv
    mother_goose_h264.mp4
    mother_goose_h264_copy.mp4
    mother_goose_ogg_2.ogv
    mother_goose_thumbnail_small.png

    "Mother Goose: Little Miss Muffet"(1903) is public property.

This product includes software developed by LongTail Video.