Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Eleкtro

#319
Buenas

Seguramente si estás leyendo esto es por que quizás tengas alguna aplicación que requiere una versión antigua de .Net Framework, eso te supone un fastidio y te ha entrado la curiosidad sobre este tema...

Pues bien, hace poco descubrí un "truco" para exigir al sistema operativo que las aplicaciones utilicen siempre la ultima version del CLR que esté instalada en el sistema, y de esta manera se consigue evitar tener instalados los runtimes de .Net Framework de versioens anteriores solamente para pdoer correr un par de aplicaciones antiguas... siempre me ha parecido un estorbo tener que instalar el .Net Framework 3.5 a estas alturas.

Creo que este "truco" es muy poco conocido (aparte de ser maravillosamente util) y por ese motivo he querido compartirlo con ustedes.

No se si a este post se le puede considerar un tutorial, por que para aplicar el "truco" es tan sencillo como agregar un nuevo valor de registro en el registro de Windows.

Aquí os lo dejo en forma de script de registro:
Código (ini) [Seleccionar]
Windows Registry Editor Version 5.00

; 64 Bit side.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"OnlyUseLatestCLR"=dword:00000001

; 32 Bit side.
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework]
"OnlyUseLatestCLR"=dword:00000001

( Copiar el código, pegarlo en un editor de texto, guardarlo en un archivo acabado en extensión .reg, y por último, ejecutarlo. )

O en Batch-Script si lo prefieren automatizar de esta manera:
Código (dos) [Seleccionar]
@Echo Off

:: 64 Bit side.
REG.exe ADD "HKLM\SOFTWARE\Microsoft\.NetFramework" /V "OnlyUseLatestCLR" /T "REG_DWORD" /D "0x00000001" /F

:: 32 Bit side.
REG.exe ADD "HKLM\SOFTWARE\wow6432node\Microsoft\.NetFramework" /V "OnlyUseLatestCLR" /T "REG_DWORD" /D "0x00000001" /F

Pause & Exit

( Copiar el código, pegarlo en un editor de texto, guardarlo en un archivo acabado en extensión .bat o .cmd, y por último, ejecutarlo. )

PD: Por el momento funciona de maravilla y no he encontrado problemas secundarios, lo he testeado en Windows 10 durante un par de días con aplicaciones que requieren tener instalado .NetFx 3.5 y superiores.

Saludos!
#320
ESCENARIO




ANTES DE NADA ME GUSTARÍA COMENTAR QUE DEBIDO A LA CANTIDAD DE TEXTO Y UN POCO DE VAGANCIA (xD), ESTO ES UNA TRADUCCIÓN AL CASTELLANO DEL POST ORIGINAL PUBLICADO AQUÍ:

( eso si, los fallos de Google los he corregido, pero en Inglés tal vez lo entiendan mejor, y el contenido textual está mejor formateado )

...

Estuve personalizando una imagen ISO de Windows 10 TH2 utilizando la aplicación WinToolkit, y despues utilicé mediante DISM de forma manual para eliminar características y paquetes de la imagen Install.wim montada, también quité del directorio WinSxS archivos innecesarios específicos para mis necesidades en el que yo no estoy interesado y son seguros para ser eliminados, como por ejemplo un montón de archivos de fuentes TTC y TTF, referencias de archivo de Skype, Onedrive y WMP, aplicaciones Metro, drivers, accesos directos, etc.

Después de haber modificado la imagen WIM, instalé el sistema operativo en una máquina virtual (VMWare WorkStation), y estuve trabajando durante semanas en esa VM mediante la instalación de aplicaciones personalizadas, la instalación de aplicaciones de terceros, y la reducción de espacio en el disco, porque mi intención era capturar la partición modificada mediante DISM con todas las personalizaciones aplicadad para generar un nuevo Install.wim y así de esa manera poder grabar una ISO de Windows 10 con todos mis programas instalados por defecto y las personalizaciones del sistema que hice.

Para aclarar:
yo no soy un gurú de Windows, pero considero que gracias a la experiencia de años, he adquirido buenos conocimientos ...avanzados en general, sobre el sistema de archivos de Windows.

Esta no es la primera vez realizo esta tarea, he perfeccionado el mismo trabajo de forma exitosa con Windows 8/8.1 y Windows 7 en el pasado. Más que eso, actualmente estoy en un Windows 8.1 desde hace 2 años modificado por mí con la misma metodología con un montón de cosas eliminadas (algunos archivos seguros, otros inseguros) y sin problemas de ningún tipo.





PROBLEMA




El problema que he descubierto es que, debido a alguna de las modificaciones que hice, cuando hago click en un icono de la barra de tareas, este menú no aparece:



( Me refiero al menú contextual de la imagen con carpetas fijadas, y la opción "Cerrar ventana", etc, todo ese el menú contextual. )

En lugar de ese menú, no se muestra nada, simplemente no sucede nada cuando hago click derecho sobre el icono de la barra de tareas, sin embargo, la vista previa en miniatura y el resto de menues de la barra de tareas (como por ejemplo el menú contextual del botón de inicio) funcionan correctamente.

Como ya he dicho, estuve trabajando durante semanas en la V.M. la personalización de mi Windows 10, y descubrí este molesto problema en el último día de todo este trabajo, por lo que hacer un "rollback" par desperdiciar un par de semanas de nuevo, no es una opción para mí.





PREGUNTA




Me gustaría preguntar a los usuarios avanzados en depuración de Windows que me ayuden a depurar lo que ocurre cuando el usuario hace click derecho sobre el icono de un programa/directorio en la barra de tareas para descubrir cuál es la causa de la ausencia del menú contextual que falta.

No sé si tal vez aplicaciones como Process Monitor de SysInternals o Spy Studio de Nektra podrían ayudarme a descubrir y solucionar el problema mediante el examen de las llamadas y eventos de Widnows, necesito orientación de esta manera o de alguien que pueda hacerlo por mí y comentar su diagnóstico al respecto.

También podría servirme ayuda sobre los paquetes o valores del registro o dependencias en general que sean necesarios para que el menú contextual se muestre, ya que de esta manera tal vez podría restaurar/copiar las cosas que faltan desde un sistema operativo funcional al sistema operativo que no funciona...

Tenga en cuenta que puedo probar CUALQUIER cosa con cualquier riesgo de corrupción del sistema operativo ya que trabajo con instantáneas de volumen (snapshots) en la máquina virtual, que puedo restaurar a un estado anterior si falla una posible solución.





INVESTIGACIÓN




( Para evitar confusiones, voy a llamar como "S.O. no funcional" al sistema operativo personalizado en la máquina virtual que NO muestra el menú contextual, y "SO funcional" el sistema operativo en la máquina virtual que muestra el menú contextual )


Después de descubrir este problema, generé un ISO de Windows 10 con WinToolkit sin este problema, entonces instalé este OS funcional en una nueva máquina virtual y estuve probando algunas posibles solucioens básicas, como éstas:

  • Copié todo el contenido de la carpeta WinSxS (y todas las otras carpetas del sistema como archivos de programa, appdata, etc.) del OS funcional a OS no funcional, de esta manera traté de restaurar archivos borrados del sistema operativo que no funciona que tal vez se requieran para que el menú contextual que se muestre.  Lamentablemente, esta metodología no resolvió nada.
  • Exportar todas las claves de registro de todas las claves raíz del registro del OS funcional al OS no funcional, No pude importar la raíz HKCU debido a permisos de usuario de esa raíz del registro, pero pude importar la raíz HKCR, HKU y HKLM (aunque no todas las claves, permisos de usuario del registro), pero el problema se resolvió.
  • Habilité e inicié todos los servicios de Windows del OS no funcional, pero esto no resuelve la nada.
  • En el OS no funcional probé desesperadamente la aplicación Windows Repair, así como CCleaner y Wise Registry Cleaner.
  • Desinstalé todas las aplicaciones personalizadas, codecs, etc. del OS no funcional, puedo descartar por completo y asegurar que no es un problema de ningún programa de terceros.
  • Estos son los archivos del sistema que eliminé en el OS no funcional:  Pero recuerde que en un paso anterior mencioné que hice una copia completa de los directorios del OS funcional al OS no funcional para tratar de restaurar los archivos que faltasen y así tratar de determinar si un archivo que faltaba era la causa del problema del menú contextual...
  • Este es el perfil de configuración de WinToolkit que usé para generar la imagen ISO de Windows 10 TH2 (que hace que el menú contextual FALTE por defecto ):
  • En el OS funcional, con la aplicación WIM Registry Tweak Tool apuntando a la raíz "C:\" empecé a eliminar todos los paquetes mediante DISM que eliminé en el OS no funcional, con la intención de tratar de determinar, al menos, si el menú-contextual faltante fue causado por un paquete que faltaba, el cual en teoría podría ser uno de los siguientes:

    Adobe-Flash-For-Windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Media-FaceAnalysis-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Media-FaceAnalysis-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Media-FaceAnalysis-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Media-FaceAnalysis-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Hypervisor-Core-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Hypervisor-Core-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Hypervisor-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Hypervisor-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Hypervisor-vm-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Hypervisor-vm-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Management-Clients-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Management-Clients-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Management-PowerShell-Package-net~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Management-PowerShell-Package-net~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Management-PowerShell-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Management-PowerShell-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Offline-Common-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Offline-Common-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Offline-Common-vm-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Offline-Common-vm-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Offline-Core-Group-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Offline-Core-Group-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Online-Services-Core-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Online-Services-Core-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Online-Services-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Online-Services-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Online-Services-vm-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Online-Services-vm-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Package-ds-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Package-minkernel-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Package-net~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Package-net~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Package-termsrv-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Package-termsrv-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Server-Drivers-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Server-Drivers-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Hyper-V-Services-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Hyper-V-Services-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-AllowTelemetry-Reduced-Default-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-AppRuntime-xbox-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-AppRuntime-xbox-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-ds-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-ds-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-FaceRecognition-ds-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-FaceRecognition-ds-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-FaceRecognition-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-FaceRecognition-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-FaceRecognition-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-FaceRecognition-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-Fingerprint-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-Fingerprint-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-Fingerprint-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-Fingerprint-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-WOW64-ds-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-WOW64-ds-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Biometrics-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Biometrics-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Gaming-Preview-GamesEnumeration-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Gaming-Preview-GamesEnumeration-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Gaming-Preview-GamesEnumeration-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Gaming-Preview-GamesEnumeration-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Gaming-Storage-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Gaming-Storage-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Gaming-Storage-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Gaming-Storage-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-Core-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-Core-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-Core-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-Core-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-Full-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-Full-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-Full-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-Full-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-Full-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-Full-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-Full-WOW64-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-Full-WOW64-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Maps-WOW64-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Maps-WOW64-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Miracast-Common-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Miracast-Common-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Miracast-Transmitter-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Miracast-Transmitter-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Miracast-Transmitter-shell-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Miracast-Transmitter-shell-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Miracast-Transmitter-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Miracast-Transmitter-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Media-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Media-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Media-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Media-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-avcore-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-avcore-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-multimedia-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-multimedia-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-WOW64-avcore-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-WOW64-avcore-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-WOW64-multimedia-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-WOW64-multimedia-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingReceiver-Platform-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Media-avcore-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Media-avcore-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Media-multimedia-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Media-multimedia-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Media-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Media-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Media-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Media-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-MiracastView-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-MiracastView-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Platform-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Platform-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Platform-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-Multimedia-CastingTransmitter-Platform-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-avcore-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-avcore-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-enduser-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-enduser-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-shell-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-shell-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-WOW64-avcore-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-WOW64-avcore-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-WOW64-enduser-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-WOW64-enduser-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-WOW64-shell-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-OneCore-SpeechComponents-WOW64-shell-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Virtualization-Client-Interop-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Client-Drivers-xbox-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Client-Drivers-xbox-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-COM-MSMQ-package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Cortana-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Cortana-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Cortana-PAL-Desktop-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-DirectoryServices-ADAM-Client-Package-admin~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-DirectoryServices-ADAM-Client-Package-admin~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-DirectoryServices-ADAM-Client-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-DirectoryServices-ADAM-Client-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    microsoft-windows-directoryservices-adam-snapins-package-admin~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    microsoft-windows-directoryservices-adam-snapins-package-admin~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Help-ClientUA-Enterprise-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Help-ClientUA-Enterprise-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Help-ClientUA-Professional-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Help-ClientUA-Professional-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-IIS-WebServer-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-IIS-WebServer-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-LanguageFeatures-Handwriting-es-es-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-LanguageFeatures-OCR-es-es-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-LanguageFeatures-Speech-es-es-enduser-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-LanguageFeatures-Speech-es-es-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-LanguageFeatures-Speech-es-es-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-LanguageFeatures-Speech-es-es-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-LanguageFeatures-TextToSpeech-es-es-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-LanguageFeatures-TextToSpeech-es-es-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Media-Streaming-multimedia-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Media-Streaming-multimedia-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Media-Streaming-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Media-Streaming-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Media-Streaming-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Media-Streaming-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Media-Streaming-WOW64-multimedia-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Media-Streaming-WOW64-multimedia-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Media-Streaming-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Media-Streaming-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Media-Streaming-WOW64-windows-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Media-Streaming-WOW64-windows-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-MiracastView-AppX-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-MiracastView-AppX-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-MSMQ-Client-Home-Premium-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-MSMQ-Client-Home-Premium-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-MSMQ-Client-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-MSMQ-Client-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Printing-LocalPrinting-Enterprise-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Printing-PrintToPDFServices-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Printing-PrintToPDFServices-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-RasRip-Package~31bf3856ad364e35~amd64~es-ES~10.0.10240.16384
    Microsoft-Windows-RasRip-Package~31bf3856ad364e35~amd64~~10.0.10240.16384
    Microsoft-Windows-RemoteFX-Graphics-Virtualization-Host-Package-LanguagePack~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-RemoteFX-Graphics-Virtualization-Host-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-RemoteFX-HyperV-Integration-Package-LanguagePack~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-RemoteFX-HyperV-Integration-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-RetailDemo-OfflineContent-Content-es-es-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-TabletPC-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-TabletPC-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-Virtualization-RemoteFX-User-Mode-Transport-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-Virtualization-RemoteFX-User-Mode-Transport-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Windows-WebcamExperience-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Windows-WebcamExperience-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Xbox-GameCallableUI-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Xbox-GameCallableUI-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Microsoft-Xbox-IdentityProvider-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Microsoft-Xbox-IdentityProvider-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Server-Help-Package.ClientEnterprise~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Server-Help-Package.ClientEnterprise~31bf3856ad364e35~amd64~~10.0.10586.0
    Server-Help-Package.ClientProfessional~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Server-Help-Package.ClientProfessional~31bf3856ad364e35~amd64~~10.0.10586.0
    Windows-Defender-AM-Default-Definitions-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Windows-Defender-Client-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Windows-Defender-Client-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Windows-Defender-Client-WOW64-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Windows-Defender-Client-WOW64-Package~31bf3856ad364e35~amd64~~10.0.10586.0
    Windows-Defender-Group-Policy-Package~31bf3856ad364e35~amd64~es-ES~10.0.10586.0
    Windows-Defender-Group-Policy-Package~31bf3856ad364e35~amd64~~10.0.10586.0


    ...pero no pude reproducir de esta manera el problema del menú contextual que falta en el OS no funcional, ya que después de haber eliminado todos los paquetes (y reiniciar el sistema operativo cuando lo solicitó DISM), el menú contextual seguía siendo visible en el OS funcional.

  • En el OS funcional también comencé a desactivar mediante DISM las características de Windows que desactivé en el OS no funcional, con la intención de tratar de determinar, al menos, si el menú contextual faltante era causa de aluna característica deshabilitada (cosa muy improbable, porque las características son seguros para desactivar por el usuario), la cual podría ser una de estos:

    DirectPlay
    FaxServicesClientPackage
    IIS-ApplicationDevelopment
    IIS-CommonHttpFeatures
    IIS-HealthAndDiagnostics
    IIS-HostableWebCore
    IIS-HttpCompressionDynamic
    IIS-HttpErrors
    IIS-HttpLogging
    IIS-HttpRedirect
    IIS-HttpTracing
    IIS-IIS6ManagementCompatibility
    IIS-IPSecurity
    IIS-LoggingLibraries
    IIS-ManagementScriptingTools
    IIS-Metabase
    IIS-NetFxExtensibility45
    IIS-NetFxExtensibility
    IIS-Performance
    IIS-RequestFiltering
    IIS-RequestMonitor
    IIS-Security
    IIS-URLAuthorization
    IIS-WebServer
    IIS-WebServerManagementTools
    IIS-WebServerRole
    LegacyComponents
    MSMQ-Container
    MSMQ-DCOMProxy
    MSMQ-HTTP
    MSMQ-Multicast
    MSMQ-Server
    MSMQ-Triggers
    MSRDC-Infrastructure
    NetFx4-AdvSrvs
    NetFx4Extended-ASPNET45
    Printing-Foundation-InternetPrinting-Client
    Printing-Foundation-LPDPrintService
    Printing-Foundation-LPRPortMonitor
    Printing-PrintToPDFServices-Features
    RasRip
    SimpleTCP
    SNMP
    WAS-ConfigurationAPI
    WAS-NetFxEnvironment
    WAS-ProcessModel
    WAS-WindowsActivationService
    WCF-HTTP-Activation45
    WCF-HTTP-Activation
    WCF-MSMQ-Activation45
    WCF-NonHTTP-Activation
    WCF-Pipe-Activation45
    WCF-Services45
    WCF-TCP-Activation45
    WCF-TCP-PortSharing45
    Windows-Identity-Foundation
    WMISnmpProvider
    WorkFolders-Client


    ...pero de nuevo (y como esperaba) no pude reproducir de esta manera el problema del menú contextual que falta en el OS no funcional, porque después de haber desactivado todas las características anteriormente mencionadas, en el OS funcional, el menú contextual se seguía mostrando correctamente.
#325
¿Alguien me puede orientar sobre cual sería la mejor forma de hospedar la documentación html de una API?

Me refiero a tal vez registrarse en un hosting gratuito y crear el dominio web adrede, o quizás exista algún servicio gratuito que automatize la tarea de hospedar documentación html para tal fin... lo que seria de agradecer, ya que me da mucha, muchísima pereza hacer lo primero, así que... ¿conocen alguna alternativa?.

Esta es la documentación, por favor descargar y mirar el index.html si no entienden bien mi pregunta (son solo 15 mb):
http://www.mediafire.com/download/244x2i13vtp6j1d/Web.rar
#327
Hola

Quiero poner un enlace en GiitHub para que me donen a mi paypal.

El problema es que no se muy bien, bueno, en realidad no tengo ni p**a idea de como se genera el enlace de donaciones...

Solo encontré información para crear el botón de donaciones (pero yo no quiero un botón, solo el enlace de donaciones), seguí las indicaciones de todas formas para ver si descubría algo...

y en fin, cuando creo el botón, me aparece esto de aquí abajo, dos pestañas, una con el código del botón (que no me sirve para nada), y la pestaña de "Correo Electronico" que contiene esta url:



https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9SNEB7XURHXAS]https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9SNEB7XURHXAS

¿Es ese el enlace que debo usar para que me donen?.

El link parece funcionar como es debido, pero de todas formas me parece extraño, yo me esperaba generar un enlace donde pusiera mi email o algun otro identificador de la cuenta a la que donar, ya que esa url tiene un ID único, vale, pero es la ID del botón, y el resto de la url parece hacer referencia al botón también, tal vez incluso podría un link temporal, o vete a saber que otras historias...

¿Alguien con experiencia en donaciones puede confirmarme que lo hice correctamente?.

Saludos!
#328
Buenas

Antes de empezar, considero que esto no es una pregunta no-ética, espero que ustedes lo vean del mismo modo.

Hace tiempo desarrollé un programa que tengo en constante actualización, es un web-scrapper para obtener los enlaces de descarga de la web http://plixid.com , ya que si lo tuviera que hacer manualmente iriamos apañaos (casi cien álbumes por día).

Teniendo este tipo de enlaces:

http://r.plixid.com/rd/bvkca3QdD6LiBRQWE4H8EyaO_uQbkB-9wG80suc0P7Eit6FRK4Js0hKmn_YT3qGEiOUrNvaj0GFPt3uCwcea7Cq3EYcmWZIv9J2wCiL9PgsAqi_abyeTknIi0InMlCa_dwnHu5ei0K9KXvd7jpxS6g/6fD9zFy0euGjfFF8uVw5C2BEfLYtzrkkRhvJvhrIKey6YLQL_q5ZkDoGECmAV17B

http://r.plixid.com/rd/NawUMKzobVOb3ObV0VjlCSaO_uQbkB-9wG80suc0P7E9bSYtXrkOnUGSwLrLhC1g00SOMh8AIS_JDINtJKXfxIa9_0vEOn0oP710lWyaOPZD92ydCN7hwPZHt1bqDYwZdwnHu5ei0K9KXvd7jpxS6g/Ofje0WI_vM9JLYtsubTZEUwMAhXnSGcRJx_l_wQtfAo3LEiMT-LpAofeuS2ts3PD

http://r.plixid.com/rd/lmOCRXTNR9H9gW2EopovjiaO_uQbkB-9wG80suc0P7GlB2oA2aduqBZBbHRpguXCopD1DhoTYkXaQPc6zuVGVEKUElLy2LUXYIm9YLMP-2FdtUkS3BmzB6_YgnJILT_vNyxIjE_i6QKH3rktrbNzww/NR1I_7dQrAG3jIeVQwzHV0wMAhXnSGcRJx_l_wQtfAo3LEiMT-LpAofeuS2ts3PD

http://r.plixid.com/rd/pMURR9cO8_KmHMAhfMRO2iaO_uQbkB-9wG80suc0P7FmyVN_szkavo1jITYlUxGYXvVsjYj70M1JPvKUjNM7Z9WBWWu5f1kEWXlCpYRpAuaYNCX3_otDCvmkB4s1tWOfEuyQc24tmXjPeqLQGbY8UQ/9l-yL4VgamnNPNFYomgU8OrW-OmJOpN0OS-IE3qQHjAp8TIiRSA2YLpFcBx8D9J-


El problema surge tras una nueva protección que han implementado; cuando redirijo 30 veces exactas enlaces de este tipo entonces no me deja redirigir más, y surge este captcha de Google:



