// /** @file
// Instance of S3 PCI Segment Library based on PCI Segment and S3 BootScript Library.
//
// S3 PCI Segment Services that perform PCI Configuration cycles and
// also enable the PCI operation to be replayed during an S3 resume.
//
// Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
//
// This program and the accompanying materials are
// licensed and made available under the terms and conditions of the BSD License
// which accompanies this distribution.  The full text of the license may be found at
// http://opensource.org/licenses/bsd-license.php
//
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "Instance of S3 PCI Segment Library based on PCI Segment and S3 BootScript Library."

#string STR_MODULE_DESCRIPTION          #language en-US "S3 PCI Segment Services that perform PCI Configuration cycles and also enable the PCI operation to be replayed during an S3 resume."

