Construyendo Agentes de IA Empresariales con Flink SQL: Conectando LLMs a Datos Internos

2025-06-18

Este artículo explora la construcción de agentes de IA empresariales utilizando Flink SQL, conectando modelos de lenguaje grandes (LLMs) con datos y recursos internos. Para datos estructurados, la semántica de unión SQL de Flink SQL integra fácilmente datos de bases de datos externas con la entrada del LLM. Para datos no estructurados, el artículo propone la generación aumentada por recuperación (RAG), codificando datos en vectores almacenados en una base de datos vectorial, y luego consultando e integrando a través del soporte de tipo vectorial de Flink SQL. Utilizando el ejemplo de resumir artículos de investigación e incorporar investigaciones internas, el artículo demuestra la construcción de un sistema de agente de IA con dos trabajos Flink SQL: uno actualiza el almacén vectorial, el otro consulta e invoca el LLM. Finalmente, menciona el uso de funciones de tabla de procesos (PTFs) para integrar el estándar MCP de Anthropic para una construcción de agente de IA más flexible.

Leer más
Desarrollo

Mejorando la calidad de la base de conocimiento para sistemas RAG: Mejores prácticas para IA y humanos

2025-06-18
Mejorando la calidad de la base de conocimiento para sistemas RAG: Mejores prácticas para IA y humanos

Esta guía describe las mejores prácticas para crear documentación que sirva eficazmente tanto a lectores humanos como a IA/LLM en sistemas de Generación Aumentada por Recuperación (RAG). La documentación de alta calidad mejora las respuestas de la IA y la experiencia del usuario, creando un bucle de retroalimentación positivo. El artículo detalla cómo los sistemas de IA procesan la documentación (recuperación, base de datos vectorial, generación), destacando la importancia de un contenido claro, conciso y contextualmente completo. Las recomendaciones incluyen el uso de HTML semántico, evitar PDFs, crear contenido amigable para rastreadores, asegurar la claridad semántica, proporcionar equivalentes de texto para elementos visuales y mantener diseños simples. La guía también aborda desafíos comunes de diseño de contenido, como dependencias contextuales, brechas de descubribilidad semántica, suposiciones de conocimiento implícito y dependencias de información visual. Aboga por una arquitectura de información jerárquica, secciones autocontenidas y proporcionar contexto de error con soluciones. En última instancia, el objetivo es una documentación que sea legible para humanos y amigable para la IA.

Leer más

ChatGPT: Mi Generador de Sitios Estáticos

2025-06-18
ChatGPT: Mi Generador de Sitios Estáticos

Cansado de los generadores de sitios estáticos tradicionales, el autor exploró varias opciones antes de decidirse por una solución inesperada: ¡ChatGPT! Simplemente copiar y pegar entradas nuevas y antiguas en ChatGPT genera las páginas HTML sin esfuerzo, sin necesidad de configuración. Si bien existe el riesgo de que ChatGPT altere sutilmente el texto original, la simplicidad y velocidad del método son convincentes; incluso este artículo se creó de esta manera. El autor especula sobre la IA reemplazando herramientas tradicionales en más áreas, como generadores de documentación y herramientas de línea de comandos.

Leer más
Desarrollo

Desafiando a la IA con Teoría de Números: Una Prueba de Realidad

2025-06-18
Desafiando a la IA con Teoría de Números: Una Prueba de Realidad

Un matemático cuestiona las verdaderas capacidades de la IA actual en matemáticas, argumentando que los modelos de IA existentes simplemente están repitiendo, y no comprendiendo realmente las matemáticas. Para probar esta hipótesis, está iniciando un experimento: crear una base de datos de problemas avanzados de teoría de números e invitar a empresas de IA a resolverlos usando sus modelos. Las respuestas se limitan a enteros no negativos, diseñados para evaluar si la IA posee un razonamiento matemático genuino o simplemente se basa en la coincidencia de patrones y datos de internet. Este experimento tiene como objetivo diferenciar entre la 'comprensión' y la 'imitación' de la IA, impulsando una evaluación más profunda de las capacidades matemáticas de la IA.

Leer más
IA

Framework Laptop 12: Reparaciones fáciles, pero con compensaciones

2025-06-18
Framework Laptop 12: Reparaciones fáciles, pero con compensaciones

El Framework Laptop 12 destaca por su diseño modular y facilidad de reparación. Los usuarios pueden cambiar fácilmente componentes como RAM y SSD con solo un destornillador. Sin embargo, para lograr un factor de forma más pequeño, el Laptop 12 hace concesiones, como omitir un teclado retroiluminado y un sensor de huellas dactilares, y solo admite un único módulo de RAM DDR5, lo que limita la capacidad de memoria. Si bien utiliza SSDs M.2 2230 más pequeños, estos ahora están más fácilmente disponibles. En general, el Laptop 12 equilibra la facilidad de uso y la capacidad de actualización, pero exige que los usuarios consideren algunas limitaciones funcionales.

Leer más

DSC: Una biblioteca de tensores compatible con PyTorch y un framework de inferencia

2025-06-18
DSC: Una biblioteca de tensores compatible con PyTorch y un framework de inferencia

DSC es una biblioteca de tensores compatible con PyTorch y un framework de inferencia para modelos de aprendizaje automático. Cuenta con una API de bajo nivel compatible con C, encapsulada en una API moderna de Python similar a NumPy/PyTorch, con mejoras de usabilidad. Las características clave incluyen una API intuitiva, soporte integrado para redes neuronales, soporte para múltiples backends (CPU y CUDA), dependencias externas mínimas y ninguna asignación en tiempo de ejecución. La instalación es sencilla, solo se necesita un compilador C++20 y GNU Make. Se admite la aceleración CUDA; simplemente configure las variables de entorno para habilitarla. Las pruebas unitarias se ejecutan mediante pytest, garantizando la precisión.

Leer más
Desarrollo

Netflix incluirá canales de TV franceses en un acuerdo con TF1

2025-06-18
Netflix incluirá canales de TV franceses en un acuerdo con TF1

A partir del verano de 2026, los suscriptores de Netflix en Francia podrán ver contenido de televisión emitido comercialmente sin salir del servicio. El gigante del streaming ha anunciado un acuerdo de distribución con la empresa de medios francesa TF1 para ofrecer los canales de televisión en abierto de TF1 y el contenido de streaming bajo demanda TF1 Plus a los usuarios franceses de Netflix como parte de su plan de suscripción existente. Esta asociación innovadora podría ayudar a Netflix a cumplir los requisitos legales de inversión en contenido en francés y representa una nueva estrategia para las cadenas de televisión tradicionales que se enfrentan a la competencia de los servicios de streaming.

Leer más
Tecnología Acuerdo de TV

Desata tu Mago Interior del Color: Poline Playground

2025-06-18
Desata tu Mago Interior del Color: Poline Playground

¡Embárcate en una aventura de creación de color en Poline Playground! Esta herramienta interactiva te permite explorar los territorios inexplorados del color. Agrega y elimina puntos de anclaje con las teclas P y Suprimir, respectivamente, y usa el selector de color de tu navegador para ajustar tus creaciones. Ajusta el tono, la luminosidad y la saturación para crear paletas de colores únicas. ¡Experimenta la magia de Poline y desata tu imaginación!

Leer más

arXivLabs: Proyectos experimentales con colaboradores de la comunidad

2025-06-18
arXivLabs: Proyectos experimentales con colaboradores de la comunidad

arXivLabs es un marco que permite a los colaboradores desarrollar y compartir nuevas funciones de arXiv directamente en nuestro sitio web. Tanto las personas como las organizaciones que trabajan con arXivLabs han adoptado y aceptado nuestros valores de apertura, comunidad, excelencia y privacidad de los datos de los usuarios. arXiv está comprometido con estos valores y solo trabaja con socios que los respetan. ¿Tienes una idea para un proyecto que agregue valor a la comunidad de arXiv? Obtén más información sobre arXivLabs.

Leer más
Desarrollo

Entendiendo NAT: La solución inteligente de Linux para el agotamiento de direcciones IPv4

2025-06-18

Imagina tu red Wi-Fi doméstica: todos los dispositivos comparten la misma dirección IP pública. Esto se debe a la Traducción de Direcciones de Red (NAT). Con el número limitado de direcciones IPv4, la NAT asigna inteligentemente IPs privadas a una sola IP pública en tu enrutador, permitiendo que varios dispositivos compartan una sola IP pública. Este artículo profundiza en el funcionamiento de la NAT, explorando diferentes tipos (Full Cone, Restricted Cone, Symmetric NAT) y su implementación en Linux (usando nftables), ilustrado con un ejemplo de Docker. Si bien la NAT soluciona temporalmente el agotamiento de IPv4, introduce limitaciones como la ruptura de la conectividad de extremo a extremo y la complicación del cifrado. En última instancia, la adopción generalizada de IPv6 es la verdadera solución.