He intentado saltármelo mediante tiempos de espera de 5 minutos entre redireccionamientos, y tambien por cada 25 enlaces redirigidos hacer 50 peticiones a la web principal (http://plixid.com), ninguna de estas técnicas me dieron resultado para evitar el captcha al redirigir.

¿Alguien con más experiencia a nivel web se le podría ocurrir lo que debo hacer para saltarme esa protección, o si puedo averiguar el factor que la web tiene en cuenta para considerar "tráfico unusual"?

PD: Desde una misma ip, sin proxies ...que eso requiere mantenimiento adicional.




EDITO:

Un simple código para testear, escrito en Vb.Net

Código (vbnet) [Seleccionar]
       Dim urls As String() = File.ReadAllLines("C:\urls.txt")

       For x As Integer = 0 To (urls.Count - 1)

           Dim url As String = urls(x)

           Dim req As WebRequest = HttpWebRequest.Create(url)
           Try
               Using resp As WebResponse = req.GetResponse
                   Console.WriteLine(String.Format("{0} | url({1}): {2}", DateTime.Now.ToLongTimeString, x, resp.ResponseUri.AbsoluteUri))
                   Thread.Sleep(1000) ' ms
               End Using

           Catch ex As Exception
               Console.WriteLine("Error: " & ex.Message)

           Finally
               If (x) AndAlso (x Mod 25 = 0) Then
                   For i As Integer = 0 To 50
                       Dim req2 As WebRequest = HttpWebRequest.Create("http://plixid.com/")
                       Using resp2 As WebResponse = req2.GetResponse
                           Console.WriteLine(String.Format("{0} | {1}: http://plixid.com/", DateTime.Now.ToLongTimeString, x))
                       End Using
                   Next
               End If

           End Try

       Next


urls.txt:
http://r.plixid.com/rd/-eMNWUSE0oHZIgNw4iRSGSaO_uQbkB-9wG80suc0P7HwqLnQ4jR4e33sOfdW3qwzFyuuhAxHwKfdX_mEPK1rYQFsyfXskcuSRMc8j8btNhAzg4i6G1g0LYwruf6w_aedoAIegCAuELdvvelCEHQh5g/wc5T-Wgms7kBDsXf4NDyfuf-tg3XO_8MyRgm-H1e-YWgAh6AIC4Qt2-96UIQdCHm
http://r.plixid.com/rd/-oTMmULYaATpNS2KYbtAriaO_uQbkB-9wG80suc0P7EqBRi-e21-8njxXWE_HNYFySF5tYaA7iTtOGMazfeABFzpMDooT08CNtXdFUe5y3eI7nP9cAllanoPxODJV9fnObu15hNPTu3cgNKSerMrrg/6OetQCBFCEAwS2iOjjqpC-f-tg3XO_8MyRgm-H1e-YVAJni_ivKmk8ik9PbRRVjQ
http://r.plixid.com/rd/0aae_9W717lPwGxgBnc_CFVBzYRa1dadJROc05Qi5lsZdNyuKwxvSoUvaOv2liVAUnoOUY6S38uS-Av8cRzB6kUB_wLsqZePMhLaY7l1hTfayU-8LuG33tbMi9dwEa3GORqg9wW8OqFKQG6D5LF--w/NzkXD_peeWh0w-I_riHPOOKjPOlmjvyQKVObPcIqBa8Qi1uGUhdl3kxu6wTzyn2r
http://r.plixid.com/rd/0hxRIdpjYfBfVJyOAtvUCyaO_uQbkB-9wG80suc0P7FmsmkGVrX-UIkq279PUtxhMkapNPWCPkcOoLLC58rBwszuWF1BjU56lMYYeD7xzhUKvt4r9wg7LwfE5rHXSjrKxeDCVNFYsbW5s39wdFwzfg/r1iZvHk4y0ect7t2XKjPyuf-tg3XO_8MyRgm-H1e-YVoA25xaBbnGlh06PDqhMEx
http://r.plixid.com/rd/0Sb0FviMFnDrxGcsyMxvDlVBzYRa1dadJROc05Qi5lsiHqq6vj6tP7MO-1R5VbUc0Zy8fYTA0j5shwdEIeDI_U8Z_umAz0wnDJA8roANefcsOO9PMlMiYjnW-WKtSeWI49CFkXBbnota27Ny7DeG6g/ZIxePD8qXMunPJBdLh2saQ2yMfNSxiM8NWYRdNT8exvj0IWRcFuei1rbs3LsN4bq
http://r.plixid.com/rd/0t-3yZZUdheinMdTe5dxziaO_uQbkB-9wG80suc0P7HgNJ066zCF37csdJZVum9Pvn0Q_smz5iz36bS2ftDRSv5-2KByI6rk1HpVgq3um-BLKFia1Q-eM_ziT8XfJr1WJmIotE6Y4b2ehgnHJ_wKrw/C0NW9LmdAN4I7JQNUpESHef-tg3XO_8MyRgm-H1e-YUmYii0TpjhvZ6GCccn_Aqv
http://r.plixid.com/rd/0WZDuReySQha_8VfFLyj4yaO_uQbkB-9wG80suc0P7FMiOOjZlo_5d-G2CWHbO1h5PXw2UDvT5aoZKDJWIXG3RbFJQGe6wM48sn51V3x9uIMJXYwW05EnG1X3nmdw0bGm2kqrxDBIwQ3l_eSiK--Aw/x5yfRs-ykXN1bGyZMnnoxef-tg3XO_8MyRgm-H1e-YVkUM4wJk7jW3q_HhwRNFyh
http://r.plixid.com/rd/0xTObY2DlwYrZpNklOvqDSaO_uQbkB-9wG80suc0P7FmyVN_szkavo1jITYlUxGYtbvdVLb9-FooI49F-WUpFFNnpyiNmTJb4INwOPaD-Lppdv8i0eL8mg30EdH1v_khSwlxlbSAx5wVFjzlsN-h0g/Cd4ymRYjCgl4uOyJwp2cTZSB8qA-lV7NK1-V2oZtEfeEyAukQihJ0Ivb3JKj9XnU
http://r.plixid.com/rd/1_nLgteqEG87cCK2s86Sa1VBzYRa1dadJROc05Qi5lt8o99lGnXl5dsKqmZMYlhCixWk_fQsW846n0Vv26iIwDStCeLaMWrOBYKM7CUxnpIOYl2-8j7luhoTZC921cOtomfp3mWcB_K9M8PitpDMkg/0ixjX_pkK61bDndaZR89ouf-tg3XO_8MyRgm-H1e-YW9VHGkZ7zfQMm8SMy80g-2
http://r.plixid.com/rd/1eLN66GL6lEtxCFdbryl5VVBzYRa1dadJROc05Qi5luWmWs4ta5omaGEC3DS4LDLWt9T5O5KxZd4fS36M9Sx6s3xBrTJxMhmmLCfJZZ-he5Jz2NzLS8r9qYcZTdB5cD_YXFWR6ytZJbPFE48XJ0qOQ/pJGoOaBRIOgeBIvfP8gcLw2yMfNSxiM8NWYRdNT8exsTVAiiomUg5CkjXvz1T4ig
http://r.plixid.com/rd/1jVEWll7s6Mnz_odXFZP_VVBzYRa1dadJROc05Qi5lvN9ITPKE_c-l-uLiuyaIm9FvAFJ5PABCAj8ID8zUGjaC2nNts03X8NaOCy42XXLnB1z2cgEkAoCdeVl6JKMo_y3u6qU6TalVMlOlDpX095aQ/-14kGBdlJPl_04TyYVYWFPr-_hA_9olagQWKnDjEnt5isBfd_mPBsBqeJwez0nXM
http://r.plixid.com/rd/1OVb9HYpnT8nVwAJPagVhSaO_uQbkB-9wG80suc0P7GVJLSAAqrNgz5BkNBybherQ6juIoXOTclyEr9jxjAJcwrEevvh7Xz6LOfwh_ViUU70-MLayjCBwfxDHyim01GktNjZ7x-QAHcJILG3dUV1oA/l1gKojVZoIZsYXJgxu9Ljuf-tg3XO_8MyRgm-H1e-YW02NnvH5AAdwkgsbd1RXWg
http://r.plixid.com/rd/1tg4G_Xuz4IgkOgwSKhaSCaO_uQbkB-9wG80suc0P7HK5heMtQNQAGwV73rGEm7xzOivimuo6EdbApALYq5CU1O_UoOM4qviB3Oe615rulrVmsGewkIq4aTjfJjk6ay35ZW9tTp18Lmy0W3dKukfcw/FdQvy61jzieLHfWXlKhEOOf-tg3XO_8MyRgm-H1e-YUoJvLE4a9TYM-MPYIakrKa
http://r.plixid.com/rd/2_A1D7mFIPszfjFggoS-1yaO_uQbkB-9wG80suc0P7FmsmkGVrX-UIkq279PUtxhN0QmYsr0ZwQcnliWRt-ruWROJG9LbkUza3wpFAvtgJ1h3n1siAod3f3mbqk2nT6sxcPWbKmbmhFu3taDTfzRLw/8gseWJVmEfs_3gJmmPEL7uf-tg3XO_8MyRgm-H1e-YV0lUMEV8VzJLrAjyP0f1v7
http://r.plixid.com/rd/2aRmXnz1ZO2NcUe_r7G04yaO_uQbkB-9wG80suc0P7EGxmOmmjw7HwPpfXNJN4q5OooymMCACF6WqL0Bj6BwOEjyjz61K2tZ9jOoyZpLx-2LukniTLbdivBHZdv6g_ZBovJvwJLTpGy5sglQ2zPgRg/vL58ymGCvXEJlxU_3byc7uf-tg3XO_8MyRgm-H1e-YWi8m_AktOkbLmyCVDbM-BG
http://r.plixid.com/rd/2vTRA3gOTXywNd1X2FjMkyaO_uQbkB-9wG80suc0P7HQ4IAzPDA0WiO-FSr-h1nNz_gqabdbX6Pg3uBjlMvA6kLAW66jjeHERrdABfLLauraA50UJo2egX449weMfFW_EwNAehra24d7lOGttrjRgw/Sy52jMFj-z10Mf-lEcYL4JSB8qA-lV7NK1-V2oZtEff0t55y490jIP0YwQLXS_p0
http://r.plixid.com/rd/2xHosLq8QKv2DMvih6K1N1VBzYRa1dadJROc05Qi5lv6f03X4UdmarstF9qbf3n0bUEEduZbE0myGMQ6ELvbyx9bH8rurNaDi91hkGJpx45HWDuq5WaJ9_0NM1zxZbxbumC0C_6uWZA6BhApgFdewQ/D-eahdLLwS_aic0675Ru3g2yMfNSxiM8NWYRdNT8extWOHAR81Sw1M5zf4Dc1nLD
http://r.plixid.com/rd/32EFQuadR8oLFq5CmhoYTSaO_uQbkB-9wG80suc0P7HQ4IAzPDA0WiO-FSr-h1nNw4Zam61wEYeETuBtq1UDkoI3qbDJYFLAO3X934khHPVdFeMFc_zBOAmWev4b-p2SXTBPyWkefSMZHCVvNv64Hw/p8KWTvrax3eFQ7tOJb21v-f-tg3XO_8MyRgm-H1e-YV_Om9xbzTZTxYs5R95pqDb
http://r.plixid.com/rd/34xMl2YX90SgX5wnmdMUklVBzYRa1dadJROc05Qi5ltgRsHQDXXLD_ZG9SK46zkKIbdgvBmIyjhI8EFG9wKiKap6SMCjGv9LGuqU0DQfEcDgODPBN-S6FqosehaYGwyhDAp5or3y9BgwOJXDilisjg/YqDSEFF81s-rl29FPKBdaef-tg3XO_8MyRgm-H1e-YUgVra2P7Dpbi2wWSHv8RjL
http://r.plixid.com/rd/3GNwFL5KwaP5-h-knPGoQFVBzYRa1dadJROc05Qi5lvWg0lm9hI5bFRwOCQ4eudsvGtiWPeCO3OyNowqk2Hy85LuFON_YvmugAHP2qES7r9Fafp8Hx1Cu8Nsn8Iw_4SNJn648SrkBMk__tEB-dhBnw/V5EFbXFRdvA5ha8VIzK5f-f-tg3XO_8MyRgm-H1e-YXg-pqAhjsBlL0zG35vF-I-
http://r.plixid.com/rd/3hTZl3DPpIgpHr_cQLZrqlVBzYRa1dadJROc05Qi5lstJfm9T8UBrBGaMpBo-BJSdCKaGIHNHcNr3iCyZc9HMHUz14fC_b7mR_qjBmvg_t1S7b_cTauW_WefskysR8PWJ1YPaZiu9wb2dWwLyobs7g/1r1RZzgLMMfqMzhs19d8TMC6xx__AcXAnvEOaWWFgaSx8VqmphFOtZdXS1wILTww
http://r.plixid.com/rd/3O0QxPyx19CFPDIBfTzm_iaO_uQbkB-9wG80suc0P7HiAgyrvZ5z6zTF6R3BYS3nLWoahssbYIM7ROhTQnfHWBg9dzeuxqD49547iKMAsFFvVSDNfm9DHrwJisWuvsb8N0Ay43O_fW58cBwZTl4NLA/pOp5TTZ4q1UPc18J4Ahjcuf-tg3XO_8MyRgm-H1e-YU3QDLjc799bnxwHBlOXg0s
http://r.plixid.com/rd/43vmfRipwVm3nBrCWXbqACaO_uQbkB-9wG80suc0P7FmyVN_szkavo1jITYlUxGYldGTu7KytQpInfM71Mv3Q2j7tP8BlLpcYbn5AUh2WkMwmwj_45JfoviFSe4wmjEIynFxZhG9pzQZzIu5pgAC3g/a7YNt001wBZDY43Y1kyivef-tg3XO_8MyRgm-H1e-YXKcXFmEb2nNBnMi7mmAALe
http://r.plixid.com/rd/4f2arxD4fLfA_s4tVPk_yiaO_uQbkB-9wG80suc0P7ELQ629m6cjU_VViREd-vaX52caoZFehbYC8EzmwufMDONj1zDoeOVSMreLHlgxWwTVGNy80x-0LxSgAuav8wcSBYsJAdG3NFgoNzhQ6afd9w/VXxeqPpSIItsX2o5-Sjb2ef-tg3XO_8MyRgm-H1e-YW1VcqEQWxaO83DuCvhOIPf
http://r.plixid.com/rd/4TtnvTuW4mXJj0KT2P48PSaO_uQbkB-9wG80suc0P7Eit6FRK4Js0hKmn_YT3qGET-yjlxnI7nk6vyn2LEiIl5bxQRlqFjQo-p2yUnQebsJfXjVcxNha5DOLGZ-j1oVQgYNfHYEPJI8y2MiT-8YbfQ/kxWw6HoLWv5MSwyIB5kqZw2yMfNSxiM8NWYRdNT8exux8VqmphFOtZdXS1wILTww
http://r.plixid.com/rd/4z63isn4C03CZxPZlcfx-SaO_uQbkB-9wG80suc0P7ELQ629m6cjU_VViREd-vaXh4i_042S10dWSD-a8xczCXz70Bw0ajn6DwaztyHZ-jjACszvWqTbMvndmkdTwCk4wkCGikoTycCJGDIGbaoTKQ/GL6nTFqpwpfULcQP784MvA2yMfNSxiM8NWYRdNT8exsbPPnupJdunYSepV2L5otA
http://r.plixid.com/rd/5i1hTf93wRoyJMzTdyPNEyaO_uQbkB-9wG80suc0P7Fv70gDwaF1k-mUcdQHZST7Dn-2KAa4W-mrWoOUx6kN4Nh-uqlHyypwMc2v5Z8cgcG06yRe2WSvvpGb6OFTpdUtnWl2OxNtKbCVH9hbrxXnuA/yPqGboqxVipUiHDeilL6Uuf-tg3XO_8MyRgm-H1e-YWdaXY7E20psJUf2FuvFee4
http://r.plixid.com/rd/5QIc7CQhCWuuUUnSlhCnUCaO_uQbkB-9wG80suc0P7ELBQhAlHPwZkkTl2GKz_fn-Yj4larx3XUW2vAssVcp5LHrQaf-OeGMW1YspBmEm4j5D7O9f6UqBpqs3ztneVrjFuEyGh7WGXRhFHEEeySvaA/pajl-DcQkF1pr0V_t0cjrOf-tg3XO_8MyRgm-H1e-YUW4TIaHtYZdGEUcQR7JK9o
http://r.plixid.com/rd/635HQWjcaw7h8-udyRTMZFVBzYRa1dadJROc05Qi5ltsKTTwfn4xKza8YS3JFHcfvRL3Fg0Ht86oKs_v5EYxg7Y_67zTWDaEF0sUn9gxVWpZtCMBnl63_KrcG-dcxcrpNekAdHvAUZHd2TxeKofNrg/Z-LFSvUWr5jo20z3xZ74_-f-tg3XO_8MyRgm-H1e-YX7eY6SzfW4uiEQjfK5Z0Rl
http://r.plixid.com/rd/6a0jG1xmX9DSZCvUVadTICaO_uQbkB-9wG80suc0P7Fv70gDwaF1k-mUcdQHZST7NbJ50Gns0xM81h2hudMzTWxlATCc8mSkUMhLyv3kWAOGTZn6BVBer4hmIE9iuxn1U96mguENiaURwsaIT8sh-w/X8hcZBC-FCWjIN9l_PjPqef-tg3XO_8MyRgm-H1e-YVT3qaC4Q2JpRHCxohPyyH7
http://r.plixid.com/rd/6SWJWUtUkW1ydhO7TTst8VVBzYRa1dadJROc05Qi5lvHdVjvMQ1AozJq31UksT0a2SbpZX438XIj8O4j0R2YoJWSdXoxfIWKl4L5uB6TPIupPxYnO0wRZrqX7e8klSJHGzz57qSXbp2EnqVdi-aLQA/YOhj0XNFQCll--H0EpLOWpSB8qA-lV7NK1-V2oZtEfdHkAwNcGeoqUHuYVxLuaD_
http://r.plixid.com/rd/79O0g7ppHEuQZkAH6oY5_iaO_uQbkB-9wG80suc0P7HwqLnQ4jR4e33sOfdW3qwzP_NhFsZRvltKJZmWi9kSmexp_qwpaevyrDplIZVSAK9dDtZabZyHVoN3N23u5jkleQ_ABaZ5p12lZ3i1K6cNkg/ad3ybegPE-rKlHjV3NPeXJSB8qA-lV7NK1-V2oZtEffokD8-DHead2KCrKMyjtNw
http://r.plixid.com/rd/7i93aySW_0gPM2GwKqhD0iaO_uQbkB-9wG80suc0P7GlB2oA2aduqBZBbHRpguXCoCGEBj7UJCuBxpa9TL0dOincq-U7F_9-N7RV48HKycf9Qc2HyeFA33Q4Lq1z040ir0YOSZZkMLcgsXNne8_gVw/a4StlnWtP6yWBehEIK8M2ef-tg3XO_8MyRgm-H1e-YWvRg5JlmQwtyCxc2d7z-BX
http://r.plixid.com/rd/8hR3HrLOedRIF78rauUPlCaO_uQbkB-9wG80suc0P7GmivvJH_xlkvJ2_lO9heCAXChQOg5_OKrjphZjGW9O_-jMREodao76C_cBRdjJXgxTAPQSpc2MzVoL8CsfZEuPNzGTVPhT1rrQKcGlUdH62g/_fH1sPYwwHLiP972Pn9jk5SB8qA-lV7NK1-V2oZtEfcDiZKuKvFd9H34Mi5BJrup
http://r.plixid.com/rd/8JaG365Wo9xjH-A4zlEFeyaO_uQbkB-9wG80suc0P7HwqLnQ4jR4e33sOfdW3qwzqdLgJ3iik17PqNL8pR-rNhIDmWca1-pQQYcXDtGyiAmw_F-qchuqOz8Mx2T1gOKa4tYv2zBTmuinrhtrbVXSPw/-Zor438XiehRs_QMwQqGWOf-tg3XO_8MyRgm-H1e-YWUETwCvH8_Ck_2wv4sscGy
http://r.plixid.com/rd/8YA9Es0r0y3gZcntHlFtdyaO_uQbkB-9wG80suc0P7HQ4IAzPDA0WiO-FSr-h1nNLxcgThLU6wUJjLz3PndKx7I8x5vQflQMl8UxKwoDDzahbSJGJMpRda99aDfl8LCLoEZP-yRIgqbQIOIE6gMp4Q/qH-QDQQbnQVBNpYPAMjTU-f-tg3XO_8MyRgm-H1e-YWgRk_7JEiCptAg4gTqAynh
http://r.plixid.com/rd/8YjPvhjF_Xa1KvvXAiz--SaO_uQbkB-9wG80suc0P7HK5heMtQNQAGwV73rGEm7x_iiXycb-x8l8iAPDm4diBPVUV1hE9PgsSCu5yB4CzYX7yqefWE-04BGm65Lg0Tms9mu5DFHVr8S1IE7nE42qjg/9ANGT9n8bY9P-lU4t1gLLOf-tg3XO_8MyRgm-H1e-YX2a7kMUdWvxLUgTucTjaqO
http://r.plixid.com/rd/9aOcBe4Ot7tNp7tS1sgJxCaO_uQbkB-9wG80suc0P7EoABDq9e4lNZmIZJQlaspopvcKbWvNt476Tv4G7dTh09NlbKy05WA1M0ceyNcx0P32d-5386ZkKCk_qX1PeMsZT3LfpCljhC-gJhEMGjaBYw/5nCgROUbL5BuXOvNbMsYUef-tg3XO_8MyRgm-H1e-YXDur0jZe04JleA68UOYNXZ
http://r.plixid.com/rd/9KMOcXw3NTEI_-PzWoNWRyaO_uQbkB-9wG80suc0P7GVJLSAAqrNgz5BkNBybherDb1_mI6bLAg4gAQ9fwDvNT50ACdq6mbBM_BfP-pXugiFFmNDNwCwALRUN1F4ZRexutmjCUBqO3gHnkLnJuFWlg/OZbnVhxia9Msz-KASBqwG-f-tg3XO_8MyRgm-H1e-YWqpAu1rORbUCTJTVotc-eE
http://r.plixid.com/rd/_BVnsnc5Jj236j1p3ITOtFVBzYRa1dadJROc05Qi5ltucgAlyRwHTassC5PSFVtMDmyT1e-0JhUfeKjHFdEcstDsDxGyAJrfelLTw_29Od7Yk5FL9pYSqmwGPPCTIC98m6cwgNS72h9FjyBZNWvmVA/pfJjHLBv6yJKVhn0rYRLmOf-tg3XO_8MyRgm-H1e-YV0yZpk5RBFXRxACcB6Z5Yd
http://r.plixid.com/rd/_hUvQX2iHFdIaTTYxg6W-lVBzYRa1dadJROc05Qi5lvMsQ8TTh43GArvDt0yfNx10nv_SVTfMe40v6lp9y9NvPeVYt_2KvjgcByzxHLKkgc5_Yfs6Luu_DkXqodn5jB9ORqg9wW8OqFKQG6D5LF--w/lrKb8bQGZGPYj3YHBBLW1kXQrzGCVuQOzygCtRClvoP6onHQ4gG4LJRp_vqGQZJF
http://r.plixid.com/rd/AlhMks0PhsQRDfjsrKMX41VBzYRa1dadJROc05Qi5ltwNywlUAN_eTDcSwECT0B8Zu5vXN-BFUrmawDDjAEvKr4j23-6kLzOAP9JpkgIGyV50gRUFOivPZmDtxBIwwyVEUJUDSxPb4PFYAQgTAicpg/8a27bstD8Ry_cmow5c7eP-f-tg3XO_8MyRgm-H1e-YVAvRxwctigulqbiB5UQQKT
http://r.plixid.com/rd/AxQ8wRGqHWOp679QASfHoSaO_uQbkB-9wG80suc0P7GMb96cuGYs3VSrupTcmgJKCBpd8lqN7WJEPPCuZ3bKLzHj_EJ_i30Vky5HOCca94ZCz3NaTn5Y-qRROS1-Qrb8shkEfpyfbY4WFnNRAX5WzA/6KVe3zZBK5Y4uR9MHT6LFOf-tg3XO_8MyRgm-H1e-YWKiYd6U4CwI_HUDZ6LQ6TS
http://r.plixid.com/rd/axsGqy7yDcRQ9B5NVECMhVVBzYRa1dadJROc05Qi5ltcmG0gc_LWpgCHrpVCetCqn8gVyHtjzjWjMFd9h5Kcb-V6dXQXQ7pivE_oCKbXEw9gDTMyQBlLf5CT73ZUVrLJ9LeecuPdIyD9GMEC10v6dA/bfOF-Op5pnZiWvNc6pxP1-f-tg3XO_8MyRgm-H1e-YUZi1vvnG6ES_-GfdynzzJV
http://r.plixid.com/rd/B6naaXIK293PV9JC7y_LfiaO_uQbkB-9wG80suc0P7FMiOOjZlo_5d-G2CWHbO1hZ8M-167HfBIA7PtPLnczWua_SgS_UyPggXk63wSq7Sxi-qkem1TvYTRqONoXkMTP7u9rgBgcrcEzGLPLkruZ3Q/qvE2Gne4iA2zyc0xROXryuf-tg3XO_8MyRgm-H1e-YWXRzcH45MuNnrcCetodgZC
http://r.plixid.com/rd/BdL8Jylf0NyQhoD4MFgbbyaO_uQbkB-9wG80suc0P7GmivvJH_xlkvJ2_lO9heCA4qPDG1No-mLpdpoFn5a5E96x_zpZRd6gEj85G3yFhWiIfqqmM6nafUWwv0xc3izb1Pe8I-kJhjK6qgFNKax0wg/lS58teIV4fVXsec0kdhSGef-tg3XO_8MyRgm-H1e-YXU97wj6QmGMrqqAU0prHTC
http://r.plixid.com/rd/BLAEcOcfeJ4Ogys8h_4p31VBzYRa1dadJROc05Qi5lt8cRjk2AUxszA8w1Dzda0eUoDzgoIe4sENd_RRRd4p3qqr0U2-XRQdzwQGxhM37h_pECa23L-uBi79ilfqAn1E11OqsSVaET4rNDRrFiT50w/K5VL0ncv4YiQ_mktdDZW6ef-tg3XO_8MyRgm-H1e-YX1F4tBGpwmfq-PdtMXTn2_
http://r.plixid.com/rd/C3TAqru1ZCPI4cON5a57USaO_uQbkB-9wG80suc0P7Eit6FRK4Js0hKmn_YT3qGE1aVd4Y2h6IFwnqbmvdsEi8Ccnvj5P8YOpklPw_tByF_aiswfz6Csbn__TFg7IKJIec1xYHsMgnaAFNR1Y9nF_Q/Veug-XtMOJhvJRl5JTPfgef-tg3XO_8MyRgm-H1e-YV5zXFgewyCdoAU1HVj2cX9
http://r.plixid.com/rd/c5KUlOWqXysp-CzbizfoqCaO_uQbkB-9wG80suc0P7GMb96cuGYs3VSrupTcmgJKK8KUlcl_Wv_4tZJaEE_-Qj6U_HTq0IWY7kLZ8ujclmGcLLVg7HCgkrAaN37_qotOhFgqbX_WVDXpTzQRWF_8tw/AUf4zfUQWw4w1kEyGc0imoD26BhZ6bYdH1tINUUeQsE
http://r.plixid.com/rd/c6_uW9uoJu30kiVTw1h_eCaO_uQbkB-9wG80suc0P7GMb96cuGYs3VSrupTcmgJKAOT0CTg8HgIyVo3pLE5z3knxJYwbU_tuDE87NAd8t5pIvrcFxjOGk4SiXRFQfB1wpmAMBtC3pe6QpXyYWqWoqg/r3pmxpvZUX46aWuPa5Cqbef-tg3XO_8MyRgm-H1e-YXTzfBc6k28SDEJNwc_KzV8
http://r.plixid.com/rd/cjampbIVQDc9rpxOd923EVVBzYRa1dadJROc05Qi5lvFKif02oTGafzDSlKe39PeGFiZ0ypOLxlzM6DRxWona1VJjqSYzmiUP7HDguXBEzy3OFfDiqCgUbPBAej3PD9uR5AMDXBnqKlB7mFcS7mg_w/HWGgC6vTb9z-LIP-KgAa2-f-tg3XO_8MyRgm-H1e-YXx1hNiRQ2Ri1Q5G2XqaUEs
http://r.plixid.com/rd/cp-M8eBM-etN3cJIydNsXCaO_uQbkB-9wG80suc0P7EHRTVnpONdYMPCaj_0LwJfj6M66-psJB-hgpot1VxNuUyNK28gaDtsdDj3Q-WXSz-PqI6b0eOffialIkeeWlQtyDRy9ei8xmbok_ExIHnmNA/pyTuaZ08rpF-yrJCzgR-5ef-tg3XO_8MyRgm-H1e-YXINHL16LzGZuiT8TEgeeY0
http://r.plixid.com/rd/cqhsjkBJ4poQQkixHhHiOSaO_uQbkB-9wG80suc0P7FTGKQ_ZXG95_K0zr3eA8G22YAmkQ5ri_h0Q-Sn2KuLMrf4GLmM-7BANTdoklMks4mu43VXA69-78lFcjs0jgCDnwmyBBM5aCcdJbLJw5lreA/JkE4BOc4jEdGbUnzpucP--f-tg3XO_8MyRgm-H1e-YWfCbIEEzloJx0lssnDmWt4
http://r.plixid.com/rd/d0YUjOiJxI-wxJM4slaI4cnun_CGnf-WF-Sw-j6ti9ZFP7xiix3AIMxO-WQghfRlWT47BSkKAKdGjynW-7sVUxU-MQPvkkkWKyjYUrv5B74engcSGjKi2SLo5QIp90zB-qJx0OIBuCyUaf76hkGSRQ/TWZPez0WiQ_HjXlcuiWiw-f-tg3XO_8MyRgm-H1e-YUCnWoY8lkMnZ7wwjEVFi21
http://r.plixid.com/rd/dbv8eZsCGUPfiC3ifGXQpiaO_uQbkB-9wG80suc0P7HDkXVXIu4Bec7Hr34gIZnj6cx0N-xTBi6uP8Z9yOzwPaRyb1uQLlIKIm9KddT4232fUT7m258HPfxeUHho_0BMYC8aADbZFQiYI4QaBq4ipg/O5HFWK5VuTZ8qSQ314JGgpSB8qA-lV7NK1-V2oZtEfffpV5sujawM_LkhfbqzSkx
http://r.plixid.com/rd/diOfyiAF1o8OjyZVedfgMCaO_uQbkB-9wG80suc0P7EGxmOmmjw7HwPpfXNJN4q5gtqD9rQegk_flU68RNWiiFNgYIcJiQL9WPme6iVLz5dTdWznKNDjSd8z3n23XyUggoIrnbvxbYJ-pPmwTv341g/lWmw5k-kxLvF79QNI_Poi5SB8qA-lV7NK1-V2oZtEfd5XQ-0LZUJvTfBAtJKmqlP
http://r.plixid.com/rd/dk48EXAah6ypDz7HfSPVuyaO_uQbkB-9wG80suc0P7E9bSYtXrkOnUGSwLrLhC1g_LuWWVYLfA7I1INC6zXa4BJxLhIt5IViNt015mJHAghKa3OrQb0lghctsPpA6HjkMFg9LKGw5qxv28e7ksEsHg/3r-Sysu7PZIRiS9-JyvsCNRE1x4iAWUXfiU93GTXkpM
http://r.plixid.com/rd/dp5USc5E_X_aHSiVLVdXzcnun_CGnf-WF-Sw-j6ti9agMgs17l3o5_CkkBI8ef_FGBqnCNdnVnrDs30M5pYc0dJkLbbwrdetLTmGDtYPwuK8ltw5sT7DPXPjNat1_y7UYrAX3f5jwbAanicHs9J1zA/zgrmhxu2B73Xy0efOMazmOf-tg3XO_8MyRgm-H1e-YXC5Ra6Xf-6nBzjg1dDnYY1
http://r.plixid.com/rd/DqNTG9TdGbI5r7ciQNJFmFVBzYRa1dadJROc05Qi5ltglXOt3FimRiRxy0blj-IFMNvQ0HUpp-9IQ-JUxSEKheAPWBBq7etA4m8OT7um6V8-U5LNozeH7G9U23PnIsrNJn648SrkBMk__tEB-dhBnw/uMMY9rajIdMjklDh6DrgVef-tg3XO_8MyRgm-H1e-YW5R_GsoCO7gyHsOQuKXP8e
http://r.plixid.com/rd/dTB727M_znYvqYG4hBpxgsnun_CGnf-WF-Sw-j6ti9Z65KLZXsNuUlSBJGVuARFOqq7KXEy-BWHXWB0oubwZME2UMpmjpAb32JGk6m93VKXeEmQoegB1ilcNWTtidOZyYrAX3f5jwbAanicHs9J1zA/QEhOUXq3wx1tg0VF1uAmpuf-tg3XO_8MyRgm-H1e-YUhwsuw2i9VBflT1nGSZmyY
http://r.plixid.com/rd/dYnEybewkrAul3QWMNhakCaO_uQbkB-9wG80suc0P7GM4Xn6Zyr4AXY94SCMRZcwmYZNGBHtyvZ9eqIbblq9BU5-9G46nArLr1fARwDhgG4XFMAdHdCM2Dv7TqIkazfgLDNGchc9VzzltLjadwGCww/xkMEtRM-tSNe3O9wkMQj8g2yMfNSxiM8NWYRdNT8exs5GqD3Bbw6oUpAboPksX77
http://r.plixid.com/rd/dzLmFg5RzZdOY08zGU_pVcnun_CGnf-WF-Sw-j6ti9bDBrJHOljxuBYukoejSus34ZE_yDs6hXa8Fi0iGZOyn3xVWrTucjJDX_HZnhteIEaq2P5vYWESFw8d65Zgx4SZop6dTdKsFX_v7StbLhtnrw/rt5DSB_xKKW025LmvAVP0Q2yMfNSxiM8NWYRdNT8exthcVZHrK1kls8UTjxcnSo5
http://r.plixid.com/rd/E8hV1nCeVNixIYxiI8zqXyaO_uQbkB-9wG80suc0P7EHRTVnpONdYMPCaj_0LwJfGOKFULsk0K1WAxrmmOCxlvg6fOdqN3WxgkC0cMrrX_LCYPz8Ml8fNv79aH7WugCwgoIrnbvxbYJ-pPmwTv341g/TiP6wDKgT7Inmt29m1NOS-f-tg3XO_8MyRgm-H1e-YUfoMjL7fmB1L8PzLTyywSf
http://r.plixid.com/rd/eCxSpPHwkcxeSeBgqg5dtSaO_uQbkB-9wG80suc0P7FqpC24fFFE_Hd6SDVeIbtwqvgA-BmwtJKMRlqCM8he71RdWCYKJZHXTIHQO9T_kmv42Dz3N7KBb1lLNL-j7zImNEm6EuH5324kaGHQGQXuCQ/N3BwT5FaJ1jPwAk9A_VB9Of-tg3XO_8MyRgm-H1e-YU0SboS4fnfbiRoYdAZBe4J
http://r.plixid.com/rd/ee338cmfR74rw3gG0U37giaO_uQbkB-9wG80suc0P7HwqLnQ4jR4e33sOfdW3qwzbECCRu96XsRd-zJ4ZrQcvHdQs2WA1n8uJjymN8xHDJIT228W2O6H_SYz10wnI-f2Tkmx3v2KBQu_QtceDUHViw/uzjNa2t6mAwWzIj0XOXNvuf-tg3XO_8MyRgm-H1e-YXFluJCLQAeo-H89EgvulLE
http://r.plixid.com/rd/eEei_5U5_TWf1XGjkCVS0uG4FEHzWUQNWIylrhVPgFRw30NHKexG4p7fxuJ42jPNO19TLgUgRvDtoof58ijjvovb8xY0h0MYSNZLr87k9J6LOP6Z7n_Ahk2zANKWd4Ki/VhBitIq_n45vDMV1YbsFTef-tg3XO_8MyRgm-H1e-YV_tYHWiTYWOWOMb5flsT8h
http://r.plixid.com/rd/EinguBhQnuZbLvZ1PpFQX1VBzYRa1dadJROc05Qi5lsQBw9nka5NGjy7EJGk87BXz_Vgg-BimDrzXgavSuCeBgFJwJJ5iDA-XCEwFSMjL_GtyvARqzRMO03RfNVcD1SbYXFWR6ytZJbPFE48XJ0qOQ/v_os1qxhsmbIVDv8rrEnAuf-tg3XO_8MyRgm-H1e-YVz2b_--mTbd1qrce3nHB7J
http://r.plixid.com/rd/eOc8AX-sTHAZ1bpPDVHBNSaO_uQbkB-9wG80suc0P7GVJLSAAqrNgz5BkNBybhernP9X_tEvgsQgzzod6JGQu_BI9kcD03jx0mvjeuiYBMJua36pNhu23HWrbsGEj4cfE-i55D4qw5I1W-8TeBg0jA/aT03q1EOTdu5YaZp2iiz8uf-tg3XO_8MyRgm-H1e-YUT6LnkPirDkjVb7xN4GDSM
http://r.plixid.com/rd/epJlEY75lBA828NsZVb7jiaO_uQbkB-9wG80suc0P7FqJ1zSisSfpryY4MQuokUeIqH_8O_ZvtYMo82a2wZkALVjCVL7riefIskKfoWT8RtZxNdUkGBzjNRMFtC1BWa3pjIUKWdC9c6y5OdAYJS88A/L_m4py4XQtKsSurZnzBliZSB8qA-lV7NK1-V2oZtEfe0EmHy_A7KsmcHItHbKfLR
http://r.plixid.com/rd/es5JK4r_yhApavdhcrSMSyaO_uQbkB-9wG80suc0P7HQ4IAzPDA0WiO-FSr-h1nNmb16DalCw99FjroHn6id4Pk89GPgX_8TupmJ-cLLeuOyAazaehlp_ExB7zLUP-pZ2-oWrW2XpeOIjRcIiUBQcA/Vo1vLO-naAYNXlQnPG3r0uf-tg3XO_8MyRgm-H1e-YWrpBpSO_s51VhJvk2Wt4aX
http://r.plixid.com/rd/ev0dpHsiJWpSV-EWQNDKtiaO_uQbkB-9wG80suc0P7G4o_NBNYrqBQS9wHGPp23ljH8zMUDP9LjsKn-zI7PG1ZtDJ_yQ-4M0yyjPWjbHijUFBVg5-zfEPuOiHyruYBP2dLPe8VUmarcZlTk3x3iMbA/OJ-Ixv1tk_0r9_o96aDha8C6xx__AcXAnvEOaWWFgaTfpV5sujawM_LkhfbqzSkx
http://r.plixid.com/rd/EvHI7P5Q89Ct6Tm8PpkvQsnun_CGnf-WF-Sw-j6ti9ZSmXqJIJ6KyYBQEBy9Uv_3UPUUbAqYioFBnMdHb7qTp9sahWCXtMeZIWz57clmAIowwQK94pCakstmEC1B-CFB-qJx0OIBuCyUaf76hkGSRQ/Ka_b2CcLW1BfROuZ4FiGk5SB8qA-lV7NK1-V2oZtEfc5GqD3Bbw6oUpAboPksX77
http://r.plixid.com/rd/eZb8iDU4Lm3H3jpE0fpqLiaO_uQbkB-9wG80suc0P7FmsmkGVrX-UIkq279PUtxhP2fHaL5t-efqYVTJLZaX0c-KvIYjdRJyr7Yp80yKOhS7xAmqvPkU414ZVS-hqnU-CV0oZMN0PRO6wsJpxRfJOw/fN59_7zDZnJDWd4P9QiBGef-tg3XO_8MyRgm-H1e-YWh6DEzyruf2Q93yuK3TogG
http://r.plixid.com/rd/FAMI8ydZB0Sk8Rou_cH94CaO_uQbkB-9wG80suc0P7Eit6FRK4Js0hKmn_YT3qGEGplcEnYwbyhZ8RHavw5OgTGw90GMyabGFXsffqIP5SZmgumsV940S3wDiMUQg6EbttYwIhTi87VxPyKQhfKsgA/Q_7FFbDR5bL35j2nKZ6ybuf-tg3XO_8MyRgm-H1e-YX6VOTSEKytMoTAJqJa7zU7
http://r.plixid.com/rd/FAoC-2rMVB9_dNOJhlbKdSaO_uQbkB-9wG80suc0P7EqBRi-e21-8njxXWE_HNYF7M-6tv1Y--_pHpMenDYYp6LvE2cBJkkfsGiFkTEPqfLlJ5-Sam0Yw6kpWVrQUdPCAp1qGPJZDJ2e8MIxFRYttQ/3P1O_MCxx9pQ9jqs_-cb8-f-tg3XO_8MyRgm-H1e-YUCnWoY8lkMnZ7wwjEVFi21
http://r.plixid.com/rd/fbPzsRwDAStbO4KrPOSHkCaO_uQbkB-9wG80suc0P7EGxmOmmjw7HwPpfXNJN4q5zfGcAsB8WihiCGHiOKS84axwOCW62HoCv3KQOHXDR5ldLdvQWo1Nm2nhVHgzlrwqHGZmynLknte0K6sam4iZmw/0kFXrKNnpFLPpST2h2hkSuKjPOlmjvyQKVObPcIqBa-dVg5NBkBprYpqksdfVwc1
http://r.plixid.com/rd/fGXAv1IWIJc2p4WzVuAxGSaO_uQbkB-9wG80suc0P7GM4Xn6Zyr4AXY94SCMRZcwG4O6dtfcnpvSEKIG69NGyiMY_xx1VXyuVyR5rpDBdjbX9dwSNFM-LLVGGySeN4LFcOUpcG6MGn8JT58i_0KoZw/xn3vDc93En4dyYG0k4_Ru-f-tg3XO_8MyRgm-H1e-YXvh9Cz8ljqkDNrdSWl--UJ
http://r.plixid.com/rd/Fs6jp5ShnexrOzbqSfRFyyaO_uQbkB-9wG80suc0P7EGxmOmmjw7HwPpfXNJN4q5Fak0Uvx7IqkFS8cjgAi_F2WOhUaBEvMJAx1IMkADoXb8ZVD3rNCFrK5QI0_UhQJgaANucWgW5xpYdOjw6oTBMQ/3-WnGncRLgMe4aznLe71ref-tg3XO_8MyRgm-H1e-YVdME_JaR59IxkcJW82_rgf
http://r.plixid.com/rd/FXAVFY9ZrTpmRjIL0Z_vuCaO_uQbkB-9wG80suc0P7Fv70gDwaF1k-mUcdQHZST7GUbFxhbncykH647MvpNSpOtNcvf3wbCWDBs46iK-8U8sxv0H6wc7Hceu5Dv7KKfFiaVyGqm9MRZnlgh3BU4Fhg/85Ej9AWsMorMF3xxqKJ6bMC6xx__AcXAnvEOaWWFgaR43wV_cIhsh4QaStk-Ztpw
http://r.plixid.com/rd/FxF_RoVlaca9XPfsIi9DIVVBzYRa1dadJROc05Qi5lsgnvHNgeyG7JBlzl5_Gg9BsPRjp_CjCdLr6rpp9dbgQdFbHgK1RPMsQp-Nmbi3AxoS4b2RfIkRck6wYJYbPnu1yTf3Z8q-D17CmFmJQVC2kg/0EVBQTeVIVjQ2eaprAlTxOf-tg3XO_8MyRgm-H1e-YVHyCYByHdfvQVB6yYc7fYk
http://r.plixid.com/rd/ghbns0hCGgYyklqazX7g7FVBzYRa1dadJROc05Qi5lt1Nvn2Yo2hn2HZA8FCFj9FXZTrayiborTHLFoe90aBZYR4pzKbyztDTj0Ec3nfWS57XPQ8dKncRg4sg2KfrO2ituwGGWLAAOA8faLH7V2oCQ/_RNqzA-afUDbJ3gXmNJDlOf-tg3XO_8MyRgm-H1e-YUIhi1-t_-2cOgu_ySzkIcs
http://r.plixid.com/rd/gqUXaqyJflEhZ2jsIdu1OSaO_uQbkB-9wG80suc0P7GnnkdYc0XIhwd6q-FUVtgRzaxK0sY_D11_IFcufrS7e9FHCHZoEvqvlbk78u7L4-VwoqJvxWDnEWSTL4qX8PSL5sqwZ5rMNMmD5N-mlatRIg/G0epwTHkC790dMXIfc8f0ef-tg3XO_8MyRgm-H1e-YXmyrBnmsw0yYPk36aVq1Ei
http://r.plixid.com/rd/Gwh14X5-R9PtYgH-cH8MsSaO_uQbkB-9wG80suc0P7FoVTz-f8iaXg7iryY7KEGCATdWc13_KVHUeEJ6tr0Cz--u9C8xRxlHWrMd6K2zFlzzofx-YYLqNCRvOuiBplP97Poq-dB1TZmKRSPSoqVNLg/8kEPDSbu_H1bp5L2yn6YKuf-tg3XO_8MyRgm-H1e-YUPe0s_65E64K_-DvwOto-N
http://r.plixid.com/rd/gXvs6TRtyfyKT3UsIu2-xSaO_uQbkB-9wG80suc0P7FqJ1zSisSfpryY4MQuokUeYUPq0fB35mAC_fYYcDFBWODVuQoEofrLphQPgnvrPhVB9caaPMYNShAfEzE09H3JA-HBsGeD0amCidKa8iPAzg/O5xTonjzJq4lvA0EjxDgfQ2yMfNSxiM8NWYRdNT8exuRGu5wlF1wIOyuxr4kl18A
http://r.plixid.com/rd/h1_l5GMwGQF_4aqgeGEx5lVBzYRa1dadJROc05Qi5ltwNywlUAN_eTDcSwECT0B8vCsoDpvTMdeLt9otuU3NMwu3epwftxTgamAbt2MKwNlgWN4wAakJ3HR6ryA5JR9_HhwrMLK77sTUvqcqcw7BVQ/2jpAOANU1U3DyksskrPlvuf-tg3XO_8MyRgm-H1e-YUalk55GtCp-5BC7Ape_Ep2
http://r.plixid.com/rd/HBAbTBT7FDr80P37-2ad8FVBzYRa1dadJROc05Qi5lsBidrso3caAmto_doP-v3NeKZXlBaFbCsZ6f5tk1vfFfthwkVBZY0AwxE3b9gB6mjOeZbtxu9upOEz_T2UmG_FGi8okDs__TVlCmBlAjSJiA/OVtpNFDVt_OHnFmdD5TqD-f-tg3XO_8MyRgm-H1e-YU1YyJiBeoktQUU7o22miNV
http://r.plixid.com/rd/Hbvd0s3VhfZWTL58lRQtlcnun_CGnf-WF-Sw-j6ti9a8a-qaI7AHMof878eXJTlBdkgelHlVEm4lMB2ColFDylqBmL-fLEq-hFhGBIEx33B9wEB8bEIlyK8yaJAXyW7e-qJx0OIBuCyUaf76hkGSRQ/erPf09kwqHHrmbjuofc2M-f-tg3XO_8MyRgm-H1e-YWAgIfzuyirskqdIdjRADV4
http://r.plixid.com/rd/Hcqpq9hkH9wp9d5vKCJ8SSaO_uQbkB-9wG80suc0P7FmsmkGVrX-UIkq279PUtxhi7DqtzLkfg2unuUKydqL0nLBz1yRa2LwO8jaKdSjQmjTb_RfeHwe5wAaOZSFS9ZQr39D40nsH8NG22Vd7uqplw/9u6QW3qGCSotVolGgk0KYQ2yMfNSxiM8NWYRdNT8exsSLtSHqy2sE698BQBtBS6b
http://r.plixid.com/rd/HEBW68w3CGPjFLEHzC1BoSaO_uQbkB-9wG80suc0P7FoVTz-f8iaXg7iryY7KEGCUoctl85sl8qjlLEZtRAnaWuHoXBiH1yC5ARdbrXmyF5AigE5RzO3-0GSy4UDgRgKZFDOMCZO41t6vx4cETRcoQ/22G8TKCjFG-UzRc-lotJCw2yMfNSxiM8NWYRdNT8exub2rOB2v_AL2BAZ72i1-_K
http://r.plixid.com/rd/HfR84xEZxNePyEWPsUTLHSaO_uQbkB-9wG80suc0P7HgNJ066zCF37csdJZVum9P-JkTck7wF5te0tJF37hlJPAzVFdEoaDibEKSLe9LtjClKASwQ0ZBpzLhIW9xKwts7Eu_MLGWFkdqFfuO6-sFTg/AkQN2if_RXucsF77S2lZGef-tg3XO_8MyRgm-H1e-YXIAcYE6jUCrAhQR2-YP45l
http://r.plixid.com/rd/hG9YPAqGA7lhbzaMlabItSaO_uQbkB-9wG80suc0P7Fv70gDwaF1k-mUcdQHZST7BHuZQe5OlHoV9acTXs_m06OKRHze39gxjlPlzkP_ut7RIHLijd5P-WXBXz3bGaj-dmm78KFflqAddujg4qIwhA/7-eryG8JXM7tPNd4aBVK1ef-tg3XO_8MyRgm-H1e-YXT3GfyYiR9VFkVW89k9TZB
http://r.plixid.com/rd/HK8hApRjhFUvAPc2DNxiniaO_uQbkB-9wG80suc0P7EHRTVnpONdYMPCaj_0LwJfC9rijzoT8gdnekiQgD3Ux-U1440vGNf89N6cM-R44YKVxL4sjU5WUn3YoBPGTiBXWqVjhlYrv4Llx18VFCnhSw/7mBS42zuUz_r9CISkG6PlMC6xx__AcXAnvEOaWWFgaSud8SL1iFmW-PH1ugOcdqk
http://r.plixid.com/rd/HxQZRGkNG0nOObqRLFqzZSaO_uQbkB-9wG80suc0P7FVWdkyWoTlYO4Q2Yc1i9NgC_BrsM8mjENiwNaKIX0fyOjjBf8UpaN58Wgw-pOGWaYxfPz4OYrKqad1pTu1nIjs7c66_6zIu8QULPhSfU5zjA/QM3P4bFJYYLp91On9Yjqc-f-tg3XO_8MyRgm-H1e-YVr5PrcywfwsDeLNta84S18
http://r.plixid.com/rd/I5rN6LAqdQwjeRRMsw34kSaO_uQbkB-9wG80suc0P7FTGKQ_ZXG95_K0zr3eA8G2SMXn4O8Qu4FTzCnhRXk4D4D5lm_d_SWH3vuEKTKRdkskMsoC0Bb61T3l1B-tbY0ZSwlxlbSAx5wVFjzlsN-h0g/cSuhXJUWbaKPEMrv47MTv-f-tg3XO_8MyRgm-H1e-YVLCXGVtIDHnBUWPOWw36HS
http://r.plixid.com/rd/Ig49AEZE-n2lw8fuRaJNHyaO_uQbkB-9wG80suc0P7ELBQhAlHPwZkkTl2GKz_fn3Vvj6ZxegC52gnV40QUEXcoZXBWt9ryHIaJM91wHKVdnXIn5bhraz5H3_YDldL1O7u9rgBgcrcEzGLPLkruZ3Q/Aw6ES05u2gdEv5-zvN1FOcC6xx__AcXAnvEOaWWFgaSpo2rqGsJlCTXnCx7iKJxo
http://r.plixid.com/rd/IkjwmjolR4dhmygHl6sDuSaO_uQbkB-9wG80suc0P7FoVTz-f8iaXg7iryY7KEGCNogx0_QeTvuGlC-LXXMwWQ8mrmVhYEoM6dKoZhKdQ1jTaaznEPuMRn2mQfCVxpqXXYdWTfWjgwiTli5GvNuwKg/yS9hd8Mrr-aslpVZ1Qxebef-tg3XO_8MyRgm-H1e-YVdh1ZN9aODCJOWLka827Aq
http://r.plixid.com/rd/ioDMAy1dOQvvhh_YMaXMdyaO_uQbkB-9wG80suc0P7HDkXVXIu4Bec7Hr34gIZnj0D-Q2N7KgC09oWfPZfbC7Dw1r1-JuvIVTYFHCn5Milix49ZtedN6cxWpCaG07xOHxcPWbKmbmhFu3taDTfzRLw/lUVQu1dFDo9PDuhwwJtqjA2yMfNSxiM8NWYRdNT8exv7FKyeWvJPJfOfMfffy8Hx
http://r.plixid.com/rd/izICWnN_NlbS7OD9B85ySlVBzYRa1dadJROc05Qi5lsOCkH4TENJ7xDxscpVlrNeISUhrwYDdBYYokh7xF7TYgEudfjDx2mYt_EJTL3tgtc1PHI8ctvJ8CZYn_AxFSwhDldgdmoTYJHp-6Pk26XGLA/stSqh9MNHNRqbVvzFHBi6Of-tg3XO_8MyRgm-H1e-YX_ugr3LBK2yiKj-jK8FBWE
http://r.plixid.com/rd/J-sfJkgrYOyhaW9C-QkqqSaO_uQbkB-9wG80suc0P7HgNJ066zCF37csdJZVum9PfvvBQH3qktNMa96owogDPUsZm-Cs6ZD7ojRFDwipIRAFPW0oNEhDJP8j0rQOOPs9S8MEESlqGYKKn663-CymwQ/tJyNDj9wwcJ-HDpc7JEUjuf-tg3XO_8MyRgm-H1e-YVhC1ByFnyehO7KSVlyHJ_B
http://r.plixid.com/rd/jbKMdGW1gOLL7vZSLzmISeG4FEHzWUQNWIylrhVPgFRIe85Ir2rGaqHuMMEw1iZXEFA7_VPavy4H9O_2Gc7jlNYCE3Gpqqhkw6KQZsMcdcWiCL3T-m_1OCCd1ZfCt_4q/bYxqOFpmqh919jtWCnAMHOf-tg3XO_8MyRgm-H1e-YWgIH7xajW7oF63j-u2R78g
http://r.plixid.com/rd/JcOCZLCWOLSnAGsLgs0l41VBzYRa1dadJROc05Qi5lu2NgHYlp6wryswuAhFT57HfC1fvAHsRUyqwPCrmPNsOGn5l1WzmKYsgBIiUw2NQcWNNFbUUpiAx07CXqoP6q7tLyY4cJzNGGLUprekGdkEkw/YycNVDtPUa1VH0gZLqS5Pef-tg3XO_8MyRgm-H1e-YU6HoRrn1u92db9rXwH_Ye-
http://r.plixid.com/rd/jeKi8yshOpoJgUzLbR53yyaO_uQbkB-9wG80suc0P7EHRTVnpONdYMPCaj_0LwJfdZCdDT7fEKZlwK6YirIYEPSajytUeaLXAnmai98JInN1oBmUE6rwQDX-YN11ojRigaGqFJNeTpnCh8WDC5ypnw/U2opHATfOdjwQo86tmDoUef-tg3XO_8MyRgm-H1e-YV5D8AFpnmnXaVneLUrpw2S
http://r.plixid.com/rd/jEw3P_08xswASu6B2XGsXiaO_uQbkB-9wG80suc0P7E9bSYtXrkOnUGSwLrLhC1gtg-CIkrM27huG_W8te_8bTJiTvdqsJpU5dtvxXRlTzFYlMbKe3Ld_GG5R0wmrbNXox4ANuDi7bm_tQ7WQcuMBg/H_IWMhHAEV7aZtE3rTBE-cC6xx__AcXAnvEOaWWFgaTXU6qxJVoRPis0NGsWJPnT
http://r.plixid.com/rd/jibejhK4ubCVUp3tsBknmFVBzYRa1dadJROc05Qi5lsgnvHNgeyG7JBlzl5_Gg9B2mtuKdavbMTXRK-dNMGF_uNLPb3eo4EtYRkYlgHxcVr-5YQyvcgDWl8uOmXpWKaUEItbhlIXZd5MbusE88p9qw/P9ycMvThXbAm4LvOj3P5Nef-tg3XO_8MyRgm-H1e-YVKEKUYHwGzitIC0bhg6Jxv
http://r.plixid.com/rd/jmUiPe-b6B0dUw9_V1luZ1VBzYRa1dadJROc05Qi5lsgrHK_tBWgLztwDK6IgVjqbcWodq4WCTD9ivcFyhXjaeuTOGHQg6H27G5IOhmMaEprnkLQVwp4grAc_sCjxSZVEU3zQNHOPpKJI8K980o-3Q/s9dEug96EHpkq0h1VHhC5-f-tg3XO_8MyRgm-H1e-YWF_bKBxC_mKy_EdMmfoVtb
http://r.plixid.com/rd/jTLT2U6VkFOjSrPYuZJvYCaO_uQbkB-9wG80suc0P7FoVTz-f8iaXg7iryY7KEGCukaIelbRtyFLDmTnQcX8fCkfsVBvrHCwc4n-jbPXdx61s08Fh7jLsRQz_g3_0ZdUiomHelOAsCPx1A2ei0Ok0g/Avl7UEMi0kL22K5IZ6lHz5SB8qA-lV7NK1-V2oZtEffe7qpTpNqVUyU6UOlfT3lp
http://r.plixid.com/rd/juZxqImCxt3o6TvfA69qGSaO_uQbkB-9wG80suc0P7E4m9SYQze0Ig7G76InwH7wBeM70VVBPadhmVhF7HSKMrESSCYpB4_ZibXrtOr6NsP78dsRbDu_sKL3uC6E80Cb6ylVHOBauhZKfeMXwClVGg/3R8nWTTJTd-XpwRSG92gGOf-tg3XO_8MyRgm-H1e-YUjzMQMHD7z4XWK7TZ2-U_T
http://r.plixid.com/rd/kbH03tyHxBnHCinevlA1YSaO_uQbkB-9wG80suc0P7HiAgyrvZ5z6zTF6R3BYS3nB7eLp28x1nztP-9sWABpUyg1VNmYcppOXAxO77GyhJ6eMqo6lNLyfqaUFGCSXbFe79dgfsFE57N_cGM6ImWJwg/RTUIzPmFbBCKcEvEOgQXGef-tg3XO_8MyRgm-H1e-YWbeCLMi_kkrei7aSq5VDAJ
http://r.plixid.com/rd/kCPPthe3DD8fxAeEF6WAUFVBzYRa1dadJROc05Qi5ltkWUehmUE-ggL0Jv3ExDMzXNzdwLaO3BE8mvLZO9raa6cNspGu5dvxRG-IHe9slzbzf_Gjs1WemDbe6CVoqnpJtuwGGWLAAOA8faLH7V2oCQ/e1JaHfJC38naniruA9G21ef-tg3XO_8MyRgm-H1e-YUByjUZF0Oed3H3LW49Inls
http://r.plixid.com/rd/KF8b8aFvT6ee6H3mWRpVriaO_uQbkB-9wG80suc0P7HiAgyrvZ5z6zTF6R3BYS3nDhU_jRuqh-0kSaTMdSGyn6lo4JiaCGFllaKhjl1GLbbHAgvUViJvuR00ojzO9kjQGmxIYyRN4QwkTa029kGHtw/RkuTPpGeiIeMSacSvHBu7ef-tg3XO_8MyRgm-H1e-YXFk95aVh8FGxzH_41biz3b
http://r.plixid.com/rd/klw-dMlmOM41VvIfj7GJDlVBzYRa1dadJROc05Qi5ltc9Htzg3A2g8a_OX7vbLyQoIweRf4KMzrZfd9JmOI0qBLacgDYqmxpePmWcUayEcn1tn9Y3Rev32tj9iibg6PV65OzT7kbYIsX25S6VhrteA/zJTg732l9T2Z9LaXGfiog-f-tg3XO_8MyRgm-H1e-YWLjFl8WbEuA3KWabp5qNv7
http://r.plixid.com/rd/kNYbZEhGqnWvqkTARr2PCyaO_uQbkB-9wG80suc0P7GlB2oA2aduqBZBbHRpguXCxfDIe4rsVXacx8Pu7S7W-ugA2RPWwvk3iQaY4UueTRruYMUCyU1kvIG7srzI80SHm3gizIv5JK3ou2kquVQwCQ/Wg2jn0eek2W_aHTpi-RoiOf-tg3XO_8MyRgm-H1e-YXfUqASB7mEtZZemc1UFfyK
http://r.plixid.com/rd/KqC54xICyuzdeCPFyyH8iyaO_uQbkB-9wG80suc0P7FMiOOjZlo_5d-G2CWHbO1hWRz8LAOrwmuhN0MjzoVAUlyOW6lDtu8nHvB3jVEeVydFvz5V1wfyEFm37le3uZYgRt4EBafhOhiBYRwyYBZj-w/3XfR23K5_Kd0Z07x2k2X3-f-tg3XO_8MyRgm-H1e-YUvzZ6jR-CQSrEjssPKYzpH
http://r.plixid.com/rd/Kt3J7isIFj6cYqtuzW_ULyaO_uQbkB-9wG80suc0P7GVJLSAAqrNgz5BkNBybherwrUmJd6hClNCd3uabtIWyErmUBRtLNBBMTWoedUkipCarZv2Zp0Rmp7YtPqpV8CHDPvojs8FSXY_-pP-0V3DrA/DW13717RWs2966_p_TpG5uf-tg3XO_8MyRgm-H1e-YUM--iOzwVJdj_6k_7RXcOs
http://r.plixid.com/rd/Ky3UNPO8iYIGqtJuoLkLJFVBzYRa1dadJROc05Qi5ls1Prg5Df5oAMb-DPaYzC8ibcJc9eBxGzMWiheqmkANwBcQbDqkqd_kqbGSu_swIqAjGNITmXv2pJibJJIMAmJ0Cm3KNION3NyGazmpGoIOQw/g14G_evDsnXePzWaDG6s9Of-tg3XO_8MyRgm-H1e-YUIJlTp3OFu6z1SfuCJW3fd
http://r.plixid.com/rd/L_5LsDdPOCUb9T5L5MI52FVBzYRa1dadJROc05Qi5lvVe4AUAXywgSlMabbyYQkIsyAaol0fdScCxFOowOty7cc63dypzm_CcFhFEZoB_dp6R7ngiQNZGHN2188Octn-zueywCrEhDUAE1Y6WC4S3A/8dUYvlGiyF0ge-Q-yZdY0ef-tg3XO_8MyRgm-H1e-YVkoEcujoZGKZcOUKDSdGAo
http://r.plixid.com/rd/Lq9tL9F-kuu2WsI2RHssliaO_uQbkB-9wG80suc0P7FMiOOjZlo_5d-G2CWHbO1hlCRsP_rxQ0KgIRSKHZCc6jQcsTHWJpuycpT9EckEM8HtkId8zs1r9ZZ_mhf_HoMA_RvuEtDOBumQ9EQM7fOT2g/3w8iIDX3A5mUOp8kXB1K2-f-tg3XO_8MyRgm-H1e-YVhSQ3Vnta-FMR8J3oS3rir
http://r.plixid.com/rd/Lwm-7J5Fc45v4f4bmAPGtSaO_uQbkB-9wG80suc0P7GmivvJH_xlkvJ2_lO9heCAf-cOjtqTJfFP9XSUYFoUJAtJkqDUsbXvfzxGPBNP1MrntcxXGUIURm4AQoblu-iIjZuqz4_s8sjykay5Cj1sMg/GP7KDMh5I3MJEKQ-_cyaKJSB8qA-lV7NK1-V2oZtEffcbHlYh_JCe5m6RqBvQ7Y4
http://r.plixid.com/rd/LWPWAwTORxpqZVR7DeMaJ1VBzYRa1dadJROc05Qi5luyHh97K-ncoBnlUTP3KE2zZpY8TTll2ODr3JVaPLG1UDNVDjpNvvDZWc3d9F8FtAtN-5Qk3v1Lp4uGC89-O5SCT1oezMi9GUq9c6YZf_3NrA/KNh0yg6hJAyUgSxmA4wH9w2yMfNSxiM8NWYRdNT8exu27AYZYsAA4Dx9osftXagJ
http://r.plixid.com/rd/mbyrNAFUFsSpexQLGR30XyaO_uQbkB-9wG80suc0P7FMiOOjZlo_5d-G2CWHbO1hOSFMiITuCkDyFbrHdCUaeBP16oiNAmXH0bgkwgkQ0bYLNZ3KeA5pwlFjWyon8ERcd6Rw_cgexCqOl-ovMjWzmw/3ha43auqkR7gcPzjHpZAZOf-tg3XO_8MyRgm-H1e-YV3pHD9yB7EKo6X6i8yNbOb
http://r.plixid.com/rd/mDydLSS6Nz64NS0E7VmFdlVBzYRa1dadJROc05Qi5lt6V77OEq3rqnVvjR-piKqqWVrnbBsg9ASipeJkln0XCGPFu4UubMRbMUclV6yNoXQxbvdjxzWlm1dfxDlQxMFaBotX1IDPBB-k3EwsSV6sqA/k4UcGjGuld1cYgb_MWA9muKjPOlmjvyQKVObPcIqBa8zDUM_gH7C30R4-bvZcFgH
http://r.plixid.com/rd/miDi5XuQSfeiN9Q2SikFzSaO_uQbkB-9wG80suc0P7EoABDq9e4lNZmIZJQlaspoA-ePeutnYrFKUafsN-62IYWeVMPNlEYxokAMxmHlSIBDIfzLBflnnHHnTf-_qPDtCuRbseyQXcjxM4VgzBpVqw/eaSYq_WpKuNVZzhtD7j5M8C6xx__AcXAnvEOaWWFgaTIwfE8mY__XGow2exUULNY
http://r.plixid.com/rd/muOu8Qsr0u2zVu2DxdokcCaO_uQbkB-9wG80suc0P7FqpC24fFFE_Hd6SDVeIbtwIeP1oz7Dluwclbk8E1AdeoyW6TLZnJEloENx1H2qoNvGVYGbhX45y6kx992uH40fw7q9I2XtOCZXgOvFDmDV2Q/SYiNPl9q3dgrjsvgywqXnuf-tg3XO_8MyRgm-H1e-YXDur0jZe04JleA68UOYNXZ
http://r.plixid.com/rd/Ngz_8N-1wgJUrVv05Uu_syaO_uQbkB-9wG80suc0P7HDkXVXIu4Bec7Hr34gIZnji1LhS-vllTqi69VWMOGXUkBsP2NYKR5YsZ55GM9H9jblhxjkBPPj5qxkfLlwgKd4M_9oZB43UGcPfOLPtV4EhA/qfaqkqxLEAUx7Aj75dKak-f-tg3XO_8MyRgm-H1e-YUz_2hkHjdQZw984s-1XgSE
http://r.plixid.com/rd/nM3uNfm6yWdwBAPmOD9XdSaO_uQbkB-9wG80suc0P7FMiOOjZlo_5d-G2CWHbO1h9SYMpMaCv8pxg7xIhEYpSTzg04dVRgWjo3aol3bHPv6xpCGBkWFZVr4EAlR3_EdVgs3S1dSdtDsw4jrbVMYQyw/q588weKkUdGxPLsfUXOzpef-tg3XO_8MyRgm-H1e-YWF4DunokqdEhYfcQGqNs_S
http://r.plixid.com/rd/NNfkkKZsWFQeiqnfZ8rfjyaO_uQbkB-9wG80suc0P7EVjxa0gwsKC7VLNabLX5wlZRQXUGAx850Hdg2SVA0PLW9lOpqUY7GjyOexYzZBPoa8VZ9aixMbjkDe6ombnf7wJoohcKeGvC4pXSBgvjK6iQ/jZ4zeXWP4aUutv2ruDyd2-f-tg3XO_8MyRgm-H1e-YUmiiFwp4a8LildIGC-MrqJ
http://r.plixid.com/rd/O0jA4CKzCao3HxR_gv_sxiaO_uQbkB-9wG80suc0P7G2oflepGV8Nfkt-UlQ89RMQp7FhPegeNGg9viYOVh1i18Cx0k0vckp0msiEf-o1iPbElWjlhVt2sicamPxOXhdxHzLFtu6CHMknhq-TKN58w/5mK2sbx68yAxfcK_SmKG6Of-tg3XO_8MyRgm-H1e-YXEfMsW27oIcySeGr5Mo3nz
http://r.plixid.com/rd/O2tStcngR0J6MdMpik5rTSaO_uQbkB-9wG80suc0P7GB0ZJd_KEFkevpXS5fH6YhwO_1AbFBShaCzOAqOFiINmPjl5BVxegd2UC_avPrtr8L2Q3_CBU-pUvD9T7xRYIc5tk83IWeiokNRFrd9etObA/g4hv5-QkQREyIfkWIu_gJ8C6xx__AcXAnvEOaWWFgaSpewZbnHU7zNBRBlSF-Jkw
http://r.plixid.com/rd/oBEtwkgMXD-5EijOZuRoZyaO_uQbkB-9wG80suc0P7GlB2oA2aduqBZBbHRpguXCii-Q3CC3EoLnzABBVYIpH0KU0fvv1ZNgmwCXWf1K2-68HHRU5YLVduiat2oL7YOGdJVDBFfFcyS6wI8j9H9b-w/AFgCtMG6TtwyccH-XAwyYw2yMfNSxiM8NWYRdNT8exs4X6nbdvx4-euA4TmUFAKn
http://r.plixid.com/rd/ogbeI3AYFNwloWg3zvCoPSaO_uQbkB-9wG80suc0P7EqBRi-e21-8njxXWE_HNYFQJnos2LBJLrusls6TPbrxTjKGARjybKgK2EbiOqOqxc5qmnsU2s9GzVb4laNqBufJmIotE6Y4b2ehgnHJ_wKrw/dgMs_bX2x_9ygNtU3XyLa-f-tg3XO_8MyRgm-H1e-YVLwwQRKWoZgoqfrrf4LKbB
http://r.plixid.com/rd/OGSpHbrveJ4nLgyRjVT2CiaO_uQbkB-9wG80suc0P7GM4Xn6Zyr4AXY94SCMRZcw1BScdc-_bnN_64RrddfM0pOhI0-sdw2Qbd0jYFp9Dn-p0v8ioO1IrCxcrJQl68BEOh6Ea59bvdnW_a18B_2Hvg/FGlHpQdN5AeRv-JDXW07EQ2yMfNSxiM8NWYRdNT8exuPirqpwOQ7KDnHZgO__GCc
http://r.plixid.com/rd/OHCPxzd98i5VK6lWlJTDhSaO_uQbkB-9wG80suc0P7FoVTz-f8iaXg7iryY7KEGCiML6aU14faGAjVq7avNNjyyVxb85orXp32ONZd_ocpYCSPp4YcCODZHzmEbQbIGtJoohcKeGvC4pXSBgvjK6iQ/ZdSy28lTV-ceFiv8sYlD1-f-tg3XO_8MyRgm-H1e-YVutczoFpHIJpcSSUadmJ1r
http://r.plixid.com/rd/OkQSHeazFDDwEQ9Q92wCfVVBzYRa1dadJROc05Qi5ltSUtmUbnEWEAS1EzoFlfRECSfxG0N1_-6YQGg-i6gRE55tBjWdfgaaoe5q0rIwABngXnKduSaSg872w6edwUJvtP6-53rmey7u9E1PuscUXg/-p0fkFycuJ3JhhIwMug58-f-tg3XO_8MyRgm-H1e-YUDF0XebqKV3fkgPcCIJ-jh
http://r.plixid.com/rd/olwloJwg9OaBvntFblz-QFVBzYRa1dadJROc05Qi5luRvyGjCP6pSuIiE5sKyus4WAlsY9FenBPUUMw4LjXdoC1DUc8z9DE_5IQlZQYbKd6E1D4BqkYlVw80x3nNJJ1zqmb5vwD8kumHuzffUpBbdQ/JQyHpL2mtmkEr5lwB6kAEuf-tg3XO_8MyRgm-H1e-YXQDeAWsEC7qdw_GuyZ1rjS
http://r.plixid.com/rd/Or-BBcPN9sV-EBDdiG9b-iaO_uQbkB-9wG80suc0P7Eit6FRK4Js0hKmn_YT3qGEMFM9UOGUGcS_E_MEq8370DHuWxAaBoH8F4G1AF6ObqO4eAspeJ-pdFmtvMTZZK2TIg9qePqcWOewFxTzprAHOA/QPTDJ32V4X4CAYcsrbXC9Of-tg3XO_8MyRgm-H1e-YX3dbFWV7qG7jyVDve3nGqY
http://r.plixid.com/rd/orF3vVAUGqbPYMgOFOHphyaO_uQbkB-9wG80suc0P7HwqLnQ4jR4e33sOfdW3qwzZGYl2CRLGoZibnH109mHmdQn4IvYHUDxivlxp7B707YukOHnxLTMlI_QP9hSHFCs0e7bWIxOV4eJspqoinj8jA/DCVKrn1tEBuRJImCKkaVl5SB8qA-lV7NK1-V2oZtEfeqZvm_APyS6Ye7N99SkFt1
http://r.plixid.com/rd/oUN2KKHqLS0B_2xJouVJBSaO_uQbkB-9wG80suc0P7HiAgyrvZ5z6zTF6R3BYS3n0uX49rN2iGLGb8bpf9v5cJhRstGhRUTe1hyD40CJ8DA42J5Lw-RNVVMib6so_Tnk31B3Z7rAFNbDGpZmSgPH5g/-X2seMXpcqBA9LOHgMIqrOf-tg3XO_8MyRgm-H1e-YVrHd6E0Rc89En62tM0UojZ
http://r.plixid.com/rd/pCDw_DxFJ-MjgI5MT-03aSaO_uQbkB-9wG80suc0P7FqJ1zSisSfpryY4MQuokUeq19CkqPCL9T1sDoaKkvmIuHRQu2ygYh67aWo86lrSgrs13QBdilgMb1vwJ5zesWGcFCIpulvaoHK3IGjjXG07g/yY72GecQML-r8bTUnNuwiOf-tg3XO_8MyRgm-H1e-YVwUIim6W9qgcrcgaONcbTu
http://r.plixid.com/rd/pdtG96800oC0blfBYQC6TSaO_uQbkB-9wG80suc0P7EdeSlhzmEy4G_-Bpxif4LtDlbC1Wjn1Yy6al4eJALkuW4a45WYQLEhH2Lha-SczEL6V4ql_JZESbhw8r_SqHLAoGS3XJD1V4mSGJ2XHJdxuw/qKBzFH6R0IMGWB0QUGZetrl4uTQiHEwN1lsdxmuQJ9v6onHQ4gG4LJRp_vqGQZJF
http://r.plixid.com/rd/pKJA3cNnqFRNnIDatBa7ASaO_uQbkB-9wG80suc0P7EGxmOmmjw7HwPpfXNJN4q5VVcJjbc81FzBgwtT4YvT2P5s2l8WzrXjsROlr6oCCSUaaSLRTaqI731yOYMsrSiA_CEvwce45IknJJ7u1bGrXg/8k7yLAL2ugla0gGiMYGAspSB8qA-lV7NK1-V2oZtEfeB1zHNNjLANhYQW1thMyJI
http://r.plixid.com/rd/PkuWj-Q-cykb5UchGxy6pyaO_uQbkB-9wG80suc0P7GB0ZJd_KEFkevpXS5fH6YhZ42XlT9faPa6p9tcPbygNZ84YpHlPNcKNXvJjUr4T4uF4trY_8f1BhuAVvJ-otRyMEjeU5UkIIYyzn5KuIoaKg/6_LnzhF-X3lk-_LJOcGzeuf-tg3XO_8MyRgm-H1e-YUK5Fux7JBdyPEzhWDMGlWr
http://r.plixid.com/rd/q3_J80G0ASzoGUp7WGj0Ycnun_CGnf-WF-Sw-j6ti9bmTGbLRST4DGmE9VoX3H57pVbx3t8zLsW83bLuSF3yz1GRcirbdBnwoPq_vEs2URs1oDtwqu2Vkt1125R0JLh9315-W53CIaZOWDAWKNtG8w/znIIDnDYzYjDKzAgtzvBa-KjPOlmjvyQKVObPcIqBa9b7Ng123z0XbEYoKqWW9Xh
http://r.plixid.com/rd/q8O_50m_pJx71M0rdI53b8nun_CGnf-WF-Sw-j6ti9YQSeeVyNOngG1kASS5b0Hgaus5HDksCYtnPBss-oTJWrZ7aOxtkpQ8PJbVyQ37iA5qsO7DBldFoYh5BhKE01kzL1KWtCTr4N9hmx12ltRkAg/5CNLYcUJpVkW0HIRQFGOnuf-tg3XO_8MyRgm-H1e-YWqnbLIqh4yFvWZPIK9CCHM
http://r.plixid.com/rd/QalYeoskL3nWZzojkquYgCaO_uQbkB-9wG80suc0P7HDkXVXIu4Bec7Hr34gIZnjDIejdd-rrbwNFpgRH81T4sn9tDj2vuNmBvYN1gomegBkLcz47zsmjVxqkqUhA7UB8UpR9FexN1zc96H7q17YhQ/fFwgwkUgjJq4l0i_UjcTOZSB8qA-lV7NK1-V2oZtEffO57LAKsSENQATVjpYLhLc
http://r.plixid.com/rd/QUQpek_f5WszksetlTG4qCaO_uQbkB-9wG80suc0P7HK5heMtQNQAGwV73rGEm7xAmQpZ7y3r3B_SqD7dbiHgX1cvYTslGpwznLXiUR-DIk5Ewc_TgLtFZolxCCn3HxaqMCh7w7tTV7eDMKsKfnw6Q/pPvetv_RqiZCBtgi5TZZpef-tg3XO_8MyRgm-H1e-YWowKHvDu1NXt4Mwqwp-fDp
http://r.plixid.com/rd/qWqSAK7hJzj9y9MCuITL2lVBzYRa1dadJROc05Qi5ltZfRPSNdf7w2a10ZVwQXSwyb7L91jRVDk1qMCxJ8ITED3VFEp50eX8mDcIELRufMCFnHKSqj2Cj8Az3jdEgXnBO_N70IgpFbeTEYViderVKQ/Huc7lmCyhZHa6xFRjLtfz-f-tg3XO_8MyRgm-H1e-YWwSa_wMpSA_pg_QzrKkvaN
http://r.plixid.com/rd/r4Ne9tQIhWTpuRQ1F10XXVVBzYRa1dadJROc05Qi5lsJde_j6JXDS1fQdVAmgsjaccdpYc5qW8Bq8XQltBgWvULejdHYjLpNK3qdDM7RSOEehZp5_sFxlpE54Ivic9a_AIJeqi21RQ2n5kPPmCwajA/3lqyo2gohnIxLfo5IMHxe5SB8qA-lV7NK1-V2oZtEfcAgl6qLbVFDafmQ8-YLBqM
http://r.plixid.com/rd/ROL2z-EmKg99WvA4TlQKqFVBzYRa1dadJROc05Qi5ltuQWj0XFA0tXhhRrbAA4o0mSE0ZkAPdk0XIXAbsrrYTCU2QOWIPzMXuMpt2AoP4D3HaWwmiaOtfvXNJzviOxsNHhwrMLK77sTUvqcqcw7BVQ/-wL0Yj-aTdPUVhwC1J8dhuf-tg3XO_8MyRgm-H1e-YXyVkGQEIwTu7N4E5-GFSt7
http://r.plixid.com/rd/RWQo36Y2t1W7r4f94gMhoyaO_uQbkB-9wG80suc0P7GnnkdYc0XIhwd6q-FUVtgRRq2Mjk40bZ0G7hF9Taox03-mvzaOVnV6JU4iITekGYGhHIgPwDvczvzClQ19_Q9iF8n19SGsFVQSK1BxpEtggQ/LewYjOtE13R9DbUbJFVDPMC6xx__AcXAnvEOaWWFgaSRGu5wlF1wIOyuxr4kl18A
http://r.plixid.com/rd/seRPnL-KZ8AlzmKJCIR_7yaO_uQbkB-9wG80suc0P7FoVTz-f8iaXg7iryY7KEGCsIODTzqfCVM-DXw_gtnLI3fX_6qvrJ1hfUz4Kcfihx8XQ72LMq4fAJD7GDOIwNR2cR_bUzyp2x1xfEINH8f65A/KOPza4VF507rEks5n00SmTnx45MxsfVGwBWQKfs5DT7U2QvOtfjSixKU7QZqovJV
http://r.plixid.com/rd/SqvwjzOkMvenYjq8vqcpcSaO_uQbkB-9wG80suc0P7FqJ1zSisSfpryY4MQuokUe-VkTC6NGsCvYiYApvUHmBBIdmVLZjeDrtuOSJRg91hlz3fPF5fpG9jFxB9nQ4b0cJ9zQeBSRRN2V52oRbIBReQ/Rv04HEsILP1iq0uabg1nXw2yMfNSxiM8NWYRdNT8exuyL4_XbS6SisN0bmMgi3Zq
http://r.plixid.com/rd/tDWeBNOx6JkigP7osOUZzlVBzYRa1dadJROc05Qi5lsQBw9nka5NGjy7EJGk87BX5hY0MzBIjjpKf53UvkQIV9BsxcjHhGQPja_0zbZsCWOVMoa9-U-zg9VzfAJoPv_Lqmb5vwD8kumHuzffUpBbdQ/ufcvK8Vqy_1-m_3hBVe01w2yMfNSxiM8NWYRdNT8exuqZvm_APyS6Ye7N99SkFt1
http://r.plixid.com/rd/tIxlUellpF7k-NX5sNrUUCaO_uQbkB-9wG80suc0P7EoABDq9e4lNZmIZJQlaspoh8gykE1F7ZQH66VVjxIs5RaGlHSCYZ7QiuDqflxvXDLWXhbwzBcd4NYRs8XZJgbQ0PC4mhC_jLSrk7yCRZkEqw/e64mUtLa__MVrDCYXd4wPw2yMfNSxiM8NWYRdNT8exvbu3rC_JHiOGkb9dnCFc0q
http://r.plixid.com/rd/TjcwRqB3Bv318fg0_5yB_iaO_uQbkB-9wG80suc0P7FmsmkGVrX-UIkq279PUtxhqVynPg0FN2KzOTL5ure5_Dh86l64nhBJ_bPFMcEWlfy0JyMvR7txZQNzX5Nh7odVTTr8aa1hQ8OrQUxgC9LBmQ/g2QCQqBI1-Gd2iudORzShQ2yMfNSxiM8NWYRdNT8exv4kuVyYgoW_JVqxhT8v__h
http://r.plixid.com/rd/tKfmga0-kjz5QyCU5kIZeyaO_uQbkB-9wG80suc0P7HDkXVXIu4Bec7Hr34gIZnjp9wk19YkHHcl-hVJ3FAcEym92YTOKe3Ehzgw1b-sitBLwjsbv-cYoiqGQLLypYnot9faVnCPzkt1GJowwHHDLw/C6IdXZC5hpE8uSm8EqUoY-f-tg3XO_8MyRgm-H1e-YUcbwYcuAdoB6B6aqSu9MBO
http://r.plixid.com/rd/tKKr6x-YMsjLx60rDv2qXCaO_uQbkB-9wG80suc0P7HgNJ066zCF37csdJZVum9PfvvBQH3qktNMa96owogDPUsZm-Cs6ZD7ojRFDwipIRAFPW0oNEhDJP8j0rQOOPs90GH0CncXYFM6LGyC4J0wTw/KGu-61V5apyLj6DF_agLuef-tg3XO_8MyRgm-H1e-YWbaSqvEMEjBDeX95KIr74D
http://r.plixid.com/rd/TMe5WVmr3CjLGGJ_K_zbXSaO_uQbkB-9wG80suc0P7FoVTz-f8iaXg7iryY7KEGCTC_erU9Ddk4-VEv8clxSiC1U6y6G6E3ysugO5JGSMRSSktzP8UzVTDm6ibmKP_Bc9_nHpL6JJSiatELWS3V36A/3fsca_6QMe1tSVeECxP5eZSB8qA-lV7NK1-V2oZtEfe6YLQL_q5ZkDoGECmAV17B
http://r.plixid.com/rd/tVwNtfJ7FMenh6dtAxldflVBzYRa1dadJROc05Qi5luQB9wEIVxeDXqQh4TnQKDxVlnu2t9_zxCBMukrT_sOJfsxWG20a16itOnt_XLjlO4FiSo0F5OrrRRWbwxLqvzr-6i588z5k23s06TqKtzRGw/huBOLr5ayTE1Xk1QGwKEzMC6xx__AcXAnvEOaWWFgaSHxlSpAIp0e9RUAhitjeAb
http://r.plixid.com/rd/U-FL9tuUAe_vsPRohU7rU1VBzYRa1dadJROc05Qi5lvFg1giUMsGp8Dc8xsIfdFxhaLuSTtv6nW6dtVzR54Nl-sHQaIx7Zq11QoHemDwZveOM0BJpKsAEcWl4jzhqaTT1sSd0VSnnqi40LHovs3AZA/YOV_T5lbXbwoHYGadrDDOOf-tg3XO_8MyRgm-H1e-YWb2MCkqbu4yY1LCUqHgOxy
http://r.plixid.com/rd/U22jVc8qHXAnx83TjL3TvFVBzYRa1dadJROc05Qi5lujbN-Tozu_oolSmepwsMdtvm1D52w_A07ZqZIQOeb5WhdEkiERAf3zwD2jZTEorT_f7z-W0D-1GLrRJRRO6FlxnVYOTQZAaa2KapLHX1cHNQ/r6qGFsicc5GqeN538FxfTA2yMfNSxiM8NWYRdNT8exudVg5NBkBprYpqksdfVwc1
http://r.plixid.com/rd/u66-zhIiKIayk7Z3EsxApyaO_uQbkB-9wG80suc0P7EGxmOmmjw7HwPpfXNJN4q5CLIh3Rz_HM_zIZEZrNbPnSWgRFwhnbm3PJFANIfyYrTL8Awrd8KIF3Q-sODi0FgVYvXwH7iRjLmunzY63VHVtA/knWbM4lSqrKxEfI9u9R6OJSB8qA-lV7NK1-V2oZtEfc16QB0e8BRkd3ZPF4qh82u
http://r.plixid.com/rd/U8TNCSbrSQWId41VvgmNWiaO_uQbkB-9wG80suc0P7GMb96cuGYs3VSrupTcmgJKdQmSkhHQE6MTrVEjcvkUBJa7-_dQPyy9ogP7sJdKpuBMGI91umGKL4vl-raRrXS_3q6IVZFxNHM-frnl7nzqbw/utArytGIH_isl-J-1Zfp9-f-tg3XO_8MyRgm-H1e-YXv12B-wUTns39wYzoiZYnC
http://r.plixid.com/rd/uLALh5NiYjYtLaX1RWIYBlVBzYRa1dadJROc05Qi5lt3h5oxkwQRi0VmQlujQcGru_XQnd8IcYaTTkAmaoXPfoKnwYHUD75kiID0hJJrcJ-BaMXLkcLwa-WChs1g1c8blR-1-DrrICEY72VYDSiW3Q/eQajsM0sIvIPyHgTwTSCQOf-tg3XO_8MyRgm-H1e-YVjwBzAYwP4P5D4MBS0Heo9
http://r.plixid.com/rd/uQxjldtijKdugKvl0ePzFSaO_uQbkB-9wG80suc0P7HwqLnQ4jR4e33sOfdW3qwzf3UDOdqt44nJcSN2B0ifu1f8xbOQlUIs4BvAQDJeN6_p5M3-QWvXJzku9sh1J4IGqMCh7w7tTV7eDMKsKfnw6Q/_85gHLKGYChevRaKuek-cuf-tg3XO_8MyRgm-H1e-YWowKHvDu1NXt4Mwqwp-fDp
http://r.plixid.com/rd/UURGLhBeWKEDqysZDFod_eG4FEHzWUQNWIylrhVPgFQIIIoqlDylUQHc9dqhXZ0YzOgW_dtLdrYAPhDL1oVWjBUq37sdLal3CtYuVEBld9n83cwynCa5ULHrdak0awdc/pPMiOf8bobZTJaCYM0HippSB8qA-lV7NK1-V2oZtEfeb2rOB2v_AL2BAZ72i1-_K
http://r.plixid.com/rd/uZDDDXBbYhXqu6ajB6c_a-G4FEHzWUQNWIylrhVPgFSBiruC-KUxSs2JT26v5FpiVsUVaUzyrpz9Sc_zc4Wz-Ux1lGdY9y854U6zdOcBwXct1FExv6TWVLbJuhoxn0T4/DLJiZzjk1q6nt_p-T6vSPuf-tg3XO_8MyRgm-H1e-YX1F4tBGpwmfq-PdtMXTn2_
http://r.plixid.com/rd/VFEY2qUcTZFa7iX1yd-LRyaO_uQbkB-9wG80suc0P7FqpC24fFFE_Hd6SDVeIbtwqEqYiD6AkUD2jptke6YmtOlhUiHZ41KR-Fiv6oRD4zGb-HDwqWsB2_sRhC-GiRnyg5hS4IolOE9tJXhp7YvuIw/oWfNsMtVXZi_Qs9IG41wuef-tg3XO_8MyRgm-H1e-YUNDT17n8AdOotLmUGxVsib
http://r.plixid.com/rd/vt5TA-eP8puBypAD23BxUcnun_CGnf-WF-Sw-j6ti9agNfjKLJkpWeWOneT3nOjc_UVbTOWLg_JxCyENqTDYO5axD4QT3a0d3Jh54YpfICIBE0118GQsP_eIbQw_3BUh-qJx0OIBuCyUaf76hkGSRQ/-ldR4tfD0joJxhHdTFcJH-f-tg3XO_8MyRgm-H1e-YWSUrC_wTpbRJKPwoY_wnFf
http://r.plixid.com/rd/vU5772urFL18Ce9LDECiLsnun_CGnf-WF-Sw-j6ti9bFkVA89Duw8V6kr4VatcZv5zFXbKrOOVyGoB3xVumPsMNSs-7p-hgIY0LuxyIAMQOew41kJ8F4NtaQWNiIz78X-qJx0OIBuCyUaf76hkGSRQ/_dtUhr-0ALaw380VrPmL6-f-tg3XO_8MyRgm-H1e-YWGeJM_bni8P-IYTIV7Odfx
http://r.plixid.com/rd/w-ybPR6wpktk0pa5Cs6lWiaO_uQbkB-9wG80suc0P7FqpC24fFFE_Hd6SDVeIbtwlszGfoo5BTk4F529xlS_OW2YtOnyU7Ysx1q3kYocRZ5t1hVh6FNqblCJ_O28ngxFDQ09e5_AHTqLS5lBsVbImw/vZOocouEBlhyi91L_GE9nuf-tg3XO_8MyRgm-H1e-YVG3gQFp-E6GIFhHDJgFmP7
http://r.plixid.com/rd/w5-Aziy_nlZ8iosCwAb-VyaO_uQbkB-9wG80suc0P7EVjxa0gwsKC7VLNabLX5wlOEZoXFe4VVBjMwHc8K0hAkQK-rAX30BHeozsFp5xn-nfe1XiYmI3DO2p29CSeugN9o0YtXGNFRmTHATuCKh15A/eAeQN_ZgDC1V23CTI4vUyuf-tg3XO_8MyRgm-H1e-YX2jRi1cY0VGZMcBO4IqHXk
http://r.plixid.com/rd/w6H1RQDsPaYzgwkoeMaLqFVBzYRa1dadJROc05Qi5lukS_hvIoyO60VCoqSan5moAHM_RtEEkArQR_xROAbAxMYMXiGgGJnK8qyGKYmaNBsH_M4X3xAqFX-NsavtNOXUW-zYNdt89F2xGKCqllvV4Q/tgyvybrACrqIC2LySu1Qbuf-tg3XO_8MyRgm-H1e-YUt2tfL-oZStpUviX4p-ye5
http://r.plixid.com/rd/weaXrMRz21oTWdTZ7tvcpSaO_uQbkB-9wG80suc0P7GM4Xn6Zyr4AXY94SCMRZcwVpW88a7VThUe0OS57NJu-akOIJ157PHJU6jHSCc3SSBR378BbubG3dazL99slyrqtrUwkoZIZi_D9dbU7SZTug/NxRavNb1gY6OblI5CGnFbOf-tg3XO_8MyRgm-H1e-YUhriKB3QHL2b31ZXVFoTMl
http://r.plixid.com/rd/WkTftrFok5XLSOjx0y3mzCaO_uQbkB-9wG80suc0P7FTGKQ_ZXG95_K0zr3eA8G2talB8bDZXrvCCg7WdF17xaluNpEjD0GWfV6_v04PUx-mrmyGq90sQj34gmi9k41gynqf-sGAJiGYA_OauxiYrg/iW3EJKPdnh7bSKken6zH2uf-tg3XO_8MyRgm-H1e-YXKep_6wYAmIZgD85q7GJiu
http://r.plixid.com/rd/WO5M0ndvmRl2oMIwSoIu3CaO_uQbkB-9wG80suc0P7FqpC24fFFE_Hd6SDVeIbtwcaoV5QJbeuAVtFRxSl6l_zsTKUU5xRal3xzoOOS-v26ogU8FXVhCiryl1sbx62UGRvu-_hItPYKx9Hid5-Zxjg/pbDitR0WLVNlhjS2feEq2uf-tg3XO_8MyRgm-H1e-YVG-77-Ei09grH0eJ3n5nGO
http://r.plixid.com/rd/X6NVBu4bK0zs1ox3uEDl4SaO_uQbkB-9wG80suc0P7ELQ629m6cjU_VViREd-vaXVwmy3ZRd8EcWEuTDHLxz_vQyMVp03Udl2Am3bzuDZgzoW06AQhdsYyaNdPS2dSXhBfjMRIB21GYzEHbsF4k_iA/rCLllaLXVYor1DyveRWg0Of-tg3XO_8MyRgm-H1e-YUF-MxEgHbUZjMQduwXiT-I
http://r.plixid.com/rd/XbgxxUYHGxHN0LemykzeaFVBzYRa1dadJROc05Qi5ltVaUtcRYGBDtD4iMULLUpJNwfZU1xVHGKeQGM4qRiwQ0dY-qdBmLfd-ceF5I_PHHFr5KYuAvPw6lTz2T4JhQZ2vYn9_a82wrpb7bsDAihBGQ/u4gBuTCBvanZWysXmMohBg2yMfNSxiM8NWYRdNT8exu9if39rzbCulvtuwMCKEEZ
http://r.plixid.com/rd/XE1KxPbAyn1bdvyWpW-JUyaO_uQbkB-9wG80suc0P7EoABDq9e4lNZmIZJQlaspo9dYYnKJ-SirCK6QRPlQisDCsVmTBJaEsF3pA5KfyiQsuzY6TrvTNc86fz2JLmwwGypNgNI8dGLmnoPmGmlgoXQ/sE90YGYsHItyuFVb31Znn-f-tg3XO_8MyRgm-H1e-YXKk2A0jx0Yuaeg-YaaWChd
http://r.plixid.com/rd/xf-bhPICkKGd-jG-gdjrdSaO_uQbkB-9wG80suc0P7EGxmOmmjw7HwPpfXNJN4q5CsqH3vH2f6bElbpg3BjstUnkivBhLRZZLkYgw48K_WgEunkj4rMmbzbmjubSKG0IklKwv8E6W0SSj8KGP8JxXw/KJTl5REQQ8PjJJQ17MLhC-f-tg3XO_8MyRgm-H1e-YW21jAiFOLztXE_IpCF8qyA
http://r.plixid.com/rd/xFnWpgE975gzr7-n7R10kMnun_CGnf-WF-Sw-j6ti9ZNq5IYpgR5E85lor0htiyG4AuIV9PLKuQQmDSmMMLFU_KzDu2wTNDPbg60BjOa805mqMojNaC6hko_mB6fmxZkYrAX3f5jwbAanicHs9J1zA/1Z6nyd-gGl4bi3gK4wi5lOf-tg3XO_8MyRgm-H1e-YWsdODjXFRSIaFC7BoESERC
http://r.plixid.com/rd/xgTqTK1DSFwTn4ud--ZzSlVBzYRa1dadJROc05Qi5lvaJsin5rlx4LosNAIxqWPqPxYUZFqMWlxrznFQ4HlWJK-dI-BXSDJcdSt1rM8dTlyQDm0nXRR0ThsWsbkKCGl3R5AMDXBnqKlB7mFcS7mg_w/98LZFoylNgHNglQCK1XclA2yMfNSxiM8NWYRdNT8extHkAwNcGeoqUHuYVxLuaD_
http://r.plixid.com/rd/xKP7t5tGGsjEyiLFxTH8cSaO_uQbkB-9wG80suc0P7FoVTz-f8iaXg7iryY7KEGC_1TON1bS8q469c8K1oRce-CcTrwy1vqwREKvzQvovKMlSmsPmrUTZf3M1AuTVdYWDfhJGFiPzNlLkp6HMaiOVw/FkD-S5JDV8jaxA55z5U-1uf-tg3XO_8MyRgm-H1e-YUN-EkYWI_M2UuSnocxqI5X
http://r.plixid.com/rd/xU6i6WNc0zyuPinindkHziaO_uQbkB-9wG80suc0P7FqJ1zSisSfpryY4MQuokUexHGdVx082k53UpirVC0dlN0sT9KZ6fS7CZBAbZgTIo4vvTaWLzdlvLgDUq9u0CimvYbIe3EgtivPBE_1rZ9_-Q/6L3saFP9Q9fJu2j7I1428-f-tg3XO_8MyRgm-H1e-YW9hsh7cSC2K88ET_Wtn3_5
http://r.plixid.com/rd/xVJw4bnvI3tQGl_iHMSYwVVBzYRa1dadJROc05Qi5luxf56MplJgg-X6uuFDX8R6F-iwC458wlGAF7ZKZTSiBIEC966JtuWFCUZl9iFtMKxpVF51GVsd_Kq7uqx0ndVTXiQA5idRM3WrGFpWbLK-9A/UMZHeQaZlGwopxgK2ycT9ef-tg3XO_8MyRgm-H1e-YUZkip1uKjMUC_BVuC3qP_S
http://r.plixid.com/rd/XvV13CHM3I-PvMmHTmu27iaO_uQbkB-9wG80suc0P7GMb96cuGYs3VSrupTcmgJKiZPNWBEtDxbIzIPkLJIGWdtOo0K0LGpFBayMbNLzMdiIOzpxEDk4JkRhRYvgodeqwgVdqp_hceuqQIHubZxI0w/kxyqS8xTxgoYn-yBLq9vC-f-tg3XO_8MyRgm-H1e-YWflF3aFFCOF3MxQhHwxqXy
http://r.plixid.com/rd/Xwwo87yQbk9-P7-00Psr7SaO_uQbkB-9wG80suc0P7FTGKQ_ZXG95_K0zr3eA8G2TCjkBC5D4ax9BsZNfSoZr4WkkIEuofMlB82ue_Pps7mwkekedbQa9YmU7HaKXKJh6kCdSwWiLiZSgwAP_exTMg/C9ai9CUWo7rtobsfyjVkEef-tg3XO_8MyRgm-H1e-YW9TQ17Huj5ts74Gr6pIb2R
http://r.plixid.com/rd/y5SLdahpVptygo69UBkPflVBzYRa1dadJROc05Qi5ltKRUFd5MPLAK-esAUlLKadalI9SdVdGCyqfH2I4IMN_Z0-QzGKrxX1jAsSOjSW-sMF548zTMMOZ6Bom6ZrhrdM-xSsnlryTyXznzH338vB8Q/VkBPhJnxCEIDeTyIdnD69uf-tg3XO_8MyRgm-H1e-YWvXh2O4UyT6g7-2_WYIDdX
http://r.plixid.com/rd/yc08tW8IP7V_5TC9V45F5iaO_uQbkB-9wG80suc0P7Fv70gDwaF1k-mUcdQHZST7tgvR_wTi6h2dgCeF4Wt0fjVS_EiRbcOkyzhfaFYP4U7U_5nsLsroVsElHAdM7sp2QNX-XfWXFG441S02ig9IwQ/L2_pNiLkfxlLWhRBCKiycef-tg3XO_8MyRgm-H1e-YVA1f5d9ZcUbjjVLTaKD0jB
http://r.plixid.com/rd/YcgQm0FUCoklZOgxjfKryyaO_uQbkB-9wG80suc0P7GmivvJH_xlkvJ2_lO9heCApD0t4ZH_i3A0NZkFwv0J0igf6HWjZM85IO9dgy4LFpRhqeQ0bLzKVtz3frGnXVKzQwx_RK4AES3e6fn7OxLroA/89PF2R8Te9YDmRH-ZJx8M-f-tg3XO_8MyRgm-H1e-YVDDH9ErgARLd7p-fs7Euug
http://r.plixid.com/rd/YDFmxfyGlYQPmR3-af0MH1VBzYRa1dadJROc05Qi5luE7PWBuLBs7xepOmtjBfAaPCkteB1zlS5gO7I4W2D7WzKABKPng1vHDXm98Pk0OScUOJgkQi8hlXI3zASdVtr7S7PEjnL1TGZ4mC4DfhJ9FA/dUrlOM-3MZLNi9bJ9Japug2yMfNSxiM8NWYRdNT8extLs8SOcvVMZniYLgN-En0U
http://r.plixid.com/rd/YvYwEgUn_JbY8jfjcagSoSaO_uQbkB-9wG80suc0P7GlB2oA2aduqBZBbHRpguXCsECe0gOK_JLyNEDsU40F3slnjIxlupZN2yoYrktkrSpRkK5JYgwceUKb-mW7OYIDYJOYvaTIfcXGi5UoHa81xQ/PxxbV3qMl45B0rBqCwzzmOf-tg3XO_8MyRgm-H1e-YVgk5i9pMh9xcaLlSgdrzXF
http://r.plixid.com/rd/YZvIx_8F7vKiMdxYwDjdgCaO_uQbkB-9wG80suc0P7GVJLSAAqrNgz5BkNBybherQEMeX3ZXteetl33V1CAKRtFsD9Bpvz1rvfkdw6rSx1or--roVjcXRsad0da1j4eZOttxIEwvWKMiYkbq-mb8Jg/8RELTUVTozx2Zk6FxWyeDuf-tg3XO_8MyRgm-H1e-YUSkQqsZFFVyWL0SkkkW18v
http://r.plixid.com/rd/Z1o_-fixlF1hvCvQDpJk5iaO_uQbkB-9wG80suc0P7FqJ1zSisSfpryY4MQuokUe9MYvE78h74Uy_1QKUwssDaWSlPSCGFSQHvrzAiT5_-a9ihhV2Bz1i5UamY5WNM0fD3tLP-uROuCv_g78DraPjQ/_t8I02UuukvC2-npSIKnp-f-tg3XO_8MyRgm-H1e-YUPe0s_65E64K_-DvwOto-N
http://r.plixid.com/rd/Z7VpnPLHakzj7HiEIwyMwlVBzYRa1dadJROc05Qi5lv615rgV-w3C3ctMKokCa3lXfaFBOtB3WwHIsYvCvX2EmmJzq3j7SGlrhOcx6r6bg_7-smiMCBX4H9Cw_GoTYcTkqsnVqUlqGW53vDX89rbhQ/XoKf8ycEm2JwUVvfoQTHcOf-tg3XO_8MyRgm-H1e-YVTFuB_udYeVo-yGrdtCnnM
http://r.plixid.com/rd/ZankVeiGylfr5wTKPLgan1VBzYRa1dadJROc05Qi5lue9w7zsW6Z_sKMwMYrEfGQbk96AMw5aBGQ6VUt0H0hSsz105DENQFAkNQNxmt63V-2uk2K_D9QyY9-0EARf7C5Mw1DP4B-wt9EePm72XBYBw/Ro4SiTiZ7kVBjg7v60tIMef-tg3XO_8MyRgm-H1e-YU8pvX88Suv4aQSqogzUmOh
http://r.plixid.com/rd/ZBd-EpRsiS4WNzUODK5jsiaO_uQbkB-9wG80suc0P7ELBQhAlHPwZkkTl2GKz_fnMCA_ninVdN_4jv16AS6lZlkd2pKEifmZB9zGlnspKigoB69CWxus4y2QXDb_JuDwfzpvcW802U8WLOUfeaag2w/5ql9fiqFUcVn9HReMm0HS-f-tg3XO_8MyRgm-H1e-YX2jRi1cY0VGZMcBO4IqHXk
http://r.plixid.com/rd/zplJkBBdVofFl7YHhHRgoMnun_CGnf-WF-Sw-j6ti9Y1akJfJB8fJmgdiiNhjMpVxQpgQzK1Eoa-Pntj14GO3BYUAnq4qvcWZBknJbFpjg4EbGrdtmXNNbPGEF6C5bkvL1KWtCTr4N9hmx12ltRkAg/RfridvTJjxvbxpA_taxB6krAawzuKl0teQPDaR_wX_U
http://r.plixid.com/rd/ZUxrhPOnVOtr9LY_LRPghVVBzYRa1dadJROc05Qi5lsUuRmpYwv4lrn4cE99pxZWDErm440srxCMbjXbQtaj1xRLyQIB9JvnD94Be_MB3ZAHlopZZGz5z2QTXREHCaRl-JLlcmIKFvyVasYU_L__4Q/8_UAMaunmN6Pv90OL2UjjOf-tg3XO_8MyRgm-H1e-YVBorZFYlFVMn8CZQ5iFtmO
http://r.plixid.com/rd/zVl474k3ZRb2SkKaRaExAiaO_uQbkB-9wG80suc0P7G4o_NBNYrqBQS9wHGPp23lh6wbeIx_4pHN1vk2bkmYSFpnyT5-PCY0HlMnfe0_cF_mfuHF0PDa1AN9dow4mNxWTnqf95aFVo5lZF2Wb3z8ng/lZV7kK--NvB3WVsSKpua9ef-tg3XO_8MyRgm-H1e-YVOep_3loVWjmVkXZZvfPye
http://r.plixid.com/rd/Zxn6ds3b3sNKs7J6Q1Ip8lVBzYRa1dadJROc05Qi5lsMetPTiWRO1d9ztT6C5UJjhQyou9rilJ5BHmVhsuk-GOCDM3pEANCRpWGbJ6GxX8Kg4Ymj3nwDu10aOX5v-QbrEItbhlIXZd5MbusE88p9qw/6BZm2bQ2KFRh0qFmCC54uOf-tg3XO_8MyRgm-H1e-YVpaReZgnAEpyFs21yGVLiA


Saludos
#330
Un año más vengo a hacerles esta pequeña, pequeñisima contribuición en forma de regalo navideño simplemente por ser miembros de este magnifico foro...

Vengo a regalar un cupón para acceder gratuitamente al servicio uploaded.net Premium durante 48 horas.

Para no generar ningún tipo de favoritismo u ofensa o cualquier otro conflicto similar por mi parte, se lo regalaré al primero que responda en este hilo incluyendo en su mensaje esta frase: "YO LO QUIERO".
( si lo pide con otras palabras entonces ignoraré la petición. )

Requisitos:
- Tener al menos un año de antiguedad en el foro.
- Tener más de 100 mensajes publicados (los mensajes del foro libre no cuentan).
- No pertenecer al Staff de elhacker.net (lo siento chicos, es un regalo para los usuarios :P)

Saludos!
#331
.Net nos ofrece varias alternativas para guardar la configuración de usuario, cómo la serialización de datos, la infrastructura My.Settings, o recurrir al registro de windows, sin embargo, y al menos para mi, un archivo de inicialización (archivo.INI) sigue siendo la mejor forma para portabilizar la configuración de un software, ya que el formato es muy amistoso de cara al end-user (¿quien no sabe editar un INI?), es perfecto para desarrollar software portable y mantener la misma configuración de usuario al copiarlo de un PC a otro, así que he ideado este algoritmo en conjunción para la manipulación de archivos INI usando código administrado (un parser de cosecha propia, sin recurrir a código no administrado con las funciones de la API de Windows que leen archivos INI).

El resultado de todo esto es bastante código, un Type para representar una sección INI, otro Type para representar una llave de una sección INI, etc, pero solo es necesario copiar y pegar todo el código que he desarrollado, ya que su utilización es tan simple como lo que voy a mostrar a continuación...

Ejemplo de uso para crear un INI con una sección y un valor booleano:
Código (vbnet) [Seleccionar]
Dim ini As New IniManager("C:\File.ini", Encoding.Default)

With ini

   .Clear()

   .Sections.Add("SectionName")
   .Sections("SectionName").Keys.Add("KeyName", value:="", comment:="Commentary")
   .Sections("SectionName").Keys("KeyName").Value = "True"

   .Save()

End With

Console.WriteLine(ini.ToString)




Para obtener el valor, lo hariamos así:
Código (vbnet) [Seleccionar]
Dim setting As Boolean = CBool(ini.Sections("SectionName").Keys("KeyName").Value)

Tiene métodos de búsqueda de secciones y llaves, y demás.




IniSection, representa una sección INI:
http://pastebin.com/8mJUZ2Nb

IniKey, representa una llave INI:
http://pastebin.com/eE1ZSnFG

IniSectionCollection, representa una colección de secciones INI:
http://pastebin.com/jcFJ0yYd

IniKeyCollection, representa una colección de llaves INI:
http://pastebin.com/CLfBtB1h

IniManager, lo más importante, la class que administra de manera abstracta los Types mencionados para la manipulación de un archivo INI:
http://pastebin.com/xgy93Saq

Espero que a alguien más le sirva.

Saludos!
#333
Buenas

Os dejo este sencillo y pequeño algoritmo para generar captchas para nuestras aplicaciones.

Se puede extender para añadir "ruido" en la imagen, o alterar la posición y la rotación de las letras, pero eso no lo he implementado ya que me parece algo excesivo para "autentificar" una simple aplicación de escritorio.

       

Modo de empleo:
Código (vbnet) [Seleccionar]
Dim captcha As KeyValuePair(Of Bitmap, String) = GenerateCaptcha(length:=5, size:=PictureBox1.Size)

PictureBox1.BackgroundImage = captcha.Key
Console.WriteLine(captcha.Value)


Código fuente:
Código (vbnet) [Seleccionar]

    Dim rand As New Random

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Generates a captcha image.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example> This is a code example.
   ''' <code>
   ''' Dim captcha As KeyValuePair(Of Bitmap, String) = GenerateCaptcha(5, PictureBox1.ClientSize)
   ''' PictureBox1.BackgroundImage = captcha.Key
   ''' </code>
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="length">
   ''' The character length.
   ''' </param>
   '''
   ''' <param name="size">
   ''' The image size.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' A <see cref="KeyValuePair(Of Bitmap, String)"/> that contains the captcha image and the resulting string.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Function GenerateCaptcha(ByVal length As Integer,
                                          ByVal size As Size) As KeyValuePair(Of Bitmap, String)

       Return GenerateCaptcha(length, size.Width, size.Height)

   End Function

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Generates a captcha image.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example> This is a code example.
   ''' <code>
   ''' Dim captcha As KeyValuePair(Of Bitmap, String) = GenerateCaptcha(5, PictureBox1.Width, PictureBox1.Height)
   ''' PictureBox1.BackgroundImage = captcha.Key
   ''' </code>
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="length">
   ''' The character length.
   ''' </param>
   '''
   ''' <param name="width">
   ''' The image width.
   ''' </param>
   '''
   ''' <param name="height">
   ''' The image height.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' A <see cref="KeyValuePair(Of Bitmap, String)"/> that contains the captcha image and the resulting string.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Function GenerateCaptcha(ByVal length As Integer,
                                          ByVal width As Integer,
                                          ByVal height As Integer) As KeyValuePair(Of Bitmap, String)

       Dim captcha As New Bitmap(width, height)
       Dim fontHeight As Integer = (height \ 2)
       Dim vLineSpacing As Integer = 2
       Dim hLineSpacing As Integer = 2
       Dim str As String = String.Join("", (From c As Char In "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
                                    Order By rand.Next Select c).Take(length))

       Using g As Graphics = Graphics.FromImage(captcha)

           g.InterpolationMode = InterpolationMode.High
           g.SmoothingMode = SmoothingMode.HighQuality
           g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit
           g.CompositingQuality = CompositingQuality.HighQuality

           Using gradientBrush As New LinearGradientBrush(New Point(0, (height \ 2)),
                                                          New Point(width, (height \ 2)),
                                                          Color.FromArgb(rand.Next(&HFF7D7D7D, &HFFFFFFFF)),
                                                          Color.FromArgb(rand.Next(&HFF7D7D7D, &HFFFFFFFF)))

               ' Draw gradient background.
               g.FillRectangle(gradientBrush, New Rectangle(0, 0, width, height))

           End Using ' gradientBrush

           Using linesPen As New Pen(Brushes.Black, 1)

               ' Draw vertical lines.
               For i As Integer = 1 To width
                   Dim ptop As New Point(i * vLineSpacing, 0)
                   Dim pBottom As New Point(i * vLineSpacing, height)
                   g.DrawLine(linesPen, ptop, pBottom)
               Next i

               ' Draw horizontal lines.
               For i As Integer = 1 To height
                   Dim ptop As New Point(0, i * hLineSpacing)
                   Dim pBottom As New Point(width, i * hLineSpacing)
                   g.DrawLine(linesPen, ptop, pBottom)
               Next i

           End Using ' linesPen

           Using font As New Font("Arial", fontHeight)

               Using path As New GraphicsPath

                   For i As Integer = 0 To (str.Length - 1)

                       Dim charX As Integer =
                           (((i * (width - (g.MeasureString(str(i), font, width).ToSize.Width \ length)))) \ length)

                       Dim charY As Integer = (height \ 2)

                       path.AddString(str(i), font.FontFamily, FontStyle.Bold, fontHeight,
                                      New Point(charX, charY), New StringFormat With {.LineAlignment = StringAlignment.Center})

                   Next i

                   ' Draw characters.
                   g.DrawPath(Pens.Black, path)
                   g.FillPath(Brushes.Gainsboro, path)

               End Using

           End Using ' font

       End Using ' g

       Return New KeyValuePair(Of Bitmap, String)(captcha, str)

   End Function


