<?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.
-->

<Response
      xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17
        http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd">
    <Result>
        <Decision>Deny</Decision>
        <Status>
            <StatusCode
                  Value="urn:oasis:names:tc:xacml:1.0:status:ok"/>
        </Status>

    <Obligations>
        <Obligation
            ObligationId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policy2:obligation-3"
            FulfillOn="Deny">
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policy2:assignment1"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment1</AttributeAssignment>
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policy2:assignment2"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment2</AttributeAssignment>
        </Obligation>
        <Obligation
            ObligationId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policy2:obligation-4"
            FulfillOn="Deny">
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policy2:assignment1"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment1</AttributeAssignment>
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policy2:assignment2"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment2</AttributeAssignment>
        </Obligation>
        <Obligation
            ObligationId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policyset:obligation-3"
            FulfillOn="Deny">
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policyset:assignment1"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment1</AttributeAssignment>
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policyset:assignment2"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment2</AttributeAssignment>
        </Obligation>
        <Obligation
            ObligationId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policyset:obligation-4"
            FulfillOn="Deny">
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policyset:assignment1"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment1</AttributeAssignment>
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA026:policyset:assignment2"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment2</AttributeAssignment>
        </Obligation>
    </Obligations>

    </Result>
</Response>