Leer más
Desarrollo

Múnich vs. Hamburgo: Una comparación de dos ciudades alemanas

2025-06-18
Múnich vs. Hamburgo: Una comparación de dos ciudades alemanas

Un viaje de fin de semana largo a Múnich proporcionó una comparación fascinante con la ciudad natal del autor en Hamburgo. El artículo explora el impacto histórico de la dinastía Wittelsbach en el desarrollo de Múnich, contrastándolo con el crecimiento independiente de Hamburgo como ciudad imperial libre. Se destaca la fuerte presencia religiosa de Múnich en contraste con la atmósfera más secular de Hamburgo. Si bien Múnich cuenta con más museos y bellezas naturales cercanas, Hamburgo ofrece espacios verdes superiores y un ritmo de vida menos frenético. El autor concluye que Múnich ofrece mejores oportunidades laborales en tecnología, pero Hamburgo se adapta mejor a sus preferencias personales.

Leer más

James Gunn: El Hombre Detrás del Reinicio de DC

2025-06-18
James Gunn: El Hombre Detrás del Reinicio de DC

James Gunn, el director detrás de la franquicia Guardianes de la Galaxia, ahora es co-CEO de DC Studios, con la tarea de construir un nuevo Universo DC. Desde sus inicios en películas de serie B hasta dirigir películas de Marvel, y ahora liderando el reinicio de DC, la carrera de Gunn es una narrativa fascinante. Él revela que su trabajo pasado surgió de una necesidad de validación, pero ahora se centra en la creatividad pura y enfatiza la importancia de guiones de alta calidad. La próxima película 'Superman' representa su nueva visión del personaje icónico, combinando elementos de ciencia ficción con profundidad emocional, presentando un Superman más realista y con el que es fácil conectar.

Leer más
Juegos

Software Libre: El héroe silencioso de la economía digital

2025-06-18
Software Libre: El héroe silencioso de la economía digital

La próspera economía digital se basa en una base de software de código abierto, disponible gratuitamente para todos. Apache y Nginx, dos programas de código abierto, impulsan la mayoría de los sitios web del mundo. Linux, otro gigante de código abierto, alimenta la mayoría de los servidores de computadoras y sustenta Android de Google. Incluso Kubernetes, una herramienta crucial para gestionar las cargas de trabajo en la nube, es de código abierto. Una comunidad global de desarrolladores trabaja incansablemente para mantener y mejorar este software esencial.

Leer más
Tecnología

Workout.cool: La plataforma de fitness de código abierto renacida

2025-06-18
Workout.cool: La plataforma de fitness de código abierto renacida

Workout.cool es una plataforma moderna de entrenamiento físico de código abierto, resucitada de las cenizas de su predecesora, workout.lol. Después de que el proyecto original fuera abandonado debido a problemas de licencias de video, el desarrollador Snouzy asumió y reconstruyó la plataforma desde cero, ofreciendo una base de datos completa de ejercicios, seguimiento del progreso y planes de entrenamiento personalizados. Construida con Next.js App Router y arquitectura Feature-Sliced Design, el proyecto da la bienvenida a las contribuciones de la comunidad. Es un proyecto de la comunidad, para la comunidad, con el objetivo de proporcionar una plataforma confiable y fácil de mantener para la comunidad de fitness de código abierto.

Leer más
Desarrollo

Un Programador Rechaza las Herramientas de Codificación de IA: Eficiencia, Ética y Medio Ambiente

2025-06-18

Un programador experimentado explica su negativa a usar herramientas de codificación de IA, no por resistencia tecnológica, sino por profundas preocupaciones sobre eficiencia, ética y medio ambiente. El autor argumenta que las ganancias de productividad de las herramientas de IA actuales son cuestionables y que conllevan el riesgo de introducir más errores. Además, el entrenamiento de modelos de IA ejerce una presión inmensa sobre el medio ambiente, y sus fuentes de datos plantean preocupaciones éticas, incluida la infracción de la propiedad intelectual. El autor enfatiza el placer de la "lucha y el aprendizaje" en la programación y las ventajas del código escrito manualmente en términos de calidad y mantenibilidad. En última instancia, opta por seguir los métodos de programación tradicionales y pide una regulación más estricta de la tecnología de IA.