Saludos
#334
Hola

Publico el tema aquí, por que creo que me podrá servir de más ayuda.

Estoy tratando de implementar la estructura DEVMODE en C#:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd183565%28v=vs.85%29.aspx
( y no me sirven las implementaciones de pinvoke.net u otros ejemplos online, ya que todas las que he visto hasta ahora son erroneas o desactualizadas en algún sentido )



He estado comparando los offsets en C++ y C#, en C++ con la macro offsetof y en C# con la función Marshal.OffsetOf, hasta llegar al miembro dmFields todo es correcto;
el problema que tengo, es que el offset del miembro dmColor es 60 en C++, mientras que en mi implementación es 68, esto quiere decir que mi implementación de los miembros de la primera union es incorrecta.

Según un experto en código no administrado, mi representación de las unions y el enfoque que le stoy dando es correcto, pero no debe ser del todo así, ya que las posiciones/offsets son distintas.

Código (csharp) [Seleccionar]
   [StructLayout(LayoutKind.Sequential)]
   public struct DevMode {
    private const int CchDeviceName = 32;
    private const int CchFormName = 32;
   
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CchDeviceName)]
    public string DeviceName;
    public short SpecVersion;
    public short DriverVersion;
    public short Size;
    public short DriverExtra;
    public DeviceModeFields Fields;
    public UnionDevMode1 test1;
    public short Color;
    public short Duplex;
    public short YResolution;
    public short TTOption;
    public short Collate;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CchFormName)]
    public string FormName;
    public short LogPixels;
    public int BitsPerPixel;
    public int PixelsWidth;
    public int PixelsHeight;
    public UnionDevMode2 test2;
    public int DisplayFrequency;
    public int IcmMethod;
    public int IcmIntent;
    public int MediaType;
    public int DitherType;
    public int Reserved1;
    public int Reserved2;
    public int PanningWidth;
    public int PanningHeight;
   }
   
   [StructLayout(LayoutKind.Explicit)]
   public struct UnionDevMode1 {
    [FieldOffset(0)] public SubUnionDevMode1 subUnion1;
    [FieldOffset(0)] public SubUnionDevMode2 subUnion2;
   }
   
   [StructLayout(LayoutKind.Sequential)]
   public struct SubUnionDevMode1 {
    public short Orientation;
    public short PaperSize;
    public short PaperLength;
    public short PaperWidth;
    public short Scale;
    public short Copies;
    public short DefaultSource;
    public short PrintQuality;
   }
   
   [StructLayout(LayoutKind.Sequential)]
   public struct SubUnionDevMode2 {
    public Win32.Types.Point Position;
    public DeviceModeDisplayOrientation DisplayOrientation;
    public int DisplayFixedOutput;
   }
   
   [StructLayout(LayoutKind.Explicit)]
   public struct UnionDevMode2 {
   
    [FieldOffset(0)] public int DisplayFlags;
    [FieldOffset(0)] public int Nup;
   
   }


