よよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよよ