/** @file
  String definitions for HTTP Boot configuration.

  Copyright (c) 2016, 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.

**/

#langdef en-US "English"

#string STR_HTTP_BOOT_CONFIG_FORM_TITLE       #language en-US "HTTP Boot Configuration"
#string STR_HTTP_BOOT_CONFIG_FORM_HELP        #language en-US "Configure HTTP Boot parameters."
#string STR_HTTP_BOOT_IP_VERSION_PROMPT       #language en-US "Internet Protocol"
#string STR_HTTP_BOOT_IP_VERSION_HELP         #language en-US "Select the version of Internet Protocol."
#string STR_HTTP_BOOT_IP_VERSION_4            #language en-US "IP4"
#string STR_HTTP_BOOT_IP_VERSION_6            #language en-US "IP6"
#string STR_BOOT_URI_PROMPT                   #language en-US "Boot URI"
#string STR_BOOT_URI_HELP                     #language en-US "A new Boot Option will be created according to this Boot URI."
#string STR_BOOT_DESCRIPTION_PROMPT           #language en-US "Input the description"
#string STR_NULL_STRING                       #language en-US ""