El problema está en el miembro UnionDevMode1 , o al menos todo me indica eso, mejor dicho en alguno de los miembros de la estructura  SubUnionDevMode1 o  SubUnionDevMode2 , sin embargo, me he asegurado de que los types ocupan el mismo tamaño que en C++, vease:

POINTL = 8 bytes.
Win32.Types.Point = 8 bytes.

DeviceModeFields = int (4 bytes)
DeviceModeDisplayOrientation = int (4 bytes)

Teniendo esto en cuenta, ¿alguien es capaz de ver en lo que estoy fallando?.
#335
Hola

Me gustaría saber si alguien con experiencia en C++ podría indicarme los offests de los miembros de la estructura DEVMODE:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd183565%28v=vs.85%29.aspx

Esto es por que estoy tratanto de trasladar las unions de dicha estructura a .Net, pero necesito saber los offsets de los miembros en C++ para comparar el resto de miembros, ya que algo hice mal, probablemente el tamaño de alguno de mis miembros declarados sea incorrecto en comparación con el tamaño definido en la estructura de C++.

Me han comentado que esto se hace con la macro offsetof:

Creo que no pido mucho, debe ser una cosa sencilla para quien maneje C++, pero si me equivoco disculpen y diganme más o menos como podría hacerlo yo mismo...