Leer más
Desarrollo

Las capacidades de IA se duplican cada 7 meses: Un avance impresionante

2025-06-18
Las capacidades de IA se duplican cada 7 meses: Un avance impresionante

Un estudio innovador revela el ritmo asombroso de mejora en los modelos de lenguaje grandes (LLMs). Al medir las tasas de éxito del modelo en tareas de diferentes duraciones, los investigadores descubrieron que la duración de la tarea en la que los modelos alcanzan una tasa de éxito del 50% se duplica cada 7 meses. Este crecimiento exponencial en la capacidad de la IA para gestionar tareas complejas sugiere un futuro en el que la IA se enfrenta a desafíos antes inimaginables. Si bien el estudio tiene limitaciones, como la representatividad del conjunto de tareas, ofrece una nueva perspectiva para comprender el progreso de la IA y predecir tendencias futuras.

Leer más

Criptografía Homomórfica y Software Local-First: ¿Una Compensación?

2025-06-18
Criptografía Homomórfica y Software Local-First: ¿Una Compensación?

Este artículo explora los desafíos de usar la criptografía homomórfica para proteger datos privados en software local-first. Si bien la criptografía homomórfica permite el cálculo sin descifrado, introduce sobrecargas significativas de rendimiento y almacenamiento. El autor demuestra las limitaciones prácticas de la criptografía homomórfica en CRDT mediante la construcción de un registro CRDT de 'última escritura gana' cifrado homomórficamente. El artículo destaca cómo la criptografía homomórfica requiere operaciones bajo supuestos de peor caso, aumentando drásticamente la complejidad de espacio y tiempo. En última instancia, el autor concluye que proteger las aplicaciones local-first sin degradar severamente la usabilidad sigue siendo un problema abierto.

Leer más
Desarrollo

Explicación del algoritmo A* de búsqueda de ruta: de la búsqueda en amplitud a la búsqueda voraz

2025-06-18
Explicación del algoritmo A* de búsqueda de ruta: de la búsqueda en amplitud a la búsqueda voraz

Este artículo explica claramente el algoritmo A* de búsqueda de ruta. Comenzando con la búsqueda en amplitud (BFS) simple, introduce progresivamente el algoritmo de Dijkstra (que maneja los costos de movimiento variables), la búsqueda voraz y, finalmente, el algoritmo A*. A través de diagramas y ejemplos de código, el artículo muestra claramente el funcionamiento y las ventajas y desventajas de los diferentes algoritmos, discutiendo su aplicabilidad en diferentes escenarios, como la búsqueda de ruta en mapas e IA de juegos. El A*, al incorporar una función heurística, encuentra la ruta más corta a la vez que mejora la eficiencia de la búsqueda, lo que lo convierte en un algoritmo de búsqueda de ruta popular en muchos juegos.

Leer más

Nitrógeno de Alta Energía: Avances y Desafíos

2025-06-18
Nitrógeno de Alta Energía: Avances y Desafíos

En los últimos años, se ha registrado un progreso significativo en la investigación de compuestos polinitrógeno como materiales de alta densidad de energía. Los científicos han sintetizado con éxito compuestos que contienen anillos de hexazina y han realizado estudios profundos sobre su estructura y estabilidad. Sin embargo, la síntesis y la estabilidad de los compuestos polinitrógeno siguen siendo un desafío importante, con factores como los efectos de tunelización cuántica desempeñando un papel crucial. Las investigaciones futuras se centrarán en superar los desafíos de síntesis y estabilidad para desarrollar materiales polinitrógeno de alta energía más seguros y eficientes.

Leer más

No te burles de lo que no posees: Una mejor manera de probar dependencias de terceros

2025-06-18
No te burles de lo que no posees: Una mejor manera de probar dependencias de terceros

Este artículo aborda un problema común en las pruebas unitarias: el manejo de dependencias de terceros. Usando un cliente de repositorio Docker como ejemplo, el autor demuestra las desventajas de simular directamente las dependencias de terceros (como los clientes HTTP): las pruebas se vuelven complejas, frágiles y difíciles de entender. La solución propuesta implica la introducción de una fina capa de abstracción para desacoplar la lógica de negocios de las dependencias externas, simplificando las pruebas y mejorando la legibilidad y el mantenimiento del código. Este enfoque no solo conduce a pruebas más limpias y concisas, sino que también mejora la legibilidad y el mantenimiento de la propia lógica de negocios. Si bien reconoce las excepciones, el autor concluye que este principio ayuda a escribir pruebas más elegantes y fáciles de mantener en la mayoría de los casos.

Leer más

Contando Yurts en Mongolia: Una Aventura de Aprendizaje Automático

2025-06-18

Este artículo detalla el viaje del autor para contar el número de yurtas (gers) en Mongolia utilizando el aprendizaje automático. El autor documenta meticulosamente el proceso, desde la adquisición de datos utilizando imágenes de satélite de Google Maps y el entrenamiento de modelos con YOLO, hasta la implementación en un clúster Docker Swarm utilizando varias GPU. El proyecto destaca los desafíos del procesamiento de grandes conjuntos de datos geoespaciales y las soluciones innovadoras empleadas. El recuento final revela un número sorprendente de yurtas, ofreciendo información sobre la mezcla única de Mongolia de cultura nómada tradicional y urbanización moderna.

Leer más
Tecnología

La marca Copilot de Microsoft bajo fuego: Interviene un organismo de vigilancia publicitaria

2025-06-18
La marca Copilot de Microsoft bajo fuego: Interviene un organismo de vigilancia publicitaria

Microsoft se enfrenta a críticas por el uso excesivo de la marca "Copilot" en su línea de productos de IA. La División Nacional de Publicidad del Better Business Bureau (NAD) señaló la publicidad de Microsoft por el uso ambiguo de 'Copilot', argumentando que los consumidores tienen dificultades para diferenciar la funcionalidad entre aplicaciones. La NAD también cuestionó las afirmaciones de Microsoft sobre las ganancias de productividad de Copilot, citando la falta de una medición robusta de las mejoras reales de productividad. Microsoft respondió que revisaría su publicidad para cumplir con las recomendaciones de la NAD, destacando el valor de mercado de Copilot.

Leer más
Tecnología

Desentrañando el Teorema del Buen Regulador de Conant y Ashby

2025-06-18
Desentrañando el Teorema del Buen Regulador de Conant y Ashby

Esta publicación ofrece una explicación clara y accesible del Teorema del Buen Regulador de Conant y Ashby de 1970, que afirma que todo buen regulador de un sistema debe ser un modelo de ese sistema. El autor aborda el contexto y las controversias del teorema, y luego usa redes bayesianas y lenguaje intuitivo para explicar la demostración matemática. Ejemplos del mundo real ilustran los conceptos, aclarando malentendidos en torno al término 'modelo'.

Leer más

Lista de funciones de la API nativa de Windows NT

2025-06-18

Esta lista comprende numerosas funciones de la API nativa de Windows NT, que abarcan diversos aspectos como sistemas de archivos, gestión de procesos, gestión de subprocesos, seguridad y registro. Estas funciones son fundamentales para las operaciones de bajo nivel de Windows, formando la base para las interfaces de aplicaciones de nivel superior. Comprenderlas es crucial para los programadores de sistemas e investigadores de seguridad.

Leer más
Desarrollo

El costo cognitivo de los LLM: Un estudio sobre la redacción de ensayos

2025-06-18

Un estudio que investiga el costo cognitivo del uso de Modelos de Lenguaje Amplios (LLM) en la redacción de ensayos revela posibles impactos negativos en el aprendizaje. Los participantes se dividieron en tres grupos: LLM, motor de búsqueda y solo cerebro. Los datos de EEG mostraron que el grupo LLM exhibió una conectividad neuronal más débil, menor compromiso y un rendimiento inferior en términos de propiedad del ensayo y recuperación, obteniendo puntuaciones inferiores al grupo solo cerebro. Los hallazgos destacan los posibles inconvenientes del uso de LLM en la educación y piden más investigaciones para comprender las implicaciones más amplias de la IA en los entornos de aprendizaje.

Leer más
IA

MiniMax-M1: Modelo de razonamiento de atención híbrida a gran escala con 456 mil millones de parámetros

