<?xml version='1.0'?>
<!--
    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.
	   
-->
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude">
  <xi:include href="components/trinidad/faces/Command.xml" xpointer="/faces-config/*"></xi:include>
  <xi:include href="events/javax/faces/Action.xml" xpointer="/faces-config/*"></xi:include>
  <xi:include href="events/trinidad/faces/Launch.xml" xpointer="/faces-config/*"></xi:include>
  <xi:include href="events/trinidad/faces/Return.xml" xpointer="/faces-config/*"></xi:include>
</faces-config>