Saludos
#336
Pues eso, ¿alguien es capaz de reconocer la voz de esta cantante flamenca?:


Para ser sinceros llevo un buen rato buscando y nada... solo encontré muchas versiones distintas del mismo tema cantado por otros/as artistas.

La canción no me interesa, solo el nombre de la que canta el tema, pero por si sirve de algo es una versión del tema original de Mecano, "Una rosa es una rosa", del año 1991.

Saludos
#337
Buenas.

Siempre me he preguntado lo siguiente y espero poder resolver mi duda en este foro, por que nadie sabe nada respecto a esto...

Ahí va:



Si yo quisiera buscar temas parecidos a los temas de los videos de aquí abajo, ¿por qué estilo de música en concreto debería buscar?.

Ya todos lo sabrán pero para los que no lo sepan esta música se conoce comunmente como "música épica", pero eso no es un estilo ...no es nada de nada, es como quien dice que le gusta el "EDM" (música electrónica), que bien puede ser un tema hard-electro o una canción tecno-pop en Catalán, todo en el mismo saco y nada que ver, vaya. Por ese mismo motivo si me pongo a buscar por "música orquestral" o "sinfonias...¿?" o incluo "música épica" se que me va a salir todo tipo de música que la mayoría no se van a parecer en nada a estos temas de los videos, aparte, es que simplemente quiero saber el nombre de lo que estoy escuchando.

