
%Licensed to the Apache Software Foundation (ASF) under one
%or more contributor license agreements.  See the NOTICE file
%distributed with this work for additional information
%regarding copyright ownership.  The ASF licenses this file
%to you under the Apache License, Version 2.0 (the
%"License"); you may not use this file except in compliance
%with the License.  You may obtain a copy of the License at
%
%   http://www.apache.org/licenses/LICENSE-2.0
%
%Unless required by applicable law or agreed to in writing,
%software distributed under the License is distributed on an
%"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
%KIND, either express or implied.  See the License for the
%specific language governing permissions and limitations
%under the License.
Copyright \copyright~ 2012 The Apache Software Foundation

Copyright \copyright~ 2012 International Business Machines Corporation

{\addtolength{\leftskip}{10 mm}
     \paragraph{License and Disclaimer}
     The ASF licenses this documentation to you under the Apache License, Version 2.0 (the "License");
     you may not use this documentation except in compliance with the License.  You may obtain a copy of
     the License at
              
     \url{http://www.apache.org/licenses/LICENSE-2.0}
     
     Unless required by applicable law or agreed to in writing, this documentation and its contents are
     distributed under the License on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
     either express or implied.  See the License for the specific language governing permissions and
     limitations under the License.

     \paragraph{Trademarks}     
     All terms mentioned in the text that are known to be trademarks or service marks have been
     appropriately capitalized.  Use of such terms in this book should not be regarded as affecting the
     validity of the the trademark or service mark.

}

\vspace{.5in}

\newdateformat{mydate}{%
\monthname~\THEYEAR}

Publication date: \mydate\today
