데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데데