¿Alguien tiene mejor idea de que estilo de música es exactamente esto?. Y añado otra pregunta a ser posible que lo sepan, ¿conocen alguna página donde descargar solamente álbums de este estilo de música? (álbums comerciales o simplemente packs de temas sueltos de "música épica", vaya)

[youtube=640,360]https://www.youtube.com/watch?v=viM0-3PXef0[/youtube]     [youtube=640,360]https://www.youtube.com/watch?v=uTCaMMatyNg[/youtube]

[youtube=640,360]https://www.youtube.com/watch?v=Q_dmmLbQXXA[/youtube]     [youtube=640,360]https://www.youtube.com/watch?v=F3hTW9e20d8[/youtube]

Otro ejemplo de lo que busco exactamente:
http://audiojungle.net/item/epic-music-pack-3/9768334

Típicas bandas sonoras en general, de películas y videojuegos "épicos"... jeje.

Saludos
#338
He estado refactorizando un viejo snippet, el cual es de mis favoritos, por ese motivo lo posteo aquí para hacer una mención especial y no en el apartado de snippets.

Lo que voy a mostrar es la forma más sencilla (copy&paste) para añadir magnetismo a una ventana.

Personalmente considero que todos deberiamos implementar esta funcionalidad en nuestras aplicaciones, ya que es una funcionalidad muy útil para mantener la organizción de las ventanas en la pantalla, cosa que cualquier usuario-final de su aplicación lo sabrá agradecer.

