NWGNUmod_cgi revision 6bdda696b3ea703c47e87fea61017ec655f91d92
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Make sure all needed macro's are defined
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Get the 'head' of the build environment if necessary. This includes default
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# targets and paths to tools
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinifndef EnvironmentDefined
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininclude $(AP_WORK)\build\NWGNUhead.inc
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinendif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These directories will be at the beginning of the include list, followed by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# INCDIRS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXINCDIRS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(AP_WORK)/include \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(NWOS) \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(AP_WORK)/modules/arch/netware \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(AP_WORK)/modules/http \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(AP_WORK)/modules/filters \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(APR)/include \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(APRUTIL)/include \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(APR) \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These flags will come after CFLAGS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXCFLAGS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin -prefix pre_nw.h \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These defines will come after DEFINES
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXDEFINES += \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These flags will be added to the link.opt file
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXLFLAGS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These values will be appended to the correct variables based on the value of
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# RELEASE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinifeq "$(RELEASE)" "debug"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXINCDIRS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXCFLAGS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXDEFINES += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXLFLAGS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinendif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinifeq "$(RELEASE)" "noopt"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXINCDIRS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXCFLAGS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXDEFINES += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXLFLAGS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinendif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinifeq "$(RELEASE)" "release"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXINCDIRS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXCFLAGS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXDEFINES += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXLFLAGS += \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinendif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These are used by the link target if an NLM is being generated
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This is used by the link 'name' directive to name the nlm. If left blank
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# TARGET_nlm (see below) will be used.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_NAME = mod_cgi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This is used by the link '-desc ' directive.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If left blank, NLM_NAME will be used.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_DESCRIPTION = Apache $(VERSION_STR) CGI Module
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This is used by the '-threadname' directive. If left blank,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# NLM_NAME Thread will be used.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_THREAD_NAME = Mod_cgi Module
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If this is specified, it will override VERSION value in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# $(AP_WORK)\build\NWGNUenvironment.inc
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_VERSION =
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If this is specified, it will override the default of 64K
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_STACK_SIZE = 8192
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If this is specified it will be used by the link '-entry' directive
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_ENTRY_SYM = _LibCPrelude
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If this is specified it will be used by the link '-exit' directive
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_EXIT_SYM = _LibCPostlude
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If this is specified it will be used by the link '-check' directive
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_CHECK_SYM =
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If these are specified it will be used by the link '-flags' directive
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinNLM_FLAGS = AUTOUNLOAD, PSEUDOPREEMPTION
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If this is specified it will be linked in with the XDCData option in the def
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# file instead of the default of $(NWOS)/apache.xdc. XDCData can be disabled
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# by setting APACHE_UNIPROC in the environment
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinXDCDATA =
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If there is an NLM target, put it here
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinTARGET_nlm = \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(OBJDIR)/mod_cgi.nlm \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If there is an LIB target, put it here
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinTARGET_lib = \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These are the OBJ files needed to create the NLM target above.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Paths must all use the '/' character
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILES_nlm_objs = \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(OBJDIR)/mod_cgi.o \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These are the LIB files needed to create the NLM target above.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These will be added as a library command in the link.opt file.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILES_nlm_libs = \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin libcpre.o \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These are the modules that the above NLM target depends on to load.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These will be added as a module command in the link.opt file.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILES_nlm_modules = \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin aprlib \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin libc \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If the nlm has a msg file, put it's path here
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILE_nlm_msg =
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If the nlm has a hlp file put it's path here
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILE_nlm_hlp =
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If this is specified, it will override $(NWOS)\copyright.txt.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILE_nlm_copyright =
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Any additional imports go here
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILES_nlm_Ximports = \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin @$(APR)/aprlib.imp \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin @$(NWOS)/httpd.imp \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin @libc.imp \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Any symbols exported to here
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILES_nlm_exports = \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin cgi_module \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# These are the OBJ files needed to create the LIB target above.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Paths must all use the '/' character
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinFILES_lib_objs = \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(EOLIST)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# implement targets and dependancies (leave this section alone)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinlibs :: $(OBJDIR) $(TARGET_lib)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinnlms :: libs $(TARGET_nlm)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Updated this target to create necessary directories and copy files to the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# correct place. (See $(AP_WORK)\build\NWGNUhead.inc for examples)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininstall :: nlms FORCE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Any specialized rules here
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Include the 'tail' makefile that has targets that depend on variables defined
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# in this makefile
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininclude $(AP_WORK)\build\NWGNUtail.inc
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin