리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리리