La Atlantis Inglesa que Esconden las Olas
Mira, cuando topé con esta historia no pude quitármela de la cabeza. Imagina lo siguiente: pueblos medievales engullidos por el mar, iglesias hundidas bajo las olas, pescadores generation tras generation jurando que escuchaban campanas sonar desde el fondo. ¿No te parece que historias así hacen que la historia se sienta viva?
Un Pueblo que el Tiempo Se Tragó
Frente a las costas de Cromer, en Inglaterra, hay un punto a unos 400 metros de la orilla donde descansa algo extraordinario. Hablo del perdido pueblo medieval de Shipden. Un lugar que llegó a tener 117 habitantes, varias casas señoriales, un puerto funcionando y no una sino dos iglesias.
Según el Domesday Book de 1086, esto no era ningún villorrio de mala muerte. Era una comunidad de verdad. Funcional. Con 36 cerdos y tres acres de pradera a su nombre.
Y luego llegó el mar y se lo llevó todo.
Una Conquista Lenta
Lo que me fascinó de esta historia es que Shipden no desapareció de la noche a la mañana. Fue un proceso lento,生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生生中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生生出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中生产出中
Sin embargo, la realidad bajo la superficie cuenta otra historia. Un equipo de voluntarios del Proyecto Alfred Savin ha estado buceando en esta zona, documentando lo que encuentran. Hasta ahora, han fotografiado y cartografiado unas 25 estructuras artificiales en el fondo marino. Muros de pedernal. Piedras dispersas. Restos de lo que un día fue la vida cotidiana de alguien.
Pero la gran pieza que buscan —la iglesia de San Pedro— sigue sin aparecer.
Y puede haber una razón para ello.
En agosto de 1888, un remolcador de paletas llamado Victoria navegaba hacia Cromer cuando chocó con algo sumergido y quedó atrapado. Tras una operación de rescate dramática (afortunadamente, todos fueron salvados), los salvadores despejaron el obstáculo usando explosivos.
Esa explosión podría haber dispersado los restos de la iglesia o enterrarlos más profundo. También podría explicar por qué los locales llegaron a creer que la iglesia estaba exactamente donde se encuentra Church Rock. La verdad, al parecer, podría estar un poco más al noroeste.
La Leyenda a Prueba
El equipo del proyecto, dirigido por Peter Stibbons (quien, siendo honestos, "siempre conoció la historia de Church Rock" porque creció en Cromer), ahora compara meticulosamente sus hallazgos físicos con documentación medieval. Separan hechos de leyendas, lo cual no siempre es fácil cuando se trata de historias transmitidas generación tras generación.
"Este es un paso importante", dijo Stibbons a la BBC. "Estamos planteando ideas, no conclusiones".
Me encanta esa actitud. Hay algo admirable en investigadores que pueden mantener tanto la evidencia científica como la leyenda local con igual respeto.
Por Qué Importa Todo Esto
Quizás te estés preguntando: ¿a qué viene todo esto? Son solo unas rocas viejas bajo el mar, ¿no?
Pero lo que me emociona es que no se trata solo de encontrar una iglesia. El Proyecto Alfred Savin está documentando cómo ha cambiado la línea costera a lo largo de millones de años, rastreando el ascenso y la caída de asentamientos que la mayoría de los libros de historia han olvidado por completo. Y estos no eran lugares insignificantes. Eran centros comerciales, puertos donde circulaban cereales y madera, comunidades que dieron forma a toda una región.
Entender cómo se perdieron podría incluso ayudar-nos a pensar en las comunidades costeras de hoy y lo que podría pasar a medida que los niveles del mar sigan subiendo.
La Búsqueda Continúa
La temporada de inmersiones ha terminado, con los artefactos recuperados送往 el Museo de Cromer para su estudio. Pero el próximo año, el equipo volverá al agua, continuando su búsqueda de San Pedro.
Personalmente, espero que la encuentren. No solo por su importancia histórica, sino porque hay algo poético en devolver a la luz esta ciudad perdida —aunque sea solo a través de fotografías y una documentación cuidadosa.
A veces el mar devuelve lo que se lleva. Y a veces, hacen falta muchas personas tercas y curiosas con equipo de buceo y amor por las leyendas locales para convencerlo.
¿Qué piensas tú? ¿Crees que encontrarán la iglesia? Me encantaría saber tu opinión en los comentarios. Y si enjoyed este buceo en la historia (el juego de palabras estuvo totalmente intended), compártelo con alguien que ame las historias de civilizaciones perdidas.
Fuente: Popular Mechanics