<?xml version="1.0" encoding="UTF-8"?>

<!--
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.
-->

<!-- START SNIPPET: foConfig -->
<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <xsl:attribute-set name="layout.master.set.base">
    <xsl:attribute name="page-width">8.5in</xsl:attribute>
    <xsl:attribute name="page-height">11.0in</xsl:attribute>
    <xsl:attribute name="margin-top">0.625in</xsl:attribute>
    <xsl:attribute name="margin-bottom">0.6in</xsl:attribute>
    <xsl:attribute name="margin-left">1in</xsl:attribute>
    <xsl:attribute name="margin-right">1in</xsl:attribute>
  </xsl:attribute-set>
  <xsl:template match="processing-instruction('hard-pagebreak')">
    <fo:block break-after='page'/>
  </xsl:template>
  <xsl:attribute-set name="body.pre" use-attribute-sets="base.pre.style">
    <xsl:attribute name="font-size">8pt</xsl:attribute>
  </xsl:attribute-set>
  <xsl:attribute-set name="body.source" use-attribute-sets="body.pre">
    <xsl:attribute name="color">black</xsl:attribute>
    <xsl:attribute name="start-indent">inherited-property-value(start-indent) + 1.5em</xsl:attribute>
    <xsl:attribute name="end-indent">inherited-property-value(end-indent) + 1.5em</xsl:attribute>
  </xsl:attribute-set>
</xsl:stylesheet>
    <!-- END SNIPPET: foConfig -->