El magnetismo de ventanas consiste en que, al mover la ventana/Form cerca de un borde de la pantalla, la ventana se adhiera a dicho borde.



Nota: Esta funcionalidad estará incluida en la próxima versión de mi API ElektroKit: http://foro.elhacker.net/net/elektrokit_v10_api_de_proposito_general_para_desarrolladores_de_net-t444997.0.html




El siguiente código está escrito en Vb.Net (es suficiente con copiar, pegar y usar) pero se puede compilar en una dll para desarrolladores de código-C#.

La Class tiene dos propiedades importantes de personalización, la primera propiedad es WindowMagnetizer.Threshold, que indica el margen, en píxeles, en el que se debe producir el magnetismo. Yo suelo utilizar un valor de 35 píxeles ya que soy muy basto moviendo el ratón, pero creo que un valor de 20 seria lo apropiado de forma generalizada.

La otra propiedad se llama WindowMagnetizer.AllowOffscreen, que como su propio nombre indica por si mismo, sirve para habilitar o deshabilitar el poder mover la ventana fuera de los límites de la pantalla activa. (he tenido en cuenta la existencia de una pantalla dual).

El uso de esta class es muy, muy sencillo, tanto como esto:

Código (vbnet) [Seleccionar]
Private magnetizer As New WindowMagnetizer(Me) With
   {
       .Enabled = True,
       .AllowOffscreen = True,
       .Threshold = 30
   }


Código (csharp) [Seleccionar]
private WindowMagnetizer magnetizer;

private void Form1_Load(object sender, EventArgs e) {

  magnetizer = new WindowMagnetizer(this)
                   {
                       Enabled = true,
                       AllowOffscreen = true,
                       Threshold = 30
                   };  
}


Sin más, el código fuente:

Código (vbnet) [Seleccionar]
' ***********************************************************************
' Author   : Elektro
' Modified : 01-December-2015
' ***********************************************************************

#Region " Public Members Summary "

#Region " Constructors "

' WindowMagnetizer.New(IWin32Window)

#End Region

#Region " Properties "

' WindowMagnetizer.Handle As IntPtr
' WindowMagnetizer.OwnerWindow As IWin32Window
' WindowMagnetizer.Threshold As Integer
' WindowMagnetizer.Enabled As Boolean
' WindowMagnetizer.AllowOffscreen As Boolean

#End Region

#Region " Methods "

' WindowMagnetizer.Dispose()

#End Region

#End Region

#Region " Usage Examples "

'Private magnetizer As New WindowMagnetizer(Me) With
'    {
'        .Enabled = True,
'        .AllowOffscreen = True,
'        .Threshold = 30
'    }

#End Region

#Region " Option Statements "

Option Explicit On
Option Strict On
Option Infer Off

#End Region

#Region " Imports "

Imports System
Imports System.ComponentModel
Imports System.Drawing
Imports System.Linq
Imports System.Runtime.InteropServices
Imports System.Windows.Forms

' Imports Elektro.Interop.Win32
' Imports Elektro.Interop.Win32.Enums
' Imports Elektro.Interop.Win32.Types

#End Region

#Region " Window Magnetizer "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Add magnetism to the edges of a window,
   ''' in this way, by bringing the window to a screen edge, the edge of the window adheres it to the edge of the screen.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example> This is a code example.
   ''' <code>
   ''' Private magnetizer As New WindowMagnetizer(Me) With
   '''     {
   '''         .Enabled = True,
   '''         .AllowOffscreen = True,
   '''         .Threshold = 30
   '''     }
   ''' </code>
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   Public Class WindowMagnetizer : Inherits NativeWindow : Implements IDisposable

#Region " Private Fields "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Determines whether the owner window is being resized by one of its edges.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected isResizing As Boolean

#End Region

#Region " Properties "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets the window that owns this <see cref="WindowMagnetizer"/> instance.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The window.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Overridable ReadOnly Property OwnerWindow As IWin32Window
           <DebuggerStepThrough>
           Get
               Return Me.ownerWindowB
           End Get
       End Property
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' ( Backing field )
       ''' The window that owns this <see cref="WindowMagnetizer"/> instance.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected ownerWindowB As IWin32Window

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets the handle for the window that owns this <see cref="WindowMagnetizer"/> instance.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The handle.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Overridable Shadows ReadOnly Property Handle As IntPtr
           <DebuggerStepThrough>
           Get
               Return MyBase.Handle
           End Get
       End Property

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets or sets, in pixels, the minimum threshold that the magnetic window needs to dock it on the nearest window border.
       ''' <para></para>
       ''' (Default value is <c>20</c>))
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The minimum threshold that the magnetic window needs to dock it on the nearest window border.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Overridable Property Threshold As Integer
           <DebuggerStepThrough>
           Get
               Return Me.thresholdB
           End Get
           <DebuggerStepThrough>
           Set(ByVal value As Integer)
               Me.thresholdB = value
           End Set
       End Property
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' ( Backing field )
       ''' The minimum threshold that the magnetic window needs to dock it on the nearest window border.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected thresholdB As Integer

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets or sets a value indicating whether the magnetizer is enabled.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' <see langword="True"/> if the magnetizer is enabled, otherwise, <see langword="False"/>.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Overridable Property Enabled As Boolean
           <DebuggerStepThrough>
           Get
               Return Me.enabledB
           End Get
           <DebuggerStepThrough>
           Set(ByVal value As Boolean)
               Me.enabledB = value
           End Set
       End Property
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' ( Backing field )
       ''' A value indicating whether the magnetizer is enabled.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected enabledB As Boolean

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets or sets a value indicating whether the window can be moved off-screen.
       ''' <para></para>
       ''' Default value is <see langword="True"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' <see langword="True"/> if the window can be moved off-screen, otherwise, <see langword="False"/>.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Overridable Property AllowOffscreen As Boolean
           <DebuggerStepThrough>
           Get
               Return Me.allowOffscreenB
           End Get
           <DebuggerStepThrough>
           Set(ByVal value As Boolean)
               Me.allowOffscreenB = value
           End Set
       End Property
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' ( Backing field )
       ''' A value indicating whether the window can be moved off-screen.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected allowOffscreenB As Boolean

#End Region

#Region " Constructors "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Prevents a default instance of the <see cref="WindowMagnetizer"/> class from being created.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerNonUserCode>
       Private Sub New()
       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Initializes a new instance of the <see cref="WindowMagnetizer"/> class.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="window">
       ''' The <see cref="IWin32Window"/> window that owns this instance (eg. a <see cref="Form"/> window).
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Sub New(ByVal window As IWin32Window)

           Me.allowOffscreenB = True
           Me.thresholdB = 20
           Me.ownerWindowB = window

           MyBase.AssignHandle(window.Handle)

       End Sub

#End Region

#Region " Private Methods "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' If the margin between the specified <paramref name="window"/>
       ''' and the nearest border of the active screeen is lower than the value specified in <paramref name="threshold"/>,
       ''' then it docks the window to the border.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="window">
       ''' The magnetic window.
       ''' </param>
       '''
       ''' <param name="windowPosHandle">
       ''' A pointer to a <see cref="Interop.Win32.Types.WindowPos"/> structure that contains the
       ''' new size and position of the <paramref name="window"/>.
       ''' </param>
       '''
       ''' <param name="threshold">
       ''' The minimum threshold that the window needs to dock it on the nearest desktop border.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       Protected Overridable Sub DockToNearestScreenBorder(ByVal window As IWin32Window,
                                                           ByVal windowPosHandle As IntPtr,
                                                           Optional ByVal threshold As Integer = 0I)

           Dim workingArea As Rectangle =
               Screen.FromControl(DirectCast(window, Control)).WorkingArea ' Active screen.

           workingArea.Width = 0
           workingArea.Height = 0

           Screen.AllScreens.ToList.ForEach(
               Sub(scr As Screen)
                   workingArea.Width += scr.WorkingArea.Width
                   workingArea.Height += scr.WorkingArea.Height
               End Sub)

           Dim windowPos As WindowPos =
               CType(Marshal.PtrToStructure(windowPosHandle, GetType(WindowPos)), WindowPos)

           If (windowPos.Y = 0) OrElse (windowPos.X = 0) Then
               ' Nothing to do.
               Exit Sub
           End If

           Dim win32Rect As Rect
           Dim rect As Rectangle
           NativeMethods.GetWindowRect(window.Handle, win32Rect)
           rect = win32Rect

           ' Top border
           If ((windowPos.Y >= -threshold) AndAlso
              ((workingArea.Y > 0) AndAlso (windowPos.Y <= (threshold + workingArea.Y)))) _
           OrElse ((workingArea.Y <= 0) AndAlso (windowPos.Y <= threshold)) Then

               windowPos.Y = workingArea.Y

           End If

           ' Left border
           If (windowPos.X >= (workingArea.X - threshold)) AndAlso
              (windowPos.X <= (workingArea.X + threshold)) Then

               windowPos.X = workingArea.X

           ElseIf (windowPos.X <= (workingArea.X - threshold)) AndAlso
                  Not (Me.allowOffscreenB) Then

               windowPos.X = workingArea.X

           End If

           ' Right border.
           If ((windowPos.X + rect.Width) <= (workingArea.Right + threshold)) AndAlso
              ((windowPos.X + rect.Width) >= (workingArea.Right - threshold)) Then

               windowPos.X = (workingArea.Right - rect.Width)

           ElseIf ((windowPos.X + rect.Width) >= (workingArea.Right + threshold)) AndAlso
                  Not (Me.allowOffscreenB) Then

               windowPos.X = (workingArea.Right - rect.Width)

           End If

           ' Bottom border.
           If ((windowPos.Y + rect.Height) <= (workingArea.Bottom + threshold)) AndAlso
              ((windowPos.Y + rect.Height) >= (workingArea.Bottom - threshold)) Then

               windowPos.Y = (workingArea.Bottom - rect.Height)

           ElseIf ((windowPos.Y + rect.Height) >= (workingArea.Bottom + threshold)) AndAlso
                  Not (Me.allowOffscreenB) Then

               windowPos.Y = (workingArea.Bottom - rect.Height)

           End If

           ' Marshal it back.
           Marshal.StructureToPtr(structure:=windowPos, ptr:=windowPosHandle, fDeleteOld:=True)

       End Sub

#End Region

#Region " Window Procedure (WndProc) "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Invokes the default window procedure associated with this window to process windows messages.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="m">
       ''' A <see cref="T:Message"/> that is associated with the current Windows message.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Protected Overrides Sub WndProc(ByRef m As Message)

           Select Case m.Msg

               Case WindowsMessages.WmSizing
                   Me.isResizing = True

               Case WindowsMessages.WmExitSizeMove
                   Me.isResizing = False

               Case WindowsMessages.WmWindowPosChanging

                   If Not (Me.isResizing) AndAlso (Me.enabledB) Then
                       Me.DockToNearestScreenBorder(window:=Me.ownerWindowB,
                                                    windowPosHandle:=m.LParam,
                                                    threshold:=Me.thresholdB)
                   End If

           End Select

           MyBase.WndProc(m)

       End Sub

#End Region

#Region " Hidden Base Members "

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function ReferenceEquals(ByVal objA As Object, ByVal objB As Object) As Boolean
           Return Object.ReferenceEquals(objA, objB)
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function GetHashCode() As Integer
           Return MyBase.GetHashCode
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function [GetType]() As Type
           Return MyBase.GetType
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function Equals(ByVal obj As Object) As Boolean
           Return MyBase.Equals(obj)
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function ToString() As String
           Return MyBase.ToString
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Sub AssignHandle(ByVal handle As IntPtr)
           MyBase.AssignHandle(handle)
       End Sub

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Sub CreateHandle(ByVal cp As CreateParams)
           MyBase.CreateHandle(cp)
       End Sub

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Sub DestroyHandle()
           MyBase.DestroyHandle()
       End Sub

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Sub ReleaseHandle()
           MyBase.ReleaseHandle()
       End Sub

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function FromHandle(ByVal handle As IntPtr) As NativeWindow
           Return NativeWindow.FromHandle(handle)
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function GetLifeTimeService() As Object
           Return MyBase.GetLifetimeService
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function InitializeLifeTimeService() As Object
           Return MyBase.InitializeLifetimeService
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Function CreateObjRef(ByVal requestedType As Type) As System.Runtime.Remoting.ObjRef
           Return MyBase.CreateObjRef(requestedType)
       End Function

       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerNonUserCode>
       Public Shadows Sub DefWndProc(ByRef m As Message)
           MyBase.DefWndProc(m)
       End Sub

#End Region

#Region " IDisposable Implementation "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' To detect redundant calls when disposing.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected isDisposed As Boolean

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Releases all the resources used by this instance.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Sub Dispose() Implements IDisposable.Dispose

           Me.Dispose(isDisposing:=True)
           GC.SuppressFinalize(obj:=Me)

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
       ''' Releases unmanaged and - optionally - managed resources.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="isDisposing">
       ''' <see langword="True"/>  to release both managed and unmanaged resources;
       ''' <see langword="False"/> to release only unmanaged resources.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Protected Overridable Sub Dispose(ByVal isDisposing As Boolean)

           If (Not Me.isDisposed) AndAlso (isDisposing) Then

               With Me
                   .enabledB = False
                   .AllowOffscreen = True
                   .thresholdB = 0
               End With

               MyBase.ReleaseHandle()
               MyBase.DestroyHandle()

           End If

           Me.isDisposed = True

       End Sub

#End Region

   End Class

#End Region


P/Invokes:

Código (vbnet) [Seleccionar]
       <SuppressUnmanagedCodeSecurity>
       <DllImport("user32.dll", SetLastError:=True)>
       Public Shared Function GetWindowRect(ByVal hwnd As IntPtr,
                                            ByRef rect As Rect
       ) As <MarshalAs(UnmanagedType.Bool)> Boolean
       End Function




Código (vbnet) [Seleccionar]
Public Enum WindowsMessages As Integer

        WmSizing = &H214
        WmExitSizeMove = &H232
        WmWindowPosChanging = &H46

End Enum



Código (vbnet) [Seleccionar]
Imports System
Imports System.Diagnostics
Imports System.Linq
Imports System.Runtime.InteropServices

#Region " Window Pos "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Contains information about the size and position of a window.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <remarks>
   ''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms632612%28v=vs.85%29.aspx"/>
   ''' </remarks>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   <StructLayout(LayoutKind.Sequential)>
   Public Structure WindowPos

#Region " Fields "

       ''' <summary>
       ''' A handle to the window.
       ''' </summary>
       Public Hwnd As IntPtr

       ''' <summary>
       ''' The position of the window in Z order (front-to-back position).
       ''' This member can be a handle to the window behind which this window is placed,
       ''' or can be one of the special values listed with the 'SetWindowPos' function.
       ''' </summary>
       Public HwndInsertAfter As IntPtr

       ''' <summary>
       ''' The position of the left edge of the window.
       ''' </summary>
       Public X As Integer

       ''' <summary>
       ''' The position of the top edge of the window.
       ''' </summary>
       Public Y As Integer

       ''' <summary>
       ''' The window width, in pixels.
       ''' </summary>
       Public Width As Integer

       ''' <summary>
       ''' The window height, in pixels.
       ''' </summary>
       Public Height As Integer

       ''' <summary>
       ''' Flag containing the window position.
       ''' </summary>
       Public Flags As Integer

#End Region

   End Structure

#End Region


Código (vbnet) [Seleccionar]
Imports System
Imports System.Diagnostics
Imports System.Drawing
Imports System.Linq
Imports System.Runtime.InteropServices