2025-06-18
MiniMax-M1: Modelo de razonamiento de atención híbrida a gran escala con 456 mil millones de parámetros

MiniMax-M1 es un modelo de razonamiento de atención híbrida a gran escala y peso abierto, con 456 mil millones de parámetros. Se basa en una arquitectura híbrida de Mixture-of-Experts (MoE) combinada con un mecanismo de atención rápida. El modelo se entrenó utilizando aprendizaje por refuerzo a gran escala y supera a otros modelos líderes, como DeepSeek R1 y Qwen3-235B, en tareas complejas, especialmente en ingeniería de software y comprensión de contexto largo. Su cómputo eficiente en tiempo de prueba lo convierte en una base sólida para agentes de modelos de lenguaje de próxima generación.

Leer más

ChatGPT en la Educación: Una Espada de Doble Filo

2025-06-18
ChatGPT en la Educación: Una Espada de Doble Filo

Estudios recientes exploran el uso de ChatGPT y otros modelos de lenguaje extenso en la educación. Si bien algunas investigaciones sugieren que ChatGPT puede ayudar eficazmente a los estudiantes en el aprendizaje de programación y otras habilidades, aumentando la eficiencia del aprendizaje, otros estudios destacan el riesgo de la sobredependencia, lo que lleva a la dependencia, a la reducción del aprendizaje independiente e incluso al deterioro del pensamiento crítico. Las preocupaciones éticas, como posibles fraudes y violaciones de derechos de autor, también son importantes. Equilibrar los beneficios y los riesgos de ChatGPT es un desafío crucial para los educadores.

Leer más
IA

Pan de 5.000 años desenterrado en Turquía: una cápsula del tiempo culinaria

2025-06-18
Pan de 5.000 años desenterrado en Turquía: una cápsula del tiempo culinaria

Arqueólogos en Turquía han desenterrado un pan notablemente bien conservado de 5.000 años de antigüedad, un hallazgo raro en el campo. Descubierto en el yacimiento de Kulluoba, en la provincia de Eskişehir, el pan de la Edad del Bronce fue quemado y enterrado bajo la entrada de una vivienda, protegiéndolo de la descomposición. El descubrimiento ofrece información única sobre las dietas y las prácticas agrícolas antiguas. Panaderos locales han recreado con éxito el pan utilizando trigo antiguo, lentejas y bulgur, lo que ha resultado en un manjar popular local.

Leer más
Tecnología comida antigua

Scrappy: Creando aplicaciones caseras para amigos y familiares

2025-06-18
Scrappy: Creando aplicaciones caseras para amigos y familiares

John y Pontus crearon Scrappy, un prototipo de investigación para crear aplicaciones simples y personalizadas para ti y tus amigos. Es una herramienta visual similar a Figma o Google Slides, pero permite adjuntar comportamientos a objetos interactivos. Arrastras y sueltas objetos como botones y campos de texto, y agregas código JavaScript para definir sus acciones, como registrar la entrada de texto al hacer clic en un botón. Las aplicaciones Scrappy son multijugador, con un estado persistente y sincronizado, lo que hace que la colaboración con amigos y familiares sea perfecta. El objetivo es democratizar la creación de software, permitiendo que más personas creen aplicaciones adaptadas a sus necesidades exclusivas.

Leer más

Editor de texto CLI de código abierto de Microsoft: Edit – Ligero, rápido y similar a VS Code

2025-06-18
Editor de texto CLI de código abierto de Microsoft: Edit – Ligero, rápido y similar a VS Code

Microsoft ha lanzado Edit, un editor de texto de línea de comandos de código abierto, ligero, rápido y fácil de usar. Diseñado con una experiencia de usuario similar a VS Code, Edit tiene como objetivo llenar el vacío en las versiones recientes de Windows, que carecen de un editor de texto CLI integrado. Si bien está dirigido principalmente a usuarios de Windows, Edit también funciona en Linux y macOS. Su edición sin modos, la apertura de archivos extremadamente rápida y el conjunto de características minimalista lo hacen ideal para ediciones de texto rápidas. Aunque carece de características avanzadas como el resaltado de sintaxis, su velocidad y simplicidad lo convierten en una alternativa atractiva.

Leer más
Desarrollo
1 2 157 158 159 161 163 164 165 595 596