#Region " Rect "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Defines the coordinates of the upper-left and lower-right corners of a rectangle.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <remarks>
   ''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd162897%28v=vs.85%29.aspx"/>
   ''' <para></para>
   ''' <see href="http://www.pinvoke.net/default.aspx/Structures/rect.html"/>
   ''' </remarks>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   <StructLayout(LayoutKind.Sequential)>
   Public Structure Rect

#Region " Properties "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets or sets the x-coordinate of the upper-left corner of the rectangle.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The x-coordinate of the upper-left corner of the rectangle.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Property Left As Integer

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets or sets the y-coordinate of the upper-left corner of the rectangle.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The y-coordinate of the upper-left corner of the rectangle.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Property Top As Integer

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets or sets the x-coordinate of the lower-right corner of the rectangle.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The x-coordinate of the lower-right corner of the rectangle.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Property Right As Integer

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets or sets the y-coordinate of the lower-right corner of the rectangle.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The y-coordinate of the lower-right corner of the rectangle.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public Property Bottom As Integer

#End Region

#Region " Constructors "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Initializes a new instance of the <see cref="Rect"/> struct.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="left">
       ''' The x-coordinate of the upper-left corner of the rectangle.
       ''' </param>
       '''
       ''' <param name="top">
       ''' The y-coordinate of the upper-left corner of the rectangle.
       ''' </param>
       '''
       ''' <param name="right">
       ''' The x-coordinate of the lower-right corner of the rectangle.
       ''' </param>
       '''
       ''' <param name="bottom">
       ''' The y-coordinate of the lower-right corner of the rectangle.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       Public Sub New(ByVal left As Integer,
                      ByVal top As Integer,
                      ByVal right As Integer,
                      ByVal bottom As Integer)

           Me.Left = left
           Me.Top = top
           Me.Right = right
           Me.Bottom = bottom

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Initializes a new instance of the <see cref="Rect"/> struct.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="rect">
       ''' The <see cref="Rectangle"/>.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       Public Sub New(ByVal rect As Rectangle)

           Me.New(rect.Left, rect.Top, rect.Right, rect.Bottom)

       End Sub

#End Region

#Region " Operator Conversions "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Performs an implicit conversion from <see cref="Rect"/> to <see cref="Rectangle"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="rect">The <see cref="Rect"/>.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <returns>
       ''' The resulting <see cref="Rectangle"/>.
       ''' </returns>
       ''' ----------------------------------------------------------------------------------------------------
       Public Shared Widening Operator CType(rect As Rect) As Rectangle

           Return New Rectangle(rect.Left, rect.Top, (rect.Right - rect.Left), (rect.Bottom - rect.Top))

       End Operator

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Performs an implicit conversion from <see cref="Rectangle"/> to <see cref="Rect"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="rect">The <see cref="Rectangle"/>.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <returns>
       ''' The resulting <see cref="Rect"/>.
       ''' </returns>
       ''' ----------------------------------------------------------------------------------------------------
       Public Shared Widening Operator CType(rect As Rectangle) As Rect

           Return New Rect(rect)

       End Operator

#End Region

   End Structure

#End Region


Espero que esto les pueda servir de ayuda.

Saludos!
#340
¿Qué es ElektroKit?






ElektroKit es un sofisticado y completo conjunto de utilidades con nuevas APIs y extensiones de método para complementar al núclero de .Net Framework,
para ayudarle así a completar su caja de herramientas de programación con esta librería de classes adicional.



ElektroKit se distribuye en un conjunto de (por el momento) 22 21 librerías que están enfocadas hacia diversas temáticas:







DESCARGA (v2.0)




GitHub: Compilación + Documentación + Código fuente

Paquete Nuget






DONACIONES



Con la intención de soportar la continuidad de este proyecto, por el esfuerzo invertido y la motivación para seguir actualizando, quizás usted quiera considerar donar la cantidad de dinero que desee, mediante Paypal, haciendo click en la siguuiente imagen:


¡¡ MUCHAS GRACIAS !!





CONTRIBUICIONES



Para contribuir fisicamente modificando el código fuente, pueden crear una bifurcación (fork) del proyecto desde GitHub, haciendo click en esta imagen:






BUGS, PETICIONES Y SUGERENCIAS



Pueden dejar su comentario en este post para cualquier duda, petición o sugerencia, todo es bienvenido.

También pueden utilizar el rastreador de problemas de GitHub para reportar bugs, haciendo click en esta imagen:






DOCUMENTACIÓN





Todos los miembros del código fuente están documentados, la documentación se distribuye de varias formas.

Pueden acceder a la documentación online mediante esta imagen:


También pueden obtener la documentación en formato CHM haciendo click en esta imagen:


Nótese que existen multitud de ejemplos de código en ambas documentaciones, los cuales pueden ser un buen punto de partida para comprender como utilizar ElektroKit:

( click para agrandar )



También pueden inspeccionar la documentación Xml en el código fuente:

( click para agrandar )

O examinar la descripción de los miembros mediante Intellisense o el examinador de objetos de Visual Studio:






RESUMEN DE MIEMBROS



Resulta imposible mencionar cada una de las funcionalidades de ElektroKit, realmente son muchísimas (y para eso ya está la documentación),
intentaré hacer un breve resumen resaltando características que les podrían resultar muy interesantes.






SI TE HA GUSTADO MI APORTE, ¡COMENTA! :)




#341
Buenas

Estoy desarrollando una API de propósito general con una jerarquía de miembros inspirados en la librería de clases de .Net Framework, y me gustaría que colaborasen dándome ideas para incluir nuevas herramientas, y así las podremos disfrutar todos cuando comparta la primera versión de dicha API (o versiones posteriores).

¿Qué herramientas de propósito general os gustaría que incluyese una API para la plataforma .Net?

Por ejemplo, un monitor de tráfico de red, una class para detectar la inserción/extracción de dispositivos USB, un type para encapsular la información de una clave de registro, una función para convertir unidades de tiempo, un método que compute el hash de un archivo, etc, cualquier cosa es válida sobre cualquier temática (excepto las herramientas ya mencioandas, que ya las incluí, y excepto las que superen mis limitaciones, jeje).

Simplemente busco ideas y/o también colaboradores (mandarme mensaje privado si alguien está interesado). Gracias.

PD: Aunque la API es bastante gigantesca ya, aun está algo prematura como para compartirla en GitHub o ese tipo de repositorios online.

Saludos
#343
Programación General / MOVIDO: Parcial
7 Noviembre 2015, 12:29 PM
#347
Buenas

Hace poco descubrí la extensión Stylish para firefox. Existen muchas extensiones parecidas pero esta me gustó mucho por su recopilación de user-scripts sobre todo de themes oscuros.
http://addons.mozilla.org/en-us/firefox/addon/stylish/
http://userstyles.org/

Estoy usando este script para modificar el aspecto de la MSDN:
https://userstyles.org/styles/107229/msdn-dark-docs https://userstyles.org/styles/96523/msdn-black-background-theme

El problema que tengo es que el aspecto que le han aplicado a los bloques de código es horrible, tanto por el gusto de colorización como para la lectura del código:


He conseguido personalizarlo un poco usando colores menos brillantes y más adecuados para la lectura:


Y ahora quiero modificar también el color de fondo de los bloques de código (para que no sea tan oscuro), pero no encuentro la propiedad correspndiente en el script, o a lo mejor es que debo añadirla yo.

¿Podrían ayudarme a conseguirlo?.

Este es el script (sin modificar):

Código (css) [Seleccionar]
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("msdn.microsoft.com") {

ul#srv_shellHeaderNav
 {
   /* complete the silly border and make it a bit fleshier
   */
   border-bottom: 1px solid black;
   /*
   adjust for that 12px overhang on the right,
   which was a concequence of using a linked border of our own
   */
   /*margin-right: -11px;*/
   /* use above method, if you dont have firefox
      this will have a greater chance of  interfering
   with future modifications by microsoft, also it does not
   seem to like the right margin as much (1px overhang persistent) */
   -moz-margin-start: -11px;
   -moz-margin-end: -11px;
 }
 
*[role="menu"], .top-level-link-text
 {
   background-color: white !important;
   filter: invert(100%) !important;
 }

#body,#ux-header,#headerContainer
{
   width: auto  !important;
   margin-left: 10px  !important;    
   margin-right: 10px  !important;
   
}
#body
{


}


#content,#leftNav
{
margin-top: 25px !important;
border-top: 1px solid gray !important;
}    
#content>div, #leftNav>div
{
margin-top: 35px;
}

img[title="Visit the Windows Store"]
{
 border-radius: 20px !important;
}

#BodyBackground,body,p,a
{
background: #252525 !important;
color: #FFFFFF !important;
}




input
{
color: white !important;
}

/* just images that are in table definitions, usually spaced out  as big buttons */
tr>td>img,
td a>img
{
border-radius: 4px !important;
border: white solid !important;
}
td a>img:hover
{
border: white outset !important;
}
td a>img:active
{
border: white inset !important;
}

body *
{
 border-color: gray !important;
 outline-color: gray !important;
 background-color: transparent !important;
}

#VideoHowTo
{
width:0px;
height: 100px;
padding-left: 300px;
background-color: transparent !important;

}

h1,h2,th, li.linksTitle a,
td span[style="font-family:'Segoe UI',Verdana,Arial;font-size:1.385em;color:#5e5e5e;font-weight:bold;"],
div dl dt span span a,
div a,
.HeaderContainerRefinement
{
color: #C0C0C0 !important;
}
h3,h4,.ResultDescription
{

color: #A0A0A8 !important;
}
td
{
color: #A0A0A8 !important;
}
#rcA
{
color: #707070 !important;
}
/* code editor-like colors */


pre
{
color: rgb(214,222,212) !important;
font-family: terminal !important;
font-weight: normal !important;
font-style: normal !important;
}
/*COMMENT*/
pre span[style="color:Green;"]
{
color: lime !important;
}

pre span[style="color:Blue;"]
{
color: cyan !important;
}

pre span[style="color:#A31515;"]
{
color: rgb(70,222,230)!important;
background-color: rgb(37,71,70)!important;
}
/*
unfortunately, the syntax highlighting in the code container tabs
is somewhat limited. There's no way to change the colors of some of
the elements (like identifiers, operators, numbers, etc) So until
CSS adds the ability to modify content better than it does now, this
will have to suffice

and finally, the little tag on the code container and the borders

*/

div.codeSnippetContainerTabs>div>a
{
color: #34c6f3 !important;
font-size: 12px;
background-color: black !important;
padding: 3px !important;
padding-left: 8px !important;
padding-right: 6px !important;
border-radius: 10px !important;
border: white 1px solid !important;
font-weight: bold;
text-shadow: 3px 3px 4px rgba(255,255,255,0.4);
}
div.codeSnippetContainerCodeContainer
{
border-radius: 10px !important;
border-color: white !important;
}
div.FeedbackTitleContainer
{
color: silver !important;
text-align: center;
padding-top: 0px !important;
padding-bottom: 6px !important;
text-transform: uppercase !important;
font-family: lucida console !important;
font-size: x-small !important;
}
.BrandLogoImage.msdn
{
background-image: none !important;
background-size: 136px 24px !important;
}
#SearchFlyoutContainer, #vsPanel
{
background: #252525 !important;
color: white !important;

}
#SearchFlyoutContainer div ul li
{
font-size: small !important;
color: white !important;
}
#SearchFlyoutContainer div *
{
font-size: small !important;
color: white !important;
padding-right: 0px;
text-shadow: gray 0 0 4px;
}

#SearchFlyoutContainer a
{
color: white !important;
font-size: x-small !important;
text-transform: uppercase;
text-shadow: gray 0 0 4px;
}
#SearchFlyoutContainer a:after
{
content: " This Flyout";
}
#feedBackImg
{
opacity: 0.55;
}
#FooterLogo, #FooterCopyright, #footerLeft
{
opacity: 0.50;
}
#HeaderSearchButton
{
/*disabled for the 2015 page
 background-image: url("http://paradisim.uuuq.com/foldericons/find.png") !important;*/
}
.Divide
{
opacity: 1.0 !important;
color: #999 !important;

}


#contentFeedback,#contentFeedback *
{
border-style: none !important;
color: #909090 !important;
}

body script+script+script+div
{
border-radius: 10px;
background-color: grey !important;
color: black !important;
}

.MetroButton
{
padding: 0px !important;
margin: 0px !important;
background-position: center !important;
background-size: 19px !important;
border: 1px white outset !important;
border-radius: 5px;
}
.ResultMetaDataValue  { color: #bbb !important; }
.ResultMetaDataName  { color: #999 !important; }
.ResultUrl { color: #888 !important; }

body script+script+script+div img
{
border-radius: 10px;
}
body script+script+script+div a
{
color: gray !important;
font-size: small !important;
}
#static
{
background-attachment: local !important;
/*disabled for the 2015 page
 background: url("http://paradisim.uuuq.com/foldericons/server.png") 2px 2px !important; */


}
 
 #shell-header,
 .shell-header-nav,
 .shell-header-dropdown-tab,
 .shell-header-dropdown-tab-label,
 .shell-header,
span.LW_CollapsibleArea_Title
{
color: #aeaeae !important;
}

span.cl_CollapsibleArea_collapsing
{
/*disabled for the 2015 page
 background-image: url("http://paradisim.uuuq.com/foldericons/Minus Red Button.png") !important; */
background-size: 16px !important;
background-position: center !important;
width: 16px !important;
height: 16px !important;
opacity: 0.5;
}

span.cl_CollapsibleArea_expanding
{
/*disabled for the 2015 page
 background-image: url("http://paradisim.uuuq.com/foldericons/Add Green Button.png") !important; */
background-size: 16px !important;
background-position: center !important;
width: 16px !important;
height: 16px !important;
opacity: 0.5;
}

/**HIDDEN OBJECTS**/

.ResultStatusIcon
{
display: none !important;
}

}


Saludos!
#350
Estoy intentando encontrar la discografia de la banda de (teen)Rock "Ten Year Vamp" pero me está siendo dificil (por que no los conocen ni sus madres). En fileDiva y otros buscadores no encuentro nada, en buscadores de Torrents tampoco, y para algo que encuentro en Google resulta que cuando intento descargar cualquiera de los archivos aquí presentes en estas urls no se descarga nada, solo archivos mp3 de 0 bytes:


Mi pregunta es la siguiente, ¿soy yo, o es la página?, quiero decir, ¿los archivos están corruptos en el server, o es que estoy haciendo algo mal para descargar de esta página?, me extraña bastante por que he intentado descargar otros archivos aleatorios a ver si funcionaban, y tampoco van... vamos, que no pueden estar toooodos los archivos corruptos, digo yo... ¿o tal vez si?.
#352
Buenas.

No sabía si colocar este aporte en la sección de diseño gráfico, ya que las fuentes de texto no tienen por que acabar abarcar dicha temática.

En fin, les traigo una lista que he elaborado con casi 8.000 enlaces de fuentes de texto de calidad suprema (True Type y Open Type). Es un texto listo para copiar y pegar en su administrador de descargas favorito.

http://pastebin.com/q9CKV2Hg

Hay muchas fuentes conocidas "comerciales" como la que usa Disney u otras compañias/marcas de todo tipo. Hay todo tipo de fuentes, 3d, grunge, graffity, normales, a mano, etc.




La página de donde he sacado los enlaces:
http://www.1001fonts.com/

Y por si a alguien le sirve, este es el simple algoritmo de web-scraping que desarrollé para la ocasión. Está escrito en VisualBasic.Net.
Código (vbnet) [Seleccionar]
Dim urlFormat As String = "http://www.1001fonts.com/new-and-fresh-fonts.html?page={0}&items=50"
Dim currenturl As String
Dim includeDemoFonts As Boolean = False
Dim zipExp As New Regex("http([s])?.+\.zip", RegexOptions.IgnoreCase)

Dim fontList As New List(Of String)
Dim outputFile As String = "C:\fonts.txt"

For pageIndex As Integer = 1 To Integer.MaxValue

   currenturl = String.Format(urlFormat, pageIndex)

   Debug.WriteLine(String.Format(" Current page: {0}", pageIndex))
   Debug.WriteLine(String.Format(" Current url : {0}", currenturl))

   Try
       Using sr As New StreamReader(HttpWebRequest.Create(currenturl).GetResponse.GetResponseStream)

           For Each m As Match In zipExp.Matches(sr.ReadToEnd).Cast(Of Match)()

               If (Not includeDemoFonts) AndAlso (m.Value.ToLower.EndsWith("demo.zip")) Then
                   Continue For

               Else
                   If Not fontList.Contains(m.Value) Then
                       fontList.Add(m.Value)
                   End If

               End If

           Next m

       End Using

   Catch ex As WebException
       If (ex.Status = WebExceptionStatus.ProtocolError) AndAlso (ex.Message.Contains("404")) Then
           Exit For

       Else
           MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

       End If

   End Try

Next pageIndex

File.WriteAllLines(outputFile, fontList, Encoding.Default)
MessageBox.Show("Finished", "", MessageBoxButtons.OK, MessageBoxIcon.Information)


Si solo quieren descargar las fuentes de una categoría de la página la modificación de la query es muy sencilla, por ejemplo la categoría de fuentes 3D:
Código (vbnet) [Seleccionar]
Dim urlFormat As String = "http://www.1001fonts.com/3d-fonts.html?page={0}&items=50"

PD: Apenas tarda 1 minuto en recolectar los 8.000 enlaces.

Saludos!
#353
Buenas

Necesito descargar la build número 10565 de Windows 10 Home, pero no la encuentro en Español por ningún lado.

El motivo de mi urgencia es debido a que supuestamente dicha build corrije el problema al que hago mención en este post:
El problema de las ventanas en cascada de Windows 10.

¿Alguien sabe donde descargar la ISO en Español?.

...¿Alguien sabe tan siquiera si esa ISO existe en Español?, ya que al parecer es una preview unicamente en Inglés, pero no estoy seguro.

Gracias.

Un saludo.
#355
Hola!

Vengo con la esperanza de que alguien me pueda decir como se llaman los temas originales de los samples de guitarra eléctrica que han usado para producir estos remixes de aquí abajo.




Zyklon - Chemical Waste
Año de lanzamiento 2015.

[youtube=640,360]https://www.youtube.com/watch?v=D3KKyZgdN-E[/youtube]
( el sample de la guitarra se puede escuchar bien en el minuto 01:25 )




Darren R. a.k.a. George Centeno - Metalhead
Año de lanzamiento 2000.

[youtube=640,360]https://www.youtube.com/watch?v=kKTx2FdQktk[/youtube]
( el sample de la guitarra se puede escuchar bien en el minuto 01:04 )

EDITO:
ENCONTRADO!
NO ME LO PUEDO CREER. Más de una década buscando y lo acabo de descubrir mientras escribia este post, jajaja. Bueno, pues aquí os dejo el temazo original, de Metallica.

Metallica - Seek & Destroy
[youtube=640,360]https://www.youtube.com/watch?t=51&v=J-tvJcTPxHc[/youtube]

Gracias a esta página:
http://www.whosampled.com/sample/330481/Darren-R.-Metalhead-Metallica-Seek-%26-Destroy/




Dynamite Headdy - Cabezón Mix
Año de lanzamiento 1995.

[youtube=640,360]https://www.youtube.com/watch?v=xAjRNGb7UDI[/youtube]
( el sample de la guitarra se puede escuchar bien en el minuto 03:43 )

Nótese que el sample se parece muchísimo al sample del primer tema de arriba, Zyklon - Chemical Waste, pero creo que no es el mismo, en aquél suena alguna nota más ...creo yo.

Nótese también que tal vez el sample de este tema en realidad no pertenezca a ninguna banda de Heavy, no estoy seguro, tal vez sea la OST/BGM de algún juego de la Megadrive incluyendo la BGM del Dynamite Headdy, que no la he podido conseguir para comprobarlo.

PD: Todavía conservo el cassete xD.




Saludos!
#356
Introducción al problema




Microsoft nos ha acostumbrado toda la vida a que, si cierras una ventanita del explorer, la siguiente ventana que abras se posicionará en el mismito lugar que estaba, es decir, se supersposicionará encima de la otra ventana. Pues bien, esto ya no es así a partir de Windows 10.

Windows 10 ha cambiado su comportamiento estético en el sentido de que ahora TODAS las ventanas (e instancias) del explorador de Windows, se mostrarán en cascada.



"De acuerdo Elektro, ¿y que te ocurre con eso?", me ocurre que literálmente es un coñazo, es frustrante, algo insufrible, es lo más incómodo que este sistema operativo me ha echado a la cara.

¿A ustedes les da igual?, pues a mi no, no lo soporto, quiero que las malditas ventanas del Explorer se posicionen en el mismo lugar que las abrí por última vez, como ha sido "siempre" hasta Windows 8.1 sin ir más lejos, ahora no vengas a cambiarme mis hábitos, maldito de Windows 10.

Llámalo bug, problema de comportamiento, o estúpida decisión intencionada de diseño por parte de los tan inteligentes desarrolladores de la compañia Microsoft,
el caso es que este problema tiene un grave efecto negativo en la experiencia del usuario, por que, sin ir más lejos, resulta tecnicamente imposible mantener un orden u organización de las ventanas del Explorer.

Yo suelo tener varias ventanas abiertas, y como yo habrán miles de usuarios igual, estamos acostumbrados a posicionarlas en un lugar en concreto y que no se muevan de ahí al volverlas a abrir, pues bien, veamos a continuación una demonstración gráfica lo que ocurre con Windows 10...

Este video lo grabé para demostrar este problema llevado al extrema. Si no quieren ver el video lo resumiré, basicamente lo que hago es mover una ventana del Explorer a la esquina inferior derecha del area cliente del escritorio, seguidamente la cierro, y cuando la vuelvo a abrir, el "modo cascada" posiciona dicha ventana en la esquina superior izquierda. (tócate los...)

[youtube=960,540]http://www.youtube.com/watch?v=4uoFuVtqKdY[/youtube]





Resolución del problema ...¿dije resolución?




Personálmente he buscado y rebuscado en los lugares más recónditos de Internet, HE ESTADO EN TODAS LAS PÁGINAS DE TODA LA WORLD WIDE WEB, llegué hasta el quinto o el décimo nivel de la internet profunda o deep-web, y en mi aventura investigativa me topé con todo tipo de documentos secretos acerca de UFOs y unos juguetes chinos de última generación que se van a poner de moda muy pronto, pero a pesar de todo mi esfuerzo invertido por lograr encontrar información sobre lo que realmente yo quería, no encontré mención alguna por parte de Microsoft respecto a este nuevo comportamiento de Windows 10, así que asumo que nadie me va a poder prestar ayudar n aquí ni en ningún sitio, por que no existe una solución oficial, y por no existir... no existe o yo no he encontrado ni un miserable comentario por parte de algún empleado de Microsoft.

Lo que si encontré en mi búsqueda fueron varios lugares donde se debate este problema, especiálmente en el post de este foro es donde más debate ha habido al respecto:
Remember window position? - TenForums

A falta de una solución oficial, ¿qué nos queda?, pues recurrir a alguna posible solución de terceros, asi es... recurrir a un programa en segundo plano que nos consuma recursos, etc. Algo que no deberíamos tener que hacer, pero es lo que hay.

Actualmente existe una pseudo-solución (y de hecho, la única que se pueda tomar en serio) en forma de aplicación en segundo plano, la app en cuestión se llama ShellFolderFix y se puede descargar aquí:
ShellFolderFix - Manage folder window positions/size . SevenForums

Lo que hace dicha aplicación es conservar o guardar la posición de las ventanas que vayamos cerrando (solo funciona con las ventanas del Explorer), para restaurar las ventanas en la última posición guardada cuando las volvamos a abrir.

Genial ...¿no?, pues no, no es tan genial...

...La llamo pseudo-solución por que más que ser un "fix" es todo lo opuesto según se mire, ya que la aplicación tiene un problema de comportamiento muy grave en un escenario básico de lo más normal, al navegar manuálmente por el árbol de directorios en el Explorer (haciendo click en las carpetas para navegar, vaya).

Lo que ocurre es que, la aplicación guarda las posiciones de las ventanas que vayamos cerrando cómo ya he mencionado, y para saber que coordenadas hacen referencia a que ventana entonces también debe guardar un dato adicional, la ruta de la barra de navegación de la ventana que se cerró. ¿Qué ocurre con esto?, pues que cuando estamos navegándo manual y comodamente en una instancia del Explorer, si accedemos a cualquier ventana que haya sido guardada por este programa ShellFolderFix , nuestra ventana actual se mmoverá a dicho lugar, y eso es sencillamente absurdo, es una locura, un comportamiento muy pero que muy estúpido cuyo desarrollador no ha descubierto o no ha sabido como hacerle frente.

Para preveniros, explicaré los pasos a reproducir que demuestran el problema del que les hablo:


  • 1. Crear un directorio con esta estructura: C:\Carpeta1\Carpeta2\Carpeta3
  • 2. Crear un acceso directo en el escritorio para 'Carpeta1', 'Carpeta2' y 'Carpeta3'.
  • 3. Abrir el acceso directo de 'Carpeta3', y mover la ventana a la esquina superior derecha y cerrar la ventana, para que se guarde su posición.
  • 4. Hacer lo mismo con el acceso directo de 'Carpeta2', pero esta vez moverla al centro de la pantalla y cerrarla.
  • 5. Hacer lo mismo con el acceso directo de 'Carpeta1', pero esta vez moverla a la esquina superior izquierda y cerrarla.
  • 6. Ahora, reabrir el acceso directo de 'Carpeta1', y en dicha ventana del Explorer, navegar manualmente haciendo click a 'C:\Carpeta1\Carpeta2'.

       En este punto, veremos que la ventana actual del Explorer se moverá indiscriminadamente al centro de la pantalla.
  • 7 Ahora, en la misma ventana del explorer, navegar manualmente haciendo click a 'C:\Carpeta1\Carpeta2\Carpeta3'.

       En este punto, veremos que la ventana actual del Explorer se moverá absurda e indiscriminadamente a la esquina superior derecha de la pantalla.
  • Fín.

Dicho esto, los usuarios de Windows 10 solo podemos hacer dos cosas, resignarnos a sufrir el problema de las ventanas en cascada por parte de Microsoft, o sufrir el problema de los reposicionamientos igual de incómodos por parte de ShellFolderFix.





¿Hay alguna alternativa que funcione correctamente?




La respuesta corta es: No.

A falta de una solución oficial ...que probable y desafortunadamente nunca la habrá, yo personálmente pienso que la única solución realmente eficiente, es decir, la que no implicaría ningún consumo de recursos adicional, sería parchear el código/instrucciones que esté encargado de posicionar las ventanas en modo cascada, ya sea el Explorer.exe o el archivo que sea, que no lo se todavía, tal vez lo único que hace el Explorer sea llamar a la función CascadeWindows de la WinAPI, pero aun no lo he comprobado. De todas formas no le deseo esa labor de ingeniería inverda a nadie, no podemos esperar que alguien se interese por este problema y lo sepa resolver de esa manera.

De todas formas, yo no me quedaré quejándome sin más, soy programador y me he propuesto resolver este problema de las ventanas en cascada por mis propios medios, aunque a simple vista le encuentro varias complicaciones para resolver el problema donde ShellFolderFix falla en la navegación manual, complicaciones en el sentido de que tal vez implicarían algun consumo en segundo plano y es lo que quiero evitar ...tener una app en segundo plano para resolver este problema, pero en fin, una solución para ello sería determinar si la ventana abierta tiene el botón de "subir nivel" o "ir atrás" activado, tan simple como eso, o directamente indagar en el "historial" de la barra de navegación para saber si existe más de una ruta, que viene siendo lo mismo.  

Por ahora intentaré contactar con el autor de ShellFolderFix para explicarle este bug y la manera en la que lo puede solucionar (la app está desarrollada en Visual C++, así que lo podría resolver de manera sencilla mediante Windows UI Automation), o que me proporcione acceso al código fuente y poder implementar dicho fix, de lo contrario me tocará desarrollarlo todo desde Cero, aunque todavía no puedo plantearme nada ya que no tengo Windows 10 instalado como sistema operativo principal para poder testear. Veremos como acaba esto.

Un saludo!