diff --git a/CHANGELOG-6.4.md b/CHANGELOG-6.4.md
index 96e3ef9fcca75..6fc3ff74bf722 100644
--- a/CHANGELOG-6.4.md
+++ b/CHANGELOG-6.4.md
@@ -7,6 +7,29 @@ in 6.4 minor versions.
To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash
To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v6.4.0...v6.4.1
+* 6.4.40 (2026-05-20)
+
+ * security #cve-2026-46626 [Runtime] Fix CVE-2024-50340 patch bypass by gating argv on $_SERVER['QUERY_STRING'] (nicolas-grekas)
+ * security #cve-2026-47212 [Notifier][Twilio] Reject webhooks with missing or invalid HMAC signature (nicolas-grekas)
+ * security #cve-2026-45753 [HtmlSanitizer] Sanitize URLs in action, formaction, poster and cite attributes (nicolas-grekas)
+ * security #cve-2026-45754 [Mailer][Mailjet] Reject webhooks with missing or invalid Basic credentials (alexandre-daubois)
+ * security #cve-2026-45072 [TwigBridge] Fix XSS issue in CodeExtension::fileExcerpt() (nicolas-grekas)
+ * security #cve-2026-45064 [HtmlSanitizer] Reject BiDi override characters and percent-encode spaces in URLs (nicolas-grekas)
+ * security #cve-2026-45066 [HtmlSanitizer] Fix `allowLinkHosts`/`allowMediaHosts` bypass via URL parser differentials and `` misclassification (alexandre-daubois)
+ * security #cve-2026-45069 [Security] Add missing claims in `OidcTokenHandler` (alexandre-daubois)
+ * bug #64258 [DomCrawler] Fix `ChoiceFormField::addChoice()` clobbering values on multi-selects (nicolas-grekas)
+ * bug #64214 [HttpKernel] Preserve named-attribute override on Request/Session value resolvers (nicolas-grekas)
+ * security #cve-2026-45305 [Yaml] Harden the Parser::cleanup() regexes against catastrophic backtracking (nicolas-grekas)
+ * security #cve-2026-45304 [Yaml] Bound collection-alias resolution in the parser (nicolas-grekas)
+ * security #cve-2026-45133 [Yaml] Bound recursion depth in the parser (nicolas-grekas)
+ * security #cve-2026-45071 [DomCrawler] Fix XXE in addXmlContent() by not enabling `validateOnParse` (alexandre-daubois)
+ * security #cve-2026-45068 [Mailer] Add end-of-options separator before recipients in SendmailTransport; reject addresses starting with a dash (alexandre-daubois)
+ * security #cve-2026-45063 [Security] Anchor emailAddress regex to RDN boundary in X509Authenticator (alexandre-daubois)
+ * security #cve-2026-45065 [Routing] Fix regex alternation anchoring in `UrlGenerator` requirement validation (alexandre-daubois)
+ * security #cve-2026-45067 [Mime] Reject email addresses containing line breaks in Address (alexandre-daubois)
+ * security #cve-2026-45073 [Cache] Validate the prefix given to AbstractAdapter::clear() (nicolas-grekas)
+ * security #cve-2026-45077 [MonologBridge] Bind server:log to localhost by default (nicolas-grekas)
+
* 6.4.39 (2026-05-13)
* bug #64198 [SecurityBundle] Allow defining security provider factories without config (hockdudu)
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 77ab10a5049b2..a99a88f756c88 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -38,8 +38,8 @@ The Symfony Connect username in parenthesis allows to get more information
- Tobias Nyholm (tobias)
- Samuel ROZE (sroze)
- Pascal Borreli (pborreli)
- - Santiago San Martin (santysisi)
- Romain Neutron
+ - Santiago San Martin (santysisi)
- Kevin Bond (kbond)
- Joseph Bielawski (stloyd)
- Drak (drak)
@@ -57,12 +57,12 @@ The Symfony Connect username in parenthesis allows to get more information
- Jan Schädlich (jschaedl)
- Vincent Langlet (deviling)
- Antonio J. García Lagar (ajgarlag)
- - Kévin THERAGE (kevin_therage)
- Pierre-Emmanuel CAPEL (pecapel)
+ - Kévin THERAGE (kevin_therage)
- Pierre-Emmanuel CAPEL
- Valtteri R (valtzu)
- - Simon André (simonandre)
- corradogrimoldi
+ - Simon André (simonandre)
- Matthias Pigulla (mpdude)
- Gabriel Ostrolucký (gadelat)
- Jonathan Wage (jwage)
@@ -71,1035 +71,1045 @@ The Symfony Connect username in parenthesis allows to get more information
- Grégoire Paris (greg0ire)
- Alexandre Salomé (alexandresalome)
- William DURAND
- - Pierre du Plessis (pierredup)
- Dany Maillard (maidmaid)
- - Francis Besset (francisbesset)
- - Titouan Galopin (tgalopin)
+ - Pierre du Plessis (pierredup)
- Gábor Egyed (1ed)
+ - Eriksen Costa
- stealth35 (stealth35)
- Diego Saint Esteben (dosten)
- - Eriksen Costa
+ - Francis Besset (francisbesset)
+ - Titouan Galopin (tgalopin)
- Alexander Mols (asm89)
- David Maicher (dmaicher)
- Tomasz Kowalczyk (thunderer)
- - Gary PEGEOT (gary-p)
- Bulat Shakirzyanov (avalanche123)
- - Iltar van der Berg
- Ruud Kamphuis (ruudk)
+ - Gary PEGEOT (gary-p)
+ - Iltar van der Berg
- Miha Vrhovnik (mvrhov)
- - Allison Guilhem (a_guilhem)
- Saša Stamenković (umpirsky)
+ - Allison Guilhem (a_guilhem)
- Mathieu Piot (mpiot)
- Vasilij Duško (staff)
- Tomas Norkūnas (norkunas)
+ - Konstantin Kudryashov (everzet)
- Sarah Khalil (saro0h)
- Laurent VOULLEMIER (lvo)
- - Konstantin Kudryashov (everzet)
- Bilal Amarni (bamarni)
- Guilhem N (guilhemn)
- Eriksen Costa
- - Hubert Lenoir (hubert_lenoir)
- soyuka
- - Florin Patan (florinpatan)
+ - Hubert Lenoir (hubert_lenoir)
- Vladimir Reznichenko (kalessil)
- - Henrik Bjørnskov (henrikbjorn)
+ - Florin Patan (florinpatan)
- Peter Rehm (rpet)
+ - Henrik Bjørnskov (henrikbjorn)
- David Buchmann (dbu)
+ - Ben Younes Ousama (oby)
- Andrej Hudec (pulzarraider)
- Jáchym Toušek (enumag)
- - Christian Raue
- - Antoine Makdessi (amakdessi)
- Eric Clemmons (ericclemmons)
- Arnout Boks (aboks)
+ - Antoine Makdessi (amakdessi)
+ - Christian Raue
- Denis (yethee)
- - Alex Pott
- Issei Murasawa (issei_m)
- - Douglas Greenshields (shieldo)
- - Ben Younes Ousama (oby)
- Michel Weimerskirch (mweimerskirch)
- David Prévot (taffit)
- - Fran Moreno (franmomu)
+ - Alex Pott
+ - Douglas Greenshields (shieldo)
- Frank A. Fiebig (fafiebig)
+ - Fran Moreno (franmomu)
- Baldini
- - Henrik Westphal (snc)
+ - Charles Sarrazin (csarrazi)
- Yanick Witschi (toflar)
+ - Henrik Westphal (snc)
- Dariusz Górecki (canni)
- - Charles Sarrazin (csarrazi)
- Konstantin Myakshin (koc)
- Ener-Getick
- Massimiliano Arione (garak)
- Phil E. Taylor (philetaylor)
- - Graham Campbell (graham)
- Joel Wurtz (brouznouf)
- Tugdual Saunier (tucksaun)
- - Brandon Turner
- - Lee McDermott
- - Théo FIDRY
+ - Graham Campbell (graham)
- Luis Cordova (cordoval)
- - Daniel Holmes (dholmes)
+ - Théo FIDRY
+ - Lee McDermott
+ - Brandon Turner
- Julien Falque (julienfalque)
- - Jordan Alliot (jalliot)
- - Vasilij Dusko | CREATION
+ - Daniel Holmes (dholmes)
- Toni Uebernickel (havvg)
- Bart van den Burg (burgov)
- - Catoire (lacatoire)
+ - Vasilij Dusko | CREATION
+ - Jordan Alliot (jalliot)
- Jeroen Spee (jeroens)
- John Wards (johnwards)
- Florent Morselli (spomky_)
+ - Catoire (lacatoire)
- Konstantin.Myakshin
- Antoine Hérault (herzult)
- - Tac Tacelosky (tacman1123)
- - Arnaud Le Blanc (arnaud-lb)
- - Maxime STEINHAUSSER
- Rokas Mikalkėnas (rokasm)
+ - Maxime STEINHAUSSER
- Sebastiaan Stok (sstok)
- - gnito-org
- - Tim Nagel (merk)
+ - Tac Tacelosky (tacman1123)
+ - Arnaud Le Blanc (arnaud-lb)
- Jérôme Vasseur (jvasseur)
+ - gnito-org
- Chris Wilkinson (thewilkybarkid)
+ - Brice BERNARD (brikou)
- Peter Kokot (peterkokot)
- Jacob Dreesen (jdreesen)
- - Brice BERNARD (brikou)
- - Michal Piotrowski
- - marc.weistroff
+ - Tim Nagel (merk)
- Younes ENNAJI (yokho)
+ - marc.weistroff
- Nicolas Philippe (nikophil)
- Vladimir Tsykun (vtsykun)
+ - Michal Piotrowski
- Lars Strojny (lstrojny)
- - Włodzimierz Gajda (gajdaw)
- - Jérôme Parmentier (lctrs)
- Javier Spagnoletti (phansys)
+ - Gregor Harlan (gharlan)
- Adrien Brault (adrienbrault)
+ - Włodzimierz Gajda (gajdaw)
- Maximilian Beckers (maxbeckers)
- - Gregor Harlan (gharlan)
- - Florian Voutzinos (florianv)
- - Colin Frei
- - Gordon Franke (gimler)
+ - Jérôme Parmentier (lctrs)
+ - Bob van de Vijver (bobvandevijver)
+ - Przemysław Bogusz (przemyslaw-bogusz)
- Teoh Han Hui (teohhanhui)
+ - Colin Frei
- Pascal CESCON (amoifr)
- - Przemysław Bogusz (przemyslaw-bogusz)
- - Bob van de Vijver (bobvandevijver)
- - Paráda József (paradajozsef)
- - Hugo Alliaume (kocal)
+ - Gordon Franke (gimler)
+ - Florian Voutzinos (florianv)
+ - Saif Eddin Gmati (azjezz)
- Maxime Helias (maxhelias)
- - Dāvis Zālītis (k0d3r1s)
- - Baptiste Clavié (talus)
- Fabien Pennequin (fabienpennequin)
- - Alexander Schwenn (xelaris)
- - Saif Eddin Gmati (azjezz)
+ - Baptiste Clavié (talus)
+ - Hugo Alliaume (kocal)
+ - Paráda József (paradajozsef)
- Andreas Schempp (aschempp)
- - Alexis Lefebvre
- - jeremyFreeAgent (jeremyfreeagent)
+ - Alexander Schwenn (xelaris)
+ - Dāvis Zālītis (k0d3r1s)
+ - Daniel Wehner (dawehner)
+ - Joshua Thijssen
- Michael Babker (mbabker)
+ - Alexis Lefebvre
- Christopher Hertel (chertel)
+ - jeremyFreeAgent (jeremyfreeagent)
+ - Thomas Landauer (thomas-landauer)
+ - François-Xavier de Guillebon (de-gui_f)
- Malte Schlüter (maltemaltesich)
- Vasilij Dusko
- - Daniel Wehner (dawehner)
- - Joshua Thijssen
- - François-Xavier de Guillebon (de-gui_f)
- - Thomas Landauer (thomas-landauer)
- Eric GELOEN (gelo)
- - Smaine Milianni (ismail1432)
- - Jhonny Lidfors (jhonne)
- Stiven Llupa (sllupa)
- - Robert Schönthal (digitalkaoz)
+ - Jhonny Lidfors (jhonne)
+ - Ion Bazan (ionbazan)
+ - Niels Keurentjes (curry684)
+ - Richard van Laak (rvanlaak)
+ - Smaine Milianni (ismail1432)
- Stefano Sala (stefano.sala)
+ - Jonathan Scheiber (jmsche)
- Gabriel Caruso
- OGAWA Katsuhiro (fivestar)
- - Richard van Laak (rvanlaak)
- - Niels Keurentjes (curry684)
- - Jonathan Scheiber (jmsche)
- - Ion Bazan (ionbazan)
- - Juti Noppornpitak (shiroyuki)
- - Arnaud Kleinpeter (nanocom)
- - Tigran Azatyan (tigranazatyan)
+ - Robert Schönthal (digitalkaoz)
+ - Hidenori Goto (hidenorigoto)
- Sebastian Hörl (blogsh)
- - Daniel Gomes (danielcsgomes)
- Florent Mata (fmata)
- - Romain Monteil (ker0x)
- - Hidenori Goto (hidenorigoto)
+ - Daniel Gomes (danielcsgomes)
+ - Guilherme Blanco (guilhermeblanco)
- Anthony MARTIN
+ - Arnaud Kleinpeter (nanocom)
+ - Juti Noppornpitak (shiroyuki)
+ - Romain Monteil (ker0x)
+ - Tigran Azatyan (tigranazatyan)
- Ben Davies (bendavies)
- - Guilherme Blanco (guilhermeblanco)
- - Jan Rosier (rosier)
- - Fritz Michael Gschwantner (fritzmg)
+ - Rafael Dohms (rdohms)
- jwdeitch
- - Farhad Safarov (safarov)
+ - Roman Martinuk (a2a4)
+ - Fritz Michael Gschwantner (fritzmg)
- Michael Käfer (michael_kaefer)
- - Rafael Dohms (rdohms)
+ - Jan Rosier (rosier)
- Alessandro Chitolina (alekitto)
- - Roman Martinuk (a2a4)
+ - Farhad Safarov (safarov)
- Pablo Godel (pgodel)
+ - Jérémy Derussé
+ - Simon Berger
+ - Dawid Nowak
+ - Andréia Bohner (andreia)
- Jack Worman (jworman)
+ - Philipp Wahala (hifi)
- Indra Gunawan (indragunawan)
- - Andréia Bohner (andreia)
- - Vyacheslav Pavlov
- - Tomas Votruba (tomas_votruba)
- - George Mponos (gmponos)
- - Ahmed TAILOULOUTE (ahmedtai)
- - Dawid Nowak
- - Jérémy Derussé
- Sokolov Evgeniy (ewgraf)
+ - Alessandro Lai (jean85)
+ - Richard Shank (iampersistent)
+ - Arman Hosseini (arman)
+ - Tom Van Looy (tvlooy)
+ - George Mponos (gmponos)
+ - Vyacheslav Pavlov
- Roland Franssen
+ - Tomas Votruba (tomas_votruba)
- Albert Casademont (acasademont)
- - Tom Van Looy (tvlooy)
- Matthieu Napoli (mnapoli)
- - Arman Hosseini (arman)
- - Philipp Wahala (hifi)
- - Simon Berger
- - Richard Shank (iampersistent)
- - Tyson Andre
- - Guillaume (guill)
- - Oleg Voronkovich
+ - Ahmed TAILOULOUTE (ahmedtai)
+ - Michał Pipa (michal.pipa)
+ - zairig imad (zairigimad)
+ - Soner Sayakci (shyim)
+ - wkania
+ - Quynh Xuan Nguyen (seriquynh)
+ - Fabien Bourigault (fbourigault)
+ - YaFou
- Jonathan Ingram
- - Matthieu Ouellette-Vachon (maoueh)
+ - Wouter J
- Sergey (upyx)
- - Asis Pattisahusiwa
- - YaFou
- - Alessandro Lai (jean85)
- - GDIBass
- - Samuel NELA (snela)
- - Clemens Tolboom
+ - Olivier Dolbeau (odolbeau)
+ - Vincent Touzet (vincenttouzet)
+ - Gocha Ossinkine (ossinkine)
- Rouven Weßling (realityking)
- - Daniel Burger
- - 77web
- - Wouter J
- Jannik Zschiesche
- - Michał Pipa (michal.pipa)
- - Jesse Rushlow (geeshoe)
- - Gocha Ossinkine (ossinkine)
- - Vincent Touzet (vincenttouzet)
- Dorian Villet (gnutix)
- - Artur Kotyrba
- - zairig imad (zairigimad)
- - Antonio Pauletich (x-coder264)
- - Quynh Xuan Nguyen (seriquynh)
- - wkania
+ - Samuel NELA (snela)
+ - Tyson Andre
- Marco Pivetta (ocramius)
- - Olivier Dolbeau (odolbeau)
- Ayyoub AFW-ALLAH (ayyoub-afwallah)
- - Fabien Bourigault (fbourigault)
- - Alex Hofbauer (alexhofbauer)
- - Soner Sayakci (shyim)
+ - 77web
+ - Antonio Pauletich (x-coder264)
+ - GDIBass
+ - Oleg Voronkovich
+ - Jesse Rushlow (geeshoe)
+ - Daniel Burger
+ - Guillaume (guill)
- Amal Raghav (kertz)
- - Mikael Pajunen
- - Sébastien Alfaiate (seb33300)
- - Arnaud PETITPAS (apetitpa)
+ - Alex Hofbauer (alexhofbauer)
+ - Asis Pattisahusiwa
+ - Clemens Tolboom
+ - Artur Kotyrba
+ - Matthieu Ouellette-Vachon (maoueh)
+ - Justin Hileman (bobthecow)
+ - Christian Scheb
- Daniel Espendiller
- - Colin O'Dell (colinodell)
+ - Quentin Devos
+ - Michael Voříšek
- Markus Fasselt (digilist)
+ - Colin O'Dell (colinodell)
+ - Larry Garfield (crell)
+ - Anthony GRASSIOT (antograssiot)
+ - Baptiste Leduc (korbeil)
+ - Dmitrii Chekaliuk (lazyhammer)
+ - VAN DER PUTTE Guillaume (guillaume_vdp)
+ - Alan Poulain (alanpoulain)
- Nate Wiebe (natewiebe13)
- - Marko Kaznovac (kaznovac)
+ - Richard Miller
- Clément JOBEILI (dator)
- - DQNEO
+ - Marko Kaznovac (kaznovac)
- Warnar Boekkooi (boekkooi)
- Victor Bocharsky (bocharsky_bw)
+ - Thomas Rabaix (rande)
- Andreas Möller (localheinz)
+ - DQNEO
+ - Chi-teck
+ - James Halsall (jaitsu)
- Mario A. Alvarez Garcia (nomack84)
- - Alan Poulain (alanpoulain)
- - Baptiste Leduc (korbeil)
- - Marek Štípek (maryo)
- - D (denderello)
- - VAN DER PUTTE Guillaume (guillaume_vdp)
+ - Mikael Pajunen
- Sergey Linnik (linniksa)
- - Quentin Devos
- - Thomas Rabaix (rande)
- - Anthony GRASSIOT (antograssiot)
- - Chi-teck
- - James Halsall (jaitsu)
- - Christian Scheb
- - Justin Hileman (bobthecow)
- - Martin Hujer (martinhujer)
- - Larry Garfield (crell)
+ - Marek Štípek (maryo)
- Vincent AUBERT (vincent)
- Aleksandar Jakovljevic (ajakov)
- - Richard Miller
- - Michael Voříšek
- - Dmitrii Chekaliuk (lazyhammer)
- - Bastien Jaillot (bastnic)
- - Pierre Minnieur (pminnieur)
- - Christian Schmidt
- - Bram Leeda (bram123)
- - Remon van de Kamp
- - Guilliam Xavier
- - Nikolay Labinskiy (e-moe)
- - Ruben Gonzalez (rubenrua)
- - Filippo Tessarotto (slamdunk)
- - roman joly (eltharin)
- - Andreas Hucks (meandmymonkey)
- - Noel Guilbert (noel)
- - Leo Feyer
- - Mathieu Lemoine (lemoinem)
- - Denis Brumann (dbrumann)
- - Anderson Müller
+ - Sébastien Alfaiate (seb33300)
+ - Arnaud PETITPAS (apetitpa)
+ - Martin Hujer (martinhujer)
+ - D (denderello)
- Benjamin Dulau (dbenjamin)
- - Patrick Landolt (scube)
- - Priyadi Iman Nurcahyo (priyadi)
- - Stepan Anchugov (kix)
- - Jonathan H. Wage
- Karoly Gossler (connorhu)
- - Loick Piera (pyrech)
- - bronze1man
- - Giorgio Premi
- Andre Rømcke (andrerom)
- - Stadly
- - apetitpa
- mcfedr (mcfedr)
+ - Ruben Gonzalez (rubenrua)
+ - Pierre Minnieur (pminnieur)
+ - Jonathan H. Wage
+ - Loick Piera (pyrech)
+ - Noel Guilbert (noel)
+ - Guilliam Xavier
- Timo Bakx (timobakx)
+ - Andreas Hucks (meandmymonkey)
+ - Stadly
+ - Remon van de Kamp
+ - Filippo Tessarotto (slamdunk)
+ - Anderson Müller
- sun (sun)
+ - Bastien Jaillot (bastnic)
+ - Denis Brumann (dbrumann)
+ - Nikolay Labinskiy (e-moe)
+ - Christian Schmidt
- Martin Schuhfuß (usefulthink)
- - Julien Brochet
- - John Kary (johnkary)
+ - bronze1man
+ - Leo Feyer
+ - Giorgio Premi
+ - Mathieu Lemoine (lemoinem)
+ - roman joly (eltharin)
+ - Stepan Anchugov (kix)
+ - Bram Leeda (bram123)
+ - apetitpa
+ - Priyadi Iman Nurcahyo (priyadi)
+ - Patrick Landolt (scube)
+ - Edi Modrić (emodric)
+ - Jean-Baptiste Delhommeau
+ - Jan Sorgalla (jsor)
+ - Pascal Montoya
+ - Hugo Monteiro (monteiro)
+ - Oleg Andreyev (oleg.andreyev)
+ - Yassine Guedidi (yguedidi)
- Evert Harmeling (evertharmeling)
- - fd6130 (fdtvui)
- - Chris Smith (cs278)
- - Wojciech Kania
+ - Michele Orselli (orso)
+ - Arjen van der Meijden
+ - Jeroen Noten (jeroennoten)
+ - Jérémie Augustin (jaugustin)
+ - François Pluchino (francoispluchino)
+ - Wolfgang Klinger (wolfgangklingerplan2net)
+ - Thomas Lallement (raziel057)
+ - Leszek Prabucki (l3l0)
+ - Marcin Sikoń (marphi)
- Tristan Darricau (tristandsensio)
- - François Zaninotto (fzaninotto)
- - Valentine Boineau (valentineboineau)
- - Jean-Baptiste Delhommeau
- - Sven Paulus (subsven)
+ - Marcel Beerta (mazen)
- Dustin Whittle (dustinwhittle)
- - Leszek Prabucki (l3l0)
- - Dmitrii Poddubnyi (karser)
- - jeff
- - Dmitry Bukhonov
- - Mickael GOETZ
- - Peter Kruithof (pkruithof)
- - Arjen van der Meijden
- henrikbjorn
- - Matthieu Lempereur (mryamous)
- - Hugo Monteiro (monteiro)
- - Thomas Lallement (raziel057)
- - Võ Xuân Tiến (tienvx)
- - Rui Marinho (ruimarinho)
+ - Wojciech Kania
+ - Peter Kruithof (pkruithof)
- a.dmitryuk
+ - Rui Marinho (ruimarinho)
+ - Võ Xuân Tiến (tienvx)
+ - Dmitry Bukhonov
+ - Mickael GOETZ
+ - Mantis Development
+ - Chris Smith (cs278)
+ - Valentine Boineau (valentineboineau)
+ - Sven Paulus (subsven)
- Timothée Barray (tyx)
- - Oleg Andreyev (oleg.andreyev)
- - François Pluchino (francoispluchino)
- - Jérémie Augustin (jaugustin)
- - Michele Orselli (orso)
- - Wolfgang Klinger (wolfgangklingerplan2net)
+ - jeff
+ - Michael Lee (zerustech)
+ - Matthieu Lempereur (mryamous)
+ - Julien Brochet
+ - fd6130 (fdtvui)
+ - John Kary (johnkary)
- Maxime Veber (nek-)
- - Yassine Guedidi (yguedidi)
- - Pascal Montoya
- Maciej Malarz (malarzm)
- - Mantis Development
- - Jeroen Noten (jeroennoten)
- - Marcel Beerta (mazen)
- - Florian Lonqueu-Brochard (florianlb)
- Joe Bennett (kralos)
- - Jan Sorgalla (jsor)
- - Edi Modrić (emodric)
- - Michael Lee (zerustech)
- - Marcin Sikoń (marphi)
- - Zan Baldwin (zanbaldwin)
- - Pierre-Yves Lebecq (pylebecq)
- - dFayet
+ - Dmitrii Poddubnyi (karser)
+ - Florian Lonqueu-Brochard (florianlb)
+ - François Zaninotto (fzaninotto)
+ - Francois Zaninotto
+ - Lynn van der Berg (kjarli)
+ - Benoît Burnichon (bburnichon)
+ - Dariusz Ruminski
+ - Joseph Rouff (rouffj)
+ - David Badura (davidbadura)
+ - Patrick McDougle (patrick-mcdougle)
+ - Alexander Kotynia (olden)
+ - Bob den Otter (bopp)
+ - Jordan Samouh (jordansamouh)
+ - Arnt Gulbrandsen
- Michaël Perrin (michael.perrin)
+ - Christian Schmidt
+ - Roman Ring (inori)
+ - Daniel Gorgan
- Michał (bambucha15)
+ - Pierre-Yves Lebecq (pylebecq)
- javaDeveloperKid
- - maxime.steinhausser
+ - dFayet
+ - BoShurik
+ - Xavier Perez
- Nikita Konstantinov (unkind)
- - Adam Prager (padam87)
- - Alexander Kotynia (olden)
- - Christian Schmidt
- - Rob Frawley 2nd (robfrawley)
- - Thomas Adam
- - Anton Chernikov (anton_ch1989)
- - Joseph Rouff (rouffj)
- - David Badura (davidbadura)
- - Romaric Drigon (romaricdrigon)
- Arjen Brouwer (arjenjb)
- - siganushka (siganushka)
- - Ray
- - Benjamin Leveque (benji07)
- - Adrian Rudnik (kreischweide)
- - Thibault Gattolliat (crovitche)
- - Dariusz Ruminski
- - Sylvain Fabre (sylfabre)
- - Hidde Wieringa (hiddewie)
- - Elnur Abdurrakhimov (elnur)
- - BoShurik
- - Alif Rachmawadi
- - Thomas Schulz (king2500)
+ - Oleksiy (alexndlm)
- Daniel Tschinder
- - Lynn van der Berg (kjarli)
- - pcescon
- - Xavier Perez
- - Jurica Vlahoviček (vjurica)
- - Link1515
- - Jordan Samouh (jordansamouh)
- - Benoît Burnichon (bburnichon)
- - Patrick McDougle (patrick-mcdougle)
- - Renan (renanbr)
+ - Eugene Leonovich (rybakit)
+ - Alif Rachmawadi
- Manuel Reinhard (sprain)
- - Oleksiy (alexndlm)
- - Sullivan SENECHAL (soullivaneuh)
- - Aurélien Pillevesse (aurelienpillevesse)
- - Philipp Cordes (corphi)
- - Uwe Jäger (uwej711)
- Xavier Montaña Carreras (xmontana)
- - Arnt Gulbrandsen
+ - Hidde Wieringa (hiddewie)
+ - Ray
+ - Emanuele Panzeri (thepanz)
+ - jdhoek
+ - Aurélien Pillevesse (aurelienpillevesse)
+ - Jurica Vlahoviček (vjurica)
+ - Danny Berger (dpb587)
+ - Adrian Rudnik (kreischweide)
+ - Fabien S (bafs)
- Pierre Ambroise (dotordu)
- Félix Labrecque (woodspire)
- - GordonsLondon
+ - Adam Prager (padam87)
+ - Thibault Gattolliat (crovitche)
+ - Benjamin Leveque (benji07)
+ - Renan (renanbr)
+ - Anton Chernikov (anton_ch1989)
+ - Zan Baldwin (zanbaldwin)
- Chekote
- - Bob den Otter (bopp)
- - Michel Roca (mroca)
- - jdhoek
- - Kyle
- - Emanuele Panzeri (thepanz)
- - Fabien S (bafs)
- - Danny Berger (dpb587)
- - Daniel Gorgan
+ - GordonsLondon
+ - siganushka (siganushka)
+ - Rob Frawley 2nd (robfrawley)
- Marc Weistroff (futurecat)
- - Eugene Leonovich (rybakit)
+ - Romaric Drigon (romaricdrigon)
+ - Michel Roca (mroca)
+ - Link1515
+ - Elnur Abdurrakhimov (elnur)
+ - Tim Goudriaan (codedmonkey)
- Alex Rock (pierstoval)
+ - pcescon
+ - Sylvain Fabre (sylfabre)
+ - Sullivan SENECHAL (soullivaneuh)
+ - Kyle
+ - Uwe Jäger (uwej711)
+ - Thomas Schulz (king2500)
+ - maxime.steinhausser
+ - Thomas Adam
+ - Philipp Cordes (corphi)
- Iker Ibarguren (ikerib)
- - Tim Goudriaan (codedmonkey)
- - Roman Ring (inori)
- - Francois Zaninotto
- - Bohan Yang (brentybh)
- - Serkan Yildiz (srknyldz)
- - Grégoire Passault (gregwar)
- - Philippe SEGATORI (tigitz)
- - Raphaël Geffroy (raphael-geffroy)
- - Benjamin Morel
- - Marco Petersen (ocrampete16)
+ - Matthieu Auger (matthieuauger)
- jaugustin
+ - Hamza Makraz (makraz)
+ - Jordane VASPARD (elementaire)
+ - Ismael Ambrosi (iambrosi)
+ - Magnus Nordlander (magnusnordlander)
+ - Maximilian Reichel (phramz)
+ - Cédric Anne
+ - Francesc Rosàs (frosas)
- Jerzy Zawadzki (jzawadzki)
+ - Gabor Toth (tgabi333)
- Christopher Davis (chrisguitarguy)
- - Jan Decavele (jandc)
- - Loïc Frémont (loic425)
+ - flack (flack)
+ - Pavel Batanov (scaytrase)
+ - Raphaël Geffroy (raphael-geffroy)
+ - Simon Podlipsky (simpod)
+ - Marcos Sánchez
+ - Samaël Villette (samadu61)
+ - Robert Kiss (kepten)
- Dominique Bongiraud
- - Ben Hakim
- - Tiago Ribeiro (fixe)
- - Michael Hirschler (mvhirsch)
+ - Loïc Frémont (loic425)
+ - Thomas Bisignani (toma)
+ - Beau Simensen (simensen)
+ - rudy onfroy (ronfroy)
+ - Bohan Yang (brentybh)
+ - Benjamin Morel
+ - Atsuhiro KUBO (iteman)
+ - Wu (wu-agriconomie)
+ - realmfoo
- Sergey Belyshkin (sbelyshkin)
- - Magnus Nordlander (magnusnordlander)
- - Matthieu Auger (matthieuauger)
- - Karoly Negyesi (chx)
+ - Alexandre Quercia (alquerci)
- Fabien Villepinte
- - renanbr
- - Wodor Wodorski
- - Moshe Weitzman (weitzman)
- - janschoenherr
- - Baptiste Lafontaine (magnetik)
- - Lee Rowlands
+ - Thomas Tourlourat (armetiz)
+ - Emmanuel BORGES
+ - Wouter Van Hecke
+ - Pascal Luna (skalpa)
- Kim Hemsø Rasmussen (kimhemsoe)
- - Blanchon Vincent (blanchonvincent)
- - Herberto Graca
- - Atsuhiro KUBO (iteman)
- - Pavel Batanov (scaytrase)
- - Maximilian Reichel (phramz)
- Dane Powell
- - Christian Schmidt
- - realmfoo
- - Soner Sayakci
- - Josip Kruslin (jkruslin)
- - Alexey Kopytko (sanmai)
+ - Raul Fraile (raulfraile)
+ - Ben Hakim
+ - Tiago Ribeiro (fixe)
+ - Andrey Lebedev (alebedev)
- Craig Duncan (duncan3dc)
- - Samaël Villette (samadu61)
- - Thomas Tourlourat (armetiz)
- - Mathieu Rochette (mathroc)
- - Hamza Makraz (makraz)
- - Jordane VASPARD (elementaire)
+ - Sebastien Morel (plopix)
+ - Blanchon Vincent (blanchonvincent)
+ - Herberto Graca
+ - Manuel de Ruiter (manuel)
- Marc Morera (mmoreram)
- - Wu (wu-agriconomie)
- - Ivan Kurnosov
- - Sébastien Lavoie (lavoiesl)
- - Aurelijus Valeiša (aurelijus)
+ - Vilius Grigaliūnas
+ - renanbr
- Emanuele Gaspari (inmarelibero)
+ - Marco Petersen (ocrampete16)
+ - Grégoire Passault (gregwar)
+ - Frank de Jonge
+ - Wodor Wodorski
+ - Damien Alexandre (damienalexandre)
+ - Andrii Bodnar
+ - janschoenherr
+ - Bertrand Zuchuat (garfield-fr)
+ - Mathieu Rochette (mathroc)
+ - Lee Rowlands
+ - Sébastien Lavoie (lavoiesl)
- Dalibor Karlović
+ - Jan Decavele (jandc)
+ - Baptiste Lafontaine (magnetik)
+ - Andrew Moore (finewolf)
+ - Manuel Kießling (manuelkiessling)
+ - Stepan Tanasiychuk (stfalcon)
+ - Gustavo Piltcher
+ - Aurelijus Valeiša (aurelijus)
+ - Ivan Kurnosov
+ - Serkan Yildiz (srknyldz)
+ - Quentin Dequippe (qdequippe)
+ - Yoann RENARD (yrenard)
+ - Josip Kruslin (jkruslin)
+ - Florian Klein (docteurklein)
- SiD (plbsid)
- - rudy onfroy (ronfroy)
+ - Moshe Weitzman (weitzman)
+ - Alexey Kopytko (sanmai)
- Joppe De Cuyper (joppedc)
- - Frank de Jonge
- - Marcos Sánchez
- - Pascal Luna (skalpa)
- - Thomas Bisignani (toma)
- - Robert Kiss (kepten)
- - Cédric Anne
- Warxcell (warxcell)
- - Andrew Moore (finewolf)
- - Raul Fraile (raulfraile)
- - Manuel de Ruiter (manuel)
- - Quentin Dequippe (qdequippe)
+ - Michael Hirschler (mvhirsch)
+ - Christian Schmidt
- Michael Holm (hollo)
- - Simon Podlipsky (simpod)
- - Sebastien Morel (plopix)
- - Wouter Van Hecke
- - Gustavo Piltcher
- - Andrey Lebedev (alebedev)
- - Manuel Kießling (manuelkiessling)
- - Gabor Toth (tgabi333)
- - Bertrand Zuchuat (garfield-fr)
+ - Soner Sayakci
- schlndh
- - Beau Simensen (simensen)
- - Alexandre Quercia (alquerci)
- - Vilius Grigaliūnas
- - Emmanuel BORGES
- - Stepan Tanasiychuk (stfalcon)
- - Damien Alexandre (damienalexandre)
- - flack (flack)
+ - Philippe SEGATORI (tigitz)
- Andrey Esaulov (andremaha)
- Pavel Kirpitsov (pavel-kirpichyov)
- - Florian Klein (docteurklein)
- - Andrii Bodnar
- - Yoann RENARD (yrenard)
- - Ismael Ambrosi (iambrosi)
- - Francesc Rosàs (frosas)
- - Quentin Schuler (sukei)
- - Gwendolen Lynch
- - Inal DJAFAR (inalgnu)
- - Michele Locati
- - hubert lecorche (hlecorche)
- - Kristen Gilden
- - Ivan Mezinov
- - Zmey
- - Thierry T (lepiaf)
- - Marek Kalnik (marekkalnik)
- - Matthias Althaus (althaus)
- - Nicolas LEFEVRE (nicoweb)
- - kor3k kor3k (kor3k)
- - Neil Peyssard (nepey)
- - FORT Pierre-Louis (plfort)
- - Pablo Lozano (arkadis)
- - Yaroslav Kiliba
- - Laszlo Korte
- - Alain Hippolyte (aloneh)
- - Nadim AL ABDOU (nadim)
- - Daniel Tschinder
+ - Karoly Negyesi (chx)
+ - Kirill chEbba Chebunin
+ - hossein zolfi (ocean)
+ - Haralan Dobrev (hkdobrev)
+ - Philipp Kräutli (pkraeutli)
+ - Philippe Segatori
+ - Kieran Brahney
+ - Raffaele Carelle
+ - Urinbayev Shakhobiddin (shokhaa)
- Johann Pardanaud
- - Vadim Kharitonov (vadim)
- - Alessandro Desantis
- - Mateusz Sip (mateusz_sip)
- - James Gilliland (neclimdul)
- - Ivan Sarastov (isarastov)
+ - Max Baldanza
+ - Maarten de Boer (mdeboer)
- Eric Masoero (eric-masoero)
- - Ilija Tovilo (ilijatovilo)
- - Roumen Damianoff
- - BrokenSourceCode
+ - Karel Souffriau
+ - Clément Gautier (clementgautier)
+ - Albert Jessurum (ajessu)
+ - mondrake (mondrake)
- Kai
+ - Vitaliy Zakharov (zakharovvi)
+ - vladimir.reznichenko
+ - Ricard Clau (ricardclau)
+ - Ivan Sarastov (isarastov)
+ - Yannick Ihmels (ihmels)
- Sanpi (sanpi)
- - Lorenz Schori
- - Terje Bråten
- - Greg Thornton (xdissent)
- - Maksym Slesarenko (maksym_slesarenko)
+ - Grzegorz (Greg) Zdanowski (kiler129)
+ - Martin Herndl (herndlm)
+ - Thierry T (lepiaf)
- Hassan Amouhzi
- - Lukáš Holeczy (holicz)
- - Daniel Beyer
- - Dmytro Borysovskyi (dmytr0)
- - mondrake (mondrake)
- - vladimir.reznichenko
- - Steven RENAUX (steven_renaux)
- - Gyula Sallai (salla)
- - Valmonzo
- - Asmir Mustafic (goetas)
- - ShinDarth
- - Grenier Kévin (mcsky_biig)
- - Albert Jessurum (ajessu)
- - ivan
- - Thibaut Cheymol (tcheymol)
- - Kirill chEbba Chebunin
+ - Issam Raouf (iraouf)
+ - Jeremy Livingston (jeremylivingston)
+ - Tobias Sjösten (tobiassjosten)
- Anthon Pang (robocoder)
- - smoench
- - Urinbayev Shakhobiddin (shokhaa)
- - Matthew Lewinski (lewinski)
- - Oscar Cubo Medina (ocubom)
- - Karel Souffriau
- - Florent Blaison (orkin)
- - Mokhtar Tlili (sf-djuba)
- - Bohdan Bobko
- - Raffaele Carelle
- - Rob Bast
- - Julien Galenski (ruian)
- - Kieran Brahney
- - Max Baldanza
+ - Islam Israfilov (islam93)
+ - Grenier Kévin (mcsky_biig)
+ - SUMIDA, Ippei (ippey_s)
+ - Gyula Sallai (salla)
+ - Roumen Damianoff
- Joe Lencioni
- - Ricard Clau (ricardclau)
- - Grzegorz (Greg) Zdanowski (kiler129)
- - Costin Bereveanu (schniper)
- - Pol Dellaiera (drupol)
- - Rhodri Pugh (rodnaph)
+ - Asmir Mustafic (goetas)
+ - Steven RENAUX (steven_renaux)
- Maximilian Ruta (deltachaos)
- - Harm van Tilborg (hvt)
+ - Eduardo Gulias (egulias)
+ - Mateusz Sip (mateusz_sip)
+ - Gonzalo Vilaseca (gonzalovilaseca)
- Thomas Royer (cydonia7)
- - Jan Nedbal
- Diego Agulló (aeoris)
- - Eduardo Gulias (egulias)
- - Mathias STRASSER (roukmoute)
+ - Cătălin Dan (dancatalin)
- Artem (artemgenvald)
- Alex Bowers
- - Jakub Kucharovic (jkucharovic)
- - Felix Labrecque
- - Tobias Sjösten (tobiassjosten)
- - Vitalii Ekert (comrade42)
+ - Vyacheslav Salakhutdinov (megazoll)
+ - Valmonzo
+ - Mathias STRASSER (roukmoute)
+ - Pol Dellaiera (drupol)
+ - Ahmed Ghanem (ahmedghanem00)
- Alex (aik099)
- Francesco Levorato
- - Ben Scott (bpscott)
- - Yannick Ihmels (ihmels)
- - Marc Morales Valldepérez (kuert)
+ - Kev
+ - smoench
+ - Jakub Kucharovic (jkucharovic)
- Hendrik Luup (hluup)
- - Ahmed Raafat
- - Dave Long
+ - Endre Fejes
+ - Maksym Slesarenko (maksym_slesarenko)
+ - Ahmed Raafat
+ - Matthew Lewinski (lewinski)
+ - Clara van Miert
+ - Pavel Volokitin (pvolok)
- Andy Palmer (andyexeter)
- giulio de donato (liuggio)
- - Islam Israfilov (islam93)
- - Robbert Klarenbeek (robbertkl)
- - Pavel Volokitin (pvolok)
- - Dimitri Gritsajuk (ottaviano)
- - Issam Raouf (iraouf)
- - hossein zolfi (ocean)
- - Haralan Dobrev (hkdobrev)
- - Philipp Kräutli (pkraeutli)
- - Philippe Segatori
- Hans Mackowiak
- - Maarten de Boer (mdeboer)
- - Clément Gautier (clementgautier)
- - Vitaliy Zakharov (zakharovvi)
- - C (dagardner)
- - Martin Herndl (herndlm)
- - SUMIDA, Ippei (ippey_s)
- - Vyacheslav Salakhutdinov (megazoll)
- - Ahmed Ghanem (ahmedghanem00)
- - Vincent Chalamon
+ - James Gilliland (neclimdul)
+ - Robbert Klarenbeek (robbertkl)
+ - Dmytro Borysovskyi (dmytr0)
- Xavier HAUSHERR
+ - BrokenSourceCode
+ - Jan Nedbal
+ - Alain Hippolyte (aloneh)
+ - Stéphane PY (steph_py)
+ - ivan
+ - Julien Galenski (ruian)
+ - Alessandro Desantis
+ - Vadim Kharitonov (vadim)
+ - Daniel Tschinder
+ - Dimitri Gritsajuk (ottaviano)
- Gasan Guseynov (gassan)
+ - Nadim AL ABDOU (nadim)
- Christophe L. (christophelau)
- - Gonzalo Vilaseca (gonzalovilaseca)
+ - Oscar Cubo Medina (ocubom)
+ - Bohdan Bobko
+ - Shein Alexey
- Thomas Perez (scullwm)
+ - C (dagardner)
+ - Marc Biorklund (mbiork)
- Damien Fernandes
- - Tarmo Leppänen (tarlepp)
- - Clara van Miert
+ - Laszlo Korte
- Jesper Noordsij
- - Tobias Naumann (tna)
- - Endre Fejes
+ - Marek Kalnik (marekkalnik)
+ - Vincent Chalamon
+ - hubert lecorche (hlecorche)
+ - Felix Labrecque
+ - Vitalii Ekert (comrade42)
- Erin Millard
- - Marc Biorklund (mbiork)
- - Kev
- - Kevin van Sonsbeek (kevin_van_sonsbeek)
+ - Tarmo Leppänen (tarlepp)
+ - Zmey
+ - Tobias Naumann (tna)
+ - Yaroslav Kiliba
+ - Pablo Lozano (arkadis)
- Vladyslav Loboda
- - Stéphane PY (steph_py)
- - Shein Alexey
+ - Ilija Tovilo (ilijatovilo)
+ - Inal DJAFAR (inalgnu)
+ - Ivan Mezinov
+ - Kevin van Sonsbeek (kevin_van_sonsbeek)
+ - FORT Pierre-Louis (plfort)
+ - Lorenz Schori
+ - Neil Peyssard (nepey)
- Arthur de Moulins (4rthem)
- - Daniel STANCU
+ - kor3k kor3k (kor3k)
- Nathanael Noblet (gnat)
+ - Nicolas LEFEVRE (nicoweb)
+ - Kristen Gilden
+ - Daniel STANCU
+ - Terje Bråten
+ - Michele Locati
+ - Greg Thornton (xdissent)
- Jan Böhmer
+ - Matthias Althaus (althaus)
+ - Gwendolen Lynch
+ - Quentin Schuler (sukei)
- Pierre Rineau
- - Cătălin Dan (dancatalin)
- - Jeremy Livingston (jeremylivingston)
- - ilyes kooli (skafandri)
- - Romain Gautier (mykiwi)
- - Dave Hulbert (dave1010)
+ - Marc Morales Valldepérez (kuert)
+ - Rob Bast
+ - Rhodri Pugh (rodnaph)
+ - Ben Scott (bpscott)
+ - Dave Long
+ - Harm van Tilborg (hvt)
+ - Costin Bereveanu (schniper)
+ - ShinDarth
+ - Thibaut Cheymol (tcheymol)
+ - Florent Blaison (orkin)
+ - Daniel Beyer
+ - Mokhtar Tlili (sf-djuba)
+ - Lukáš Holeczy (holicz)
+ - Anthony Ferrara
+ - Philipp Rieber (bicpi)
+ - Asier Illarramendi (doup)
+ - Ali-HENDA
+ - Petr Duda (petrduda)
+ - Robert-Jan de Dreu
+ - M. Vondano
+ - Benjamin Cremer (bcremer)
+ - Ziumin
+ - Matthias Krauser (mkrauser)
+ - lenar
+ - Raulnet
+ - Gigino Chianese (sajito)
+ - Matthijs van den Bos (matthijs)
+ - Roberto Espinoza (respinoza)
+ - mcben
+ - Grummfy (grummfy)
+ - Maelan LE BORGNE
+ - Thomas Durand
+ - Maxime Pinot (maximepinot)
+ - jprivet-dev
+ - Denis Gorbachev (starfall)
+ - Jérôme Tanghe (deuchnord)
+ - Judicaël RUFFIEUX (axanagor)
+ - Benjamin (yzalis)
+ - Soufian EZ ZANTAR (soezz)
+ - lancergr
+ - Forfarle (forfarle)
+ - Adrien Roches (neirda24)
+ - Adam Szaraniec
+ - Kamil Kokot (pamil)
+ - Marek Zajac
+ - Roy Van Ginneken (rvanginneken)
+ - Michael Moravec
+ - Korvin Szanto
+ - Giso Stallenberg (gisostallenberg)
+ - Dmitriy Mamontov (mamontovdmitriy)
+ - Brian King
+ - Matheo Daninos (mathdns)
+ - Niklas Fiekas
+ - Krzysztof Piasecki (krzysztek)
+ - Maximilian Zumbansen
+ - Nate (frickenate)
+ - Jacek Jędrzejewski (jacek.jedrzejewski)
+ - Belhassen Bouchoucha (crownbackend)
+ - Alex Bakhturin
+ - Lenard Palko
+ - Ben Roberts (benr77)
+ - Maxim Dovydenok (dovydenok-maxim)
- PHAS Developer
- - Peter Bowyer (pbowyer)
- - Eugene Wissner
- - tim
- - Philipp Scheit (pscheit)
- - Bahman Mehrdad (bahman)
- - Denis Kulichkin (onexhovia)
- - Aurélien Fredouelle
- - Benjamin Zaslavsky (tiriel)
+ - Bilge
+ - Martin Kirilov (wucdbm)
- Laurent Masforné (heisenberg)
- - AnneKir
- - Jan Ole Behrens (deegital)
- - Krzysztof Piasecki (krzysztek)
- - Berny Cantos (xphere81)
- - François Dume (franek)
- - Vlad Gregurco (vgregurco)
- - simon chrzanowski (simonch)
- - Tobias Weichart
- - Fabian Lange (codingfabian)
- - Jérôme Tanghe (deuchnord)
- - sasezaki
- - Zbigniew Malcherczyk (ferror)
+ - Boris Vujicic (boris.vujicic)
- Marcin Szepczynski (czepol)
- - Greg Anderson
- - William Arslett (warslett)
- - Geoffrey Tran (geoff)
- - Sergey Melesh (sergex)
- - Lenard Palko
- - Thomas Durand
- - Angelov Dejan (angelov)
- - Loïc Ovigne (oviglo)
- - Jacek Jędrzejewski (jacek.jedrzejewski)
- - Giso Stallenberg (gisostallenberg)
+ - Jonas Flodén (flojon)
+ - Eyüp Can Akman
- Kurt Thiemann
- - Luc Vieillescazes (iamluc)
- - Filip Procházka (fprochazka)
- - Trent Steel (trsteel88)
- - Nate (frickenate)
- - Jérôme Macias (jeromemacias)
- - Marcos Rezende (rezende79)
- - Emanuele Iannone
- - Tobias Bönner
- - NickSdot
+ - Rodrigo Borrego Bernabé (rodrigobb)
+ - Sergio Santoro
+ - Jannik Zschiesche
+ - Tavo Nieves J (tavoniievez)
+ - mamazu
+ - Peter Bowyer (pbowyer)
+ - Andrii Dembitskyi
- Jonas Elfering
- - Erik Saunier (snickers)
- - Eyüp Can Akman
- - Florian Merle (florian-merle)
- - aaa2000 (aaa2000)
- - Ioan Negulescu
- - Adam Szaraniec
- - boombatower
+ - Jan van Thoor (janvt)
+ - William Arslett (warslett)
+ - Roman Anasal
+ - sasezaki
+ - Denis Kulichkin (onexhovia)
+ - Pablo Díez (pablodip)
+ - tim
- De Cock Xavier (xdecock)
- - Guilherme Ferreira
- - Sergio Santoro
- - Zach Badgett (zachbadgett)
- - Gábor Fási
- - Franck RANAIVO-HARISOA (franckranaivo)
- - Eduardo Oliveira (entering)
+ - Benjamin Zaslavsky (tiriel)
+ - Loïc Ovigne (oviglo)
+ - Restless-ET
+ - Gunnstein Lye (glye)
+ - Ivan Rey (ivanrey)
+ - Luc Vieillescazes (iamluc)
+ - Alexander Deruwe (aderuwe)
+ - Arkadius Stefanski (arkadius)
+ - Dariusz Ruminski
+ - Jan Ole Behrens (deegital)
- Jeanmonod David (jeanmonod)
- - Sergey Panteleev
- - Ziumin
- - Lctrs
- - Maxime Pinot (maximepinot)
- - Korvin Szanto
- - Nathan Dench (ndenc2)
- - Roman Anasal
- - Pavel Popov (metaer)
+ - BENOIT POLASZEK (bpolaszek)
+ - Erik Saunier (snickers)
+ - Bohdan Pliachenko
+ - Disquedur
+ - Xavier HAUSHERR
+ - wicliff wolda (wickedone)
+ - Arturs Vonda
+ - Ryan
+ - Nicolas Rigaud
+ - Trent Steel (trsteel88)
- Miroslav Šustek (sustmi)
- - Vicent Soria Durá (vicentgodella)
- - Jaik Dean (jaikdean)
- - Asier Illarramendi (doup)
- - Christoph Mewes (xrstf)
- - Dmitriy Mamontov (mamontovdmitriy)
- - Daniel Tiringer
- - Remi Collet
- - Miro Michalicka
- - Alex Bakhturin
- - Krasimir Bosilkov (kbosilkov)
- - mmokhi
- - Shakhobiddin
- - Leevi Graham (leevigraham)
- - Andrii Dembitskyi
- - Piotr Kugla (piku235)
- - Joachim Løvgaard (loevgaard)
- - Bernd Stellwag
- - Yevhen Sidelnyk
- - Steven Surowiec (steves)
- - Johnny Robeson (johnny)
- - Jérôme Vieilledent (lolautruche)
- - Dariusz Ruminski
- - R. Achmad Dadang Nur Hidayanto (dadangnh)
- - Jakub Škvára (jskvara)
- Chad Sikorra (chadsikorra)
- - Alexandru Furculita (afurculita)
- - Matthew Grasmick
- - Gijs van Lammeren
- - Joshua Nye
- - Tavo Nieves J (tavoniievez)
- - Martin Parsiegla (spea)
- - Chris Sedlmayr (catchamonkey)
- - Michael Moravec
- - Dennis Fridrich (dfridrich)
- - Kevin McBride
- - Silas Joisten (silasjoisten)
- - Fabrice Bernhard (fabriceb)
- - Benjamin Georgeault (wedgesama)
- - Ivan Rey (ivanrey)
- - Martin Gilbert (nitram1618)
- - Nils Adermann (naderman)
- - Thomas Talbot (ioni)
- - Oleksii Zhurbytskyi
- - John Bafford (jbafford)
- - Adam Harvey
- - Roy Van Ginneken (rvanginneken)
- - Gunnstein Lye (glye)
- - Judicaël RUFFIEUX (axanagor)
- - Yoshio HANAWA
- - Anton Bakai
- - Jan Schumann
- - Vitaliy Tverdokhlib (vitaliytv)
- - Lescot Edouard (idetox)
- - Gawain Lynch (gawain)
- - Markus Lanthaler (lanthaler)
- - Michel Salib (michelsalib)
+ - Philipp Scheit (pscheit)
+ - Nicolas Dewez (nicolas_dewez)
+ - Benoit Galati (benoitgalati)
+ - Brayden Williams (redstar504)
+ - Norbert Orzechowicz (norzechowicz)
+ - Nathan Dench (ndenc2)
+ - DerManoMann
+ - Martin Morávek (keeo)
+ - Jiří Bok
+ - Johnny Robeson (johnny)
+ - Jeroen Thora (bolle)
+ - Marcin Michalski (marcinmichalski)
+ - Markus Bachmann (baachi)
- Alireza Mirsepassi (alirezamirsepassi)
- - Samuele Lilli (doncallisto)
- - Ariel Ferrandini (aferrandini)
+ - Vitaliy Tverdokhlib (vitaliytv)
+ - Sergey Panteleev
- Ned Schwartz
- - Restless-ET
- - Artem Stepin (astepin)
- - Mohammad Emran Hasan (phpfour)
- - Matthew Smeets
- - Andrew M-Y (andr)
- - M. Vondano
+ - Vlad Gregurco (vgregurco)
+ - François Dume (franek)
+ - Tobias Bönner
+ - Cédric Lombardot (cedriclombardot)
+ - Jérémy DECOOL (jdecool)
+ - Jérémy M (th3mouk)
- Matthieu Bontemps
- - Brayden Williams (redstar504)
- - Martin Morávek (keeo)
- - Gigino Chianese (sajito)
- - Denis Gorbachev (starfall)
+ - Andrew Udvare (audvare)
+ - Miro Michalicka
+ - Jan Schumann
+ - Gábor Fási
+ - R. Achmad Dadang Nur Hidayanto (dadangnh)
+ - Chris Tanaskoski (devristo)
+ - Arnaud De Abreu (arnaud-deabreu)
+ - Zbigniew Malcherczyk (ferror)
- Dirk Pahl (dirkaholic)
- - Marek Zajac
- - Erik Trapman
- - Faizan Akram Dar (faizanakram)
- - Ryan
+ - Gawain Lynch (gawain)
+ - Axel Guckelsberger (guite)
+ - Geoffrey Tran (geoff)
+ - Vicent Soria Durá (vicentgodella)
+ - boombatower
- vagrant
- - Matheo Daninos (mathdns)
- - Jonathan Johnson (jrjohnson)
- - wicliff wolda (wickedone)
- - Boris Vujicic (boris.vujicic)
- - PatNowak
- - Loïc Faugeron
- - Andrew Udvare (audvare)
+ - nikos.sotiropoulos
+ - Florian Rey (nervo)
+ - Lescot Edouard (idetox)
- Markus Staab
- - Sander Toonen (xatoo)
- - Anatoly Pashin (b1rdex)
- - Klaus Silveira (klaussilveira)
- - Jibé Barth (jibbarth)
- - Jiří Bok
- - Benoit Galati (benoitgalati)
+ - Arnaud POINTET (oipnet)
+ - Johan Vlaar (johjohan)
+ - Gildas Quéméner (gquemener)
+ - Artem Stepin (astepin)
+ - Loïc Faugeron
+ - Greg ORIOL
+ - Piotr Kugla (piku235)
+ - PatNowak
+ - Kevin McBride
- Ioan Ovidiu Enache (ionutenache)
- - Robert-Jan de Dreu
- - battye
- - BASAK Semih (itsemih)
+ - Bhavinkumar Nakrani (bhavin4u)
+ - “Filip
+ - Pavel Popov (metaer)
+ - Dennis Fridrich (dfridrich)
+ - Sander Toonen (xatoo)
+ - Andrew M-Y (andr)
+ - Mark Challoner (markchalloner)
+ - Ioan Negulescu
+ - Thomas Talbot (ioni)
+ - Fabrice Bernhard (fabriceb)
+ - Jérôme Vieilledent (lolautruche)
+ - aaa2000 (aaa2000)
+ - Sergey Melesh (sergex)
+ - Florian Merle (florian-merle)
+ - Emanuele Iannone
+ - Toni Rudolf (toooni)
- Ivan Nikolaev (destillat)
+ - Fabian Lange (codingfabian)
+ - Webnet team (webnet)
- Vadim Borodavko (javer)
- - Norbert Orzechowicz (norzechowicz)
- - Rodrigo Borrego Bernabé (rodrigobb)
- - jprivet-dev
- - lenar
+ - BASAK Semih (itsemih)
+ - Krasimir Bosilkov (kbosilkov)
+ - Yoshio HANAWA
+ - Ariel Ferrandini (aferrandini)
+ - Tobias Weichart
+ - Martijn Cuppens
+ - Filip Procházka (fprochazka)
+ - Jérôme Macias (jeromemacias)
+ - Jibé Barth (jibbarth)
+ - Mohammad Emran Hasan (phpfour)
+ - Erkhembayar Gantulga (erheme318)
+ - Jerzy Lekowski (jlekowski)
+ - Lctrs
+ - Nils Adermann (naderman)
+ - Aurélien Fredouelle
+ - Tom Klingenberg
+ - NickSdot
+ - mmokhi
+ - Shakhobiddin
+ - Bahman Mehrdad (bahman)
+ - Martin Parsiegla (spea)
+ - Adam Harvey
+ - Marvin Feldmann (breyndotechse)
+ - Pavel Campr (pcampr)
+ - Bernd Stellwag
+ - Patrick Reimers (preimers)
+ - Kevin Saliou (kbsali)
+ - Marcos Rezende (rezende79)
+ - Steffen Roßkamp
+ - Yi-Jyun Pan
+ - Florent Destremau (florentdestremau)
+ - John Bafford (jbafford)
+ - Antonin CLAUZIER (0x346e3730)
+ - Samuele Lilli (doncallisto)
+ - Christoph Mewes (xrstf)
+ - Michel Salib (michelsalib)
+ - nathanpage
+ - Silas Joisten (silasjoisten)
+ - Shawn Iwinski
- Clemens Krack (ckrack)
- - Stefan Gehrig (sgehrig)
- - Markus S. (staabm)
- - Petr Duda (petrduda)
+ - Scott Arciszewski
+ - Yevhen Sidelnyk
+ - Ben Ramsey (ramsey)
- Sebastian Zoglowek
- - Greg ORIOL
- - BENOIT POLASZEK (bpolaszek)
- - kylekatarnls (kylekatarnls)
- - Antonio Jose Cerezo (ajcerezo)
- - Antonin CLAUZIER (0x346e3730)
- - Raulnet
- - Pavel Campr (pcampr)
+ - Remi Collet
- Ricardo Oliveira (ricardolotr)
- - Martijn Cuppens
- - nathanpage
- - Marvin Feldmann (breyndotechse)
- - Grummfy (grummfy)
+ - Andrii Dembitskyi
+ - Martin Gilbert (nitram1618)
+ - Petrisor Ciprian Daniel
+ - Greg Anderson
+ - W0rma
+ - Antonio Jose Cerezo (ajcerezo)
+ - simon chrzanowski (simonch)
+ - AKeeman (akeeman)
+ - Andreas Hennings
+ - Jaik Dean (jaikdean)
+ - Tri Pham (phamuyentri)
+ - Benjamin Georgeault (wedgesama)
+ - Markus Lanthaler (lanthaler)
+ - battye
+ - Jonathan Johnson (jrjohnson)
- Valentin Jonovs
- - Xavier HAUSHERR
- - Ben Roberts (benr77)
- - Jérémy M (th3mouk)
- - mamazu
- - Bohdan Pliachenko
- Christian Gripp (core23)
- - Cédric Lombardot (cedriclombardot)
- - Yi-Jyun Pan
- - Webnet team (webnet)
+ - ReenExe
+ - Angelov Dejan (angelov)
+ - Guilherme Ferreira
+ - Zach Badgett (zachbadgett)
+ - Berny Cantos (xphere81)
+ - Franck RANAIVO-HARISOA (franckranaivo)
- M. (mbontemps)
- - Philipp Rieber (bicpi)
- - Disquedur
- - Arturs Vonda
+ - Matthew Grasmick
+ - Eugene Wissner
+ - Steven Surowiec (steves)
+ - Marcin Chyłek (songoq)
+ - Erik Trapman
+ - geoffrey
- Stefan Kruppa
- - Nicolas Rigaud
- - Alexander Deruwe (aderuwe)
- - Sam Fleming (sam_fleming)
- - DerManoMann
- - Nicolas Dewez (nicolas_dewez)
+ - Daniel Tiringer
+ - Dawid Pakuła (zulusx)
- Evan S Kaufman (evanskaufman)
- - Bilge
- - Niklas Fiekas
- - Marcin Michalski (marcinmichalski)
- - Belhassen Bouchoucha (crownbackend)
- - Chris Tanaskoski (devristo)
- - Kevin Saliou (kbsali)
- - Steffen Roßkamp
- - Johan Vlaar (johjohan)
+ - Sebastian Bergmann
+ - Alexandru Furculita (afurculita)
+ - Romain Gautier (mykiwi)
+ - ilyes kooli (skafandri)
+ - Desjardins Jérôme (jewome62)
+ - Matthew Smeets
+ - Anatoly Pashin (b1rdex)
+ - Jérémy REYNAUD (babeuloula)
+ - kylekatarnls (kylekatarnls)
+ - Jakub Škvára (jskvara)
+ - Oleksii Zhurbytskyi
+ - AnneKir
- Dominik Zogg
- - Roberto Espinoza (respinoza)
- - W0rma
- - Pablo Díez (pablodip)
- - Martin Kirilov (wucdbm)
- - Dawid Pakuła (zulusx)
- - Axel Guckelsberger (guite)
- - Matthijs van den Bos (matthijs)
- - Jerzy Lekowski (jlekowski)
- - nikos.sotiropoulos
- - Florian Rey (nervo)
- - Forfarle (forfarle)
- - Arkadius Stefanski (arkadius)
- - Jan van Thoor (janvt)
- - Maximilian Zumbansen
- - Benjamin (yzalis)
- - ReenExe
- - mcben
+ - Sam Fleming (sam_fleming)
+ - Anton Bakai
+ - Andrey Astakhov (aast)
- quentin neyrat (qneyrat)
- - Evgeny Ruban
- - Kamil Kokot (pamil)
+ - Leevi Graham (leevigraham)
- Dries Vints
- - Adrien Roches (neirda24)
- - Anthony Ferrara
- - Benjamin Cremer (bcremer)
- - Maxim Dovydenok (dovydenok-maxim)
- - Marcin Chyłek (songoq)
- - Toni Rudolf (toooni)
+ - Klaus Silveira (klaussilveira)
+ - Dave Hulbert (dave1010)
+ - Chris Sedlmayr (catchamonkey)
+ - Eduardo Oliveira (entering)
+ - Koen Reiniers (koenre)
+ - Evgeny Ruban
+ - Faizan Akram Dar (faizanakram)
+ - Gijs van Lammeren
+ - Markus S. (staabm)
- takashiraki
- - “Filip
- - AKeeman (akeeman)
- - Arnaud De Abreu (arnaud-deabreu)
- - Soufian EZ ZANTAR (soezz)
- - Jonas Flodén (flojon)
- - Jeroen Thora (bolle)
- - Tri Pham (phamuyentri)
+ - Joshua Nye
+ - Joachim Løvgaard (loevgaard)
- Claude Khedhiri (ck-developer)
- - Tom Klingenberg
- - Jérémy REYNAUD (babeuloula)
- - Arnaud POINTET (oipnet)
- - geoffrey
- - Andreas Hennings
- - Ali-HENDA
- - Mark Challoner (markchalloner)
- - Petrisor Ciprian Daniel
- - Bhavinkumar Nakrani (bhavin4u)
+ - Stefan Gehrig (sgehrig)
- Barry vd. Heuvel (barryvdh)
- - Erkhembayar Gantulga (erheme318)
- - Matthias Krauser (mkrauser)
- - Ben Ramsey (ramsey)
- - Markus Bachmann (baachi)
- - Shawn Iwinski
- - Scott Arciszewski
- - Florent Destremau (florentdestremau)
- - Koen Reiniers (koenre)
- - Gildas Quéméner (gquemener)
- - Andrey Astakhov (aast)
- - lancergr
- - Maelan LE BORGNE
- - Brian King
- - Jannik Zschiesche
- - Andrii Dembitskyi
- - Desjardins Jérôme (jewome62)
- - Jérémy DECOOL (jdecool)
- - Sebastian Bergmann
- - Patrick Reimers (preimers)
- - Reedy
+ - Malte Müns
+ - James Hudson (mrthehud)
+ - Eduardo Rocha
+ - Joost van Driel (j92)
+ - Rafael Kraut
+ - Thomas Nunninger
+ - Arpit Verma
- Max Baldanza
- - Payene Denis KOMBATE (payene)
+ - Ettore Del Negro (ettoredn)
+ - Christophe Villeger (seragan)
+ - Vladimir Varlamov (iamvar)
- Arjan Keeman
- - Ryan RAJKOMAR (rrajkomar)
- - bukhonovd
- Zouaoui Montassar
- - Miquel Rodríguez Telep (mrtorrent)
- - James Hudson (mrthehud)
- - Vladimir Varlamov (iamvar)
+ - bukhonovd
+ - hugovms
+ - Payene Denis KOMBATE (payene)
+ - Ryan RAJKOMAR (rrajkomar)
+ - Nicolas Dousson
+ - Youssef Benhssaien (moghreb)
+ - Vikram Vaswani
+ - Alexander Dmitryuk (coden1)
+ - Andrew Tchircoff (andrewtch)
+ - Brad Jones
- Martin (meckhardt)
- Gerard van Helden (drm)
- Maks 3w (maks3w)
- - Vikram Vaswani
+ - Michael Roterman (wtfzdotnet)
+ - Nicole Cordes (ichhabrecht)
+ - Miquel Rodríguez Telep (mrtorrent)
+ - Sergey Kolodyazhnyy (skolodyazhnyy)
+ - tourze
- julien57
- - Rafael Kraut
- - Thomas Nunninger
- Matijn (matijn-made)
- - Arpit Verma
- Florian Wolfsjaeger (flowolf)
- - Christophe Villeger (seragan)
- - hugovms
- - Nicolas Dousson
- Jonathan Hogervorst
- Amr Ezzat (amrezzat)
- - Andrew Tchircoff (andrewtch)
- - Ettore Del Negro (ettoredn)
- Julien Robic (nayte)
+ - Xavier Leune (xleune)
+ - aegypius
+ - Abhoryo
+ - Sergey Yastrebov
- Mustafa Cheraim (musta_cher)
- - Raphaëll Roussel
- Reinier Kip
+ - shubhalgupta
+ - Tomasz Kusy
+ - Raphaëll Roussel
+ - Pavel Witassek
+ - Benjamin Franzke
- Florian Weber
+ - Maksim Muruev
- Stéphane Escandell (sescandell)
- Israel J. Carberry
+ - Andrew Hilobok (hilobok)
+ - Ilia (aliance)
- Gladhon
- Mudassar
- Konstantin Grachev (grachevko)
- Philippe Segatori
+ - Benjamin Grandfond (benjamin)
- Oleksii Kozhemiaka (okozhemiaka)
- Gálik Pál
+ - develop
+ - Oriol Viñals
+ - Mihai Stancu
+ - Reyo Stallenberg (reyostallenberg)
- Pierre Hennequart
- Carson Full (carsonfull)
- Álvaro Sánchez Taboada
- Mark Schmale (masch)
- Benoît Merlet (trompette)
- - Mihai Stancu
- Yuriy Vilks (igrizzli)
- fzerorubigd
- - Xavier Leune (xleune)
- - aegypius
+ - Denis Zunke (donalberto)
+ - Chris Boden (cboden)
+ - VJ
+ - Jacques MOATI (jmoati)
- grizlik
+ - Malte Blättermann
+ - louismariegaborit
- Benjamin Toussaint (bto)
- - VJ
- Barney Hanlon
- Kieran Cross (kilosierracharlie)
- Andrei C. (moldman)
+ - Daniel Cestari
- Bert Hekman (demontpx)
- Loïc Beurlet
- Marcos Gómez Vilches (markitosgv)
- Pedro Miguel Maymone de Resende (pedroresende)
- - Michael Roterman (wtfzdotnet)
+ - Ryan Hendrickson
+ - Luis Tacón (lutacon)
+ - Andreas Braun
- Zhuravlev Alexander (scif)
- - Pavel Witassek
+ - Marko Petrovic
- Jose Gonzalez
- - Nicole Cordes (ichhabrecht)
- - Benjamin Grandfond (benjamin)
- - Benjamin Franzke
+ - den
- Jordan Deitch
- - Sergey Kolodyazhnyy (skolodyazhnyy)
- - tourze
- Arturas Smorgun (asarturas)
- - shubhalgupta
- - Reyo Stallenberg (reyostallenberg)
- - Tomasz Kusy
- - Ilia (aliance)
- - Youssef Benhssaien (moghreb)
- - Alexander Dmitryuk (coden1)
- - louismariegaborit
+ - Vincent QUATREVIEUX
+ - Loïc Chardonnet
- scyzoryck
- Tiago Brito (blackmx)
- - Brad Jones
- - Jacques MOATI (jmoati)
- bogdan
- - Joost van Driel (j92)
- - Andrew Hilobok (hilobok)
- - Denis Zunke (donalberto)
- - Chris Boden (cboden)
- - Daniel Cestari
- Shin Ohno (ganchiku)
- - develop
- - Malte Blättermann
- Adrien Jourdier (eclairia)
- Volodymyr Panivko
- David Fuhr
- Artur Eshenbrener
- Fabien LUCAS (flucas2)
- Ferran Perxas (fperxas)
- - Ryan Hendrickson
- Tony Tran
- Tristan Roussel
- - Sergey Yastrebov
- Johnny Peck (johnnypeck)
- frost-nzcr4
- Michiel Boeckaert (milio)
- Gerben Oolbekkink
- Jon Dufresne
- avorobiev
- - Luis Tacón (lutacon)
- - Marko Petrovic
- - Abhoryo
+ - Fabien Salles (blacked)
- Guillaume Verstraete
- - Maksim Muruev
- Pierre-Yves Landuré (biapy)
- Sascha Grossenbacher (berdir)
- Matt Johnson (gdibass)
- Wouter van der Loop (toppy-hennie)
+ - Terje Bråten
+ - Reen Lokum
- phpner
- Damien Fa
+ - Dennis Hotson
+ - Gregor Nathanael Meyer (spackmat)
+ - Geoffrey Brier (geoffrey-brier)
+ - zenas1210
- Felds Liscia (felds)
- Sander De la Marche (sanderdlm)
- Carlos Quintana
- Jeroen Fiege (fieg)
- - Fabien Salles (blacked)
- - den
- Jeroen van den Enden (endroid)
- - Andreas Braun
- Ворожцов Максим (myks92)
- Tristan Maindron (tmaindron)
- Andreas Lutro (anlutro)
@@ -1110,28 +1120,24 @@ The Symfony Connect username in parenthesis allows to get more information
- Alex Xandra Albert Sim
- Anton A. Sumin
- benjaminmal
+ - David Romaní
- d-mitrofanov-v
- - Oriol Viñals
- Roger Guasch (rogerguasch)
- Kristof Van Cauwenbergh (kristofvc)
- Nahuel Cuesta (ncuesta)
- - Vincent QUATREVIEUX
+ - Sinan Eldem (sineld)
- Christian Sciberras (uuf6429)
- Kagan Balga (kagan-balga)
- Simon Mönch
- - Terje Bråten
- Alex Bogomazov (alebo)
- - David Romaní
+ - Chris Jones (magikid)
+ - Jonathan (jlslew)
- Dennis Langen (nijusan)
- - Reen Lokum
- Mathias Brodala (mbrodala)
- - Loïc Chardonnet
- Carlos Pereira De Amorim (epitre)
- Nathan PAGE (nathix)
- Jon Gotlin (jongotlin)
- - Chris Jones (magikid)
- Vitaliy Ryaboy (vitaliy)
- - Jonathan (jlslew)
- Mátyás Somfai (smatyas)
- Maxime COLIN (maximecolin)
- izzyp
@@ -1139,40 +1145,38 @@ The Symfony Connect username in parenthesis allows to get more information
- Tales Santos (tsantos84)
- Patrick Allaert
- mfettig
- - Malte Müns
+ - Ana Raro
+ - Gabrielle Langer
- Sebastian Marek (proofek)
- Christopher Hall (mythmakr)
- katario
- wuchen90
- - Michael Thieulin
- - Sinan Eldem (sineld)
+ - Reedy
- Ivan Grigoriev (greedyivan)
- Geert De Deckere
- - Dennis Hotson
- Daniel Badura
- Eric Abouaf (neyric)
- Piotr Stankowski
- Dmitrii Tarasov (dtarasov)
+ - Glodzienski
- COMBROUSE Dimitri
- - Gregor Nathanael Meyer (spackmat)
- EStyles (insidestyles)
- ampaze
- ouardisoft
- Baptiste CONTRERAS
- - Ana Raro
- - Glodzienski
+ - Kay Wei
- Julien Tattevin (jutattevin)
- Ke WANG (yktd26)
- - Geoffrey Brier (geoffrey-brier)
- - zenas1210
- Jay Klehr
- NanoSector
+ - Marek Pietrzak (mheki)
+ - Gert Wijnalda (cinamo)
- sl_toto (sl_toto)
- DUPUCH (bdupuch)
- Egor Taranov
- Don Pinkster
+ - Sergey Zolotov (enleur)
- Davide Borsatto (davide.borsatto)
- - Kay Wei
- Massimiliano Braglia (massimilianobraglia)
- Guilherme Augusto Henschel
- Baldur Rensch (brensch)
@@ -1181,10 +1185,11 @@ The Symfony Connect username in parenthesis allows to get more information
- Matthieu Calie (matth--)
- ornicar
- Xavier Briand (xavierbriand)
- - mohamed
- Daniel Alejandro Castro Arellano (lexcast)
- Paul Oms
- radar3301
+ - Pedro Casado (pdr33n)
+ - mohamed
- Steve Grunwell
- Dragos Protung (dragosprotung)
- Marco Wansinck (mwansinck)
@@ -1193,84 +1198,85 @@ The Symfony Connect username in parenthesis allows to get more information
- Emil Einarsson
- Edvin Hultberg
- Ondrej Exner
+ - Alexander Grimalovsky (flying)
- ToshY
- - Pedro Casado (pdr33n)
- - Gabrielle Langer
- Noémi Salaün (noemi-salaun)
- - Marek Pietrzak (mheki)
- - Gert Wijnalda (cinamo)
+ - Paulo Ribeiro (paulo)
- Maxim Tugaev (tugmaks)
- - Sergey Zolotov (enleur)
+ - Dhananjay Goratela
- Sebastian Grodzicki (sgrodzicki)
+ - Alex Bacart
+ - Mantas Var (mvar)
- Vincent Composieux (eko)
- acoulton
- - Alexander Grimalovsky (flying)
- Delf Tonder (leberknecht)
- Florian Hermann (fhermann)
- Guillaume Aveline
- Vladyslav Petrovych
- - Mantas Var (mvar)
+ - Xavier Lacot (xavier)
+ - Cristoforo Cervino (cristoforocervino)
+ - Gábor Tóth
+ - Gintautas Miselis (naktibalda)
+ - Asier Etxebeste
- Andre Hoong
- Thorry84
- Johannes Klauss (cloppy)
- Jan Prieser
- - Paulo Ribeiro (paulo)
- Noah Heck (myesain)
- James Johnston
- - Dhananjay Goratela
- - Alex Bacart
- - Xavier Lacot (xavier)
- Quentin Dreyer (qkdreyer)
- wanxiangchwng
- - Cristoforo Cervino (cristoforocervino)
- Marc Abramowitz
+ - Oliver Hoff
+ - Philipp Keck
+ - Aydin Hassan
- Adam
+ - Ivan
+ - kick-the-bucket
+ - Alexandre Dupuy (satchette)
+ - Maximilian.Beckers
- Jakub Vrána (vrana)
- 243083df
+ - Simon DELICATA
- Lukas Mencl
+ - Adrien Lucas (adrienlucas)
- Mickaël Andrieu (mickaelandrieu)
+ - Geordie
- Rodrigo Méndez (rodmen)
- - Oliver Hoff
- Thiago Cordeiro (thiagocordeiro)
- Hossein Bukhamsin
- - Gábor Tóth
- DT Inier (gam6itko)
- - Gintautas Miselis (naktibalda)
- Romanavr
- - Asier Etxebeste
- - Philipp Keck
- - Aydin Hassan
- Matteo Beccati (matteobeccati)
- Tarjei Huse (tarjei)
- SpacePossum
- Nguyen Xuan Quynh
- Toon Verwerft (veewee)
- jochenvdv
- - kick-the-bucket
+ - Johann Saunier (prophet777)
- fedor.f
- - Simon DELICATA
- - Geordie
- - Michał Jusięga
- - Niklas Keller
- Michał Marcin Brzuchalski (brzuchal)
- - Ivan
- - Alexandre Dupuy (satchette)
- - Maximilian.Beckers
- - Johann Saunier (prophet777)
- - StefanoTarditi
- Simon Terrien (sterrien)
+ - Michał Jusięga
+ - Niklas Keller
- Thomas Cochard (tcochard)
+ - StefanoTarditi
- Sebastian Krebs
- Laurent Bassin (lbassin)
- Koen Kuipers (koku)
- Andreas Erhard (andaris)
+ - origaminal
+ - Sem Schidler (xvilo)
+ - Aleksandr Volochnev (exelenz)
+ - Daniël Brekelmans (dbrekelmans)
+ - Josiah (josiah)
+ - abdul malik ikhsan (samsonasik)
- Sébastien JEAN (sebastien76)
- Trevor North
- - origaminal
- Matthieu Mota (matthieumota)
- Simon Heimberg (simon_heimberg)
- Quentin de Longraye (quentinus95)
- - Adrien Lucas (adrienlucas)
+ - Bill Hance (billhance)
- Dmytro Boiko (eagle)
- zenmate
- Baptiste Meyer (meyerbaptiste)
@@ -1280,289 +1286,285 @@ The Symfony Connect username in parenthesis allows to get more information
- Robin van der Vleuten (robinvdvleuten)
- Patrick Dawkins (pjcdawkins)
- Anthony Tenneriello
+ - Stephan Vock (glaubinix)
+ - Mouad ZIANI (mouadziani)
+ - Julien Fredon
+ - Paweł Niedzielski (steveb)
- vladimir.panivko
- - Matthieu Bontemps
- flip111
+ - Alexandre parent
+ - Balazs Csaba
+ - Matthieu Bontemps
+ - Tamás Nagy (t-bond)
+ - Olivier Maisonneuve
+ - Sherin Bloemendaal
+ - Valentin Nazarov
+ - Stefano Degenkamp (steef)
+ - Bálint Szekeres
+ - Tony Malzhacker
+ - Oliver Hader
+ - Hany el-Kerdany
- Bozhidar Hristov
+ - Richard Henkenjohann (richardhj)
+ - umpirski
+ - Marc Laporte
+ - Tamas Szijarto
+ - Benjamin Lebon
+ - marie
- Richard van den Brand (ricbra)
- - Sem Schidler (xvilo)
+ - Evan C
+ - Mickaël Isaert (misaert)
+ - Fractal Zombie
+ - Ana Raro
+ - Kevin SCHNEKENBURGER
+ - Ian Jenkins (jenkoian)
+ - Jakub Podhorsky (podhy)
+ - Korvin Szanto
+ - Ivan Kurnosov
+ - Oriol Viñals
+ - Vitaliy Zhuk (zhukv)
+ - Cameron Porter
+ - Adrian Nguyen (vuphuong87)
+ - Alexander Kim
+ - Adrian Günter (adrianguenter)
- Robert Gruendler (pulse00)
- Jordi Sala Morales (jsala)
+ - Johnson Page (jwpage)
+ - Paweł Wacławczyk (pwc)
- Takashi Kanemoto (ttskch)
- Tinjo Schöni
+ - Oleg Zinchenko (cystbear)
+ - Mario Ramundo (rammar)
+ - Lorenzo Millucci (lmillucci)
+ - Yi-Jyun Pan
+ - Nikolai Mikhailov (sonnymilton)
+ - Roy de Vos Burchart
+ - Neil Ferreira
+ - Mikhail Yurasov (mym)
+ - Peter Potrowl
+ - Åsmund Garfors
+ - Grinbergs Reinis (shima5)
+ - Antal Áron (antalaron)
+ - stoccc
+ - Wesley Lancel
+ - Fred Cox
+ - Hossein Hosni
+ - Dennis Væversted (srnzitcom)
+ - Morten Wulff (wulff)
+ - Jiri Barous
+ - Thibaut THOUEMENT (thibaut_thouement)
+ - Ian Irlen
+ - James Michael DuPont
- Petar Obradović
+ - Vincent CHALAMON
+ - Seb Koelen
+ - Ramunas Pabreza (doobas)
+ - Tomasz Ignatiuk
+ - Masterklavi
- David ALLIX
- Daniel González (daniel.gonzalez)
- - Aleksandr Volochnev (exelenz)
+ - Jean Pasdeloup
+ - Thijs-jan Veldhuizen (tjveldhuizen)
+ - Gert de Pagter
+ - Julien Turby
+ - Brajk19
+ - Ondrej Machulda (ondram)
+ - Julien Maulny
+ - Thomas P
- Aurimas Niekis (gcds)
+ - skmedix (skmedix)
+ - Florent Viel (luxifer)
+ - Sébastien Despont (bouillou)
+ - Maxime Douailin
+ - Vladimir Valikayev
+ - Morgan Auchede
+ - Marco Lipparini (liarco)
+ - Christin Gruber (christingruber)
+ - Krzysztof Łabuś (crozin)
+ - Hidde Boomsma (hboomsma)
- Manuel Alejandro Paz Cetina
- Rootie
- Ilya Levin (ilyachase)
- alexandre.lassauge
- - Balazs Csaba
+ - Francisco Alvarez (sormes)
+ - Tamás Szigeti
+ - Travis Carden (traviscarden)
- Andrew Berry
- - Sherin Bloemendaal
+ - _sir_kane (waly)
+ - Cyril Vermandé (cyve)
+ - Alex (garrett)
+ - Cornel Cruceru (amne)
+ - Alex Kalineskou
+ - Bastien DURAND (deamon)
+ - Thibault Buathier (gwemox)
+ - Ulumuddin Cahyadi Yunus (joenoez)
- Chris Heng (gigablah)
+ - RJ Garcia
+ - Benjamin Schoch (bschoch)
+ - Sascha Dens (saschadens)
+ - Jean-Baptiste GOMOND (mjbgo)
+ - David Molineus
+ - Gina Peter Banyard
+ - Matt Janssen
+ - arai
+ - Mior Muhammad Zaki (crynobone)
+ - Jan Kramer
+ - Lars Vierbergen (vierbergenlars)
+ - Simon Schick (simonsimcity)
- Michael Devery (mickadoo)
- - Alexandre parent
- - Valentin Nazarov
- - Stefano Degenkamp (steef)
- Thiago Melo
+ - Stefan Warman (warmans)
+ - Shaharia Azam
- Jawira Portugal (jawira)
- - Oliver Hader
+ - Oleksandr Barabolia (oleksandrbarabolia)
- Natsuki Ikeguchi
- Simon Watiau (simonwatiau)
- Pavol Tuka
- - Daniël Brekelmans (dbrekelmans)
- - Josiah (josiah)
+ - Arun Philip
- Jan Walther (janwalther)
- Rimas Kudelis
- Benjamin Zikarsky (bzikarsky)
+ - Brunet Laurent (lbrunet)
+ - Marko H. Tamminen (gzumba)
- Joschi Kuphal
+ - Fabian Vogler (fabian)
- Pierrick VIGNAND (pierrick)
- Mark Sonnabaum
- - umpirski
- - Jan Kramer
- - abdul malik ikhsan (samsonasik)
- - Bill Hance (billhance)
+ - James Hemery
+ - Florian Pfitzer (marmelatze)
+ - Michael Bessolov
+ - Ahmed Ashraf (ahmedash95)
- Carlos Buenosvinos (carlosbuenosvinos)
- Dustin Dobervich (dustin10)
- Jakub Kulhan (jakubkulhan)
- - Mouad ZIANI (mouadziani)
- Kyle Evans (kevans91)
- - arai
- Dominik Ulrich
- Simon (kosssi)
- Jesper Noordsij
+ - Javier López (loalf)
- Martins Sipenko
+ - Aurimas Niekis (aurimasniekis)
- Daisuke Ohata
- Ayke Halder
- - Ana Raro
- - Benjamin Lebon
- - Ian Jenkins (jenkoian)
- - Vitaliy Zhuk (zhukv)
- - marie
- - Johnson Page (jwpage)
- - Paweł Wacławczyk (pwc)
+ - Simon Leblanc (leblanc_simon)
- Besnik Br
- - Nikolai Mikhailov (sonnymilton)
- - Roy de Vos Burchart
- - Mickaël Isaert (misaert)
- Evan Villemez
- - Korvin Szanto
- - Ivan Kurnosov
- - Oriol Viñals
- - Jiri Barous
- - Kevin SCHNEKENBURGER
- - Thibaut THOUEMENT (thibaut_thouement)
- - Thijs-jan Veldhuizen (tjveldhuizen)
- - Grinbergs Reinis (shima5)
- - stoccc
- - Hossein Hosni
- - Dennis Væversted (srnzitcom)
- - Ian Irlen
- - Alexander Kim
- - Adrian Günter (adrianguenter)
- - Tamás Nagy (t-bond)
- - James Michael DuPont
- - Seb Koelen
- - RJ Garcia
- ywisax
- - Oleg Zinchenko (cystbear)
- - Mario Ramundo (rammar)
- - Lorenzo Millucci (lmillucci)
- - Neil Ferreira
- - skmedix (skmedix)
- - Florent Viel (luxifer)
- - Simon Schick (simonsimcity)
- - Arun Philip
- - Mikhail Yurasov (mym)
- - Peter Potrowl
- - Åsmund Garfors
- - Morten Wulff (wulff)
- - Jean Pasdeloup
- - Gert de Pagter
- - Tamás Szigeti
- - Paweł Niedzielski (steveb)
- - Alex Kalineskou
- - Ulumuddin Cahyadi Yunus (joenoez)
- Krystian Marcisz (simivar)
- - Maxime Douailin
- - Vladimir Valikayev
- - Vincent CHALAMON
- - Ramunas Pabreza (doobas)
- - Brunet Laurent (lbrunet)
- - Marko H. Tamminen (gzumba)
- - Marco Lipparini (liarco)
- - Christin Gruber (christingruber)
- - Krzysztof Łabuś (crozin)
- - Marc Laporte
- - Hidde Boomsma (hboomsma)
- - Francisco Alvarez (sormes)
- - _sir_kane (waly)
- - Olivier Maisonneuve
+ - Mohamed Gamal
+ - Yosmany Garcia (yosmanyga)
- Roy Klutman (royklutman)
- - Bálint Szekeres
- - Tomasz Ignatiuk
- - Masterklavi
- - Yi-Jyun Pan
- - Fred Cox
- - Bastien DURAND (deamon)
- - Thibault Buathier (gwemox)
- - Mior Muhammad Zaki (crynobone)
- - Lars Vierbergen (vierbergenlars)
- - James Hemery
- - Tony Malzhacker
- - Julien Maulny
- - Thomas P
- - Julien Turby
- - Oleksandr Barabolia (oleksandrbarabolia)
- - Morgan Auchede
- - Fabian Vogler (fabian)
- - Travis Carden (traviscarden)
- - Cyril Vermandé (cyve)
- - Alex (garrett)
+ - Jaroslav Kuba
- Ivo Bathke (ivoba)
- - Javier López (loalf)
- - Cornel Cruceru (amne)
- - Cameron Porter
- - Jean-Baptiste GOMOND (mjbgo)
- - David Molineus
+ - Minna N
+ - Christophe V. (cvergne)
+ - DemigodCode
- Clemens Krack
- - Gina Peter Banyard
- - Matt Janssen
- - Adrian Nguyen (vuphuong87)
- - Stefan Warman (warmans)
- - Shaharia Azam
- - Antal Áron (antalaron)
- - Richard Henkenjohann (richardhj)
- - Florian Pfitzer (marmelatze)
- - Julien Fredon
- - Michael Bessolov
- - Ahmed Ashraf (ahmedash95)
- - Tamas Szijarto
- - Stephan Vock (glaubinix)
- - Dmitry Parnas (parnas)
- - Rodrigo Aguilera
- - Jörn Lang
- - Fractal Zombie
- - Hany el-Kerdany
- - Aurimas Niekis (aurimasniekis)
- - Simon Leblanc (leblanc_simon)
- - Evan C
- - Jakub Podhorsky (podhy)
- - Brajk19
- - Ondrej Machulda (ondram)
- - Sébastien Despont (bouillou)
- - Benjamin Schoch (bschoch)
- - Sascha Dens (saschadens)
- - Wesley Lancel
- - Andreas Leathley (iquito)
- - Jaroslav Kuba
- Matthew Davis (mdavis1982)
- John Bohn (jbohn)
+ - Guillaume Sainthillier (guillaume-sainthillier)
+ - Jayson Xu (superjavason)
+ - Christian Soronellas (theunic)
+ - Thibault Richard (t-richard)
+ - Benjamin Laugueux
- fago
- - Rafał Wrzeszcz (rafalwrzeszcz)
+ - Mike Meier (mykon)
+ - Vincent Simonin
+ - Max Rath (drak3)
+ - Dmitry Parnas (parnas)
+ - Rodrigo Aguilera
+ - Richard Bradley
+ - Douglas Reith (douglas_reith)
+ - Barthold Bos
+ - Xav` (xavismeh)
+ - vitaliytv
+ - Jörn Lang
+ - Kieran
+ - Julie Hourcade (juliehde)
+ - Jonatan Männchen
+ - Tim Düsterhus
+ - Alaattin Kahramanlar (alaattin)
+ - Degory Valentine
- Jonas Elfering
- Ruben Gonzalez (rubenruateltek)
+ - Casper Valdemar Poulsen
- Thomas Ploch
- Paul Kamer (pkamer)
- Gustavo Falco (gfalco)
- - Jayson Xu (superjavason)
+ - Pascal Helfenstein
- Stephan Vierkant (svierkant)
- Vladimir Luchaninov (luchaninov)
- - Vincent Simonin
- - Kieran
- - Julie Hourcade (juliehde)
- - Alaattin Kahramanlar (alaattin)
- - Arnaud Frézet
+ - Martijn Evers
+ - Nicolas de Marqué (nicola)
+ - noniagriconomie
+ - Carl Casbolt (carlcasbolt)
+ - Jan Pintr
+ - Cosmin Sandu
- Maximilian Bösing
- Alexander Li (aweelex)
- Maksim Kotlyar (makasim)
+ - Arnaud Frézet
+ - Ben
+ - Franco Traversaro (belinde)
- michaelwilliams
- Luca Saba (lucasaba)
- Rustam Bakeev (nommyde)
+ - Jesper Skytte (greew)
- AndrolGenhald
- - Casper Valdemar Poulsen
- - johan Vlaar
- - Nicolas de Marqué (nicola)
- - noniagriconomie
- Antoine Corcy
- buffcode
+ - Pavlo Pelekh (pelekh)
+ - Randy Geraads
+ - johan Vlaar
+ - Kuba Werłos (kuba)
+ - Gennady Telegin
+ - Arno Geurts
+ - Sofiane HADDAG (sofhad)
+ - Bastien THOMAS
+ - Benedikt Lenzen (demigodcode)
+ - Christian Stoller (naitsirch)
+ - Calin Mihai Pristavu
+ - Grégoire Penverne (gpenverne)
+ - Kevin (oxfouzer)
+ - d-ph
+ - MrMicky
- Achilles Kaloeridis (achilles)
- Sebastian Paczkowski (sebpacz)
- Zeeshan Rashid (zeeshan)
+ - Andreas Leathley (iquito)
+ - Andrey Sevastianov
- Evan Shaw
- Claudio Zizza
- - Nico Haase
- - David Marín Carreño (davefx)
- - Christophe V. (cvergne)
- - DemigodCode
- - Mardari Dorel (dorumd)
- - Kuba Werłos (kuba)
- - Arno Geurts
- - Kien Nguyen
- - Nykopol (nykopol)
- - Sofiane HADDAG (sofhad)
- - Minna N
- - Calin Mihai Pristavu
- - Stéphan Kochen
- - Sofien Naas
- - mwsaz
- yclian
- Eric COURTIAL
- - Christian Soronellas (theunic)
+ - Robert Fischer (sandoba)
- Duncan de Boer (farmer-duck)
- Stéphane Delprat
- - Thibault Richard (t-richard)
- Roberto Nygaard
+ - Nico Haase
+ - David Marín Carreño (davefx)
- Michel Hunziker
- - Benjamin Laugueux
- - Mike Meier (mykon)
- - Pascal Helfenstein
- - Guillaume Sainthillier (guillaume-sainthillier)
+ - Alexander Miehe
+ - Kien Nguyen
+ - Nykopol (nykopol)
- stlrnz
- - Sergii Dolgushev (serhey)
- - Sylvain BEISSIER (sylvain-beissier)
+ - Stéphan Kochen
+ - Sofien Naas
+ - mwsaz
- Jake (jakesoft)
- Nikita Nefedov (nikita2206)
- Elan Ruusamäe (glen)
- - Max Rath (drak3)
- Andrii Popov (andrii-popov)
- Harry Walter (haswalt)
- - Richard Bradley
+ - Sergii Dolgushev (serhey)
+ - Sylvain BEISSIER (sylvain-beissier)
- Andrew Neil Forster (krciga22)
+ - Rafał Wrzeszcz (rafalwrzeszcz)
- Douglas Hammond (wizhippo)
- - Martijn Evers
- - Douglas Reith (douglas_reith)
- - Barthold Bos
- - vitaliytv
- - Andrey Sevastianov
- - Xav` (xavismeh)
- - Carl Casbolt (carlcasbolt)
- - Cosmin Sandu
- - Mohamed Gamal
- - Yosmany Garcia (yosmanyga)
- Wybren Koelmans (wybren_koelmans)
- - Ben
- - Franco Traversaro (belinde)
- - Jonatan Männchen
- - Tim Düsterhus
- - Jesper Skytte (greew)
- - Randy Geraads
- - Degory Valentine
- - Gennady Telegin
- - Jan Pintr
- - Bastien THOMAS
- - Benedikt Lenzen (demigodcode)
- - Pavlo Pelekh (pelekh)
- - Christian Stoller (naitsirch)
- - d-ph
- - MrMicky
- - Grégoire Penverne (gpenverne)
- - Kevin (oxfouzer)
- - Robert Fischer (sandoba)
- - Alexander Miehe
+ - Mardari Dorel (dorumd)
+ - Philipp Kolesnikov
+ - Sébastien Santoro (dereckson)
- Simo Heinonen (simoheinonen)
- Simeon Kolev (simeon_kolev9)
- Jason Tan (jt2k)
@@ -1571,11 +1573,9 @@ The Symfony Connect username in parenthesis allows to get more information
- Rostyslav Kinash
- Toni Peric (tperic)
- Kristijan Kanalaš (kristijan_kanalas_infostud)
- - Philipp Kolesnikov
- Renan Rodrigo
- Ruben Jacobs (rubenj)
- Robin Lehrmann
- - Sébastien Santoro (dereckson)
- Marcel Hernandez
- Richard Quadling
- Andrew Codispoti
@@ -1607,130 +1607,194 @@ The Symfony Connect username in parenthesis allows to get more information
- Adán Lobato (adanlobato)
- Emil Masiakowski
- Christian Grasso (chris54721)
+ - Nicolas Badey (nico-b)
+ - Daniel Londero (dlondero)
+ - Diego Campoy
+ - Buster Neece
+ - Thomas Decaux
+ - tarlepp
+ - tinect (tinect)
+ - tirnanog06
+ - Dominik Ritter (dritter)
+ - Julien JANVIER (jjanvier)
+ - Nathan Sepulveda
+ - Ramazan APAYDIN (rapaydin)
+ - hjkl
+ - Tatsuya Tsuruoka
+ - Martynas Narbutas
+ - Noel Light-Hilary
+ - Alexis
+ - enomotodev
+ - Eugene Babushkin (warl)
+ - Patrick Kuijvenhoven
+ - Frank Schulze (xit)
- Erfan Bahramali
- - Anton (bonio)
+ - afaricamp
+ - Oz (import)
+ - Alexis Lefebvre
+ - Gregório Bonfante Borba (bonfante)
- klyk50
- Konstantinos Alexiou
- - Stefan Hüsges (tronsha)
+ - Dan (dantleech)
- Arnaud
- - Moritz Borgmann (mborgmann)
- Christian Jul Jensen
- - Oncle Tom
- - Vivien
+ - Michael Schneider
- Tim Lieberman
- - Ferran Vidal
+ - Guillem Fondin (guillemfondin)
- Gleb Sidora
- Even André Fiskvik
- Lance McNearney
- - Amine Yakoubi
+ - Juanmi Rodriguez Cerón
- hainey
- Attila Szeremi
- - timaschew
+ - Abdul.Mohsen B. A. A
- danilovict2
- - Michael Steininger
- - Claas Augner
- - Kévin Gonella
- - Nathanaël Martel (nathanaelmartel)
- - Michael Telgmann
+ - Rein Baarsma (solidwebcode)
+ - DerStoffel
+ - René Landgrebe
+ - PierreRebeilleau
+ - Helmut Januschka
- Carlos Fernandes (carferdas)
- Nikos Charalampidis
- mohammadreza honarkhah
- Tim Jabs (rubinum)
- Peter Breuls
- Clément R. (clemrwan)
- - ADmad
+ - Osayawe Ogbemudia Terry (terdia)
+ - tamcy
+ - casdal
+ - Janusz Jabłoński (yanoosh)
+ - chillbram
+ - Alexey Buyanow (alexbuyanow)
+ - Cosmin-Romeo TANASE
+ - Pedro Silva
+ - Piergiuseppe Longo
- Mark Beech (jaybizzle)
- - Steffen Persch (n3o77)
+ - Pavel Prischepa
- Serhii Smirnov
- Darryl Hein (xmmedia)
- Xavier REN
- thib92
- Francisco Facioni (fran6co)
- karl.rixon
- - Vladislav (simpson)
- - Alexis MARQUIS
- - Benjamin Dos Santos
+ - Pierre-Henry Soria 🌴 (pierrehenry)
+ - Hoffmann András
+ - ncou
+ - Vlad Dumitrache
+ - Enrico Schultz
+ - Markus Baumer
+ - Rafał Toboła
- Normunds
- Derek Lambert (dlambert)
- - Daniel Tiringer
- - Edvinas Klovas
- - Ahmad El-Bardan
- - Bojan
- - Yann Rabiller (einenlum)
- - Tomasz Szymczyk (karion)
- - Tarjei Huse (symfony_cloud)
+ - Nicolas Lemoine
+ - Paul Matthews
+ - TheMhv
+ - Imangazaliev Muhammad (imangazaliev)
+ - Kirill Lazarev
+ - Matt Daum (daum)
+ - kwiateusz
+ - Daniel Tiringer
+ - Siebe Vanden Eynden
+ - Ahmad El-Bardan
+ - Bojan
+ - Giuseppe Campanelli
+ - Rene de Lima Barbosa (renedelima)
+ - Marcin Szepczynski (szepczynski)
+ - Yannick Vanhaeren (yvh)
+ - Jens Hatlak
+ - Guillaume Loulier (guikingone)
+ - Yann Rabiller (einenlum)
+ - Tomasz Szymczyk (karion)
+ - Jeremy Bush
- Jiri Velek
- d.huethorst
- Dan Wilga
- Bouke Haarsma
- Laurens Laman
- - Tobias Genberg (lorceroth)
+ - Matt Ketmo (mattketmo)
- Mauricio Lopez (diaspar)
- - Andriy
+ - Łukasz Makuch
+ - Arek Bochinski
+ - Vacheslav Silyutin
+ - Sam Williams
+ - Sajad Torkamani
+ - Gary Houbre (thegarious)
+ - shdev
+ - Rafael Tovar
+ - Ostrzyciel
+ - Tadcka
+ - wiseguy1394
+ - Sergiy Sokolenko
- karolsojko
+ - Cedrick Oka
+ - Gerrit Addiks
+ - Sven Nolting
+ - Victor Truhanovich (victor_truhanovich)
- Kasperki
- Peter Gribanov
- - Guillaume Smolders (guillaumesmo)
+ - Jules Lamur
- Daniel Strøm
- - Vlad Dumitrache
- Cristobal Dabed
- - changmin.keum
+ - Adoni Pavlakis (adoni)
- Martijn Croonen
- Patrik Patie Gmitter
- - Benjamin BOUDIER
+ - Kim Laï Trinh
+ - Peter Orosz (ill_logical)
+ - Hubert Moreau (hmoreau)
+ - Daniel Bannert
+ - Dominik Schwind (dominikschwind)
- Thomas Jarrand
- alsar
- - Konrad Mohrfeldt
+ - Gerben Wijnja
- roog
- - Enrico Schultz
+ - Eric Krona
+ - Flinsch
- Qingshan Luo
- - Peter Jaap Blaakmeer
- - Kubicki Kamil (kubik)
- - Nicolas Badey (nico-b)
- - Amin Hosseini (aminh)
- - Daniel Londero (dlondero)
+ - Agata
+ - Joan Cruz
- David Vancl
- - tarlepp
- - Götz Gottwald
+ - Sylvain METAYER
+ - jannick-holm
+ - Amin Hosseini (aminh)
+ - George Yiannoulopoulos
+ - Mateusz Lerczak
+ - William Thomson (gauss)
+ - Karim
- BiaDd
- Christian Neff (secondtruth)
- - Mdsujansarkar
- Ivan Pepelko (pepelko)
- Cesar Scur (cesarscur)
- - tirnanog06
+ - Sergey Stavichenko (sergey_stavichenko)
- Ludek Stepan
- Kamil Musial
- Denis Yuzhanin
- Patrick Luca Fazzi (ap3ir0n)
- - AntoineDly
+ - DaikiOnodera
+ - AbdelatifAitBara
+ - James Cowgill
- Camille Islasse
- - Andrey Ryaguzov
+ - Raito Akehanareru (raito)
- k-sahara
- Sergey Yuferev
- Michal Forbak
- - Ramazan APAYDIN (rapaydin)
- - Noel Light-Hilary
- - jean pasqualini (darkilliant)
+ - satalaondrej
+ - Pitchaya Boonsarngsuk
- Cédric Lahouste (rapotor)
- - Alexis
+ - Gautier Deuette
- Wojciech Gorczyca
- - Eugene Babushkin (warl)
- - afaricamp
+ - Dmytro Liashko
+ - everyx
- Florian Cellier
- - DerStoffel
- Luís Cobucci (lcobucci)
- - Agata
+ - tamar peled
- Jon Green (jontjs)
- - Uwe Kleinmann
- - Taras Girnyk
- - Jeremy Benoist
+ - Ilya Vertakov
- j0k (j0k)
- Cyrille Bourgois (cyrilleb)
- Juga Paazmaya
- zcodes
- - Jens Hatlak
- - Oz (import)
- - Jeremiah VALERIE
+ - Sorin Gitlan (forapathy)
+ - Marvin Butkereit
- JG (jege)
- dangkhoagms (dangkhoagms)
- chesteroni (chesteroni)
@@ -1738,161 +1802,118 @@ The Symfony Connect username in parenthesis allows to get more information
- Brian Freytag
- Daniel Perez Pinazo (pitiflautico)
- Shiro
- - Alexis Lefebvre
- - Guilain (guilain_sylapps)
- - Yannick Bensacq (cibou)
+ - František Bereň
- Paul L McNeely (mcneely)
- - Dan (dantleech)
- - Michael Schneider
+ - Silvio Ginter
- spdionis
- - Guillem Fondin (guillemfondin)
+ - Tadas Gliaubicas (tadcka)
- Pablo Ogando Ferreira
- - Juanmi Rodriguez Cerón
- - Abdul.Mohsen B. A. A
- - Rein Baarsma (solidwebcode)
- - Pascal Hofmann
- - Guillaume Loulier (guikingone)
- - Łukasz Makuch
- - Arek Bochinski
+ - Mostafa
- Frankie Wittevrongel
- Karel Syrový
- - Mati Kochen (mtk)
- Stefan Graupner (efrane)
- Jérôme Dumas
- - Anna Damm
- - Wissame MEKHILEF
- Haritz
- povilas
- Kevin Herrera (kherge)
- - Helmut Januschka
- - Sjoerd Adema
- - Jan Pech (pechynho)
- - Jonas Claes
- - Osayawe Ogbemudia Terry (terdia)
+ - Loenix
+ - Yannick
+ - excelwebzone
+ - Jean de La Bédoyère
+ - Tobias Speicher
- Oliver Hoff
- - Guillermo Gisinger (t3chn0r)
- - jannick-holm
+ - Bert Hekman
+ - Christian Wahler (christian)
- Kevin Decherf
- - Vacheslav Silyutin
- - Maksym Romanowski (maxromanovsky)
- - casdal
- - Cosmin-Romeo TANASE
- - Andrew Marcinkevičius (ifdattic)
+ - Aleksei Lebedev
+ - Andreas Forsblom (aforsblo)
- Alberto Pirovano (geezmo)
- - Pavel Prischepa
+ - marbul
- Dcp (decap94)
- - Imangazaliev Muhammad (imangazaliev)
- Peter Simoncic
- - Pierre-Henry Soria 🌴 (pierrehenry)
+ - Andrei O
- Sébastien Decrême (sebdec)
- - ncou
+ - Pierre Dudoret
- Tiago Garcia (tiagojsag)
- - Audain
- - René Landgrebe
+ - Ambroise Maupate
- Jozef Môstka (mostkaj)
- - Tema Yud
+ - Xavier RENAUDIN
- Roma (memphys)
- Bart Baaten
- Damián Nohales (eagleoneraptor)
- - Antonio Mansilla
- - PierreRebeilleau
- - Kirill Lazarev
- - Matt Daum (daum)
- - Markus Baumer
- - Cedrick Oka
- - Gerrit Addiks
- - scourgen hung (scourgen)
- - Rene de Lima Barbosa (renedelima)
- - Marcin Szepczynski (szepczynski)
- - Yannick Vanhaeren (yvh)
- - Ronny López (ronnylt)
- - m.chwedziak
- - Nicolas Lemoine
- - kwiateusz
+ - cthulhu
+ - Albert Ganiev (helios-ag)
+ - Stefan Moonen
+ - Ismail Faizi (kanafghan)
+ - Oleh Korneliuk
+ - Linas Ramanauskas
+ - Vlad Gapanovich (gapik)
- jonmldr
- Arnaud Buathier (arnapou)
- ollie harridge (ollietb)
+ - Nicolas A. Bérard-Nault
- Andre Eckardt (korve)
- Florent SEVESTRE (aniki-taicho)
- - Nicolas A. Bérard-Nault
- - Mephistofeles
+ - Julia
- Willem Mouwen
- - Giuseppe Campanelli
- - Matt Ketmo (mattketmo)
- - Dominik Ritter (dritter)
- - Julien JANVIER (jjanvier)
+ - gazi04
- neFAST
- - Sam Williams
- - tamcy
- - Tadcka
- - Janusz Jabłoński (yanoosh)
+ - Greg Korba
+ - SnakePin
+ - Dionysis Arvanitis
+ - Valmont Pehaut-Pietri (valmonzo)
+ - Sylvain Dherbecourt
- Nicolas Bastien (nicolas_bastien)
- - Peter Orosz (ill_logical)
- - Victor Truhanovich (victor_truhanovich)
- - Marcos Labad
- - Muhammad Elhwawshy
+ - Erwin Dirks
+ - Kirill Nesmeyanov (serafim)
+ - Philip Dahlstrøm
- Ahmed Shamim Hassan (me_shaon)
- Nasim
- Rémi Leclerc
- Gil Hadad
- - Andreas Allacher
+ - Andreas Heigl (heiglandreas)
- Sébastien COURJEAN
- - Jan Dobrovodský (j-dobr)
+ - Felix Eymonot (hyanda)
- Eric Hertwig
- - chillbram
- - Alexey Buyanow (alexbuyanow)
- - Adoni Pavlakis (adoni)
- - Pedro Silva
- - Piergiuseppe Longo
- - Danilo Silva
- Kirill Saksin
+ - Mario Young
+ - Albion Bame (abame)
+ - Tijs Verkoyen
+ - Gustavo Adrian
+ - Clément Bertillon (skigun)
+ - Łukasz Giza (destroyer)
+ - Danilo Silva
- Klaas Naaijkens
- Sergey Novikov (s12v)
- bch36
- - Michael Zangerle
+ - Knallcharge
- Andrii Boiko
- - Michael Nelson
+ - Ali Tavafi
+ - Juan Ases García (ases)
+ - Piotr Zajac
+ - Sylvain Lorinet
+ - markusu49
- Florian Morello
- Stefano A. (stefano93)
- - Albert Ganiev (helios-ag)
- - Stefan Moonen
- - Ismail Faizi (kanafghan)
- - Colin Michoudet
- - Hubert Moreau (hmoreau)
- - Gerben Wijnja
- - Vyacheslav Slinko
- - Silvio Ginter
- - Aaron Somi
- - Marcin Twardowski
- - BrokenSourceCode
- - Ostrzyciel
- - Knallcharge
- Roger Webb
- - Sven Nolting
- - George Yiannoulopoulos
- - Sergey Stavichenko (sergey_stavichenko)
- - satalaondrej
- - CarolienBEER
- - Erwin Dirks
- - Pitchaya Boonsarngsuk
- - Philip Dahlstrøm
- - Jordi Kroon
+ - Dmitry Hordinky
- Konstantin S. M. Möllers (ksmmoellers)
- Emre YILMAZ
+ - iamvar
+ - Samuel Vogel (samuelvogel)
+ - moldcraft
- Lenar Lõhmus
- v.shevelev
- Georgi Georgiev
- - Gautier Deuette
- - Bogdan
- - Dmytro Liashko
- - Albion Bame (abame)
- - Fabien Perroquin
+ - Rares Sebastian Moldovan (raresmldvn)
- raplider
- llupa
- Daniel Kay (danielkay-cp)
- Matthias Larisch
- Evgeniy Koval
- - Tadas Gliaubicas (tadcka)
+ - Michal Čihař
+ - evgkord
+ - Radek Wionczek (rwionczek)
- Farid Jalilov
- Jeroen van den Nieuwenhuisen
- Abderrahman DAIF (death_maker)
@@ -1901,1914 +1922,1927 @@ The Symfony Connect username in parenthesis allows to get more information
- Sam Malone
- Eno Mullaraj (emullaraj)
- Shaun Simmons
- - Bert Ramakers
- - Martin Komischke
- - Mostafa
- - Constantine Shtompel
+ - Gaylord Poillon (gaylord_p)
+ - robmro27
+ - Valouleloup
+ - Christoforos Ntafos
- Neagu Cristian-Doru (cristian-neagu)
- Jordan de Laune (jdelaune)
- Frank Naegler
- - Martin Schophaus (m_schophaus_adcada)
+ - Valentin VALCIU
- Bruno BOUTAREL
- Mark van den Berg
+ - Thierry Marianne
- Danish Translation Contributor
- Yorkie Chadwick (yorkie76)
- - ivelin vasilev
- vlechemin
- Elías (eliasfernandez)
+ - Ken Stanley
+ - Máximo Cuadros (mcuadros)
+ - Edwin
+ - Per Modin
+ - abulford
+ - André Matthies
+ - Htun Htun Htet (ryanhhh91)
+ - Kamil Piwowarski (cyklista)
+ - uncaught
+ - Yurun
+ - SuRiKmAn
+ - Johannes Müller (johmue)
+ - Wouter de Wild
+ - Orestis
+ - Norbert Schultheisz
+ - Felipy Amorim (felipyamorim)
+ - gr1ev0us
+ - Tayfun Aydin
- Patricia Wagner
- Romain
- Sebastian Göttschkes (sgoettschkes)
- Arkalo2
- Anton Sukhachev (mrsuh)
- - Saif Eddin G
+ - MGDSoft
- Yasmany Cubela Medina (bitgandtter)
- - Gustavo Adrian
- - Clément Bertillon (skigun)
- - Nathanael d. Noblet
- - Pierre Rebeilleau (pierrereb)
+ - Olexandr Kalaidzhy
+ - James Michael DuPont
+ - vlakoff
+ - Marc
+ - David Stone
+ - Patrizio Bekerle
+ - Jonathan Hedstrom
- Damon Jones (damon__jones)
- - Loenix
+ - Cedric BERTOLINI (alsciende)
- Tito Miguel Costa (titomiguelcosta)
- Aurélien Fontaine
- RFreij
- Michał Dąbrowski (defrag)
- Markus Klein
- - Ken Stanley
- - Tobias Speicher
+ - Nico Hiort af Ornäs
- Franz Wilding (killerpoke)
- Jesper Søndergaard Pedersen (zerrvox)
- Ville Mattila
- - Christian Wahler (christian)
+ - Guile (guile)
- Christoph König (chriskoenig)
- Markus Tacker
- Michael Dowling (mtdowling)
- - Maxcastel
- - Andreas Forsblom (aforsblo)
- - wiseguy1394
- - marbul
- - cthulhu
+ - Steve Müller
+ - Ben Miller
+ - Maximilian Berghoff (electricmaxxx)
- Piers Warmers
- Alexandre Segura
- Zuruuh
- - Patrick Kaufmann
+ - Jérémy CROMBEZ (jeremy)
- Matthew J Mucklo
- - Andrei O
- - Pierre Dudoret
+ - Vincent AMSTOUTZ (vincent_amstz)
+ - Kai Dederichs
+ - Johannes Goslar
- Andras Ratz
- Erik van Wingerden
- - Markus Staab
+ - wetternest
+ - Maksym Pustynnikov (pustynnikov)
- Rafał Treffler
+ - Malcolm Fell (emarref)
- David Zuelke
- Fabian Steiner (fabstei)
- Pablo Monterde Perez (plebs)
- Krzysztof Menżyk (krymen)
- Foxprodev
- - Oleh Korneliuk
- - Vlad Gapanovich (gapik)
+ - shreypuranik
+ - Derek Stephen McLean
- Talha Zekeriya Durmuş
- DSeemiller
- - gazi04
+ - Elias Teutschländer
- Vincent LEFORT (vlefort)
- - Edwin
- - SnakePin
+ - David Szkiba
- Victor Garcia
- - Dionysis Arvanitis
- - Valmont Pehaut-Pietri (valmonzo)
+ - Goran (gog)
+ - Darius Leskauskas (darles)
+ - Mikko Ala-Fossi
- Ivan Nemets
- - Bart Wach
+ - Peter Gnodde
- Ivan Nemets
- Sören Bernstein
- Koalabaerchen
- - Kirill Nesmeyanov (serafim)
- - Tristan Kretzer
+ - Hans N. Hjort
+ - Matt Lehner
- George Bateman
- - Mario Young
+ - Daniil Gentili
- DidierLmn
- remieuronews
- julien_tempo1 (julien_tempo1)
- David Christmann
- Christian Flach (cmfcmf)
- - Łukasz Giza (destroyer)
+ - Nicolas Bondoux (nsbx)
- Marcel Siegert
- curlycarla2004
- Moza Bogdan (bogdan_moza)
- Zacharias Luiten
- Halil Hakan Karabay (hhkrby)
- - MiBo
+ - Arne Groskurth
- Loïc Vernet (coil)
- - sualko
- - Sema
- - Muharrem Demirci (mdemirci)
- - Piotr Zajac
- - Rich Sage
- - Sezil
+ - Claude
+ - Marc Bennewitz
+ - Stefano Cappellini (stefano_cappellini)
+ - Ilya Biryukov (ibiryukov)
+ - Josef Hlavatý
+ - Jessica F Martinez
+ - johnstevenson
+ - Thomas Citharel (tcit)
+ - Paweł Stasicki
- sensio
- - Kovacs Nicolas
- - markusu49
+ - dantleech
+ - Robert Worgul
- Felix Marezki
- - Philippe Pichet
- - Rares Sebastian Moldovan (raresmldvn)
- - Michal Čihař
- - ElisDN
+ - Steve Müller
+ - Michael Olšavský
+ - riadh26
+ - Alexander Cheprasov
+ - Zoli Szabó (zoliszabo)
- Víctor Mateo (victormateo)
+ - Ninos
+ - phc
+ - Artfaith
+ - Tomas Kmieliauskas
+ - hamza
- Serge (nfx)
- Stano Turza
+ - Florian Pondepeyre
+ - Ala Eddine Khefifi (nayzo)
+ - Farhad Hedayatifard
- Per Sandström (per)
- - Jiri Korenek
- - evgkord
- devel
+ - Athorcis
+ - Emmanuel Vella (emmanuel.vella)
+ - Alexandre Beaujour
+ - Abudarham Yuval
- Thomas Baumgartner (shoplifter)
- nyro (nyro)
- ssilatel
- - voodooism
+ - Cantepie
+ - seho-nl
+ - Christian López Espínola (penyaskito)
+ - Anton (bonio)
- Moritz Kraft (userfriendly)
- - Radek Wionczek (rwionczek)
+ - Brian Corrigan
+ - Nicolas
+ - Lukas Naumann
+ - Thomason, James
+ - Adam Elsodaney (archfizz)
- Adrien Samson (adriensamson)
- Yevgen Kovalienia
- Aurimas Rimkus (patrikas)
+ - Caligone
+ - Alexandru Bucur
+ - Chris Maiden (matason)
+ - goabonga
+ - Vladislav Rastrusny (fractalizer)
+ - Grayson Koonce
+ - Elliot Anderson (elliot)
+ - Michael Lively (mlivelyjr)
+ - Jake Bishop (yakobeyak)
+ - Adel ELHAIBA (eadel)
+ - Mihail Krasilnikov (krasilnikovm)
+ - Valentin
+ - Arseny Razin
+ - Lin Clark
- Sébastien HOUZÉ
- - Paul Andrieux
- - Jan Eichhorn (exeu)
+ - Lauris Binde (laurisb)
+ - wallach-game
+ - Staormin
- Alexandre Tranchant (alexandre_t)
- - Valouleloup
- - Thierry Marianne
+ - Sébastien HOUZE
+ - Ignacio Alveal
- Xesau
- Grégory Pelletier (ip512)
- - abulford
- - Anton Zagorskii
- - Johannes Müller (johmue)
- - alanzarli
- - dima-gr
- - Nicolas Le Goff (nlegoff)
- - Paul Mitchum (paul-m)
- - pdragun
+ - David Lumaye (tux1124)
+ - Drew Butler
+ - Morimoto Ryosuke
+ - Laurent Negre (raulnet)
+ - neghmurken
+ - Iain Cambridge
+ - Joe Springe
+ - Drew Butler
+ - Peter Mead (petermead)
+ - Nicolas ASSING (nicolasassing)
+ - Kamil Madejski (kmadejski)
+ - Michael Orlitzky
- Jeremy Benoist
- - hamza
- - Olexandr Kalaidzhy
- - Joseph Maarek
- - Juan Luis (juanlugb)
- - Joseph FRANCLIN
- - DerManoMann
- - Matěj Humpál
- - Eric Schildkamp
- - Simon Müller (boscho)
- - Guillaume Aveline
- - Gabriel Moreira
- - James Michael DuPont
- - WaiSkats
- - David Joos (djoos)
- - Arnau González
- - Marc
- - Bjorn Twachtmann (dotbjorn)
- - Justin Rainbow (jrainbow)
- - Julien Pauli
- - uncaught
- - Vitalii
- - Almog Baku (almogbaku)
- - Stephen Lewis (tehanomalousone)
- - azine
- - Denys Voronin (hurricane)
- - Tom Maguire
- - Max Voloshin (maxvoloshin)
- - Troy McCabe
- - Eric Grimois
- - Cedric BERTOLINI (alsciende)
- - sebastian
- - Jos Elstgeest
- - Blackfelix
- - Agustin Gomes
- - Tobias Rautenkranz
- - Maxim Lovchikov
- - orlovv
- - Pablo Schläpfer
- - Nico Hiort af Ornäs
- - Guile (guile)
- - PaoRuby
- - Warwick
- - Ben Miller
- - Jovan Perovic (jperovic)
- - Joel Marcey
- - Pavinthan
- - Milos Colakovic (project2481)
- - Emmanuelpcg
- - Wouter Diesveld
- - Peter Smeets (darkspartan)
- - Maximilian Berghoff (electricmaxxx)
- - Tero Alén (tero)
- - Eric J. Duran
- - Helmer Aaviksoo
- - georaldc
- - Jeroen de Boer
- - Robert-Jan de Dreu
- - Ruslan Zavacky (ruslanzavacky)
- - baron (bastien)
- - simbera
- - Nicolas Schwartz (nicoschwartz)
- - Nick Stemerdink
- - Marco Jantke
- - ondrowan
- - Stanislav Gamaiunov (happyproff)
- - Ronny (big-r)
- - Bruno Nogueira Nascimento Wowk
- - Antonio Angelino
- - Dmitriy Tkachenko (neka)
- - Alexander Menk
- - Ruben Jansen
- - HADJEDJ Vincent (hadjedjvincent)
- - Johannes Goslar
- - Swen van Zanten
- - inwebo veritas (inwebo)
- - Laurent Bachelier (laurentb)
- - martijn
- - Kai Dederichs
- - Bárbara Luz
- - root
- - Sven Scholz
- - Cayetano Soriano Gallego (neoshadybeat)
- - Bruno Ziegler (sfcoder)
- - Karl Shea
- - shreypuranik
- - Radoslaw Kowalewski
- - Derek Stephen McLean
- - Mateusz Lerczak
- - Miloš Milutinović
- - Elias Teutschländer
- - Cantepie
- - Marie Minasyan (marie.minassyan)
- - Ahmed HANNACHI (tiecoders)
- - David Szkiba
- - psampaz (psampaz)
- - Roromix
- - Mathias Geat
- - Jakub Vrána
- - wetternest
- - Nicolas Sauveur (baishu)
- - Matthieu Prat
- - Elliot Anderson (elliot)
- - Goran (gog)
- - Jake Bishop (yakobeyak)
- - William Thomson (gauss)
- - Adel ELHAIBA (eadel)
- - Mihail Krasilnikov (krasilnikovm)
- - Valentin
- - David Lumaye (tux1124)
- - Tischoi
- - Jeffrey Cafferata (jcidnl)
- - Florian Guimier
- - Juan Gonzalez Montes (juanwilde)
- - Mikko Ala-Fossi
- - Adrian Olek (adrianolek)
- - Hans N. Hjort
- - Dale.Nash
- - Frank Jogeleit
- - mwos
- - Nil Borodulia
- - Matt Lehner
- - emilienbouard (neime)
- - Valentin Barbu (jimie)
- - Maksym Pustynnikov (pustynnikov)
- - François Poguet
- - John Nickell (jrnickell)
- - cay89
- - Troy Crawford
- - Benoit Lévêque (benoit_leveque)
- - Michael Orlitzky
- - Matthias Perret (mp3000mp)
- - Maxime AILLOUD (mailloud)
- - Julien Bianchi (jubianchi)
- - dened
- - Andrea Quintino (dirk39)
- - Michael Olšavský
- - Athorcis
- - Jens Schulze
- - Sylvain Just
- - Chris Tickner
- - Ernest Hymel
- - Daniil Gentili
- - Zander Baldwin
- - Wojciech Zimoń
- - Oxan van Leeuwen
- - Anatol Belski
- - gedrox
- - Zachary Tong (polyfractal)
- - Carsten Eilers (fnc)
- - Abdulkadir N. A.
- - Sebastian Ionescu
- - Alexandru Patranescu
- - Daniele Cesarini (ijanki)
- - MGatner
- - Vic D'Elfant (vicdelfant)
- - Marc Lemay (flug)
- - George Sparrow
- - Nicolas Bondoux (nsbx)
- - Alexandre Beaujour
- - Caligone
- - Vincent Pabst
- - Arseny Razin
- - Arne Groskurth
+ - Jakub Chábek
+ - Stefan Kleff (stefanxl)
- Marcel Berteler
- - Simon Jamain
- - Marc Bennewitz
+ - Tomas Liubinas
+ - guangwu
+ - Nicolas Tallefourtané (nicolab)
+ - cybernet (cybernet2u)
+ - Simon / Yami
- Constantine Shtompel
- - Drew Butler
- - Geoffrey Pécro (gpekz)
+ - Robin Kanters (anddarerobin)
+ - ging-dev
+ - SanderSander
+ - Jelizaveta Lemeševa (broken_core)
+ - Martin Pärtel
+ - ryunosuke
+ - Saem Ghani
+ - PLAZANET Pierre (pedrotroller)
+ - Ron Gähler (t-ronx)
+ - Patryk Kozłowski
+ - Omar Yepez (oyepez003)
+ - Vladislav Vlastovskiy (vlastv)
+ - Matthew Foster (mfoster)
+ - Johan Wilfer (johanwilfer)
+ - Peter Schultz
- Alessandro Loffredo
- Marco Pfeiffer
- Eduardo García Sanz (coma)
- - Sergio
- - Michaël VEROUX
- - Dr. Gianluigi "Zane" Zanettini
- - Pontus Mårdnäs
- - Pavel Stejskal (spajxo)
- - Nicolas Appriou
- - Tobias Stöckler
- - ChrisC
- - Ilya Biryukov (ibiryukov)
- - Sergey Fokin (tyraelqp)
- - Yuri Karaban
- - Maxime Aknin (3m1x4m)
- - michal
- - SAY-5
- - zors1
- - detinkin
- - Jessica F Martinez
- - Robert Worgul
- - sez-open
- - Benjamin Ellis
- - Guillaume LECERF
- - riadh26
- - Artem (digi)
- - Ian Littman (iansltx)
- - Mathieu Morlon (glutamatt)
- - Daniel Kozák
- - Ilya Vertakov
- - Norbert Schultheisz
- - Jared Farrish
- - NIRAV MUKUNDBHAI PATEL (niravpatel919)
- - Alexander Cheprasov
- - Victor Macko (victor_m)
- - Oleksii Bulba
- - Justin Reherman (jreherman)
- - Miquel Fontana
- - Roman Orlov
- - Stéphane Seng (stephaneseng)
- - Stas Soroka (stasyan)
- - Stephen Clouse
- - Florian Pondepeyre
- - vltrof
- - Martin Eckhardt
- - G.R.Dalenoort
- - Geoffrey Monte (numerogeek)
- - Benjamin Schultz (bschultz)
- - Karolis Daužickas (kdauzickas)
- - Damien Fayet (rainst0rm)
- - Jean de La Bédoyère
- - Ala Eddine Khefifi (nayzo)
- - Illia Antypenko (aivus)
- - Robin Duval (robin-duval)
- - Janusz Mocek
- - Joas Schilling
- - Jiri Falis
- - Tim van Densen
- - Sylvain Dherbecourt
- - Abudarham Yuval
- - cgonzalez
- - Cyrille Jouineau (tuxosaurus)
- - Nouhail AL FIDI (alfidi)
- - Adam Elsodaney (archfizz)
- - Andreas Heigl (heiglandreas)
- - pkowalczyk
- - Sjors Ottjes
- - Myke79
- - Christoph Kappestein
- - mboultoureau
- - Bernd Matzner (bmatzner)
- - Alex Niedre
- - Kevin Mian Kraiker
- - Markus Reinhold
- - Adam Wójs (awojs)
- - Nerijus Arlauskas (nercury)
- - Aleksandar Dimitrov (netbull)
- - Tom Newby (tomnewbyau)
- - boulei_n
- - matze
- - Jean-Baptiste Nahan
- - Michael Lively (mlivelyjr)
- - Filipe Guerra
- - Denis Klementjev (dklementjev)
- - Alexey Vlasov
- - Lin Clark
- - Peter Mead (petermead)
- - Dan Patrick (mdpatrick)
- - Jakub Chábek
- - Bikal Basnet
- - johnstevenson
- - Benjamin Rosenberger
- - Paul Le Corre
- - Mei Gwilym (meigwilym)
- - muchafm
- - Michael Tibben
- - Nicolas Tallefourtané (nicolab)
- - Manatsawin Hanmongkolchai
- - Javier Espinosa (javespi)
- - Evgeny Efimov (edefimov)
- - Artyum Petrov
- - Diego Aguiar (mollokhan)
- - Asrorbek (asrorbek)
- - Jochen Bayer (jocl)
- - Vincent Chalamon
- - Benjamin Pick
- - Tom Houdmont
- - Simon / Yami
- - Evgeniy Tetenchuk
- - gr8b
- - Jorrit Schippers (jorrit)
- - Jonathan Vollebregt
- - Pierre-Louis LAUNAY
- - Emilien Escalle
- - Roman Tyshyk
- - Roeland Jago Douma
- - Anne-Sophie Bachelard
- - Patryk Kozłowski
- - Lukas Naumann
- - Thomason, James
- - Charles-Édouard Coste
- - Stefan Kleff (stefanxl)
- Fabio Panaccione
- Zlatoslav Desyatnikov
- Damien Vauchel (damien_vauchel)
- - Benjamin Franzke
- - Lane Shukhov
- - Viktor Novikov (nowiko)
- - Yurguis Garcia (yurguis)
- - Vincent AMSTOUTZ (vincent_amstz)
- - misterx
+ - MiBo
+ - Babichev Maxim (rez1dent3)
+ - Vladimir Vasilev (bobahvas)
+ - Roman Tyshyk
+ - alanzarli
+ - Severin Glöckle
+ - Aurélien ADAM (aadam)
+ - Martin Mayer (martin)
+ - mousezheng
+ - Benjamin Franzke
- Volker Killesreiter (ol0lll)
- - Aurelijus Rožėnas
- - Elías Fernández
+ - ZiYao54
+ - Thibaut Chieux
- Felicitus
- - Karim Cassam Chenaï (ka)
- - mrossard
- - Michael Pohlers (mick_the_big)
- - Martins Eglitis
+ - Julien BERNARD
+ - Guillaume Smolders (guillaumesmo)
- Simon Asika
- - Jason Desrosiers
- - Sébastien Lévêque (legenyes)
+ - Quique Porta (quiqueporta)
- Gilles Gauthier
+ - Sergio
+ - Carsten Eilers (fnc)
+ - Dr. Gianluigi "Zane" Zanettini
+ - Abderrahim (phydev)
+ - Beth Binkovitz
+ - Sebastian Utz
+ - Harry Wiseman
+ - Denis Golubovskiy (bukashk0zzz)
+ - Eric Schildkamp
+ - Cyrille Jouineau (tuxosaurus)
+ - taiiiraaa
- adenkejawen
- - Alex Vasilchenko
- - Steven Dubois
- - Ramon Kleiss (akathos)
+ - Niels Robin-Aubertin
+ - Ibon Conesa (ibonkonesa)
+ - Bram Van der Sype (brammm)
+ - Alexey Deriyenko
+ - BRAMILLE Sébastien (oktapodia)
- Thijs Reijgersberg
- - Dmitry Hordinky
+ - Mike Francis
+ - Thomas
+ - Michael Pohlers (mick_the_big)
+ - Martins Eglitis
- db306
- - Jacek Wilczyński (jacekwilczynski)
- - AbdelatifAitBara
- - cybernet (cybernet2u)
- - Max Grigorian (maxakawizard)
+ - Jason Desrosiers
+ - Sébastien Lévêque (legenyes)
- Michaël Marinetti
+ - Sema
- Nicolas Pion
- - Marek Binkowski
+ - Oncle Tom
- Alex Silcock
- - Rodolfo Ruiz
- - Fabien
- - Ondřej Frei
- - Ivo Valchev
- - Stefan Kruppa
- - dmitrijivanenko
- - Starfox64
- - Thibaut Chieux
- - Frederik Schwan
- - Alexander Zogheb
- - Roy-Orbison
- - Ambroise Maupate
- - AmsTaFF (amstaff)
- - Flavien Knuchel (knuch)
- - Gemorroj (gemorroj)
- - jfcixmedia
- - Maerlyn
- - ffd000
- - Malaney J. Hill
- - Saem Ghani
+ - Jelle Bekker (jbekker)
+ - Nguyen Tuan Minh (tuanminhgp)
+ - Asil Barkin Elik (asilelik)
+ - Yurii K
+ - rtek
+ - Bikal Basnet
+ - Paul Mitchum (paul-m)
+ - pdragun
+ - Théo DELCEY
+ - Nicolas Attard (nicolasattard)
+ - Charles-Édouard Coste
+ - Arnau González
+ - Lane Shukhov
+ - Viktor Novikov (nowiko)
+ - Yurguis Garcia (yurguis)
+ - Pierre-Louis LAUNAY
+ - Emilien Escalle
+ - misterx
+ - Menno Holtkamp
+ - Anne-Sophie Bachelard
+ - Will Donohoe
+ - Aurelijus Rožėnas
+ - Elías Fernández
+ - mieszko4
+ - Tema Yud
+ - Jacek Wilczyński (jacekwilczynski)
- Dominik Hajduk (dominikalp)
- Jorge Maiden (jorgemaiden)
- - gstapinato
+ - Luca Genuzio (genuzio)
+ - Antonio Mansilla
+ - Michael Zangerle
+ - Michael Nelson
+ - Nicolas Le Goff (nlegoff)
+ - Joseph FRANCLIN
+ - Marek Binkowski
+ - Mbechezi Nawo
+ - gauss
+ - rhel-eo
+ - Kirill Roskolii
+ - LoginovIlya
+ - Mamikon Arakelyan (mamikon)
+ - Michal Gebauer
+ - Ondřej Frei
+ - Aharon Perkel
+ - Rodolfo Ruiz
+ - Fabien
+ - Joseph Maarek
+ - Juan Luis (juanlugb)
+ - DerManoMann
+ - Benhssaein Youssef
+ - Jack Wright
+ - Simon Müller (boscho)
+ - Guillaume Aveline
+ - Blackfelix
- Jakub Caban (lustmored)
- Vladimir Khramtsov (chrome)
- Mathieu Dewet (mdewet)
+ - Luke Towers
+ - László GÖRÖG
+ - Michael Genereux
+ - CarolienBEER
+ - Peter Dietrich (xosofox)
+ - Tero Alén (tero)
+ - Botond Dani (picur)
+ - AmsTaFF (amstaff)
+ - Tischoi
+ - Jeffrey Cafferata (jcidnl)
+ - jfcixmedia
+ - Maksym Romanowski (maxromanovsky)
+ - jersoe
+ - Pierre Foresi (pforesi)
+ - Francois Martin
+ - Carlos Tasada
+ - Denis Kop
+ - dasmfm
+ - max
+ - Michaël VEROUX
+ - Nsbx
+ - Bogdan
+ - Abdulkadir N. A.
+ - Roman Tymoshyk (tymoshyk)
+ - Jonathan Gough
- Jimmy Leger (redpanda)
- Ahmad Mayahi (ahmadmayahi)
- - Plamen Mishev (pmishev)
+ - Jean-François Morin-Abdullah
- Camille Baronnet
- Kevin Nadin (kevinjhappy)
- - Dan Kadera
+ - Alexandru Patranescu
+ - Bert Ramakers
+ - George Sparrow
+ - Jan Vernieuwe (vernija)
+ - Sandro Hopf (senaria)
+ - Sam Anthony
+ - Illia Antypenko (aivus)
+ - John Edmerson Pizarra
+ - Matt Brunt
+ - Ivan Yivoff
+ - Olivier Laviale (olvlvl)
- Ahmed EBEN HASSINE (famas23)
- Olatunbosun Egberinde
- - James Cowgill
- andersmateusz
- - Martijn Evers
- - Dmitri Petmanson
- - Mbechezi Nawo
- - gauss
- - Andy Raines
- - Kirill Roskolii
- - LoginovIlya
- - Mamikon Arakelyan (mamikon)
- - Joao Paulo V Martins (jpjoao)
- - fduch (fduch)
- - Nikita Starshinov (biji)
+ - Yannick Bensacq (cibou)
+ - Walter Doekes
+ - Laurent Clouet
+ - Robin Duval (robin-duval)
+ - Ivo Valchev
+ - Youpie
+ - wesign (inscrutable01)
- Michael Simonson (mikes)
- - Marcel Pociot (mpociot)
- - Francesco Panina (dasas87)
+ - dmitrijivanenko
+ - Gabriel Moreira
+ - Flavien Knuchel (knuch)
+ - WaiSkats
+ - David Joos (djoos)
+ - azine
+ - Gijs Kunze
+ - Jean-Guilhem Rouel (jean-gui)
+ - sebastian
+ - Alexey Popkov
+ - Starfox64
- Abdiel Carrazana (abdielcs)
+ - RichardGuilland
+ - Javier
+ - Gemorroj (gemorroj)
+ - Vaidas Lažauskas
- Richard van Velzen
- - Daniel González Zaballos (dem3trio)
- - amcastror
+ - Lebnik
+ - Holger Lösken
+ - ffd000
- lerminou
- Eddie Abou-Jaoude (eddiejaoude)
- - Marvin Bölsterli (marvinb)
+ - wusuopu
+ - j4nr6n (j4nr6n)
+ - Malaney J. Hill
+ - Francesco Panina (dasas87)
+ - amcastror
- natechicago
- - Simon Mönch
- - patrickmaynard
- - Frederic Godfrin
- - Arkadiusz Rzadkowolski (flies)
- - Martin Auswöger
+ - Shane McKinley
+ - Louis-Proffit
+ - Olivier Scherler (oscherler)
- Ibrahim Bougaoua
- - Ikko Ashimine
- - dargor980
+ - Joseph Deray
+ - Roland Franssen :)
- Gerrit Drost
- - jwaguet
- - 2manypeople
- - Lucas Bäuerle
- - JuntaTom (juntatom)
- - Adrian Philipp
- - “teerasak”
+ - Bjorn Twachtmann (dotbjorn)
+ - Justin Rainbow (jrainbow)
+ - Martin Komischke
+ - Almog Baku (almogbaku)
+ - Saif Eddin G
- Luis Ramirez (luisdeimos)
- - Gerry Vandermaesen (gerryvdm)
- - Jan Vernieuwe (vernija)
- - Simone Ruggieri
- - iamvar
- - Anthony Ferrara
- - Marco Pfeiffer
- - Aharon Perkel
- - Benhssaein Youssef
- - xaav
- - gechetspr
- - Hadrien Cren (hcren)
- - Matt Farmer
- - dogedede
- - Dmitry (staratel)
- - Ondřej Mirtes (mirtes)
- - gondo (gondo)
+ - Patrick Kaufmann
+ - Fernando Henrique
+ - Simon Ackermann
+ - Ismail Özgün Turan (dadeather)
- Carl Julian Sauter
+ - Troy McCabe
+ - Muriel (metalmumu)
+ - divinity76
+ - Adam
+ - Andrea Sprega (asprega)
+ - Merijn Wijngaard
+ - Atthaphon Urairat
- David Stone
- - Peter Ward
- - Ferenczi Krisztian (fchris82)
- - Michael Genereux
- - jersoe
- - Pierre Foresi (pforesi)
- - Francois Martin
+ - mlazovla
+ - Xavier HAUSHERR
+ - Kristen Gilden
- Guillaume Gammelin
- - Florian Caron (shalalalala)
- - Edwin Hageman
- Romeo
- - Jure (zamzung)
- - Emmanuel Dreyfus
- - Sam Anthony
+ - Peter Bex
+ - Markus Reinhold
+ - Nerijus Arlauskas (nercury)
+ - Lucas Bäuerle
+ - JuntaTom (juntatom)
+ - Adrian Philipp
+ - “teerasak”
- czachor
- - John Edmerson Pizarra
- - Maxwell Vandervelde
- - Helmut Hummel (helhum)
- - Simon Sargeant
- - wusuopu
- Wouter Sioen (wouter_sioen)
- - Martynas Sudintas (martiis)
- - Frank Dekker
- - Yiorgos Kalligeros
- - Carlos Tasada
- - Denis Kop
- - dasmfm
- - max
+ - Angel Fernando Quiroz Campos (angelfqc)
+ - Laurent Moreau
+ - Miquel Fontana
+ - Jos Elstgeest
+ - Cédric Girard
+ - Shyim
- Saem Ghani
- - Nsbx
- - Gavin (gavin-markup)
- - Eduard Bulava (nonanerz)
- - Roman Tymoshyk (tymoshyk)
- - j4nr6n (j4nr6n)
+ - Jan Dobrovodský (j-dobr)
+ - Thorsten Hallwas
+ - Guillaume Royer
+ - Yewhen Khoptynskyi (khoptynskyi)
+ - Chris de Kok
+ - Benjamin Bender
- Sebastian Busch (sebu)
- - Adam Monsen (meonkeys)
+ - devman1917
+ - Michał Strzelecki
+ - Romain Geissler
- Gerhard Seidel (gseidel)
- - dakur
- Nacho Martin (nacmartin)
- - Samuel Vogel (samuelvogel)
- - moldcraft
+ - Anton Kroshilin
+ - Dilek Erkut
+ - Ole Rößner (basster)
+ - Karlos Presumido (oneko)
- John VanDeWeghe
+ - Matt Fields
- Ph3nol
- Bert ter Heide (bertterheide)
- kurozumi (kurozumi)
+ - Peter Ward
+ - Ferenczi Krisztian (fchris82)
+ - Pierrick Charron
- Christoph Krapp
- - vlakoff
+ - Jeroen
+ - Philippe Pichet
+ - Ivan Tse
- izenin
- - Ali Tavafi
- - Juan Ases García (ases)
- - David Stone
- - Patrizio Bekerle
+ - Ulrik Nielsen (mrbase)
- Ionut Cioflan
+ - Mark de Haan (markdehaan)
+ - Wim Godden (wimg)
+ - Gustavo Adrian
- Florian Bogey
+ - Michaël Thieulin (mthieulin)
+ - Wotre
+ - Thomas Bibaut
+ - darnel
+ - HellFirePvP
+ - mmokhi
- Antonio Torres
- Valentin
- - Ryan Rogers
+ - Frédéric Bouchery (fbouchery)
- Nardberjean
- - David Windell
- - Thomas Boileau (tboileau)
- Tobias Anders
- - koyolgecen
- - Rodrigo Díez Villamuera (rodrigodiez)
+ - Flavian Sierk
- Juliano Petronetto
- - helmi
- - Laurent Moreau
+ - Alexander McCullagh (mccullagh)
+ - Fabian Haase
+ - Shane Preece (shane)
- Fabrice Locher
+ - Eric Grimois
- David Négrier (moufmouf)
- - Evgeny Anisiforov
- - Aaron Piotrowski (trowski)
- - Romain Geissler
- Tomáš Polívka (draczris)
- Yoann MOROCUTTI
- - Anton Kroshilin
- - Claude
- - Ole Rößner (basster)
- - Karlos Presumido (oneko)
+ - Florian Caron (shalalalala)
- Arash Tabrizian (ghost098)
- - Matt Fields
- - Mark de Haan (markdehaan)
- - Wim Godden (wimg)
- - Gustavo Adrian
- - Farhad Hedayatifard
- - wallach-game
+ - Boullé William (williamboulle)
+ - Yiorgos Kalligeros
+ - Adam Monsen (meonkeys)
- Simone Di Maulo (toretto460)
- - Pavel Starosek (octisher)
- - Wotre
- - Thomas Bibaut
- - darnel
- - HellFirePvP
- - Artyom Protaskin
- - Andras Debreczeni
- - Jordi Rejas
- - Josef Cech
- - Pierre Tachoire
- - Michal Gebauer
- - Klaas Cuvelier (kcuvelier)
- - Maarten Nusteling (nusje2000)
- - Phillip Look (plook)
- - Dario Savella
- - NorthBlue333
- - Thomas Chmielowiec
+ - cilefen (cilefen)
- sarah-eit
- - Anton Dyshkant
- - Igor Tarasov (polosatus)
+ - Maarten Nusteling (nusje2000)
+ - Benoit Lévêque (benoit_leveque)
- Tom Hart
- Arnaud CHASSEUX
- - Gabriel Birke
- Dmytro Dzubenko
+ - Thomas Chmielowiec
- Christian Morgan
+ - Thomas Hanke
+ - ibasaw
+ - Anton Dyshkant
+ - Gabriel Birke
+ - Colin Michoudet
+ - Tobias Rautenkranz
+ - Maxim Lovchikov
+ - orlovv
+ - Pablo Schläpfer
- Giorgio Premi
- - Romeo
- - Louis-Proffit
- - Olivier Scherler (oscherler)
- Stephen
- - Joseph Deray
- - Benjamin Bender
- - Muriel (metalmumu)
+ - PaoRuby
+ - Warwick
- Benjamin Long
- - Michał Strzelecki
- - Théo DELCEY
- - Nicolas Attard (nicolasattard)
- - pthompson
- - Randel Palu
- - Elias Häußler
- - Gijs Kunze
- - Thomas Hanke
- - yoye
- - Evert Jan Hakvoort
+ - martkop26
+ - Maxime Aknin (3m1x4m)
- Pathpat
- Andriy Prokopenko (sleepyboy)
- Kris Buist
- ReScO
- - Alessandro Tagliapietra (alex88)
- - Daniel Rotter (danrot)
- - Mark Pedron (markpedron)
- - Maciej Schmidt
+ - boite
- Charly Terrier (charlypoppins)
- Sergei Shitikov
- - Paul Ferrett
+ - pthompson
- Thanh Trần
- - heccjj
+ - Sezil
- patrick-mcdougle
- - Tristan Bessoussa (sf_tristanb)
- - Kajetan Kołtuniak (kajtii)
- - Mark Topper
- - craigmarvelley
- - divinity76
- - Adam
- - Tournoud (damientournoud)
- - Rick Prent
- - Jose Manuel Gonzalez (jgonzalez)
- - Nico Hiort af Ornäs
+ - Carsten Nielsen (phreaknerd)
- David Courtey (david-crty)
- Kasper Hansen
- Robert Gurau
- - Alan Chen
+ - Artem (digi)
+ - Randel Palu
+ - Paul Ferrett
+ - Ian Littman (iansltx)
+ - Viet Pham
+ - Mathieu Morlon (glutamatt)
+ - Jovan Perovic (jperovic)
+ - Joel Marcey
+ - Pavinthan
+ - Milos Colakovic (project2481)
+ - Kantin CHARIGNON
+ - Jared Farrish
+ - Peter Smeets (darkspartan)
+ - Tristan Bessoussa (sf_tristanb)
+ - Anne-Julia Seitz
+ - Rick Prent
- Dawid Nowak
- - Mark Spink
- - Pierre Rineau
- - Bogdan Scordaliu
- - Atthaphon Urairat
- - Mo Di (modi)
- - Vladimir Melnik
- Mehdi Mabrouk (mehdidev)
- - Arthur Woimbée
- - Daan van Renterghem
+ - victor-prdh
+ - georaldc
+ - Zdeněk Drahoš
+ - qzylalala
+ - nerdgod
+ - Tomáš Korec (tomkorec)
+ - Kaipi Yann
+ - Adrien Peyre (adpeyre)
+ - Andre Johnson
+ - Peter Trebaticky
+ - timesince
+ - jc
+ - Renan Taranto (renan-taranto)
+ - Ryan Rogers
- Luis Ramón López López (lrlopez)
- - Per Modin
- Vadim Tyukov (vatson)
- - Nowfel2501
+ - Chris Shennan (chrisshennan)
+ - Dominic Luidold
+ - Jeroen de Boer
+ - Robert-Jan de Dreu
+ - Marin Bînzari (spartakusmd)
+ - voodooism
+ - Nicolas Martin (cocorambo)
+ - Oleg Mifle
+ - maxime.perrimond
+ - Franz Liedke (franzliedke)
+ - Ruslan Zavacky (ruslanzavacky)
+ - Thomas Beaujean
+ - simbera
+ - Jakub Vrána
- Franck Ranaivo-Harisoa
- - Christian Seel
- - Kristen Gilden
- - Paul Santus
- - Julius Kiekbusch
- - Nikola Svitlica (thecelavi)
- - sdkawata
- - Artem Oliinyk (artemoliynyk)
- - Ahmed Soliman (ahmedsoliman)
- - André Matthies
- - Htun Htun Htet (ryanhhh91)
- - Jason Schilling (chapterjason)
- - Kacper Gunia (cakper)
- - mark burdett
- - Eric Stern
- - Owen Gray (otis)
- - Mara Blaga
- - Tobias Weinert (tweini)
- - RENAUDIN Xavier (xorrox)
- - Cédric Girard
- - Shyim
- - downace
- - Pierrick Charron
- - Zdeněk Drahoš
- - Jeroen
- - qzylalala
- - Kai Eichinger
- - Bailey Parker
- - Adrien Chinour
- - Andrew Brown
- - Juan M Martínez
- - Mahmoud Mostafa (mahmoud)
- - Rainrider
- - Tony Vermeiren (tony)
- - Artem (nexim)
- - Thorsten Hallwas
- - Faton (notaf)
- - Yewhen Khoptynskyi (khoptynskyi)
- - Chris de Kok
- - Arkadiusz Kondas (itcraftsmanpl)
- - nerdgod
- - timesince
- - Jonathan Gough
- - Dilek Erkut
- - Sepehr Lajevardi
- - Morimoto Ryosuke
- - jc
- - Frédéric Bouchery (fbouchery)
- - victor-prdh
- - Andy Stanberry
- - Flavian Sierk
- - Laurent Negre (raulnet)
- - Renan Taranto (renan-taranto)
- - neghmurken
- - Iain Cambridge
- - Joe Springe
- - Drew Butler
- - Chris Shennan (chrisshennan)
- - Thomas Beaujean
- - Shane Preece (shane)
+ - Nicolas Schwartz (nicoschwartz)
- Peter Thompson (petert82)
- - Alexander McCullagh (mccullagh)
- - Marin Bînzari (spartakusmd)
- - Asrorbek Sultanov
- - Nicolas Martin (cocorambo)
- - Oleg Mifle
- - maxime.perrimond
- - Franz Liedke (franzliedke)
+ - Marco Jantke
+ - Jason Stephens
+ - Nicolas Sauveur (baishu)
+ - Jairo Pastor
+ - David Windell
+ - Thomas Boileau (tboileau)
+ - James Sansbury
+ - Matěj Humpál
+ - Rodrigo Díez Villamuera (rodrigodiez)
+ - helmi
+ - henderkes
+ - Дмитрий Пацура
- Bernard van der Esch (adeptofvoltron)
- eminjk
- Dennis Fehr
- - Jason Stephens
+ - Rini Misini
- robin.de.croock
- Alex Carol (picard89)
- - Péter Buri (burci)
+ - Talel Zighni
- maxperei
- Lyubomir Grozdanov (lubo13)
- - omerida
- - Jakub Simon
- - Danil Khaliullin (bifidokk)
- - Yohan Giarelli (frequence-web)
- - Andrew Clark (tqt_andrew_clark)
- - Yoann Chocteau (kezaweb)
- - Oksana Kozlova (oksanakozlova)
- - Jairo Pastor
- - Ionel Scutelnicu (ionelscutelnicu)
- - James Sansbury
- - Vladislav Nikolayev (luxemate)
+ - Alexandre Pavy
+ - Jiri Falis
+ - Nikola Svitlica (thecelavi)
+ - Artem Oliinyk (artemoliynyk)
+ - Kacper Gunia (cakper)
+ - mark burdett
+ - Jm Aribau (jmaribau)
+ - Kousuke Ebihara (co3k)
+ - Dmitry Simushev
+ - martijn
+ - Thomas BERTRAND (sevrahk)
+ - Valentin PONS (valx76)
+ - Tom Panier (neemzy)
+ - Pierre Sv (rrr63)
+ - Christian
+ - Raphael de Almeida (raphaeldealmeida)
+ - Romain Pierre
+ - Dan Ordille (dordille)
+ - Reda DAOUDI
+ - Andrew Carter (andrewcarteruk)
+ - Thomas Dubuffet (thomasdubuffet)
+ - mlpo (mlpo)
+ - Stephanie Trumtel (einahp)
+ - Serhiy Lunak (slunak)
+ - Pontus Mårdnäs
- Philipp
- LubenZA
- Sagrario Meneses
- - henderkes
- - Rini Misini
+ - Mohammad Eftekhari (bluemmb)
+ - scourgen hung (scourgen)
- BilgeXA
- Matthew (mattvick)
- Bhujagendra Ishaya
- Marcus Stöhr (dafish)
+ - Stanislav Gamaiunov (happyproff)
+ - Ronny (big-r)
+ - Bruno Nogueira Nascimento Wowk
+ - Ivo Valchev
+ - Dmitriy Tkachenko (neka)
+ - Misha Klomp (mishaklomp)
+ - Eric Stern
+ - Schvoy Norbert (schvoy)
+ - Phillip Look (plook)
+ - Dario Savella
+ - Owen Gray (otis)
+ - stollr
+ - Tobias Weinert (tweini)
+ - RENAUDIN Xavier (xorrox)
+ - Thomas Ploch
+ - Benjamin Rosenberger
+ - Ruben Jansen
+ - Stefanos Psarras (stefanos)
+ - Matt Wells
+ - Guido Donnari
- Nicolas Appriou
- Cláudio Cesar
- Richard Čepas
- - Chansig
- - soyuka
- - Léo VINCENT
- - Frédéric G. Marand (fgm)
- - Joshua Behrens (joshuabehrens)
- - Aleksandr Dankovtsev
- - Mert Simsek (mrtsmsk0)
- - Ari Pringle (apringle)
- - Karolis
- - Mohammad Ali Sarbanha (sarbanha)
- - Raul Rodriguez (raul782)
- - Kenjy Thiébault (kthiebault)
- - PLAZANET Pierre (pedrotroller)
- - Andreas
+ - Alessandro Tagliapietra (alex88)
+ - Willem Verspyck
+ - Mark Pedron (markpedron)
+ - Maciej Schmidt
+ - Manatsawin Hanmongkolchai
- Wim Molenberghs (wimm)
- - Valérian Lepeule (vlepeule)
- - Alexey Berezuev
+ - Evgeny Efimov (edefimov)
+ - Jonathan (grafikart)
- Dmitrii Baranov
- - Daniel Tschinder
- - Dalibor Karlović
- - RAHUL K JHA
- - Roberto Guido
- - martkop26
- - Safonov Nikita (ns3777k)
- - aim8604
- - Szymon Tarasiński
- - Sylvain Lorinet
- - SuRiKmAn
- - Yann LUCAS (drixs6o9)
- - Fabien D. (fabd)
- - Eduardo Rocha
- - Brad Bayliss
- - Alexandre Pavy
- - Konrad
- - Aaron Scherer (aequasi)
+ - gndk
+ - dened
+ - Adrien Chinour
- Gilles Doge (gido)
- - Clément
- - Stakovicz
+ - david-binda
+ - Xavier Amado (xamado)
+ - Dustin Wilson
+ - Charly Goblet (_mocodo)
+ - Evgeniy Tetenchuk
+ - Yoann MOROCUTTI
+ - gstapinato
- Paulius Jarmalavičius (pjarmalavicius)
- - Romain Jacquart (romainjacquart)
+ - Pierre Schmitz
- jack.thomas (jackthomasatl)
- - Andreas Kleemann (andesk)
- - Ema Panz
+ - Lars Ambrosius Wallenborn (larsborn)
+ - Jens Schulze
+ - Roy-Orbison
- Nico Müller (nicomllr)
- Charles Sanquer (csanquer)
- root
- Paweł Tomulik
- - Julien Boudry
- - Sébastien Armand (khepin)
- - Niels Robin-Aubertin
- - Ibon Conesa (ibonkonesa)
- - Rutger Hertogh
- - David Barratt
+ - Ulrik McArdle
- Eric Caron
- - Kantin CHARIGNON
- - Matthew Covey
- - Bermon Clément (chou666)
- - Ondřej Frei
+ - Marvin Bölsterli (marvinb)
+ - Wang Jingyu
+ - Jaymin G
+ - thecaliskan
+ - Tomáš Votruba
+ - HADJEDJ Vincent (hadjedjvincent)
+ - Evrard Boulou
+ - Swen van Zanten
+ - Andrew Brown
+ - Juan M Martínez
+ - inwebo veritas (inwebo)
+ - Laurent Bachelier (laurentb)
+ - Maerlyn
+ - alekLexis
+ - Bárbara Luz
+ - Mickaël BULIARD
+ - Sven Scholz
+ - Cayetano Soriano Gallego (neoshadybeat)
+ - Matteo Galli
- Piotr Antosik (antek88)
- - David Wolter (davewww)
- - Szymon Kamiński (szk)
- - Sebastian Drewer-Gutland (sdg)
- - Kevin Meijer
- - Yurun
- - Victor Prudhomme
- - Léon Gersen
- - Evgeny (disparity)
- - Michael J
- - Oleg Krasavin (okwinza)
- - Ruud Seberechts
- - abluchet
- - Schuyler Jager (sjager)
- - Nicholas Ruunu (nicholasruunu)
- - Alejandro Diaz Torres
- - mlazovla
- - Valentin PONS (valx76)
- - Dmitry Simushev
- - Jorge Vahldick (jvahldick)
- - Talel Zighni
- - Sortex
- - enekochan (enekochan)
- - Max Summe
- - Bastien Picharles
- - Ulrik Nielsen (mrbase)
- - Karim Miladi
- - Andreas Hasenack
- - Storkeus
- - ging-dev
- - Guillaume Royer
- - Jelizaveta Lemeševa (broken_core)
- - Martin Pärtel
- - ryunosuke
- - Anthony Moutte
- - Ahmad Al-Naib
- - Axel Venet
- - Viet Pham
- - Marcello Mönkemeyer (marcello-moenkemeyer)
- - Aleksey Prilipko
- - Willem Verspyck
- - Nicolas Séverin
- - devman1917
- - Jan Vernarsky
- - czachor
- - Axel Venet
- - Ikhsan Agustian
- - Ron Gähler (t-ronx)
- - Nicolás Alonso
- - Tomasz (timitao)
- - Benedict Massolle (bemas)
- - Kevin Auivinet
- - Kris Kelly
- - Ross Motley (rossmotley)
- - Reda DAOUDI
- - Andrew Carter (andrewcarteruk)
- - Tomáš Korec (tomkorec)
- - Kaipi Yann
- - Adrien Peyre (adpeyre)
- - Andre Johnson
- - Peter Trebaticky
- - Thomas Dubuffet (thomasdubuffet)
- - Dmitry Danilson
- - Dominic Luidold
- - Alexander Bauer (abauer)
- - Amaury Leroux de Lens (amo__)
- - Matthew Foster (mfoster)
- - Mark Ogilvie
- - mshavliuk
- - Yendric
- - bill moll
- - Liverbool (liverbool)
- - Taras Hinyk
- - fabios
- - Mike Francis
- - Peter Schultz
- - Aleksejs Kovalovs (aleksejs1)
- - Aurélien ADAM (aadam)
- - Martin Mayer (martin)
- - Tyler Stroud
- - ureimers
- - Zan Baldwin (zanderbaldwin)
- - Tom Panier (neemzy)
- - Pablo Eliezer
- - Christian
- - Raphael de Almeida (raphaeldealmeida)
- - Robert Queck
- - samuel laulhau (lalop)
- - oscartv
- - Valentin
- - Christoforos Ntafos
- - Abderrahim (phydev)
- - Fleuv
- - Maria Grazia Patteri
- - Nguyen Tuan Minh (tuanminhgp)
- - Asil Barkin Elik (asilelik)
- - Yurii K
- - Dan Ordille (dordille)
- - Gregório Bonfante Borba (bonfante)
- - Máximo Cuadros (mcuadros)
- - Kamil Piwowarski (cyklista)
- - mlpo (mlpo)
- - Stephanie Trumtel (einahp)
- - Serhiy Lunak (slunak)
- - Stefanos Psarras (stefanos)
- - Matt Wells
- - Guido Donnari
- - MGDSoft
- - rewrit3
- - Malcolm Fell (emarref)
- - Dustin Wilson
- - Charly Goblet (_mocodo)
- - Peter Gnodde
- - Christian López Espínola (penyaskito)
- - Matthew Burns
- - Ilya Chekalsky
- - Florent Olivaud
- - Dennis Jaschinski (d.jaschinski)
- - alex
- - Thomas Baccelli (atomiix)
- - Igor Kokhlov (verdet)
- - Thomas
- - Chris Maiden (matason)
- - goabonga
- - Rémy LESCALLIER
- - Koray Zorluoglu
- - Vladislav Rastrusny (fractalizer)
- - Anne-Julia Seitz
- - Tomáš Votruba
- - phuc vo (phucwan)
- - David Lima
- - Beno!t POLASZEK
- - Markus Thielen
- - Lajos Veres (vlajos)
- - Adriaan Zonnenberg
- - Steve Preston
- - Alexandre Fiocre (demos77)
- - Malte Schlüter
- - Vallel Blanco
- - Fred Cox
- - Mohammad Eftekhari (bluemmb)
- - Ondřej Führer
- - Ivo Valchev
- - julien.galenski
- - Brad Treloar
- - Holger Lösken
- - ShiraNai7
- - Misha Klomp (mishaklomp)
- - Pavol Tuka
- - Schvoy Norbert (schvoy)
- - Lucas Bustamante
- - Daniel Konstantinov
- - JK Groupe
- - ivan
- - stollr
- - Botond Dani (picur)
- - Daniel Richter (richtermeister)
- - Brian Freytag
- - Jeffrey Moelands (jeffreymoelands)
- - gndk
- - Pavel Barton
- - Jonas Hünig
- - Johan
- - Javier Alfonso Bellota de Frutos
- - Walter Doekes
- - Alexander Varwijk
- - david-binda
- - Xavier Amado (xamado)
- - Youpie
- - wesign (inscrutable01)
- - Volker (skydiablo)
- - gitlost
- - Yoann MOROCUTTI
- - Adrien Moiruad
- - Arend-Jan Tetteroo
- - Gonzalo Míguez
- - Stan Jansen (stanjan)
- - Bruno Rodrigues de Araujo (brunosinister)
- - abunch
- - Dominik Kohler
- - Michal Trojanowski
- - Dominik Pesch (dombn)
- - g123456789l
- - Matthias Neid
- - ProgMiner
- - Keri Henare (kerihenare)
- - Toby Griffiths (tog)
- - Marcin Nowak
- - Hugo Sales
- - alangvazq
- - Tristan Pouliquen
- - Olaf Klischat
- - Alexandr Samuilov
- - Ariel J. Birnbaum
- - Adam Klvač
- - Andrzej
- - Mathieu TUDISCO (mathieutu)
- - Pawel Smolinski
- - Daniel Mecke (daniel_mecke)
- - Ivo
- - Christian Eikermann
- - Seyedramin Banihashemi (ramin)
- - Ilia Sergunin (maranqz)
- - Nicolas Macherey
- - Rubén Calvo (rubencm)
- - Nicholas Byfleet (nickbyfleet)
- - Antanas Arvasevicius
- - Rénald Casagraude (rcasagraude)
- - Walther Lalk
- - Johannes
- - Jeroen de Graaf
- - Javier
- - Serhii Bondarenko
- - Vaidas Lažauskas
- - Kevin Frantz
- - guangwu
- - Hugo Posnic
- - Peter Zwosta
- - Simon Frost
- - Zayan Goripov
- - michalmarcinkowski
- - Henne Van Och (hennevo)
- - Christiaan Wiesenekker
- - Ramon Ornelas (ramonornela)
- - Florian "Ori" Neveu (fnev-eu)
- - Krzysztof Przybyszewski (kprzybyszewski)
- - parinz1234
- - Matt Emerson
- - paullallier
- - Alex Demchenko
- - Lars Ambrosius Wallenborn (larsborn)
- - Angel Fernando Quiroz Campos (angelfqc)
- - Beth Binkovitz
- - Pawel Szczepanek (pauluz)
- - Harry Wiseman
- - Denis Golubovskiy (bukashk0zzz)
- - Jelle Bekker (jbekker)
- - Raphael Hardt
- - Julien BERNARD
- - SanderSander
- - MARYNICH Mikhail (mmarynich-ext)
- - Severin Glöckle
- - John Doe (theboat)
- - Ulrik McArdle
- - Stelian Mocanita (stelian)
- - AnotherSymfonyUser (arderyp)
- - michael.kubovic
- - rtek
- - Vladislav Krupenkin (ideea)
- - Adam Kiss
- - Jay Severson
- - BRAMILLE Sébastien (oktapodia)
- - Stefano Cappellini (stefano_cappellini)
- - Kévin
- - Artfaith
- - Nicolas
- - Menno Holtkamp
- - Lin Lu
- - Stuart Fyfe
- - Luciano Mammino (loige)
- - Lachlan Arthur
- - Gerard Berengue Llobera (bere)
- - Daniele Orru' (danydev)
- - Simon Bouland (bouland)
- - Chris
- - Frederik Schmitt
- - ged15
- - Albert Bakker (babbert)
- - Peter Dietrich (xosofox)
- - Tomaz Ahlin
- - Ahto Türkson
- - arduanov
- - Serhii Polishchuk (spolischook)
- - Viktoriia Zolotova
- - Michael Gwynne
- - Ivan Tse
- - Marco
- - Vincent
- - Amine Matmati
- - Tom Kaminski
- - mlievertz
- - Emirald Mateli
- - Aarón Nieves Fernández
- - Linnaea Von Lavia
- - Marc Jauvin
- - Jaymin G
- - Jorge Martin (jorgemartind)
- - thecaliskan
- - Konstantin Chigakov
- - Evrard Boulou
- - Alex Plekhanov
- - Brian Graham (incognito)
- - Julien Sanchez (sumbobyboys)
- - Anamarija Papić (anamarijapapic)
- - es
- - Lebnik
- - Anton Babenko (antonbabenko)
- - bahram
- - Wim Hendrikx
- - Arrilot
- - Philippe Degeeter (pdegeeter)
- - Jean-Guilhem Rouel (jean-gui)
- - Ben Oman
- - Alexey Popkov
- - Andrew Coulton
- - Jonathan Poston
- - Дмитрий Пацура
- - Marcus Jaschen
- - Kousuke Ebihara (co3k)
- - Wang Jingyu
- - Giuseppe Arcuti
- - Jan Pintr
- - linh
- - Daniel Basten (axhm3a)
- - Mario Blažek (marioblazek)
- - Kevin Vergauwen (innocenzo)
- - benkarrer-lab
- - Thomas BERTRAND (sevrahk)
- - Bart Reunes (metalarend)
- - Ahmed Abdou
- - Bruno Baguette
- Ioana Hazsda (ioana-hazsda)
- - Patrick Berenschot
- - Mihai Nica (redecs)
- - boite
- - Arrakis (arrakis)
- - alekLexis
- - Matteo Galli
- - Ovidiu Gabriel Gireada (ovidiugireada)
- - Dmitrii Lozhkin
- - Penny Leach
- - Antoine (antoinela_adveris)
- - xdavidwu
- - benatespina (benatespina)
- - Carsten Nielsen (phreaknerd)
- - brian978
- - Ivan Tse
- - Till Hörner
- - Baptiste Leduc (bleduc)
- - Dennis Smink (dsmink)
- - Brandon Antonio Lorenzo
- - Curtis (ccorliss)
- - Peter van Dommelen
- - inspiran
- - Nicolas Valverde
- - Kevin Verschaeve (keversc)
- - dlorek
- - Jérôme Nadaud (jnadaud)
- - j.schmitt
- - Simon Ackermann
- - Thomas Ferney (thomasf)
- - toxxxa
- - djama
- - Arvids Godjuks (psihius)
- - Paul Clegg (clegginabox)
- - Jeremy Bush
- - Philipp Hoffmann (philipphoffmann)
- - Gary Houbre (thegarious)
- - shdev
- - Jody Mickey (jwmickey)
- - František Bereň
- - Yannick
- - excelwebzone
- - Choong Wei Tjeng (choonge)
- - Bert Hekman
- - Maciej Zgadzaj
- - Kevin EMO
- - Fraller Balázs (fracsi)
- - Vincent Godé
- - Jordi Llonch (jordillonch)
- - Linas Ramanauskas
- - Julia
- - Greg Korba
- - Your Name
- - Ismo Vuorinen
- - Stefan Koopmanschap
- - Pedro Magalhães (pmmaga)
- - Maxime PINEAU
- - Rik van der Heijden
- - Orestis
- - Felipy Amorim (felipyamorim)
- - Jordan Hoff
- - gr1ev0us
- - Tayfun Aydin
- - karstennilsen
- - Jonathan Hedstrom
- - Steve Müller
- - NothingWeAre
- - Alan Scott
- - Emmanuel Vella (emmanuel.vella)
- - Kirk Madera
- - Citia (citia)
- - Oliver Eglseder
- - Dan Harper
- - mindaugasvcs
- - Alexey Deriyenko
- - Alexandre Melard
- - David Ronchaud
- - Artem Kolesnikov (tyomo4ka)
- - Christian Schiffler
- - Dariusz Czech
- - Sait KURT
- - adars
- - Paweł Stasicki
- - Nicolas ASSING (nicolasassing)
- - Kamil Madejski (kmadejski)
+ - Bruno Ziegler (sfcoder)
+ - Karl Shea
+ - Radoslaw Kowalewski
+ - Victor Macko (victor_m)
+ - Jérôme Nadaud (jnadaud)
+ - Marie Minasyan (marie.minassyan)
+ - Ahmed HANNACHI (tiecoders)
+ - Philipp Hoffmann (philipphoffmann)
+ - psampaz (psampaz)
+ - Martijn Evers
+ - Mathias Geat
+ - Andy Raines
+ - Jody Mickey (jwmickey)
+ - Sebastian Drewer-Gutland (sdg)
+ - Victor Prudhomme
+ - Léon Gersen
+ - Evgeny (disparity)
+ - Michael J
+ - Oleg Krasavin (okwinza)
+ - Choong Wei Tjeng (choonge)
+ - Jordi Llonch (jordillonch)
+ - Your Name
+ - Baptiste Leduc (bleduc)
+ - dargor980
+ - Jakub Simon
+ - Antonio Angelino
+ - Florian Guimier
+ - Alexander Menk
+ - Nicholas Ruunu (nicholasruunu)
+ - Matt Farmer
+ - Juan Gonzalez Montes (juanwilde)
+ - dogedede
+ - Adrian Olek (adrianolek)
+ - gondo (gondo)
+ - Dale.Nash
+ - phuc vo (phucwan)
+ - Eduard Bulava (nonanerz)
+ - Patrick Berenschot
+ - Beno!t POLASZEK
+ - Markus Thielen
+ - Lajos Veres (vlajos)
+ - Adriaan Zonnenberg
+ - Danil Khaliullin (bifidokk)
+ - Yohan Giarelli (frequence-web)
+ - Andrew Clark (tqt_andrew_clark)
+ - Yoann Chocteau (kezaweb)
+ - Oksana Kozlova (oksanakozlova)
+ - Dan Kadera
+ - matze
+ - Alexandre Fiocre (demos77)
+ - jwaguet
+ - mwos
+ - Nil Borodulia
+ - Laurent Legaz
+ - Nikita Starshinov (biji)
- Gusakov Nikita (hell0w0rd)
- - Ksaveras Šakys (xawiers)
- - Vedran Mihočinec (v-m-i)
- - MrNicodemuz
- - Gunnar Lium (gunnarlium)
- - Steve Hyde
- - Skorney
+ - Jorge Vahldick (jvahldick)
+ - Storkeus
+ - Andy Stanberry
+ - emilienbouard (neime)
+ - Evert Jan Hakvoort
+ - François Poguet
- Soha Jin
- - Sebastian Schwarz
- - Matthieu
- - Tomas Liubinas
- - kaiwa
- - CDR
- - Roman Igoshin (masterro)
+ - Vallel Blanco
+ - Gerry Vandermaesen (gerryvdm)
- Miguel Vieira
- - ConneXNL
- - Jules Matsounga (hyoa)
- - Nick Chiu
- - Jonny Schmid (schmidjon)
- - Manuele Menozzi
- - Yann (yann_eugone)
- - Martin Mandl (m2mtech)
- - Benjamin Paap (benjaminpaap)
- - calm329
- - Dave Heineman (dheineman)
+ - Ondřej Mirtes (mirtes)
+ - Daniel Richter (richtermeister)
+ - Brian Freytag
+ - Maxwell Vandervelde
- Taylor Otwell
- - Antoine Beyet
- - Vladimir Belozyorov
+ - Pavel Barton
+ - Jonas Hünig
+ - Johan
+ - Javier Alfonso Bellota de Frutos
+ - Adrien Moiruad
+ - Arend-Jan Tetteroo
+ - Gonzalo Míguez
+ - Ionel Scutelnicu (ionelscutelnicu)
+ - Helmut Hummel (helhum)
- Adrian
- - InbarAbraham
- - Ismail Özgün Turan (dadeather)
- - Thomas Rothe
+ - cay89
+ - Troy Crawford
+ - Anthony Moutte
+ - Ahmad Al-Naib
+ - Paul Santus
+ - Jeremy Pollard
+ - Raphael Hardt
+ - soyuka
+ - Gavin (gavin-markup)
+ - Frédéric G. Marand (fgm)
+ - Raul Rodriguez (raul782)
+ - koyolgecen
- Vladimir Chernyshev (volch)
- - Andrea Sprega (asprega)
- - Albert (aprat84)
- - Shaun Simmons
- - Wojciech Sznapka
- - Jan Marek (janmarek)
- - Jeroen De Dauw (jeroendedauw)
+ - Mihai Nica (redecs)
- Thomas Chmielowiec (chmielot)
+ - Kajetan Kołtuniak (kajtii)
+ - Aaron Piotrowski (trowski)
+ - Pavel Starosek (octisher)
- Patrick Carlo-Hickman
- - chispita
+ - Martins (kevin_martins)
+ - benatespina (benatespina)
+ - Vladimir Melnik
+ - Mark Spink
+ - Mo Di (modi)
+ - yoye
+ - Bruno Rodrigues de Araujo (brunosinister)
+ - abunch
+ - Plamen Mishev (pmishev)
+ - Michal Trojanowski
+ - Toby Griffiths (tog)
+ - Marcin Nowak
+ - Hugo Sales
+ - Andrea Quintino (dirk39)
+ - czachor
+ - Sylvain Just
+ - Chris Tickner
+ - Joas Schilling
+ - Arthur Woimbée
+ - Daan van Renterghem
+ - Nowfel2501
+ - Ernest Hymel
+ - Dmitry Danilson
+ - alangvazq
+ - Mark Topper
+ - Olaf Klischat
+ - xaav
+ - Ariel J. Birnbaum
+ - Dominik Kohler
+ - Andrzej
+ - Pierre Rineau
+ - Simon Mönch
+ - Mathieu TUDISCO (mathieutu)
+ - Pawel Smolinski
+ - Julius Kiekbusch
+ - Ivo
+ - cgonzalez
+ - Christian Eikermann
+ - Zander Baldwin
+ - Wojciech Zimoń
+ - Oxan van Leeuwen
+ - Anatol Belski
+ - gedrox
+ - Zachary Tong (polyfractal)
+ - sdkawata
+ - Daniel Rotter (danrot)
+ - Sebastian Ionescu
+ - Ikhsan Agustian
+ - Kenjy Thiébault (kthiebault)
+ - Roeland Jago Douma
+ - Nicolas Macherey
+ - Rubén Calvo (rubencm)
+ - Nicholas Byfleet (nickbyfleet)
+ - Antanas Arvasevicius
+ - Rénald Casagraude (rcasagraude)
+ - Walther Lalk
+ - Kevin Frantz
+ - downace
+ - Kai Eichinger
+ - Tomasz (timitao)
+ - Daniele Cesarini (ijanki)
+ - Bailey Parker
+ - Mahmoud Mostafa (mahmoud)
+ - Vic D'Elfant (vicdelfant)
+ - Marc Lemay (flug)
+ - Joshua Behrens (joshuabehrens)
- Andrei Mateescu
- - SALMERON Valentin (vasal)
+ - Tony Vermeiren (tony)
+ - Pavel Stejskal (spajxo)
+ - Nicolas Appriou
+ - Tobias Stöckler
+ - ChrisC
- allison guilhem
- - Marin Nicolae
- - Vitali Tsyrkin
- - sam-bee
- Andrii Serdiuk (andreyserdjuk)
- - Uladzimir Tsykun
- - Oleg Sedinkin (akeylimepie)
- Adrian Brajkovic
- - Joris Garonian (grifx)
- - WoutervanderLoop.nl
+ - Kris Kelly
+ - Ross Motley (rossmotley)
+ - Amaury Leroux de Lens (amo__)
+ - Dalibor Karlović
- Florian Pondepeyre
- - Pchol
- - Luca Genuzio (genuzio)
- - Rafael Tovar
- - rhel-eo
- - Jack Wright
- - Andrey Helldar
- - mmokhi
- - Simon Paarlberg (blamh)
+ - Roberto Guido
+ - Sergey Fokin (tyraelqp)
- Nikita Popov (nikic)
- - Daniel Kolvik (dkvk)
+ - Simon Frost
+ - Artem (nexim)
+ - michalmarcinkowski
+ - Faton (notaf)
+ - Christiaan Wiesenekker
+ - Ramon Ornelas (ramonornela)
+ - Alexander Bauer (abauer)
+ - Krzysztof Przybyszewski (kprzybyszewski)
+ - Yuri Karaban
+ - Xeno Suter
+ - michal
+ - oscartv
+ - Valentin
+ - mshavliuk
+ - G/
+ - Maria Grazia Patteri
+ - zors1
+ - detinkin
+ - Taras Hinyk
+ - fabios
+ - sez-open
+ - Benjamin Ellis
+ - Guillaume LECERF
- jim
- - Hein Zaw Htet™
- - Pierre Geyer (ptheg)
- - steveYeah
- - ergiegonzaga
- - Kurt Thiemann
- - avi123
+ - Patrick Janzen
+ - Asrorbek Sultanov
+ - Péter Buri (burci)
+ - Lin Lu
+ - Rainrider
+ - omerida
+ - parinz1234
+ - Yann LUCAS (drixs6o9)
+ - Daniel Kozák
+ - NIRAV MUKUNDBHAI PATEL (niravpatel919)
- xammmue
- - Nicolas Jourdan (nicolasjc)
- - pizzaminded
+ - Vladislav Nikolayev (luxemate)
+ - Oleksii Bulba
+ - Justin Reherman (jreherman)
+ - Chansig
+ - Roman Orlov
+ - Stéphane Seng (stephaneseng)
+ - Stas Soroka (stasyan)
+ - Stephen Clouse
- Chris Tiearney
- - JakeFr
- - Stephan Wentz (temp)
- - César Suárez (csuarez)
- - Olivier Laviale (olvlvl)
- - Dariusz Ruminski
- - demeritcowboy
+ - vltrof
+ - Matt Emerson
+ - paullallier
+ - Martin Eckhardt
+ - G.R.Dalenoort
+ - Geoffrey Monte (numerogeek)
+ - Benjamin Schultz (bschultz)
+ - Karolis Daužickas (kdauzickas)
+ - Damien Fayet (rainst0rm)
+ - Léo VINCENT
- Shrey Puranik
- - zolikonta
- Radosław Benkel
+ - CDR
+ - Janusz Mocek
+ - Fabien D. (fabd)
+ - Aleksandr Dankovtsev
+ - Valérian Lepeule (vlepeule)
- Sergii Dolgushev (sergii-swds)
+ - Konrad
+ - Aaron Scherer (aequasi)
+ - Clément
+ - Mohammad Ali Sarbanha (sarbanha)
+ - Sébastien Armand (khepin)
+ - Alexey Berezuev
+ - rewrit3
+ - Matthew Burns
+ - Ilya Chekalsky
+ - aim8604
+ - Tim van Densen
+ - Jelte Steijaert (jelte)
+ - Andreas
+ - Monere
+ - Simon Sargeant
+ - pkowalczyk
+ - Sjors Ottjes
+ - Myke79
+ - Christoph Kappestein
+ - mboultoureau
+ - Bernd Matzner (bmatzner)
+ - Alex Niedre
+ - Adam Wójs (awojs)
+ - Ema Panz
+ - MARYNICH Mikhail (mmarynich-ext)
+ - shreyadenny
+ - Daniel Tschinder
+ - David Wolter (davewww)
+ - AnotherSymfonyUser (arderyp)
- Goran Juric
+ - Daniel González Zaballos (dem3trio)
+ - Alejandro Diaz Torres
+ - Aleksandar Dimitrov (netbull)
+ - Tom Newby (tomnewbyau)
+ - boulei_n
+ - Axel Venet
+ - Jean-Baptiste Nahan
- Ser5
+ - Filipe Guerra
+ - Denis Klementjev (dklementjev)
+ - Marcello Mönkemeyer (marcello-moenkemeyer)
+ - Jason Schilling (chapterjason)
- Alex Rothberg
- - Jitendra Adhikari (adhocore)
- - dinitrol
- - Shane McKinley
- - Wickex
- - Konstantin Scheumann
- - Wing
- - Maxime THIRY
- - Mihai Stancu
+ - Dan Patrick (mdpatrick)
+ - Sortex
+ - Paul Le Corre
+ - Mei Gwilym (meigwilym)
+ - Dennis Jaschinski (d.jaschinski)
+ - alex
+ - enekochan (enekochan)
+ - muchafm
+ - Michael Tibben
+ - Andreas Hasenack
+ - Jan Vernarsky
+ - Javier Espinosa (javespi)
+ - Vladislav Krupenkin (ideea)
+ - Adam Kiss
- Matthias Derer
- - Cyril HERRERA
- - Adamo Crespi (aerendir)
- - Boris Medvedev
+ - Artyum Petrov
+ - Diego Aguiar (mollokhan)
+ - Asrorbek (asrorbek)
+ - Jochen Bayer (jocl)
+ - Vincent Chalamon
+ - Marcin Kruk
+ - Tom Houdmont
- Klaus Purer
- - Andoni Larzabal (andonilarz)
+ - Nicolás Alonso
+ - gr8b
+ - Jorrit Schippers (jorrit)
+ - Jonathan Vollebregt
+ - Karim Cassam Chenaï (ka)
+ - Liverbool (liverbool)
- Markus Staab
- - Dan Brown
- - Billie Thompson
- - Tim Ward
- - Nilmar Sanchez Muguercia
- - Flohw
- - Mauro Foti (skler)
- - Waqas Ahmed
- - LHommet Nicolas (nicolaslh)
- - drublic
- - Bertalan Attila
- - William Pinaud (docfx)
+ - Aleksejs Kovalovs (aleksejs1)
+ - ivan
+ - RAHUL K JHA
+ - Alex Vasilchenko
+ - Steven Dubois
+ - Ramon Kleiss (akathos)
+ - Szymon Tarasiński
+ - Maxim Kolokolnikov
+ - Max Grigorian (maxakawizard)
+ - Igor Kokhlov (verdet)
+ - Ahto Türkson
+ - arduanov
+ - julien.galenski
+ - Brad Treloar
+ - Viktoriia Zolotova
+ - Michael Gwynne
+ - Kevin Auivinet
+ - Robert Queck
+ - Vincent
+ - Stefan Kruppa
+ - Benedict Massolle (bemas)
+ - Frederik Schwan
+ - Alexander Zogheb
+ - samuel laulhau (lalop)
+ - Fleuv
+ - Thomas Baccelli (atomiix)
+ - Matthias Neid
+ - Amine Matmati
+ - Jannik Zschiesche
+ - Emirald Mateli
+ - Aarón Nieves Fernández
+ - Linnaea Von Lavia
+ - Anamarija Papić (anamarijapapic)
+ - Volker (skydiablo)
+ - Dmitri Petmanson
+ - Joao Paulo V Martins (jpjoao)
+ - fduch (fduch)
- Sjoerd Nuijten (sjoerdnuijten)
- - Brian Debuire
- - René Kerner
- - Xeno Suter
- - Mateusz Żyła (plotkabytes)
- - Xavier HAUSHERR
- - Antoine Bellion (abellion)
- PatrickRedStar
- - Raphaëll Roussel
- - Ettore Del Negro
+ - patrickmaynard
+ - Frederic Godfrin
+ - Arkadiusz Rzadkowolski (flies)
- Ellie Schaffer
+ - bahram
+ - Arrilot
- jamogon
- - Gunther Konig
- - Pierre LEJEUNE (darkanakin41)
+ - Martin Auswöger
- Damian (baum)
+ - Ikko Ashimine
+ - Florent Olivaud
+ - Tyler Stroud
+ - ureimers
+ - Anthony Ferrara
+ - Marco Pfeiffer
+ - Valentin Barbu (jimie)
+ - gechetspr
+ - Hadrien Cren (hcren)
+ - Bertalan Attila
+ - Keri Henare (kerihenare)
+ - Dmitry (staratel)
+ - Nico Hiort af Ornäs
+ - Alexandr Samuilov
+ - Edwin Hageman
+ - Anton Zagorskii
+ - Jure (zamzung)
+ - Emmanuel Dreyfus
- Dominic Tubach
+ - Evgeny Anisiforov
+ - Artyom Protaskin
+ - Andras Debreczeni
+ - Jordi Rejas
+ - Josef Cech
+ - Klaas Cuvelier (kcuvelier)
+ - craigmarvelley
+ - Tournoud (damientournoud)
- Richard Quadling
+ - Jose Manuel Gonzalez (jgonzalez)
+ - JustDylan23
+ - Sepehr Lajevardi
+ - Robert Meijers
+ - Mara Blaga
+ - Adrien Foulon
+ - Mert Simsek (mrtsmsk0)
+ - Ari Pringle (apringle)
+ - Karolis
+ - Bogdan Scordaliu
+ - Pavel Golovin (pgolovin)
+ - Tony Arcangelini
+ - John Nickell (jrnickell)
+ - Max Summe
+ - Bastien Picharles
+ - Paul Andrieux
+ - Karim Miladi
+ - Maxime AILLOUD (mailloud)
+ - Mark Ogilvie
+ - Julien Bianchi (jubianchi)
+ - Yendric
+ - bill moll
+ - Oleksii Svitiashchuk
+ - Rares Vlaseanu (raresvla)
+ - Alan Scott
+ - ivelin vasilev
+ - Anton Babenko (antonbabenko)
+ - Kevin Verschaeve (keversc)
+ - dlorek
+ - Philippe Degeeter (pdegeeter)
+ - j.schmitt
+ - Jan Pech (pechynho)
+ - Thomas Ferney (thomasf)
+ - toxxxa
+ - Chris Jones (leek)
+ - Bartłomiej Zając
+ - ShiraNai7
+ - Ben Oman
+ - Pavol Tuka
+ - Sven Fabricius
+ - Arkadiusz Kondas (itcraftsmanpl)
+ - JK Groupe
+ - Johannes
+ - Samy D (dinduks)
+ - Adam Klvač
+ - Danil
+ - Prasetyo Wicaksono (jowy)
+ - Boris Grishenko (arczinosek)
+ - Jeroen de Graaf
+ - Ettore Del Negro
+ - Wojciech Skorodecki
- Lance Chen
- - sabruss
+ - Gunther Konig
+ - Pierre LEJEUNE (darkanakin41)
+ - Bogdan Rancichi (devck)
+ - Alex Olmos (alexolmos)
+ - ondrowan
+ - Max Voloshin (maxvoloshin)
- Sami Mussbach
- - vdauchy
- - Yannick
+ - Tim Ward
+ - Romain Jacquart (romainjacquart)
- Timon van der Vorm
- - Victor
- EdgarPE
- - Sven Fabricius
- - Samy D (dinduks)
+ - Phobetor
- 蝦米
+ - gitlost
+ - Andrew Coulton
+ - Dominik Pesch (dombn)
+ - Henne Van Och (hennevo)
+ - Eric J. Duran
+ - ProgMiner
+ - Bart Reunes (metalarend)
- Kai Eichinger
- Rudy Onfroy
- Nicolas Roudaire
- Oleg Golovakhin (doc_tr)
- rkerner
- - Wojciech Skorodecki
- - Bogdan Rancichi (devck)
- - Alex Olmos (alexolmos)
- - Robert Meijers
- - Jon Cave
- - Phobetor
- - sauliusnord
- - Oleksii Svitiashchuk
- - fbuchlak
- - V1nicius00
- - Wahyu Kristianto (kristories)
- - Ladislav Tánczos
- - Matt Brunt
- otsch
- - Andrea Giannantonio
- - Miłosz Guglas (miloszowi)
- - Alexandre Segura
- - Şəhriyar İmanov (shehriyari)
- - Peter Bex
- - Àlex Fiestas
- - Damian Sromek
- - Benoit Garret
- - Foxprodev
- - Erwan Nader (ernadoo)
+ - Andreas Kleemann (andesk)
- tsilefy
- - Thomas Bibb
- - SenTisso
- - Alexander Janssen (tnajanssen)
- - dsech
- - Jenne van der Meer
- Falco Nogatz
+ - Alex Demchenko
+ - Pawel Szczepanek (pauluz)
+ - Jelle Kapitein
+ - bokonet
+ - Tristan Pouliquen
- Alexandre Jardin (alexandre.jardin)
- - Mikko Pesari
- - Clément LEFEBVRE (nemoneph)
- - Boullé William (williamboulle)
- - Jan Hort
- - Tom Corrigan (tomcorrigan)
+ - Charles-Henri Bruyand
+ - 🦅KoNekoD
+ - Steeve Titeca (stiteca)
- Johannes
- - Aaron Stephens (astephens)
- - seho-nl
- - Thomas Counsell
- - Viktor Bajraktar (njutn95)
- - Ben Johnson
- - Adam Prickett
- - Makdessi Alex
- - Dmitry Korotovsky
- - Volodymyr Kupriienko (greeflas)
- - Pierre-Chanel Gauthier (kmecnin)
+ - baron (bastien)
+ - Ondřej Führer
+ - Vedran Mihočinec (v-m-i)
+ - MrNicodemuz
+ - sabruss
+ - Dylan
+ - Nick Stemerdink
- Samy Mahmoudi
- - Oscar Esteve (oesteve)
- - alifanau
- - Wojciech Błoszyk (wbloszyk)
- - Kevin Weber
- - Marcus
- - Laurent Clouet
- - RichardGuilland
- - Floran Brutel (notFloran) (floran)
- - Georg Ringer (georgringer)
- - Vasily Khayrulin (sirian)
- - wivaku
- - Toro Hill
- - Ruud Arentsen
- - jack.shpartko
- - Nicolas Eeckeloo (neeckeloo)
- - Neil Katin
- - Rémi Blaise
- - Bart Brouwer (bartbrouwer)
- - rchoquet
- - Pascal Woerde (pascalwoerde)
- - none (nelexa)
- - Paul Seiffert (seiffert)
- - Juraj Surman
- - Andrea Giuliano (shark)
- - Mikkel Paulson
- - ju1ius
- - Orban Florin (forban)
- - Marcos Quesada (marcos_quesada)
- - Ener-Getick
- - Dan Finnie
- - omniError
- - Jānis Lukss
- - Javan Eskander
- - Joe
- - Vladimir Sadicov (xtech)
- - Quentin Moreau (sheitak)
- - Marko Vušak
- - Christophe Meneses (c77men)
- - Antoine Leblanc
- - cilefen (cilefen)
- - Daniel Iwaniec
- - Jontsa
- - Rares Vlaseanu (raresvla)
- - Bernhard Rusch
- Juan Mrad
- Dmytro Pigin (dotty)
- Viacheslav Sychov
- - Artiom
+ - Jeffrey Moelands (jeffreymoelands)
- Grégoire Hébert (gregoirehebert)
- Mas Iting
- Greg Szczotka (greg606)
- - AlbinoDrought
- - Zoran Makrevski (zmakrevski)
- - Ramon Cuñat
- - Erwin Houtsma
- - aetxebeste
- - Markkus Millend
- - Buster Neece
- - Thomas Decaux
- - Martynas Narbutas
- - Mickaël BULIARD
- - Rosio (ben-rosio)
- - Laurent Legaz
- - Marion Hurteau (marionleherisson)
- - Tugba Celebioglu
- - Danijel Obradović
- - Urban Suppiger
- - Hoffmann András
+ - alifanau
+ - Wojciech Błoszyk (wbloszyk)
+ - Sorin Pop (sorinpop)
+ - Richard Trebichavský
- George Dietrich
- Yury (daffox)
- - M.Mahdi Mahmoodian
- - Arend Hummeling
+ - Ruud Arentsen
+ - Jay Severson
- Krzysztof Pyrkosz
- - Sergiy Sokolenko
- - Jules Lamur
- - Mark van Duijker
- - alefranz
- - Jorge P. Hernandez Lalcebo
- - Alexander Kurilo (kamazee)
- - Dušan Kasan (dudo1904)
- - sal-car
- - Thibaut Cholley
- - Arend Hummeling
- - Siragusa (asiragusa)
- - Chris Jones (leek)
- - Bartłomiej Zając
- - Danil
- Christian Kolb
- Houssem
- - Martijn Boers (plebian)
- - Tomáš Ludvik
- - Michael Dawart (mdawart)
+ - Kévin
+ - Nicolas Eeckeloo (neeckeloo)
+ - ju1ius
+ - ConneXNL
+ - Jules Matsounga (hyoa)
+ - Nick Chiu
+ - Jonny Schmid (schmidjon)
+ - Manuele Menozzi
+ - Yann (yann_eugone)
+ - Martin Mandl (m2mtech)
- Eviljeks
- smokeybear87
- Michael van Tricht
- Masao Maeda (brtriver)
- Success Go
- - Florian Heller
- - Prasetyo Wicaksono (jowy)
- - Boris Grishenko (arczinosek)
- - alireza
- - Eric Krona
- - Joan Cruz
- - Sylvain METAYER
- - Ciaran McNulty (ciaranmcnulty)
- - DaikiOnodera
- - Grayson Koonce
+ - Taylan Kasap
+ - Maciej Zgadzaj
+ - Stuart Fyfe
+ - Fraller Balázs (fracsi)
+ - Vincent Godé
- Raphael Davaillaud
- Soner Sayakci
- - Yohann Tilotti
+ - dima-gr
- Pieter
- - Gennadi Janzen
- - Martins (kevin_martins)
- - Sobhan Sharifi (50bhan)
- - Sander van der Vlugt (stranding)
- - Sergio Santoro
- - Igor Timoshenko (igor.timoshenko)
- - Jelle Kapitein
- - bokonet
- - VojtaB
- - tilaven
- - nuncanada
- - Jean Ragouin
- - Jan Christoph Beyer
- - Vicky Hagemeister
- - Charles-Henri Bruyand
- Luis Galeas
- dbrekelmans
- Maxim Semkin
- - Ahmed Abdulrahman
- - znerol
- - Damir Mitrović
- - Robert Campbell
- - Jörn Lang
- - Marcus Stöhr
- - Ruben Kruiswijk
- - Ilya Bulakh
- - 🦅KoNekoD
- - Steeve Titeca (stiteca)
- - Dylan
- - Michel Krenz
- - Alberto Aldegheri
- - Sorin Pop (sorinpop)
- - Richard Trebichavský
- - Anna Filina (afilina)
- - Andrei Igna
- - Quentin Favrie
- - Richard Heine
- - Giorgio Premi
- - Marek Víger (freezy)
- - Till Krüss
- - Florent Cailhol
- - Ariful Alam
- - Raphaël Davaillaud
- - Timothy Anido (xanido)
- - Nathaniel Catchpole
- - Alexandru Năstase
- - Ash014
- - Aryel Tupinamba (dfkimera)
- - Rafał Toboła
- - Paul Matthews
- - TheMhv
- - Lukas Kaltenbach
- - Felix Eymonot (hyanda)
- - Tijs Verkoyen
- - Malte Wunsch (maltewunsch)
- - Gaylord Poillon (gaylord_p)
- - Steve Müller
+ - Stefan Koopmanschap
+ - Pedro Magalhães (pmmaga)
+ - Yannick
+ - Julien Boudry
+ - ttomor
+ - David Barratt
+ - Benjamin Paap (benjaminpaap)
+ - Vitalii
+ - Dave Heineman (dheineman)
+ - linh
+ - Maxime PINEAU
+ - Rik van der Heijden
+ - Lukas Kaltenbach
+ - JakeFr
+ - Matthew Covey
+ - Robert Campbell
+ - Jörn Lang
+ - Bermon Clément (chou666)
+ - Ruben Kruiswijk
+ - Ilya Bulakh
+ - Giorgio Premi
+ - Marek Víger (freezy)
+ - Orban Florin (forban)
+ - John Doe (theboat)
+ - Ariful Alam
- david perez (davidpv)
- Christian Rishøj
- Yannick Warnier (ywarnier)
- - Christoph Vincent Schaefer (cvschaefer)
+ - Serhii Polishchuk (spolischook)
+ - Luciano Mammino (loige)
+ - Marco
+ - Gerard Berengue Llobera (bere)
+ - mlievertz
- Pablo Maria Martelletti (pmartelletti)
- - Zoli Szabó (zoliszabo)
- - Valentin VALCIU
- - dantleech
- - Ninos
- - Fernando Henrique
- - Sylvain Fabre (sylvain-fabre-assoconnect)
- - Patrick Daley (padrig)
- - elattariyassine
- - Norman Soetbeer
- - Josef Hlavatý
- - Thomas Citharel (tcit)
- - urban
- - Belhassen
- - Mlanawo MBECHEZI
- - andreyserdjuk
- - Dmitrii Fedorenko (dmifedorenko)
- - Hayk Zakaryan
- - tamirvs
- - Brian Corrigan
- - Alexandru Bucur
- - Illia Sakovich
- - Lauris Binde (laurisb)
- - darkweak
- - Nicolae Serban
+ - Quentin Moreau (sheitak)
+ - Jeremy Benoist
+ - Bernhard Rusch
- Timothée BARRAY
- The Whole Life to Learn
- Andreas Allacher
- Jeroen Bouwmans
- - Staormin
- - Merijn Wijngaard
- - Boris Betzholz
- - Sajad Torkamani
- - Robin Kanters (anddarerobin)
- - Daniel Bannert
- - Dominik Schwind (dominikschwind)
- - ZiYao54
- - Matthew Donadio
- - Konstantin Bogomolov
- - Karim
- - ttomor
- - shreyadenny
- - Guillaume BRETOU (guiguiboy)
- - Alan ZARLI
- - Mehrdad
+ - Àlex Fiestas
+ - Rémy LESCALLIER
- creiner
- Haritz Iturbe (hizai)
- - Tammy D
- GuillaumeVerdon
- - Alexandre GESLIN
+ - Wim Hendrikx
- Tim Porter
- - DcgRG
+ - Jonathan Poston
- Steve Marvell
- - Alfonso Fernández García
+ - Erwin Houtsma
- Shamimul Alam
- - Alexis MARQUIS
+ - aetxebeste
+ - root
+ - Alex Vo (votanlean)
+ - Daniele Orru' (danydev)
+ - Marc Jauvin
+ - Simon Bouland (bouland)
+ - Chris
+ - Guillaume BRETOU (guiguiboy)
+ - Marion Hurteau (marionleherisson)
- RTUnreal
- - Michaël Thieulin (mthieulin)
+ - Matthieu Prat
- Peter Culka
- Bernat Llibre Martín (bernatllibre)
- - Jörg Rühl
- - Icode4Food (icode4food)
- - Jeremy David (jeremy.david)
- - Ali Sol
- - adam-mospan
- - Alex Vo (votanlean)
+ - Tugba Celebioglu
+ - SOEDJEDE Felix (fsoedjede)
+ - Jochen Mandl
+ - Urban Suppiger
+ - Frederik Schmitt
+ - g123456789l
+ - M.Mahdi Mahmoodian
+ - Jorge Martin (jorgemartind)
+ - Ondřej Frei
+ - Konstantin Chigakov
+ - Arrakis (arrakis)
+ - xdavidwu
- vladyslavstartsev
- Chihiro Adachi (chihiro-adachi)
- Antonio Peric-Mazar (antonioperic)
+ - Artem Lopata
+ - Marvin Petker
+ - Dmitriy Derepko
+ - Christopher Georg (sky-chris)
+ - peter
+ - Szymon Kamiński (szk)
+ - brian978
+ - Kevin Meijer
+ - Jan Emrich
+ - Ruud Seberechts
+ - Billy Scheufler
+ - Frank Jogeleit
+ - Matthias Perret (mp3000mp)
+ - Attila Bukor (r1pp3rj4ck)
+ - Conrad Kleinespel (conradk)
+ - abluchet
+ - Dennis Tobar
+ - Jan Marek (janmarek)
+ - Jeroen De Dauw (jeroendedauw)
+ - Irmantas Šiupšinskas (irmantas)
+ - Stewart Malik
+ - AnrDaemon
+ - Toro Hill
+ - Bastien Clément (bastienclement)
+ - Mark van Duijker
+ - Gabriel Solomon (gabrielsolomon)
+ - Maciej Paprocki (maciekpaprocki)
+ - Jonas Claes
+ - Guillermo Gisinger (t3chn0r)
+ - Lorenzo Adinolfi (loru88)
+ - Will Rowe
+ - Koray Zorluoglu
+ - Pchol
+ - Jontsa
+ - Zan Baldwin (zanderbaldwin)
+ - Brieuc Thomas
+ - André Laugks
+ - Florian "Ori" Neveu (fnev-eu)
+ - Tristan Kretzer
+ - Alex Plekhanov
+ - Brian Graham (incognito)
+ - rchoquet
+ - David Lima
+ - Mephistofeles
+ - Malte Schlüter
+ - Helmer Aaviksoo
+ - Miloš Milutinović
+ - Roromix
+ - Jorge P. Hernandez Lalcebo
+ - Alexander Kurilo (kamazee)
+ - Julien Sanchez (sumbobyboys)
+ - es
+ - Giuseppe Arcuti
+ - Jan Pintr
+ - Adam Bramley
+ - Dušan Kasan (dudo1904)
+ - Thibaut Cholley
+ - Phil Davis
+ - developer-av
+ - Danijel Obradović
+ - Tomáš Ludvik
+ - Ian Phillips
+ - Petr Jaroš (petajaros)
+ - Yuriy Potemkin
+ - Pierre Tondereau
+ - Vincent Pabst
+ - Johannes
+ - Michael Dawart (mdawart)
+ - Citia (citia)
+ - Kevin EMO
+ - Dan Harper
+ - mindaugasvcs
+ - NothingWeAre
+ - Florian Heller
+ - Daniel Kolvik (dkvk)
+ - alireza
+ - Hein Zaw Htet™
+ - Pierre Geyer (ptheg)
+ - steveYeah
+ - Oliver Eglseder
+ - Kurt Thiemann
+ - avi123
+ - Marcel Pociot (mpociot)
+ - Ivan Tse
+ - Alexandre Melard
+ - Schuyler Jager (sjager)
+ - Artem Kolesnikov (tyomo4ka)
+ - Christian Schiffler
+ - Dariusz Czech
+ - David Ronchaud
+ - DcgRG
+ - Dmitrii Lozhkin
+ - Steve Preston
+ - Fred Cox
+ - Antoine Bellion (abellion)
+ - Raphaëll Roussel
+ - vdauchy
+ - Miłosz Guglas (miloszowi)
+ - Foxprodev
+ - Alexander Janssen (tnajanssen)
+ - Till Hörner
+ - Peter van Dommelen
+ - Mehrdad
+ - dsech
+ - Michael Hüneburg
+ - Igor Tarasov (polosatus)
+ - heccjj
+ - Joris Garonian (grifx)
+ - Ciaran McNulty (ciaranmcnulty)
+ - Kevin Mian Kraiker
+ - dinitrol
+ - andreyserdjuk
+ - Dmitrii Fedorenko (dmifedorenko)
+ - Igor Timoshenko (igor.timoshenko)
+ - tilaven
+ - Gunnar Lium (gunnarlium)
+ - Steve Hyde
+ - Ksaveras Šakys (xawiers)
+ - Pierre Tachoire
+ - Skorney
+ - Matthieu
+ - kaiwa
+ - Sebastian Schwarz
+ - Boris Betzholz
+ - Alan Chen
+ - Roman Igoshin (masterro)
+ - Vicky Hagemeister
+ - Damir Mitrović
+ - Jon Cave
+ - Kevin Vergauwen (innocenzo)
+ - Ahmed Abdou
+ - Marcus Stöhr
+ - Stephan Wentz (temp)
+ - Alfonso Fernández García
+ - Antoine Beyet
+ - Dariusz Ruminski
+ - demeritcowboy
+ - djama
+ - Matthew Donadio
+ - Konstantin Bogomolov
- Alain Flaus (halundra)
- - Kélian Bousquet (kells)
- - Armando
+ - Michel Krenz
- kernig
- Claus Due (namelesscoder)
- Adrien Gallou (agallou)
- - error56
- - Vincent Chalnot
+ - Alberto Aldegheri
+ - NorthBlue333
- tatankat
+ - Gennadi Janzen
+ - adhamiamirhossein
+ - InbarAbraham
+ - Nicolas Valverde
+ - Rikijs Murgs
+ - Simone Ruggieri
+ - zolikonta
+ - Till Krüss
+ - Raphaël Davaillaud
- Tomanhez
- - Romain Pierre
+ - Shaun Simmons
- goohib
- - phc
- - SOEDJEDE Felix (fsoedjede)
- - Christopher Georg (sky-chris)
- - peter
- - Jérémy CROMBEZ (jeremy)
- - insekticid
- - Pavel Golovin (pgolovin)
- - alexpods
- - Jochen Mandl
+ - Thomas Rothe
+ - Timothy Anido (xanido)
+ - Romeo
+ - ergiegonzaga
+ - pizzaminded
+ - Wojciech Sznapka
- Vladimir Sazhin
- Evgeny Z (meze)
- Ismail Asci (ismailasci)
- Rachid Hammaoui (makmaoui)
- - klemens
- - Quique Porta (quiqueporta)
- - Shude
- - Sebastian Utz
- - Attila Bukor (r1pp3rj4ck)
- - Conrad Kleinespel (conradk)
- - taiiiraaa
- - Gennadi McKelvey (gennadigennadigennadi)
- - Dennis Tobar
+ - Malte Wunsch (maltewunsch)
+ - Jitendra Adhikari (adhocore)
+ - chispita
- Philipp Strube
+ - Sylvain Fabre (sylvain-fabre-assoconnect)
+ - Patrick Daley (padrig)
+ - elattariyassine
+ - Norman Soetbeer
+ - sam-bee
+ - urban
+ - sauliusnord
+ - Andreas Streichardt
+ - Hayk Zakaryan
+ - neodevcode
- nietonfir
- tpetry
- Angel Koilov (po_taka)
- - Marvin Petker
- - Peter van Dommelen
- - Artem Lopata
- - Dmitriy Derepko
- - kshida
- - Michael Hüneburg
- - Daniel Bartoníček
+ - Illia Sakovich
+ - Alan ZARLI
+ - Zayan Goripov
+ - Aleksey Prilipko
- Bálint Szekeres
- Benoit Leveque
- - Irmantas Šiupšinskas (irmantas)
- - Jeremiah VALERIE
- - Cedric Kastner (nurtext)
- - Benoit Mallo
- - Jan Emrich
- - tante kinast (tante)
- - Billy Scheufler
- - den den (dionisvl3)
- - Jean-François Morin-Abdullah
- - Stewart Malik
- - AnrDaemon
- - Lorenzo Adinolfi (loru88)
- - Fabian Haase
- - Will Rowe
- Matej Žilák (teo_sk)
- - ibasaw
- - Brieuc Thomas
- - André Laugks
- - Ivan Yivoff
- - Adam Bramley
- - Raito Akehanareru (raito)
- - Pierre Schmitz
- - Bastien Clément (bastienclement)
- - G/
- - Patrick Janzen
- - Jelte Steijaert (jelte)
- - Phil Davis
- - developer-av
+ - Alexis MARQUIS
+ - César Suárez (csuarez)
+ - Ali Sol
+ - Mantas Urnieža
+ - darkweak
+ - Götz Gottwald
+ - Kélian Bousquet (kells)
+ - AntoineDly
+ - Marin Nicolae
+ - Vitali Tsyrkin
+ - Christian Seel
+ - Armando
+ - Uladzimir Tsykun
+ - Oleg Sedinkin (akeylimepie)
+ - error56
+ - Daniel Konstantinov
+ - WoutervanderLoop.nl
- andreybolonin1989@gmail.com
- - Aurélien MARTIN
+ - Cyril HERRERA
- fmarchalemisys
- - Bram Van der Sype (brammm)
+ - Andrey Helldar
+ - Dan Brown
+ - Simon Paarlberg (blamh)
+ - kshida
+ - Andrew Zhilin (zhil)
+ - Julien ARBEY
+ - Grégoire Rabasse
+ - damaya
+ - mikocevar
+ - Jeremiah VALERIE
+ - Benoit Mallo
+ - Andrey Ryaguzov
+ - tante kinast (tante)
+ - Nicolae Serban
+ - Flohw
+ - Petar Marjanovic
+ - Konstantin Scheumann
+ - Wing
+ - Maxime THIRY
+ - Mihai Stancu
+ - stefan.r
+ - Mauro Foti (skler)
+ - Adamo Crespi (aerendir)
+ - LHommet Nicolas (nicolaslh)
+ - Wickex
+ - Vašek Purchart (vasek-purchart)
+ - cmfcmf
+ - Stelian Mocanita (stelian)
+ - Nicolas Jourdan (nicolasjc)
+ - Albert Bakker (babbert)
+ - Ryan Linnit
+ - Ángel Guzmán Maeso (shakaran)
+ - Wissame MEKHILEF
+ - Sjoerd Adema
+ - Rudolf Ratusiński
+ - Ovidiu Gabriel Gireada (ovidiugireada)
+ - Marcin Twardowski
+ - Penny Leach
+ - Antoine (antoinela_adveris)
+ - Şəhriyar İmanov (shehriyari)
+ - Alexander Varwijk
+ - Jordi Kroon
+ - Fabien Perroquin
+ - AbdElKader Bouadjadja
+ - Martin Komischke
+ - Thomas Counsell
+ - Adria Lopez (adlpz)
+ - Adiel Cristo (arcristo)
+ - Yura Uvarov (zim32)
+ - Nathanael d. Noblet
+ - Maxcastel
+ - Benoit Garret
+ - Kevin Weber
+ - Erwan Nader (ernadoo)
+ - Simon Jamain
+ - Dan Finnie
+ - Jan Hort
+ - Tom Corrigan (tomcorrigan)
+ - michael.kubovic
+ - Tomaz Ahlin
+ - Tom Kaminski
+ - Joe
+ - Nathanaël Martel (nathanaelmartel)
+ - Alexis MARQUIS
+ - Tarjei Huse (symfony_cloud)
+ - Andriy
+ - Marko Vušak
+ - Benjamin BOUDIER
+ - Daniel Basten (axhm3a)
+ - Bruno Baguette
+ - Mario Blažek (marioblazek)
+ - Ronny López (ronnylt)
+ - Marcos Labad
+ - Axel Venet
+ - Pablo Eliezer
+ - BrokenSourceCode
+ - Artiom
+ - Viktor Bajraktar (njutn95)
+ - Adam Prickett
+ - Makdessi Alex
+ - Dmitry Korotovsky
+ - Volodymyr Kupriienko (greeflas)
+ - Lucas Bustamante
+ - Constantine Shtompel
+ - Martin Schophaus (m_schophaus_adcada)
+ - William Pinaud (docfx)
+ - Peter van Dommelen
+ - Gennadi McKelvey (gennadigennadigennadi)
+ - Brian Debuire
+ - René Kerner
+ - Markus Staab
+ - Bart Wach
+ - sualko
+ - Muharrem Demirci (mdemirci)
+ - Rich Sage
+ - Stan Jansen (stanjan)
+ - Kovacs Nicolas
+ - Lachlan Arthur
+ - ElisDN
+ - Jiri Korenek
+ - Arend Hummeling
+ - ged15
+ - Jan Eichhorn (exeu)
+ - Daniel Mecke (daniel_mecke)
+ - Seyedramin Banihashemi (ramin)
+ - Pierre-Chanel Gauthier (kmecnin)
+ - Ilia Sergunin (maranqz)
+ - wivaku
+ - Andreas Allacher
+ - alefranz
+ - sal-car
+ - Aaron Somi
+ - Boris Medvedev
+ - Serhii Bondarenko
+ - Jordan Hoff
+ - Andoni Larzabal (andonilarz)
+ - Hugo Posnic
+ - Martijn Boers (plebian)
+ - Billie Thompson
+ - Peter Zwosta
+ - Tom Maguire
+ - Agustin Gomes
+ - Emmanuelpcg
+ - Wouter Diesveld
+ - Wahyu Kristianto (kristories)
+ - Ladislav Tánczos
+ - Ismo Vuorinen
+ - karstennilsen
+ - Nilmar Sanchez Muguercia
+ - Yohann Tilotti
+ - MGatner
+ - Waqas Ahmed
+ - VojtaB
+ - Floran Brutel (notFloran) (floran)
+ - Vasily Khayrulin (sirian)
+ - Ramon Cuñat
+ - Joachim Krempel (jkrempel)
+ - Marcus Jaschen
+ - Markkus Millend
+ - benkarrer-lab
+ - Dennis Smink (dsmink)
+ - Arvids Godjuks (psihius)
+ - Jörg Rühl
+ - Icode4Food (icode4food)
+ - nuncanada
+ - David Brooks
+ - Brandon Antonio Lorenzo
+ - Curtis (ccorliss)
+ - Paul Clegg (clegginabox)
+ - jack.shpartko
+ - Audain
+ - Neil Katin
+ - Rémi Blaise
+ - Bart Brouwer (bartbrouwer)
+ - Ahmed Abdulrahman
+ - Kirk Madera
+ - Bruno MATEU
+ - Brad Bayliss
+ - Stakovicz
+ - J Bruni
+ - Rutger Hertogh
+ - botbotbot
+ - Sait KURT
+ - Geoffrey Pécro (gpekz)
+ - insekticid
+ - alexpods
+ - Nouhail AL FIDI (alfidi)
+ - drublic
+ - adars
+ - znerol
+ - Pascal Woerde (pascalwoerde)
+ - none (nelexa)
+ - Paul Seiffert (seiffert)
+ - Juraj Surman
+ - calm329
+ - Anna Filina (afilina)
+ - Christophe Meneses (c77men)
+ - Antoine Leblanc
+ - Andrei Igna
+ - Daniel Iwaniec
+ - Pierre Rebeilleau (pierrereb)
+ - Julien Pauli
+ - Vladimir Belozyorov
+ - Tammy D
+ - Richard Heine
+ - Stephen Lewis (tehanomalousone)
+ - Denys Voronin (hurricane)
+ - Florent Cailhol
+ - Rosio (ben-rosio)
+ - Nathaniel Catchpole
+ - Albert (aprat84)
+ - Ahmed Soliman (ahmedsoliman)
+ - Martynas Sudintas (martiis)
+ - inspiran
+ - Aryel Tupinamba (dfkimera)
+ - Elias Häußler
+ - Andrea Giannantonio
+ - Mateusz Żyła (plotkabytes)
+ - Christoph Vincent Schaefer (cvschaefer)
+ - Laurent Bardin
+ - Aaron Stephens (astephens)
+ - tamirvs
+ - Belhassen
+ - Arend Hummeling
+ - Siragusa (asiragusa)
+ - Anna Damm
+ - Mlanawo MBECHEZI
+ - dakur
+ - Joel Lusavuvu (enigma97)
+ - Paul LE CORRE
+ - Peter Bouwdewijn
+ - Jean-Christophe Cuvelier [Artack]
+ - AUDUL
+ - Keith Maika
+ - Kubicki Kamil (kubik)
+ - Matheus Gontijo
+ - Matthias Meyer
+ - Sander Coolen (scoolen)
+ - Kevin Jansen
+ - Nicolas Fabre (nfabre)
+ - adnen chouibi
+ - Raul Garcia Canet (juagarc4)
+ - Bradley Zeggelaar
+ - Jakub Kisielewski
+ - fabi
+ - Safonov Nikita (ns3777k)
+ - Mikhail Prosalov (mprosalov)
+ - Mikkel Paulson
+ - Sobhan Sharifi (50bhan)
+ - Lucas Matte
+ - Radosław Kowalewski
+ - Thibaut Arnoud (thibautarnoud)
+ - Mdsujansarkar
+ - Thomas Dutrion (theocrite)
+ - Nicolas Séverin
+ - Marc J. Schmidt (marcjs)
+ - jdcook
- Mohamed Karnichi (amiral)
+ - Cas
- caalholm
- - jdcook
+ - Samael tomas
- popnikos
- PabloKowalczyk
- Brandon Kelly (brandonkelly)
- VolCh
- - Monere
+ - Victor
+ - Uwe Kleinmann
+ - David Legatt (dlegatt)
+ - ddebree
- Marek Šimeček (mssimi)
- Temuri Takalandze (abgeo)
- Sander Goossens (sandergo90)
- - djordy
- - Marcin Kruk
+ - Guilain (guilain_sylapps)
- David Soms
- Marc Duboc (icemad)
- - Andrew Zhilin (zhil)
- - Julien ARBEY
- - Marc J. Schmidt (marcjs)
- - Thomas Dutrion (theocrite)
+ - fbuchlak
+ - V1nicius00
+ - tomasz-kusy
+ - pf
- Pete Mitchell (peterjmit)
- Philipp Fritsche
- Albert Prat
- Dominik Piekarski (dompie)
- nuryagdy mustapayev (nueron)
- - AUDUL
+ - Walter Dal Mut (wdalmut)
+ - Harold Iedema
+ - djordy
- Ernesto Domato
- Michael Squires
+ - Marien Fressinaud
- Vincent MOULENE (vints24)
- Łukasz Chruściel (lchrusciel)
- kaywalker
- - Grégoire Rabasse
+ - Alexandre Segura
- Craig Menning (cmenning)
- pborreli
- Philipp Kretzschmar
- Gerard
- Adam Katz
- Benny Born
- - Jean-Christophe Cuvelier [Artack]
- - RevZer0 (rav)
+ - Romain Dorgueil
+ - andrey-tech
- Gyula Szucs
+ - Damian Sromek
- Guillaume Lajarige (molkobain)
- - Sandro Hopf (senaria)
+ - Ryan Rud
- Joeri Verdeyen (jverdeyen)
- Michel Bardelmeijer
- Laurent G. (laurentg)
- fruty
- lol768
- - Omar Yepez (oyepez003)
+ - Junaid Farooq (junaidfarooq)
- Abdouni Karim (abdounikarim)
- - Vladislav Vlastovskiy (vlastv)
+ - Luis Pabon (luispabon)
- Grzegorz Łukaszewicz (newicz)
- Trevor N. Suarez (rican7)
- Julien Menth (cfjulien)
- Billie Thompson
- - Joachim Krempel (jkrempel)
- - Hryhorii Hrebiniuk
- - Ian Phillips
+ - Thomas Bibb
- Pieter Jordaan
- Jérémie Broutier
- - Petr Jaroš (petajaros)
+ - SenTisso
- Robert Korulczyk
- - Johan Wilfer (johanwilfer)
+ - Markus Ramšak
- Dan Blows
- Haikiri
- Christian Weiske
- Claudiu Cristea
- - Yuriy Potemkin
+ - Alexandre GESLIN
- Tomas Javaisis
- Johan de Ruijter
- Bart Ruysseveldt
- Balázs Benyó (duplabe)
- - Lucas Matte
+ - Filippos Karailanidis
- Abdouarrahmane FOUAD (fabdouarrahmane)
- Sebastian Landwehr (dword123)
- - Mikkel Paulson
- - damaya
+ - Rafał Muszyński (rafmus90)
+ - Ben Johnson
- Dario Guarracino
- - Mikhail Prosalov (mprosalov)
+ - Camille Dejoye (cdejoye)
- Fabian Kropfhamer (fabiank)
- - mikocevar
- - Petar Marjanovic
- - stefan.r
+ - den den (dionisvl3)
+ - Sander van der Vlugt (stranding)
+ - Sergio Santoro
- Ashura
- Mathieu Ledru (matyo91)
- Valérian Galliat
- - fabi
+ - Reece Fowell (reecefowell)
- Jérémy (libertjeremy)
+ - John Espiritu (johnillo)
- Abdelilah Jabri
- - Jakub Kisielewski
- - Bradley Zeggelaar
+ - Julien Manganne (juuuuuu)
+ - Javier Núñez Berrocoso (javiernuber)
- Ralf Kühnel (ralfkuehnel)
- Berat Doğan
- Ricardo de Vries (ricardodevries)
- - Vašek Purchart (vasek-purchart)
- - Jérémy Jourdin (jjk801)
+ - Mati Kochen (mtk)
+ - Peter Potrowl
- Oussama Elgoumri
- Juan Traverso
- Mike Gladysch
@@ -3816,212 +3850,215 @@ The Symfony Connect username in parenthesis allows to get more information
- dropfen
- Marcin Chwedziak
- Gert de Pagter
- - Vladimir Pakhomchik
+ - František Maša
- Thibault G
- Povilas S. (povilas)
- Gordienko Vladislav
- Amirreza Shafaat (amirrezashafaat)
- - Cas van Dongen
- - Darius Leskauskas (darles)
- - Hallison Boaventura (hallisonboaventura)
- - cmfcmf
+ - Michal Kurzeja (mkurzeja)
+ - Pierre Gasté (pierre_g)
+ - HMAZonderland
- Thanos Polymeneas (thanos)
- Michael Hudson-Doyle
- - Vincent Vermeulen
- - Paul LE CORRE
+ - Hryhorii Hrebiniuk
+ - Jérémy Jourdin (jjk801)
- akimsko
- - Joel Lusavuvu (enigma97)
+ - Vladimir Pakhomchik
- Alexis BOYER
- Alexander Menk
- tsufeki
- - Matthias Meyer
- - Kevin Jansen
+ - RevZer0 (rav)
+ - Andreas Frömer
- joris de wit (jdewit)
- Andrejs Leonovs
- Sander Hagen
- Marc Torres
+ - Jean Ragouin
+ - Till Klampaeckel (till)
+ - Jan Christoph Beyer
+ - Jenne van der Meer
+ - carlos-ea
+ - Muhammad Elhwawshy
+ - twifty
+ - AlberT
- MatTheCat
- - Marvin Butkereit
- anna-lena.waltinger
- rogamoore
- Maxime Corteel (mcorteel)
- Enrico
- andreabreu98
- - adnen chouibi
+ - Richard Hodgson
- Leonid Terentyev
- - Gabriel Solomon (gabrielsolomon)
+ - Alexey Vlasov
- David Grüner (vworldat)
- Egor Gorbachev
- - Raul Garcia Canet (juagarc4)
- - Maciej Paprocki (maciekpaprocki)
- - Till Klampaeckel (till)
- - Taylan Kasap
- - David Brooks
- - Radosław Kowalewski
+ - David Gorges (davidgorges)
+ - Sergey Fedotov
+ - Vincent Bouzeran
+ - Mynyx
+ - Jan Vernarsky
- Stefan Oderbolz
- - Bruno MATEU
+ - Mikko Pesari
- Zakaria AMMOURA (zakariaamm)
- - Gavin Staniforth
- - Aleksei Lebedev
- - Thibaut Arnoud (thibautarnoud)
+ - e-ivanov
+ - Clément LEFEBVRE (nemoneph)
+ - Houziaux mike
- Eduardo Conceição
- - Pierre Tondereau
+ - Oscar Esteve (oesteve)
- Max Beutel
- - Cas
- - Samael tomas
- - Sorin Gitlan (forapathy)
- - tamar peled
- - everyx
- - parhs
- - Flinsch
- - tomasz-kusy
- - mieszko4
- - Will Donohoe
+ - Gavin Staniforth
+ - Matt Drollette (mdrollette)
- Neophy7e
- - pf
- - Walter Dal Mut (wdalmut)
- - HMAZonderland
+ - David Otton
+ - A. Pauly
+ - Benjamin Pick
- Gordienko Vladislav
- - Marien Fressinaud
+ - Juan Miguel Besada Vidal (soutlink)
- Simon Neidhold
- - Romain Dorgueil
+ - Lars Moelleken
- Sean Templeton
- - Johannes
+ - mrossard
- Steffen Keuper
- Walid BOUGHDIRI (walidboughdiri)
- tadas
- - botbotbot
+ - Jeremy David (jeremy.david)
- Eduard Morcinek
- - Ryan Linnit
+ - Marcus
- Nikita Sklyarov
- - Ángel Guzmán Maeso (shakaran)
- - andrey-tech
- - Julien Manganne (juuuuuu)
- - carlos-ea
+ - Georg Ringer (georgringer)
+ - Maxime P
- Vladislav Iurciuc
+ - Andrea Giuliano (shark)
- Andrew Tch
- Mickael Perraud
- - Ryan Rud
+ - ddegentesh
- Geoff
- - Junaid Farooq (junaidfarooq)
- - Luis Pabon (luispabon)
- - Rudolf Ratusiński
- - Markus Ramšak
- - Filippos Karailanidis
- - Andrea Ruggiero (pupax)
- - fh-github@fholzhauer.de
- - AbdElKader Bouadjadja
+ - Shude
+ - Dawid Sajdak
+ - Luis Muñoz
+ - Kévin Gomez (kevin)
+ - Alex Nostadt
+ - Robert Kopera
+ - Verlhac Gaëtan (viviengaetan)
+ - szymek
+ - Dennis Haarbrink
- rvoisin
- - twifty
- - Rafał Muszyński (rafmus90)
- - Peter Potrowl
+ - MightyBranch
+ - Michael
+ - Sander Marechal
- Alexander Pasichnik (alex_brizzz)
- Kamil Szalewski (szal1k)
- - Camille Dejoye (cdejoye)
+ - Jakub Janata (janatjak)
- Mehdi Achour (machour)
- Andrey Chernykh
- Kérian MONTES-MORIN (kerianmm)
+ - Alessandra Lai
+ - Hugo Fonseca (fonsecas72)
+ - Julian Krzefski
+ - Gabi Udrescu
+ - Gerd Christian Kunze (derdu)
+ - Ross Tuck
- BenjaminBeck
+ - Andrew Marcinkevičius (ifdattic)
- n-aleha
- - Luke Towers
- - Julius Beckmann (h4cc)
- - Peter Bouwdewijn
- tuqqu
- - László GÖRÖG
+ - Mikkel Paulson
- Valery Maslov (coderberg)
+ - Courcier Marvin (helyakin)
+ - Ulugbek Miniyarov
+ - David Soria Parra
+ - ghazy ben ahmed
- Damien Harper (damien.harper)
- - Reece Fowell (reecefowell)
- - Clement Herreman (clemherreman)
+ - pritasil
- Kevin Dew
+ - m.chwedziak
+ - SALMERON Valentin (vasal)
+ - Clement Herreman (clemherreman)
- Rowan Manning
- - Javier Núñez Berrocoso (javiernuber)
- - Alex Teterin (errogaht)
- - Maxim Kolokolnikov
+ - dantleech
- Wouter Ras
- - adhamiamirhossein
- - David Legatt (dlegatt)
- - ddebree
- Jesper Noordsij
- - František Maša
- - Michal Kurzeja (mkurzeja)
+ - Jakub Sacha
+ - Ashura
- Igor Plantaš
- - Wouter de Wild
+ - 2manypeople
- Tobias Feijten (tobias93)
- - Pierre Gasté (pierre_g)
+ - Jacek Kobus (jackks)
+ - Marcos Quesada (marcos_quesada)
+ - Alexey Popkov
+ - Giovanni Albero (johntree)
+ - Emre Akinci (emre)
+ - André Laugks
+ - upchuk
+ - Thibaut Salanon
+ - GK-302
+ - GagnarTest (gagnartest)
- stloyd
- Ian Carroll
- Jaap van Otterdijk (jaapio)
- Iwan van Staveren (istaveren)
- - Andreas Frömer
+ - Cas van Dongen
- Benjamin RICHARD
- - Harold Iedema
- - Adria Lopez (adlpz)
- - Keith Maika
- - John Espiritu (johnillo)
- - Sander Coolen (scoolen)
- - Adiel Cristo (arcristo)
+ - Nei Rauni Santos (nrauni)
+ - Steve Frécinaux
+ - Ener-Getick
- Christian Stocker
- - Babichev Maxim (rez1dent3)
- - AlberT
+ - Mykola Zyk
+ - Julius Beckmann (h4cc)
+ - mantulo
+ - Dalibor Karlović
+ - adam-mospan
+ - GurvanVgx
+ - Hans Höchtl (hhoechtl)
+ - fh-github@fholzhauer.de
- Simone Fumagalli (hpatoio)
- Freek Van der Herten (freekmurze)
- - Richard Hodgson
+ - Andrea Ruggiero (pupax)
- valmonzo
- - Sergey Fedotov
+ - George Giannoulopoulos
- Erika Heidi Reinaldo (erikaheidi)
- Muhammad Aakash
- - Mynyx
- - Jan Vernarsky
- - Nicolas Fabre (nfabre)
- - e-ivanov
- - mantulo
- - Houziaux mike
- - Matheus Gontijo
- - Vladimir Vasilev (bobahvas)
+ - Markus
+ - omniError
+ - EXT - THERAGE Kevin
+ - Javier Ledezma
+ - Przemysław Piechota (kibao)
- Flo Gleixner (redflo)
- Alessio Baglio (ioalessio)
- - mousezheng
+ - Michael Thieulin
- wesleyh
- florian-michael-mast
- Chris McGehee
- - Matt Drollette (mdrollette)
- - David Otton
+ - Frank Neff (fneff)
+ - pawel-lewtak
- Piet Steinhart
- Christopher Parotat
- Arman
- Benjamin Laugueux
- Žan V. Dragan
- - Yura Uvarov (zim32)
+ - Jānis Lukss
- Vladimir Mantulo (mantulo)
- - Jannik Zschiesche
- - JustDylan23
- - Verlhac Gaëtan (viviengaetan)
- - Adrien Foulon
+ - Javan Eskander
+ - Vincent Chalnot
- Pablo Borowicz
- Emilie Lorenzo
- Samuel Gordalina (gordalina)
- Mike Milano (mmilano)
- Ganesh Chandrasekaran (gxc4795)
- - A. Pauly
- - Tony Arcangelini
+ - Dan Ionut Dumitriu (danionut90)
+ - Vladimir Sadicov (xtech)
- Julius (sakalys)
- - Juan Miguel Besada Vidal (soutlink)
+ - skalpa
- Diego Sapriza
- - Tomas Kmieliauskas
- - Laurent Bardin
- - Nei Rauni Santos (nrauni)
- - Steve Frécinaux
- - Rikijs Murgs
- - Lars Moelleken
+ - klemens
+ - Daniel Bartoníček
+ - Andrew (drew)
- Abdelhakim ABOULHAJ
- Robert Meijers
- agaktr
- Muhammed Akbulut
- - szymek
- - Dennis Haarbrink
- - Maxime P
- Brooks Boyd
- - ddegentesh
+ - Hallison Boaventura (hallisonboaventura)
- joris
- Matthias Bilger
- Nathan DIdier (icz)
@@ -4029,129 +4066,93 @@ The Symfony Connect username in parenthesis allows to get more information
- David de Boer (ddeboer)
- youssef saoubou
- Lesueurs Frédéric (fredlesueurs)
- - Dawid Sajdak
+ - Vincent Vermeulen
- Mathieu MARCHOIS (mmar)
- Matteo Giachino (matteosister)
- - Luis Muñoz
- - MightyBranch
- - Michael
- - Courcier Marvin (helyakin)
+ - ChS
- Pavel.Batanov
- - Kévin Gomez (kevin)
+ - Ken Marfilla (marfillaster)
- zorn
- - Hugo Fonseca (fonsecas72)
- Ismail Turan
- - Alex Nostadt
- - Kim Laï Trinh
- - Xavier RENAUDIN
+ - Julien Moulin (lizjulien)
+ - André Filipe Gonçalves Neves (seven)
+ - MusikAnimal
- Albin Kerouaton
- - Sander Marechal
- - Jakub Sacha
+ - Iliya Miroslavov Iliev (i.miroslavov)
+ - Signor Pedro
- Raphaël Droz
- Ilia Lazarev (ilzrv)
- Peter Gribanov
- Tito Costa
- - Jakub Janata (janatjak)
- - Alessandra Lai
- - Julian Krzefski
- - Gabi Udrescu
+ - Alex Teterin (errogaht)
+ - Pierre Grimaud (pgrimaud)
+ - Stefan Hüsges (tronsha)
+ - Quentin Favrie
+ - Patricia
- Sergei Gorjunov
+ - Moritz Borgmann (mborgmann)
+ - Vivien
+ - Claas Augner
+ - Ferran Vidal
- Pierre-Olivier Vares (povares)
- Gilbertsoft
- - ghazy ben ahmed
+ - Amine Yakoubi
- Antanas Arvasevicius
- Ha Phan (haphan)
+ - Lesnykh Ilia
+ - Cedric Kastner (nurtext)
+ - jean pasqualini (darkilliant)
+ - Taras Girnyk
+ - Jeremiah VALERIE
- Eddy
- Alexander Onatskiy
- efeen
- - pritasil
+ - timaschew
- Andrea Civita
- - dantleech
- - David Gorges (davidgorges)
+ - Michael Steininger
- Renato Mendes Figueiredo
+ - Kévin Gonella
+ - Frank Dekker
+ - SAY-5
+ - Alexandru Năstase
+ - Michael Telgmann
- Bram Tweedegolf (bram_tweedegolf)
- - Robert Kopera
- - Vincent Bouzeran
- - Ashura
- Carlos Ortega Huetos
- - Alexey Popkov
- - Emre Akinci (emre)
+ - ADmad
+ - Steffen Persch (n3o77)
- Rafał
+ - Vladislav (simpson)
+ - Vyacheslav Slinko
+ - Benjamin Dos Santos
- temperatur
- - André Laugks
+ - Edvinas Klovas
- Remi Collet
- - Jonathan (grafikart)
+ - Ash014
- Sam Ward
- qsz
- luffy1727
- - Jm Aribau (jmaribau)
+ - Aurélien MARTIN
- Ben Gamra Housseine (hbgamra)
- Tim Strehle
- Rémi Faivre (rfv)
- Derek Bonner
- Claude Dioudonnat
- - GagnarTest (gagnartest)
+ - Tobias Genberg (lorceroth)
- Giuseppe Petraroli (gpetraroli)
- withbest
- - George Giannoulopoulos
- - Markus
- - EXT - THERAGE Kevin
+ - changmin.keum
- Bizley
+ - Konrad Mohrfeldt
+ - Pascal Hofmann
+ - parhs
- Alan Bondarchuk
- Philip Frank
- - J Bruni
- - Martin Komischke
+ - AlbinoDrought
+ - Zoran Makrevski (zmakrevski)
- Oriol Mangas Abellan (oriolman)
- Harald Tollefsen
- Maks Rafalko (bornfree)
- Oliver Klee
- - Frank Neff (fneff)
+ - Peter Jaap Blaakmeer
- Monet Emilien
- - Gerd Christian Kunze (derdu)
- - pawel-lewtak
- - Ross Tuck
- - Andreas Streichardt
- - Dan Ionut Dumitriu (danionut90)
- - Ulugbek Miniyarov
- - skalpa
- - Andrew (drew)
- - upchuk
- - Thibaut Salanon
- - GurvanVgx
- MaPePeR
- - Siebe Vanden Eynden
- - ChS
- - Diego Campoy
- - Pierre Sv (rrr63)
- - neodevcode
- - Ken Marfilla (marfillaster)
- - David Soria Parra
- - Julien Moulin (lizjulien)
- - Jacek Kobus (jackks)
- - Thomas Ploch
- - André Filipe Gonçalves Neves (seven)
- - Giovanni Albero (johntree)
- - GK-302
- - Dalibor Karlović
- - Roland Franssen :)
- - Hans Höchtl (hhoechtl)
- - Mykola Zyk
- - tinect (tinect)
- - Nathan Sepulveda
- - MusikAnimal
- - robmro27
- - Patricia
- - hjkl
- - Tatsuya Tsuruoka
- - Mantas Urnieža
- - Iliya Miroslavov Iliev (i.miroslavov)
- - Signor Pedro
- - enomotodev
- - Javier Ledezma
- - Przemysław Piechota (kibao)
- - Lesnykh Ilia
- - Sébastien HOUZE
- - Patrick Kuijvenhoven
- - Frank Schulze (xit)
- - Ignacio Alveal
- - Pierre Grimaud (pgrimaud)
diff --git a/src/Symfony/Bridge/Monolog/Command/ServerLogCommand.php b/src/Symfony/Bridge/Monolog/Command/ServerLogCommand.php
index 3d824acd4d006..8e1c6542295c5 100644
--- a/src/Symfony/Bridge/Monolog/Command/ServerLogCommand.php
+++ b/src/Symfony/Bridge/Monolog/Command/ServerLogCommand.php
@@ -26,6 +26,8 @@
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
+use Symfony\Component\VarDumper\Cloner\Data;
+use Symfony\Component\VarDumper\Cloner\Stub;
/**
* @author Grégoire Pineau
@@ -62,7 +64,7 @@ protected function configure()
}
$this
- ->addOption('host', null, InputOption::VALUE_REQUIRED, 'The server host', '0.0.0.0:9911')
+ ->addOption('host', null, InputOption::VALUE_REQUIRED, 'The server host', '127.0.0.1:9911')
->addOption('format', null, InputOption::VALUE_REQUIRED, 'The line format', ConsoleFormatter::SIMPLE_FORMAT)
->addOption('date-format', null, InputOption::VALUE_REQUIRED, 'The date format', ConsoleFormatter::SIMPLE_DATE)
->addOption('filter', null, InputOption::VALUE_REQUIRED, 'An expression to filter log. Example: "level > 200 or channel in [\'app\', \'doctrine\']"')
@@ -110,13 +112,18 @@ protected function execute(InputInterface $input, OutputInterface $output): int
}
foreach ($this->getLogs($socket) as $clientId => $message) {
- $record = unserialize(base64_decode($message));
+ $record = @unserialize(base64_decode($message), [
+ 'allowed_classes' => [Data::class, Stub::class],
+ ]);
- // Impossible to decode the message, give up.
- if (false === $record) {
+ if (!\is_array($record)) {
continue;
}
+ if (isset($record['datetime']) && \is_string($record['datetime'])) {
+ $record['datetime'] = \DateTimeImmutable::createFromFormat('Y-m-d\TH:i:s.uP', $record['datetime']) ?: $record['datetime'];
+ }
+
if ($filter && !$this->el->evaluate($filter, $record)) {
continue;
}
diff --git a/src/Symfony/Bridge/Monolog/Handler/ServerLogHandler.php b/src/Symfony/Bridge/Monolog/Handler/ServerLogHandler.php
index ba81a7d45b470..1da6d2655e767 100644
--- a/src/Symfony/Bridge/Monolog/Handler/ServerLogHandler.php
+++ b/src/Symfony/Bridge/Monolog/Handler/ServerLogHandler.php
@@ -151,6 +151,10 @@ private function formatRecord(array|LogRecord $record): string
}
}
+ if (isset($recordFormatted['datetime']) && $recordFormatted['datetime'] instanceof \DateTimeInterface) {
+ $recordFormatted['datetime'] = $recordFormatted['datetime']->format('Y-m-d\TH:i:s.uP');
+ }
+
return base64_encode(serialize($recordFormatted))."\n";
}
}
diff --git a/src/Symfony/Bridge/Monolog/Tests/Formatter/ConsoleFormatterTest.php b/src/Symfony/Bridge/Monolog/Tests/Formatter/ConsoleFormatterTest.php
index 35179662e54e9..4234ef1e613d2 100644
--- a/src/Symfony/Bridge/Monolog/Tests/Formatter/ConsoleFormatterTest.php
+++ b/src/Symfony/Bridge/Monolog/Tests/Formatter/ConsoleFormatterTest.php
@@ -16,6 +16,7 @@
use PHPUnit\Framework\TestCase;
use Symfony\Bridge\Monolog\Formatter\ConsoleFormatter;
use Symfony\Bridge\Monolog\Tests\RecordFactory;
+use Symfony\Component\VarDumper\Cloner\VarCloner;
class ConsoleFormatterTest extends TestCase
{
@@ -59,4 +60,31 @@ public static function providerFormatTests(): array
return $tests;
}
+
+ public function testPlaceholderInMessageWithDataContext()
+ {
+ $formatter = new ConsoleFormatter(['colors' => false]);
+
+ // LogRecord::$context must be an array, so the Data object is nested inside it
+ $record = RecordFactory::create(message: 'Hello {user}', context: ['user' => (new VarCloner())->cloneVar('alice')]);
+
+ self::assertStringContainsString('Hello alice>', $formatter->format($record));
+
+ if (Logger::API < 3) {
+ $context = (new VarCloner())->cloneVar(['user' => 'alice']);
+ $formatter = new ConsoleFormatter(['colors' => false]);
+
+ $output = $formatter->format([
+ 'message' => 'Hello {user}',
+ 'context' => $context,
+ 'level' => Logger::WARNING,
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
+ 'channel' => 'test',
+ 'datetime' => '2019-01-01T00:42:00+00:00',
+ 'extra' => [],
+ ]);
+
+ self::assertStringContainsString('Hello alice>', $output);
+ }
+ }
}
diff --git a/src/Symfony/Bridge/Monolog/Tests/Handler/ServerLogHandlerTest.php b/src/Symfony/Bridge/Monolog/Tests/Handler/ServerLogHandlerTest.php
index 5b11bfd7909d1..14b2ef7a01397 100644
--- a/src/Symfony/Bridge/Monolog/Tests/Handler/ServerLogHandlerTest.php
+++ b/src/Symfony/Bridge/Monolog/Tests/Handler/ServerLogHandlerTest.php
@@ -19,6 +19,7 @@
use Symfony\Bridge\Monolog\Handler\ServerLogHandler;
use Symfony\Bridge\Monolog\Tests\RecordFactory;
use Symfony\Component\VarDumper\Cloner\Data;
+use Symfony\Component\VarDumper\Cloner\Stub;
/**
* Tests the ServerLogHandler.
@@ -80,12 +81,20 @@ public function testWritingAndFormatting()
$message = fgets($stream);
fclose($stream);
- $record = unserialize(base64_decode($message));
+ $record = unserialize(base64_decode($message), [
+ 'allowed_classes' => [Data::class, Stub::class],
+ ]);
$this->assertIsArray($record);
$this->assertArrayHasKey('message', $record);
$this->assertEquals('My info message', $record['message']);
+ $this->assertArrayHasKey('datetime', $record);
+ $this->assertIsString($record['datetime']);
+ $datetime = \DateTimeImmutable::createFromFormat('Y-m-d\TH:i:s.uP', $record['datetime']);
+ $this->assertInstanceOf(\DateTimeImmutable::class, $datetime);
+ $this->assertSame('2013-05-29 16:21:54', $datetime->format('Y-m-d H:i:s'));
+
$this->assertArrayHasKey('extra', $record);
$this->assertInstanceOf(Data::class, $record['extra']);
$extra = $record['extra']->getValue(true);
diff --git a/src/Symfony/Bridge/Twig/Extension/CodeExtension.php b/src/Symfony/Bridge/Twig/Extension/CodeExtension.php
index e0e6c8b8d6101..c153de4479acf 100644
--- a/src/Symfony/Bridge/Twig/Extension/CodeExtension.php
+++ b/src/Symfony/Bridge/Twig/Extension/CodeExtension.php
@@ -128,7 +128,7 @@ public function fileExcerpt(string $file, int $line, int $srcContext = 3): ?stri
$contents = file_get_contents($file);
if (!str_contains($contents, 'charset));
if (0 > $srcContext) {
$srcContext = \count($lines);
diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php
index cb29f4ea1072c..2212e91fc1faa 100644
--- a/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php
+++ b/src/Symfony/Bridge/Twig/Tests/Extension/CodeExtensionTest.php
@@ -224,6 +224,17 @@ public static function fileExcerptIntegrationProvider()
];
}
+ public function testFileExcerptEscapesNonPhpContents()
+ {
+ $file = \dirname(__DIR__).\DIRECTORY_SEPARATOR.'Fixtures'.\DIRECTORY_SEPARATOR.'xss.html';
+
+ $html = $this->getExtension()->fileExcerpt($file, 1);
+
+ $this->assertStringNotContainsString('
+& "quoted"
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php b/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php
index b2fa950387c2c..9d4ecaf7dc862 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php
@@ -307,6 +307,34 @@ public function testClearPrefix()
$this->assertTrue($cache->hasItem('barfoo'));
}
+ /**
+ * @dataProvider provideInvalidPrefixes
+ */
+ public function testClearWithInvalidPrefix(string $prefix)
+ {
+ if (isset($this->skippedTests[__FUNCTION__])) {
+ $this->markTestSkipped($this->skippedTests[__FUNCTION__]);
+ }
+
+ $cache = $this->createCachePool(0, __FUNCTION__);
+ $cache->clear();
+
+ $cache->save($cache->getItem('foobar')->set(1));
+
+ $this->assertFalse($cache->clear($prefix));
+ $this->assertTrue($cache->hasItem('foobar'));
+ }
+
+ public static function provideInvalidPrefixes(): iterable
+ {
+ yield 'single quote' => ["foo' OR 1=1; --"];
+ yield 'percent wildcard' => ['foo%'];
+ yield 'space' => ['foo bar'];
+ yield 'null byte' => ["foo\0bar"];
+ yield 'backslash' => ['foo\\bar'];
+ yield 'slash' => ['foo/bar'];
+ }
+
public function testWeirdDataMatchingMetadataWrappedValues()
{
if (isset($this->skippedTests[__FUNCTION__])) {
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php
index 8f586ba8aa873..52f8e5df9c4df 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php
@@ -24,6 +24,7 @@ class ArrayAdapterTest extends AdapterTestCase
'testGetMetadata' => 'ArrayAdapter does not keep metadata.',
'testDeferredSaveWithoutCommit' => 'Assumes a shared cache which ArrayAdapter is not.',
'testSaveWithoutExpire' => 'Assumes a shared cache which ArrayAdapter is not.',
+ 'testClearWithInvalidPrefix' => 'ArrayAdapter does not validate the prefix.',
];
public function createCachePool(int $defaultLifetime = 0): CacheItemPoolInterface
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseBucketAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseBucketAdapterTest.php
index 3e5569e3c070e..14ccedb40ff36 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseBucketAdapterTest.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseBucketAdapterTest.php
@@ -27,6 +27,7 @@ class CouchbaseBucketAdapterTest extends AdapterTestCase
{
protected $skippedTests = [
'testClearPrefix' => 'Couchbase cannot clear by prefix',
+ 'testClearWithInvalidPrefix' => 'Couchbase cannot clear by prefix',
];
protected static \CouchbaseBucket $client;
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseCollectionAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseCollectionAdapterTest.php
index 32b1ad01f1456..fd47c0399100b 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseCollectionAdapterTest.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/CouchbaseCollectionAdapterTest.php
@@ -28,6 +28,7 @@ class CouchbaseCollectionAdapterTest extends AdapterTestCase
{
protected $skippedTests = [
'testClearPrefix' => 'Couchbase cannot clear by prefix',
+ 'testClearWithInvalidPrefix' => 'Couchbase cannot clear by prefix',
];
protected static Collection $client;
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php
index 8ea8e368fb5d4..8e2f136e289c9 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php
@@ -25,6 +25,7 @@ class MemcachedAdapterTest extends AdapterTestCase
'testHasItemReturnsFalseWhenDeferredItemIsExpired' => 'Testing expiration slows down the test suite',
'testDefaultLifeTime' => 'Testing expiration slows down the test suite',
'testClearPrefix' => 'Memcached cannot clear by prefix',
+ 'testClearWithInvalidPrefix' => 'Memcached cannot clear by prefix',
];
protected static \Memcached $client;
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php
index ada3149d63d3c..51bff14fa2ce4 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/PhpArrayAdapterTest.php
@@ -58,6 +58,7 @@ class PhpArrayAdapterTest extends AdapterTestCase
'testDefaultLifeTime' => 'PhpArrayAdapter does not allow configuring a default lifetime.',
'testPrune' => 'PhpArrayAdapter just proxies',
+ 'testClearWithInvalidPrefix' => 'PhpArrayAdapter does not validate the prefix.',
];
protected static string $file;
diff --git a/src/Symfony/Component/Cache/Tests/Adapter/ProxyAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/ProxyAdapterTest.php
index 765dd7565dc76..9e3be694fec50 100644
--- a/src/Symfony/Component/Cache/Tests/Adapter/ProxyAdapterTest.php
+++ b/src/Symfony/Component/Cache/Tests/Adapter/ProxyAdapterTest.php
@@ -27,6 +27,7 @@ class ProxyAdapterTest extends AdapterTestCase
'testDeferredSaveWithoutCommit' => 'Assumes a shared cache which ArrayAdapter is not.',
'testSaveWithoutExpire' => 'Assumes a shared cache which ArrayAdapter is not.',
'testPrune' => 'ProxyAdapter just proxies',
+ 'testClearWithInvalidPrefix' => 'Inner ArrayAdapter does not validate the prefix.',
];
public function createCachePool(int $defaultLifetime = 0, ?string $testMethod = null): CacheItemPoolInterface
diff --git a/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php b/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php
index c5b5e4a91af44..8ede50fe3fe44 100644
--- a/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php
+++ b/src/Symfony/Component/Cache/Traits/AbstractAdapterTrait.php
@@ -125,6 +125,10 @@ public function clear(string $prefix = ''): bool
$this->namespaceVersion = $namespaceVersion;
$this->ids = [];
}
+ } elseif (preg_match('#[^-+.A-Za-z0-9]#', $prefix)) {
+ CacheItem::log($this->logger, 'Failed to clear the cache: Namespace-prefix contains invalid characters.', ['cache-adapter' => get_debug_type($this)]);
+
+ return false;
} else {
$namespaceToClear = $this->namespace.$prefix;
}
diff --git a/src/Symfony/Component/DomCrawler/Crawler.php b/src/Symfony/Component/DomCrawler/Crawler.php
index 4e966cc4ca62b..9dea7f16add6e 100644
--- a/src/Symfony/Component/DomCrawler/Crawler.php
+++ b/src/Symfony/Component/DomCrawler/Crawler.php
@@ -225,7 +225,6 @@ public function addXmlContent(string $content, string $charset = 'UTF-8', int $o
$internalErrors = libxml_use_internal_errors(true);
$dom = new \DOMDocument('1.0', $charset);
- $dom->validateOnParse = true;
if ('' !== trim($content)) {
@$dom->loadXML($content, $options);
diff --git a/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php b/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php
index 02285730eda6e..588a8efb677d7 100644
--- a/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php
+++ b/src/Symfony/Component/DomCrawler/Field/ChoiceFormField.php
@@ -163,7 +163,11 @@ public function addChoice(\DOMElement $node): void
$this->options[] = $option;
if ($node->hasAttribute('checked')) {
- $this->value = $option['value'];
+ if ($this->multiple) {
+ $this->value[] = $option['value'];
+ } else {
+ $this->value = $option['value'];
+ }
}
}
diff --git a/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php b/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php
index 9c956ac56e8bd..a57cc0772916e 100644
--- a/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php
+++ b/src/Symfony/Component/DomCrawler/Tests/AbstractCrawlerTestCase.php
@@ -143,6 +143,18 @@ public function testAddXmlContent()
$this->assertEquals('foo', $crawler->filterXPath('//div')->attr('class'), '->addXmlContent() adds nodes from an XML string');
}
+ public function testAddXmlContentDoesNotExpandExternalEntities()
+ {
+ $crawler = $this->createCrawler();
+ $crawler->addXmlContent(
+ ''
+ .']>'
+ .'&xxe;'
+ );
+
+ $this->assertSame('', $crawler->text());
+ }
+
public function testAddXmlContentCharset()
{
$crawler = $this->createCrawler();
diff --git a/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php b/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php
index 5de407344d2f8..8380d19a6c218 100644
--- a/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php
+++ b/src/Symfony/Component/DomCrawler/Tests/Field/ChoiceFormFieldTest.php
@@ -128,6 +128,22 @@ public function testSelectIsDisabled()
$this->assertTrue($field->isDisabled(), '->isDisabled() returns true for selects with a disabled attribute');
}
+ public function testAddChoiceOnMultipleSelectKeepsExistingValues()
+ {
+ $node = $this->createSelectNode(['foo' => true, 'bar' => false], ['multiple' => 'multiple']);
+ $field = new ChoiceFormField($node);
+
+ $this->assertEquals(['foo'], $field->getValue());
+
+ $document = new \DOMDocument();
+ $newOption = $document->createElement('option', 'baz');
+ $newOption->setAttribute('value', 'baz');
+ $newOption->setAttribute('checked', 'checked');
+ $field->addChoice($newOption);
+
+ $this->assertEquals(['foo', 'baz'], $field->getValue());
+ }
+
public function testMultipleSelects()
{
$node = $this->createSelectNode(['foo' => false, 'bar' => false], ['multiple' => 'multiple']);
diff --git a/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerAllTest.php b/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerAllTest.php
index 46a72f3012c82..2ee7b9d867ba5 100644
--- a/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerAllTest.php
+++ b/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerAllTest.php
@@ -149,7 +149,7 @@ public static function provideSanitizeBody()
],
[
'Lorem ipsum',
- 'Lorem ipsum',
+ 'Lorem ipsum',
],
[
'Test',
diff --git a/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php b/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php
index ae7b5a2582864..c6f007f4607d6 100644
--- a/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php
+++ b/src/Symfony/Component/HtmlSanitizer/Tests/HtmlSanitizerCustomTest.php
@@ -323,6 +323,24 @@ public function testAllowLinksHosts()
);
}
+ public function testAreaUsesLinkPolicy()
+ {
+ $config = (new HtmlSanitizerConfig())
+ ->allowElement('area', ['href'])
+ ->allowLinkHosts(['trusted.com'])
+ ;
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+ }
+
public function testAllowLinksRelative()
{
$config = (new HtmlSanitizerConfig())
@@ -405,6 +423,86 @@ public function testAllowMediasRelative()
);
}
+ public function testActionAttributeIsSanitized()
+ {
+ $config = (new HtmlSanitizerConfig())
+ ->allowElement('form', ['action'])
+ ;
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+ }
+
+ public function testFormactionAttributeIsSanitized()
+ {
+ $config = (new HtmlSanitizerConfig())
+ ->allowElement('button', ['formaction'])
+ ->allowElement('input', ['type', 'formaction'])
+ ;
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+ }
+
+ public function testPosterAttributeIsSanitized()
+ {
+ $config = (new HtmlSanitizerConfig())
+ ->allowElement('video', ['poster'])
+ ;
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+
+ $this->assertSame(
+ '',
+ $this->sanitize($config, '')
+ );
+ }
+
+ public function testCiteAttributeIsSanitized()
+ {
+ $config = (new HtmlSanitizerConfig())
+ ->allowElement('blockquote', ['cite'])
+ ->allowElement('q', ['cite'])
+ ;
+
+ $this->assertSame(
+ 'Hello world
',
+ $this->sanitize($config, 'Hello world
')
+ );
+
+ $this->assertSame(
+ 'Hello world
',
+ $this->sanitize($config, 'Hello world
')
+ );
+ }
+
public function testCustomAttributeSanitizer()
{
$config = (new HtmlSanitizerConfig())
diff --git a/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php b/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php
index 391895024e456..dddd8590a5f68 100644
--- a/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php
+++ b/src/Symfony/Component/HtmlSanitizer/Tests/TextSanitizer/UrlSanitizerTest.php
@@ -283,6 +283,42 @@ public static function provideSanitize(): iterable
'expected' => 'https://trusted.com/link.php',
];
+ yield [
+ 'input' => 'https://evil\\@trusted.com/',
+ 'allowedSchemes' => ['https'],
+ 'allowedHosts' => ['trusted.com'],
+ 'forceHttps' => false,
+ 'allowRelative' => false,
+ 'expected' => null,
+ ];
+
+ yield [
+ 'input' => 'https:/evil.com/',
+ 'allowedSchemes' => ['https'],
+ 'allowedHosts' => ['trusted.com'],
+ 'forceHttps' => false,
+ 'allowRelative' => true,
+ 'expected' => null,
+ ];
+
+ yield [
+ 'input' => 'https:///evil.com/',
+ 'allowedSchemes' => ['https'],
+ 'allowedHosts' => ['trusted.com'],
+ 'forceHttps' => false,
+ 'allowRelative' => true,
+ 'expected' => null,
+ ];
+
+ yield [
+ 'input' => 'https:\\evil.com',
+ 'allowedSchemes' => ['https'],
+ 'allowedHosts' => ['trusted.com'],
+ 'forceHttps' => false,
+ 'allowRelative' => true,
+ 'expected' => null,
+ ];
+
// Allow relative
yield [
'input' => '/link.php',
@@ -369,7 +405,7 @@ public static function provideParse(): iterable
" :foo.com \n" => null,
' foo.com ' => null,
'a: foo.com' => null,
- 'http://f:21/ b ? d # e ' => null,
+ 'http://f:21/ b ? d # e ' => ['scheme' => 'http', 'host' => 'f'],
'lolscheme:x x#x x' => null,
'http://f:/c' => ['scheme' => 'http', 'host' => 'f'],
'http://f:0/c' => ['scheme' => 'http', 'host' => 'f'],
@@ -443,7 +479,7 @@ public static function provideParse(): iterable
'javascript:example.com/' => ['scheme' => 'javascript', 'host' => null],
'mailto:example.com/' => ['scheme' => 'mailto', 'host' => null],
'/a/b/c' => ['scheme' => null, 'host' => null],
- '/a/ /c' => null,
+ '/a/ /c' => ['scheme' => null, 'host' => null],
'/a%2fc' => ['scheme' => null, 'host' => null],
'/a/%2f/c' => ['scheme' => null, 'host' => null],
'#β' => ['scheme' => null, 'host' => null],
@@ -506,7 +542,7 @@ public static function provideParse(): iterable
"http://example.com/\u{feff}/foo" => ['scheme' => 'http', 'host' => 'example.com'],
"http://example.com\u{002f}\u{202e}\u{002f}\u{0066}\u{006f}\u{006f}\u{002f}\u{202d}\u{002f}\u{0062}\u{0061}\u{0072}\u{0027}\u{0020}" => null,
'http://www.google.com/foo?bar=baz#' => ['scheme' => 'http', 'host' => 'www.google.com'],
- 'http://www.google.com/foo?bar=baz# »' => null,
+ 'http://www.google.com/foo?bar=baz# »' => ['scheme' => 'http', 'host' => 'www.google.com'],
'data:test# »' => null,
'http://www.google.com' => ['scheme' => 'http', 'host' => 'www.google.com'],
'http://192.0x00A80001' => ['scheme' => 'http', 'host' => '192.0x00A80001'],
@@ -810,6 +846,22 @@ public static function provideParse(): iterable
'a\\/\\/' => ['scheme' => null, 'host' => null],
'test-a-colon.html' => ['scheme' => null, 'host' => null],
'test-a-colon-b.html' => ['scheme' => null, 'host' => null],
+ 'https://example.com/path with space' => ['scheme' => 'https', 'host' => 'example.com'],
+ 'https://example.com:80/path with space' => ['scheme' => 'https', 'host' => 'example.com'],
+ 'example.com/path with space' => ['scheme' => null, 'host' => null],
+ 'https://user@example.com/path with space' => ['scheme' => 'https', 'host' => 'example.com'],
+ 'https://user with space@www.example.com/path with space' => null,
+ 'https://example.com?query=with space' => ['scheme' => 'https', 'host' => 'example.com'],
+ '//example.com/path with space' => ['scheme' => null, 'host' => 'example.com'],
+ '/file with space.html' => ['scheme' => null, 'host' => null],
+ 'file with space.html' => ['scheme' => null, 'host' => null],
+ 'mailto:foo bar@example.com' => null,
+ 'https://[::1]/path with space' => ['scheme' => 'https', 'host' => '[::1]'],
+ "http://example.com/foo\u{202E}bar" => null,
+ "http://example.com/foo\u{202D}bar with space" => null,
+ "http://example.com/\u{2066}bar with space" => null,
+ "http://example.com/\u{2069}bar" => null,
+ "http://example.com\u{202E}/foo" => null,
];
foreach ($urls as $url => $expected) {
diff --git a/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php b/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php
index 6ebfee8e8f2d9..331e0147e5eca 100644
--- a/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php
+++ b/src/Symfony/Component/HtmlSanitizer/TextSanitizer/UrlSanitizer.php
@@ -35,6 +35,10 @@ public static function sanitize(?string $input, ?array $allowedSchemes = null, b
return null;
}
+ if (false !== strpbrk($input, '\\') || preg_match('~^(?:https?|ftp|wss?):(/[^/]|///)~i', $input)) {
+ return null;
+ }
+
$url = self::parse($input);
// Malformed URL
@@ -94,12 +98,43 @@ public static function parse(string $url): ?array
}
try {
- $parsedUrl = UriString::parse($url);
+ // Reject explicit-direction BiDi formatting characters: they have no
+ // legitimate place in a URL and enable visual spoofing of the rendered
+ // href when the URL is later embedded in HTML.
+ if (preg_match('/[\x{202A}-\x{202E}\x{2066}-\x{2069}]/u', $url)) {
+ return null;
+ }
+
+ // Browsers tolerate spaces inside path/query/fragment by transparently
+ // percent-encoding them. Mirror that behavior, but never inside the
+ // scheme or authority (where spaces are illegal); the whitespace check
+ // below rejects any space that didn't fit in the encoded slice.
+ if (str_contains($url, ' ')) {
+ if (str_starts_with($url, ' ')) {
+ return null;
+ }
+
+ if (false !== $i = strpos($url, '://')) {
+ $i += 3 + strcspn($url, '/?#', $i + 3);
+ } elseif (str_starts_with($url, '//')) {
+ $i = 2 + strcspn($url, '/?#', 2);
+ } elseif (preg_match('#^[a-z][a-z0-9+.\-]*:#i', $url)) {
+ // Hostless scheme (data:, mailto:, …): leave the URL untouched
+ // and let the whitespace check reject it.
+ $i = \strlen($url);
+ } else {
+ $i = 0;
+ }
+
+ $url = substr($url, 0, $i).str_replace(' ', '%20', substr($url, $i));
+ }
if (preg_match('/\s/', $url)) {
return null;
}
+ $parsedUrl = UriString::parse($url);
+
if (isset($parsedUrl['host']) && self::decodeUnreservedCharacters($parsedUrl['host']) !== $parsedUrl['host']) {
return null;
}
diff --git a/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php b/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php
index a3dbf2f098663..7a4b5d44a689c 100644
--- a/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php
+++ b/src/Symfony/Component/HtmlSanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php
@@ -27,12 +27,12 @@ public function getSupportedElements(): ?array
public function getSupportedAttributes(): ?array
{
- return ['src', 'href', 'lowsrc', 'background', 'ping'];
+ return ['src', 'href', 'lowsrc', 'background', 'ping', 'action', 'formaction', 'poster', 'cite'];
}
public function sanitizeAttribute(string $element, string $attribute, string $value, HtmlSanitizerConfig $config): ?string
{
- if ('a' === $element) {
+ if (\in_array($element, ['a', 'area'], true) || \in_array($attribute, ['action', 'formaction', 'cite'], true)) {
return UrlSanitizer::sanitize(
$value,
$config->getAllowedLinkSchemes(),
diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php
index 2c3af1ae5c339..117e0c8f16867 100644
--- a/src/Symfony/Component/HttpFoundation/Request.php
+++ b/src/Symfony/Component/HttpFoundation/Request.php
@@ -836,10 +836,6 @@ public function getClientIps(): array
* being the original client, and each successive proxy that passed the request
* adding the IP address where it received the request from.
*
- * If your reverse proxy uses a different header name than "X-Forwarded-For",
- * ("Client-Ip" for instance), configure it via the $trustedHeaderSet
- * argument of the Request::setTrustedProxies() method instead.
- *
* @see getClientIps()
* @see https://wikipedia.org/wiki/X-Forwarded-For
*/
diff --git a/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestValueResolver.php b/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestValueResolver.php
index 6347f70196681..ef3cc831ea101 100644
--- a/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestValueResolver.php
+++ b/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestValueResolver.php
@@ -35,6 +35,15 @@ public function supports(Request $request, ArgumentMetadata $argument): bool
public function resolve(Request $request, ArgumentMetadata $argument): array
{
- return Request::class === $argument->getType() || is_subclass_of($argument->getType(), Request::class) ? [$request] : [];
+ $type = $argument->getType();
+ if (Request::class !== $type && !is_subclass_of($type, Request::class)) {
+ return [];
+ }
+
+ if ($request->attributes->has($argument->getName())) {
+ return [];
+ }
+
+ return [$request];
}
}
diff --git a/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/SessionValueResolver.php b/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/SessionValueResolver.php
index c8e7575d5397a..45d8b1fa844e9 100644
--- a/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/SessionValueResolver.php
+++ b/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/SessionValueResolver.php
@@ -54,6 +54,10 @@ public function resolve(Request $request, ArgumentMetadata $argument): array
return [];
}
+ if ($request->attributes->has($argument->getName())) {
+ return [];
+ }
+
return $request->getSession() instanceof $type ? [$request->getSession()] : [];
}
}
diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php
index 56d5261ec8545..00e574a7c02b3 100644
--- a/src/Symfony/Component/HttpKernel/Kernel.php
+++ b/src/Symfony/Component/HttpKernel/Kernel.php
@@ -77,11 +77,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
*/
private static array $freshCache = [];
- public const VERSION = '6.4.39';
- public const VERSION_ID = 60439;
+ public const VERSION = '6.4.40';
+ public const VERSION_ID = 60440;
public const MAJOR_VERSION = 6;
public const MINOR_VERSION = 4;
- public const RELEASE_VERSION = 39;
+ public const RELEASE_VERSION = 40;
public const EXTRA_VERSION = '';
public const END_OF_MAINTENANCE = '11/2026';
diff --git a/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestValueResolverTest.php b/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestValueResolverTest.php
new file mode 100644
index 0000000000000..fb584a6ccf0ce
--- /dev/null
+++ b/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/RequestValueResolverTest.php
@@ -0,0 +1,70 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver;
+use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
+use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\ExtendingRequest;
+
+class RequestValueResolverTest extends TestCase
+{
+ public function testResolveReturnsMainRequest()
+ {
+ $resolver = new RequestValueResolver();
+ $request = Request::create('/');
+ $metadata = new ArgumentMetadata('request', Request::class, false, false, null);
+
+ $this->assertSame([$request], $resolver->resolve($request, $metadata));
+ }
+
+ public function testResolveSkipsUnrelatedTypes()
+ {
+ $resolver = new RequestValueResolver();
+ $request = Request::create('/');
+ $metadata = new ArgumentMetadata('foo', \stdClass::class, false, false, null);
+
+ $this->assertSame([], $resolver->resolve($request, $metadata));
+ }
+
+ public function testResolveSupportsExtendingRequest()
+ {
+ $resolver = new RequestValueResolver();
+ $request = new ExtendingRequest();
+ $metadata = new ArgumentMetadata('request', ExtendingRequest::class, false, false, null);
+
+ $this->assertSame([$request], $resolver->resolve($request, $metadata));
+ }
+
+ public function testResolveDefersWhenMatchingNamedAttributeExists()
+ {
+ $resolver = new RequestValueResolver();
+ $request = Request::create('/');
+ $request->attributes->set('request', Request::create('/other'));
+
+ $metadata = new ArgumentMetadata('request', Request::class, false, false, null);
+
+ $this->assertSame([], $resolver->resolve($request, $metadata));
+ }
+
+ public function testResolveIgnoresUnrelatedAttributeName()
+ {
+ $resolver = new RequestValueResolver();
+ $request = Request::create('/');
+ $request->attributes->set('foo', Request::create('/other'));
+
+ $metadata = new ArgumentMetadata('request', Request::class, false, false, null);
+
+ $this->assertSame([$request], $resolver->resolve($request, $metadata));
+ }
+}
diff --git a/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/SessionValueResolverTest.php b/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/SessionValueResolverTest.php
new file mode 100644
index 0000000000000..a8da04b44453f
--- /dev/null
+++ b/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/SessionValueResolverTest.php
@@ -0,0 +1,70 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Session\Session;
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
+use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
+use Symfony\Component\HttpKernel\Controller\ArgumentResolver\SessionValueResolver;
+use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
+
+class SessionValueResolverTest extends TestCase
+{
+ public function testResolveReturnsSession()
+ {
+ $resolver = new SessionValueResolver();
+ $session = new Session(new MockArraySessionStorage());
+ $request = Request::create('/');
+ $request->setSession($session);
+
+ $metadata = new ArgumentMetadata('session', SessionInterface::class, false, false, null);
+
+ $this->assertSame([$session], $resolver->resolve($request, $metadata));
+ }
+
+ public function testResolveSkipsWhenNoSession()
+ {
+ $resolver = new SessionValueResolver();
+ $request = Request::create('/');
+
+ $metadata = new ArgumentMetadata('session', SessionInterface::class, false, false, null);
+
+ $this->assertSame([], $resolver->resolve($request, $metadata));
+ }
+
+ public function testResolveSkipsUnrelatedTypes()
+ {
+ $resolver = new SessionValueResolver();
+ $session = new Session(new MockArraySessionStorage());
+ $request = Request::create('/');
+ $request->setSession($session);
+
+ $metadata = new ArgumentMetadata('foo', \stdClass::class, false, false, null);
+
+ $this->assertSame([], $resolver->resolve($request, $metadata));
+ }
+
+ public function testResolveDefersWhenMatchingNamedAttributeExists()
+ {
+ $resolver = new SessionValueResolver();
+ $session = new Session(new MockArraySessionStorage());
+ $request = Request::create('/');
+ $request->setSession($session);
+ $request->attributes->set('session', new Session(new MockArraySessionStorage()));
+
+ $metadata = new ArgumentMetadata('session', SessionInterface::class, false, false, null);
+
+ $this->assertSame([], $resolver->resolve($request, $metadata));
+ }
+}
diff --git a/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Webhook/MailjetRequestParserTest.php b/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Webhook/MailjetRequestParserTest.php
index 6001db4e90e9e..0b77795b61dda 100644
--- a/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Webhook/MailjetRequestParserTest.php
+++ b/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Webhook/MailjetRequestParserTest.php
@@ -11,9 +11,11 @@
namespace Symfony\Component\Mailer\Bridge\Mailjet\Tests\Webhook;
+use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\Bridge\Mailjet\RemoteEvent\MailjetPayloadConverter;
use Symfony\Component\Mailer\Bridge\Mailjet\Webhook\MailjetRequestParser;
use Symfony\Component\Webhook\Client\RequestParserInterface;
+use Symfony\Component\Webhook\Exception\RejectWebhookException;
use Symfony\Component\Webhook\Test\AbstractRequestParserTestCase;
class MailjetRequestParserTest extends AbstractRequestParserTestCase
@@ -22,4 +24,44 @@ protected function createRequestParser(): RequestParserInterface
{
return new MailjetRequestParser(new MailjetPayloadConverter());
}
+
+ protected function getSecret(): string
+ {
+ return ':top-secret';
+ }
+
+ protected function createRequest(string $payload): Request
+ {
+ return Request::create('/', 'POST', [], [], [], [
+ 'Content-Type' => 'application/json',
+ 'HTTP_Authorization' => 'Basic '.base64_encode(':top-secret'),
+ ], $payload);
+ }
+
+ public function testRejectMissingCredentials()
+ {
+ $parser = new MailjetRequestParser(new MailjetPayloadConverter());
+ $payload = file_get_contents(__DIR__.'/Fixtures/sent.json');
+ $request = Request::create('/', 'POST', [], [], [], [
+ 'Content-Type' => 'application/json',
+ ], $payload);
+
+ $this->expectException(RejectWebhookException::class);
+ $this->expectExceptionMessage('Invalid credentials.');
+ $parser->parse($request, ':top-secret');
+ }
+
+ public function testRejectWrongSecret()
+ {
+ $parser = new MailjetRequestParser(new MailjetPayloadConverter());
+ $payload = file_get_contents(__DIR__.'/Fixtures/sent.json');
+ $request = Request::create('/', 'POST', [], [], [], [
+ 'Content-Type' => 'application/json',
+ 'HTTP_Authorization' => 'Basic '.base64_encode(':wrong-secret'),
+ ], $payload);
+
+ $this->expectException(RejectWebhookException::class);
+ $this->expectExceptionMessage('Invalid credentials.');
+ $parser->parse($request, ':top-secret');
+ }
}
diff --git a/src/Symfony/Component/Mailer/Bridge/Mailjet/Webhook/MailjetRequestParser.php b/src/Symfony/Component/Mailer/Bridge/Mailjet/Webhook/MailjetRequestParser.php
index 31d8f9243ecf7..c77e87a406131 100644
--- a/src/Symfony/Component/Mailer/Bridge/Mailjet/Webhook/MailjetRequestParser.php
+++ b/src/Symfony/Component/Mailer/Bridge/Mailjet/Webhook/MailjetRequestParser.php
@@ -39,6 +39,10 @@ protected function getRequestMatcher(): RequestMatcherInterface
protected function doParse(Request $request, #[\SensitiveParameter] string $secret): ?AbstractMailerEvent
{
+ if ($secret && !hash_equals('Basic '.base64_encode($secret), $request->headers->get('Authorization', ''))) {
+ throw new RejectWebhookException(403, 'Invalid credentials.');
+ }
+
try {
return $this->converter->convert($request->toArray());
} catch (ParseException $e) {
diff --git a/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php b/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php
index 057f9c5e69c5e..cf7e9d806830e 100644
--- a/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php
+++ b/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php
@@ -67,7 +67,7 @@ public function testToIsUsedWhenRecipientsAreNotSet()
$sendmailTransport = new SendmailTransport(self::FAKE_SENDMAIL);
$sendmailTransport->send($mail, $envelope);
- $this->assertStringEqualsFile($this->argsPath, __DIR__.'/Fixtures/fake-sendmail.php -ffrom@mail.com to@mail.com');
+ $this->assertStringEqualsFile($this->argsPath, __DIR__.'/Fixtures/fake-sendmail.php -ffrom@mail.com -- to@mail.com');
}
public function testRecipientsAreUsedWhenSet()
@@ -79,7 +79,7 @@ public function testRecipientsAreUsedWhenSet()
$sendmailTransport = new SendmailTransport(self::FAKE_SENDMAIL);
$sendmailTransport->send($mail, $envelope);
- $this->assertStringEqualsFile($this->argsPath, __DIR__.'/Fixtures/fake-sendmail.php -ffrom@mail.com recipient@mail.com');
+ $this->assertStringEqualsFile($this->argsPath, __DIR__.'/Fixtures/fake-sendmail.php -ffrom@mail.com -- recipient@mail.com');
}
public function testThrowsTransportExceptionOnFailure()
diff --git a/src/Symfony/Component/Mailer/Transport/SendmailTransport.php b/src/Symfony/Component/Mailer/Transport/SendmailTransport.php
index 45cf503e162b2..48960df0fa63a 100644
--- a/src/Symfony/Component/Mailer/Transport/SendmailTransport.php
+++ b/src/Symfony/Component/Mailer/Transport/SendmailTransport.php
@@ -107,6 +107,9 @@ protected function doSend(SentMessage $message): void
$chunks = AbstractStream::replace("\n.", "\n..", $chunks);
}
+ if ($recipients) {
+ $command .= ' --';
+ }
foreach ($recipients as $recipient) {
$command .= ' '.escapeshellarg($recipient->getEncodedAddress());
}
diff --git a/src/Symfony/Component/Mime/Address.php b/src/Symfony/Component/Mime/Address.php
index a78b64321d7fb..1805f119b0f20 100644
--- a/src/Symfony/Component/Mime/Address.php
+++ b/src/Symfony/Component/Mime/Address.php
@@ -50,6 +50,10 @@ public function __construct(string $address, string $name = '')
$this->address = trim($address);
$this->name = trim(str_replace(["\n", "\r"], '', $name));
+ if (preg_match('/[\x00-\x1F\x7F]/', $this->address)) {
+ throw new InvalidArgumentException('Email address contains control characters.');
+ }
+
if (!self::$validator->isValid($this->address, class_exists(MessageIDValidation::class) ? new MessageIDValidation() : new RFCValidation())) {
throw new RfcComplianceException(\sprintf('Email "%s" does not comply with addr-spec of RFC 2822.', $address));
}
diff --git a/src/Symfony/Component/Mime/Tests/AddressTest.php b/src/Symfony/Component/Mime/Tests/AddressTest.php
index baef170efc4f6..e76205066dcea 100644
--- a/src/Symfony/Component/Mime/Tests/AddressTest.php
+++ b/src/Symfony/Component/Mime/Tests/AddressTest.php
@@ -38,6 +38,26 @@ public function testConstructorWithInvalidAddress()
new Address('fab pot@symfony.com');
}
+ /**
+ * @dataProvider provideAddressesWithControlCharacters
+ */
+ public function testConstructorRejectsControlCharactersInAddress(string $address)
+ {
+ $this->expectException(InvalidArgumentException::class);
+ new Address($address);
+ }
+
+ public static function provideAddressesWithControlCharacters(): iterable
+ {
+ yield 'CRLF in quoted-string' => ["\"x\r\nBcc: attacker@evil\"@example.com"];
+ yield 'CR only' => ["foo\r@example.com"];
+ yield 'LF only' => ["foo\n@example.com"];
+ yield 'NUL byte' => ["foo\x00@example.com"];
+ yield 'HTAB' => ["foo\t@example.com"];
+ yield 'DEL (0x7F)' => ["foo\x7F@example.com"];
+ yield 'control char in domain' => ["foo@example\x01.com"];
+ }
+
public function testCreate()
{
$this->assertSame($a = new Address('fabien@symfony.com'), Address::create($a));
diff --git a/src/Symfony/Component/Notifier/Bridge/Twilio/Tests/Webhook/TwilioRequestParserTest.php b/src/Symfony/Component/Notifier/Bridge/Twilio/Tests/Webhook/TwilioRequestParserTest.php
index 8a9d2ed78a37c..f0cf2bfffad5e 100644
--- a/src/Symfony/Component/Notifier/Bridge/Twilio/Tests/Webhook/TwilioRequestParserTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Twilio/Tests/Webhook/TwilioRequestParserTest.php
@@ -14,6 +14,7 @@
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Notifier\Bridge\Twilio\Webhook\TwilioRequestParser;
use Symfony\Component\Webhook\Client\RequestParserInterface;
+use Symfony\Component\Webhook\Exception\RejectWebhookException;
use Symfony\Component\Webhook\Test\AbstractRequestParserTestCase;
class TwilioRequestParserTest extends AbstractRequestParserTestCase
@@ -36,4 +37,86 @@ protected static function getFixtureExtension(): string
{
return 'txt';
}
+
+ public function testValidSignatureIsAccepted()
+ {
+ $secret = 's3cret-token';
+ $params = [
+ 'MessageSid' => 'SM1234',
+ 'MessageStatus' => 'delivered',
+ 'To' => '+15555550100',
+ ];
+ $url = 'https://example.com/webhook';
+ $signature = $this->computeTwilioSignature($url, $params, $secret);
+
+ $request = Request::create($url, 'POST', $params, [], [], [
+ 'Content-Type' => 'application/x-www-form-urlencoded',
+ 'HTTP_X-Twilio-Signature' => $signature,
+ ]);
+
+ $event = (new TwilioRequestParser())->parse($request, $secret);
+ $this->assertNotNull($event);
+ $this->assertSame('SM1234', $event->getId());
+ }
+
+ public function testMissingSignatureHeaderIsRejected()
+ {
+ $request = Request::create('https://example.com/webhook', 'POST', [
+ 'MessageSid' => 'SM1234',
+ 'MessageStatus' => 'delivered',
+ 'To' => '+15555550100',
+ ], [], [], [
+ 'Content-Type' => 'application/x-www-form-urlencoded',
+ ]);
+
+ $this->expectException(RejectWebhookException::class);
+ (new TwilioRequestParser())->parse($request, 's3cret-token');
+ }
+
+ public function testBadSignatureIsRejected()
+ {
+ $request = Request::create('https://example.com/webhook', 'POST', [
+ 'MessageSid' => 'SM1234',
+ 'MessageStatus' => 'delivered',
+ 'To' => '+15555550100',
+ ], [], [], [
+ 'Content-Type' => 'application/x-www-form-urlencoded',
+ 'HTTP_X-Twilio-Signature' => base64_encode('not-the-right-mac'),
+ ]);
+
+ $this->expectException(RejectWebhookException::class);
+ (new TwilioRequestParser())->parse($request, 's3cret-token');
+ }
+
+ public function testJsonContentTypeIsRejected()
+ {
+ $request = Request::create(
+ 'https://example.com/webhook',
+ 'POST',
+ [],
+ [],
+ [],
+ ['Content-Type' => 'application/json'],
+ json_encode([
+ 'MessageSid' => 'SM1234',
+ 'MessageStatus' => 'delivered',
+ 'To' => '+15555550100',
+ ])
+ );
+
+ $this->expectException(RejectWebhookException::class);
+ $this->expectExceptionMessage('Payload is malformed.');
+ (new TwilioRequestParser())->parse($request, 's3cret-token');
+ }
+
+ private function computeTwilioSignature(string $url, array $params, string $secret): string
+ {
+ ksort($params);
+ $data = $url;
+ foreach ($params as $k => $v) {
+ $data .= $k.$v;
+ }
+
+ return base64_encode(hash_hmac('sha1', $data, $secret, true));
+ }
}
diff --git a/src/Symfony/Component/Notifier/Bridge/Twilio/Webhook/TwilioRequestParser.php b/src/Symfony/Component/Notifier/Bridge/Twilio/Webhook/TwilioRequestParser.php
index 84d8f2ee744f9..267b1702e47f4 100644
--- a/src/Symfony/Component/Notifier/Bridge/Twilio/Webhook/TwilioRequestParser.php
+++ b/src/Symfony/Component/Notifier/Bridge/Twilio/Webhook/TwilioRequestParser.php
@@ -38,6 +38,10 @@ protected function doParse(Request $request, #[\SensitiveParameter] string $secr
throw new RejectWebhookException(406, 'Payload is malformed.');
}
+ if ('' !== $secret) {
+ $this->verifySignature($request, $payload, $secret);
+ }
+
$name = match ($payload['MessageStatus']) {
'delivered' => SmsEvent::DELIVERED,
'failed' => SmsEvent::FAILED,
@@ -50,7 +54,7 @@ protected function doParse(Request $request, #[\SensitiveParameter] string $secr
'receiving' => null,
'received' => null,
'scheduled' => null,
- default => throw new RejectWebhookException(406, \sprintf('Unsupported event "%s".', $payload['event'])),
+ default => throw new RejectWebhookException(406, \sprintf('Unsupported event "%s".', $payload['MessageStatus'])),
};
if (!$name) {
return null;
@@ -60,4 +64,30 @@ protected function doParse(Request $request, #[\SensitiveParameter] string $secr
return $event;
}
+
+ /**
+ * Validates the X-Twilio-Signature header against the documented scheme:
+ * HMAC-SHA1 over the full request URL concatenated with the POST parameters
+ * sorted alphabetically by key (key1.value1.key2.value2...), then base64-encoded.
+ *
+ * @see https://www.twilio.com/docs/usage/webhooks/webhooks-security
+ */
+ private function verifySignature(Request $request, array $payload, #[\SensitiveParameter] string $secret): void
+ {
+ if (!$signature = $request->headers->get('X-Twilio-Signature')) {
+ throw new RejectWebhookException(406, 'Missing signature header.');
+ }
+
+ ksort($payload);
+ $data = $request->getUri();
+ foreach ($payload as $key => $value) {
+ $data .= $key.$value;
+ }
+
+ $expected = base64_encode(hash_hmac('sha1', $data, $secret, true));
+
+ if (!hash_equals($expected, $signature)) {
+ throw new RejectWebhookException(406, 'Signature is invalid.');
+ }
+ }
}
diff --git a/src/Symfony/Component/Routing/Generator/UrlGenerator.php b/src/Symfony/Component/Routing/Generator/UrlGenerator.php
index 754cf5e8687cc..98d502db51e21 100644
--- a/src/Symfony/Component/Routing/Generator/UrlGenerator.php
+++ b/src/Symfony/Component/Routing/Generator/UrlGenerator.php
@@ -177,7 +177,7 @@ protected function doGenerate(array $variables, array $defaults, array $requirem
if (!$optional || $important || !\array_key_exists($varName, $defaults) || (null !== $mergedParams[$varName] && (string) $mergedParams[$varName] !== (string) $defaults[$varName])) {
// check requirement (while ignoring look-around patterns)
- if (null !== $this->strictRequirements && !preg_match('#^'.preg_replace('/\(\?(?:=|<=|!|strictRequirements && !preg_match('#^(?:'.preg_replace('/\(\?(?:=|<=|!|strictRequirements) {
throw new InvalidParameterException(strtr($message, ['{parameter}' => $varName, '{route}' => $name, '{expected}' => $token[2], '{given}' => $mergedParams[$varName]]));
}
@@ -230,7 +230,7 @@ protected function doGenerate(array $variables, array $defaults, array $requirem
foreach ($hostTokens as $token) {
if ('variable' === $token[0]) {
// check requirement (while ignoring look-around patterns)
- if (null !== $this->strictRequirements && !preg_match('#^'.preg_replace('/\(\?(?:=|<=|!|strictRequirements && !preg_match('#^(?:'.preg_replace('/\(\?(?:=|<=|!|strictRequirements) {
throw new InvalidParameterException(strtr($message, ['{parameter}' => $token[3], '{route}' => $name, '{expected}' => $token[2], '{given}' => $mergedParams[$token[3]]]));
}
diff --git a/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php b/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php
index 733239d6f3f54..b1b6373821fca 100644
--- a/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php
+++ b/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php
@@ -366,6 +366,14 @@ public function testGenerateForRouteWithInvalidParameter()
$this->getGenerator($routes)->generate('test', ['foo' => '0'], UrlGeneratorInterface::ABSOLUTE_URL);
}
+ public function testGenerateForRouteWithAlternationRequirementRejectsSubstringMatch()
+ {
+ $routes = $this->getRoutes('test', new Route('/{_locale}/blog', [], ['_locale' => 'en|fr|vi|de']));
+
+ $this->expectException(InvalidParameterException::class);
+ $this->getGenerator($routes)->generate('test', ['_locale' => '/evil.com']);
+ }
+
public function testGenerateForRouteWithInvalidOptionalParameterNonStrict()
{
$routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
diff --git a/src/Symfony/Component/Runtime/SymfonyRuntime.php b/src/Symfony/Component/Runtime/SymfonyRuntime.php
index a6e1cba733f6e..acc1a38d7b4a8 100644
--- a/src/Symfony/Component/Runtime/SymfonyRuntime.php
+++ b/src/Symfony/Component/Runtime/SymfonyRuntime.php
@@ -96,7 +96,7 @@ public function __construct(array $options = [])
if (isset($options['env'])) {
$_SERVER[$envKey] = $options['env'];
- } elseif (empty($_GET) && isset($_SERVER['argv']) && class_exists(ArgvInput::class)) {
+ } elseif (!isset($_SERVER['QUERY_STRING']) && isset($_SERVER['argv']) && class_exists(ArgvInput::class)) {
$this->options = $options;
$this->getInput();
}
@@ -208,7 +208,7 @@ protected static function register(GenericRuntime $runtime): GenericRuntime
private function getInput(): ArgvInput
{
- if (!empty($_GET) && filter_var(\ini_get('register_argc_argv'), \FILTER_VALIDATE_BOOL)) {
+ if (isset($_SERVER['QUERY_STRING']) && filter_var(\ini_get('register_argc_argv'), \FILTER_VALIDATE_BOOL)) {
throw new \Exception('CLI applications cannot be run safely on non-CLI SAPIs with register_argc_argv=On.');
}
diff --git a/src/Symfony/Component/Runtime/Tests/phpt/kernel_query_string_argv_bypass.phpt b/src/Symfony/Component/Runtime/Tests/phpt/kernel_query_string_argv_bypass.phpt
new file mode 100644
index 0000000000000..975145d4c4b5d
--- /dev/null
+++ b/src/Symfony/Component/Runtime/Tests/phpt/kernel_query_string_argv_bypass.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Test that argv is ignored on web requests even when $_GET parses empty (QUERY_STRING gap)
+--INI--
+display_errors=1
+register_argc_argv=1
+--FILE--
+
+--EXPECTF--
+OK Kernel (env=dev) foo_bar
diff --git a/src/Symfony/Component/Runtime/Tests/phpt/kernel_register_argc_argv.phpt b/src/Symfony/Component/Runtime/Tests/phpt/kernel_register_argc_argv.phpt
index 4da82d2ac6408..3f6b5a57640d1 100644
--- a/src/Symfony/Component/Runtime/Tests/phpt/kernel_register_argc_argv.phpt
+++ b/src/Symfony/Component/Runtime/Tests/phpt/kernel_register_argc_argv.phpt
@@ -8,6 +8,7 @@ register_argc_argv=1
// emulating PHP behavior with register_argc_argv=1
$_GET['-e_test'] = '';
+$_SERVER['QUERY_STRING'] = '-e_test=';
$_SERVER['argc'] = 1;
$_SERVER['argv'] = [' ', '-e', 'test'];
diff --git a/src/Symfony/Component/Security/Http/AccessToken/Oidc/OidcTokenHandler.php b/src/Symfony/Component/Security/Http/AccessToken/Oidc/OidcTokenHandler.php
index f125eb5701b6a..b86a8f1d2cfd2 100644
--- a/src/Symfony/Component/Security/Http/AccessToken/Oidc/OidcTokenHandler.php
+++ b/src/Symfony/Component/Security/Http/AccessToken/Oidc/OidcTokenHandler.php
@@ -85,7 +85,7 @@ public function getUserBadgeFrom(string $accessToken): UserBadge
];
$claimCheckerManager = new ClaimCheckerManager($checkers);
// if this check fails, an InvalidClaimException is thrown
- $claimCheckerManager->check($claims);
+ $claimCheckerManager->check($claims, ['iat', 'exp', 'aud', 'iss']);
if (empty($claims[$this->claim])) {
throw new MissingClaimException(\sprintf('"%s" claim not found.', $this->claim));
diff --git a/src/Symfony/Component/Security/Http/Authenticator/X509Authenticator.php b/src/Symfony/Component/Security/Http/Authenticator/X509Authenticator.php
index ed2d686cd846d..f2161b3bb57a1 100644
--- a/src/Symfony/Component/Security/Http/Authenticator/X509Authenticator.php
+++ b/src/Symfony/Component/Security/Http/Authenticator/X509Authenticator.php
@@ -48,7 +48,13 @@ protected function extractUsername(Request $request): string
$username = $request->server->get($this->userKey);
} elseif (
$request->server->has($this->credentialsKey)
- && preg_match('#'.preg_quote($this->credentialUserIdentifier, '#').'=([^,/]++)#', $request->server->get($this->credentialsKey), $matches)
+ && preg_match(
+ 'emailAddress' === $this->credentialUserIdentifier
+ ? '#(?:^|[,/])\s*(?:emailAddress|1\.2\.840\.113549\.1\.9\.1)=([^,/@]++@[^,/]++)#'
+ : '#(?:^|[,/])\s*'.preg_quote($this->credentialUserIdentifier, '#').'=([^,/]++)#',
+ $request->server->get($this->credentialsKey),
+ $matches,
+ )
) {
$username = trim($matches[1]);
}
diff --git a/src/Symfony/Component/Security/Http/Tests/AccessToken/Oidc/OidcTokenHandlerTest.php b/src/Symfony/Component/Security/Http/Tests/AccessToken/Oidc/OidcTokenHandlerTest.php
index 30a85f3ea6829..91f5d7770329a 100644
--- a/src/Symfony/Component/Security/Http/Tests/AccessToken/Oidc/OidcTokenHandlerTest.php
+++ b/src/Symfony/Component/Security/Http/Tests/AccessToken/Oidc/OidcTokenHandlerTest.php
@@ -98,10 +98,8 @@ public function testThrowsAnErrorIfTokenIsInvalid(string $token)
public static function getInvalidTokens(): iterable
{
- // Invalid token
- yield ['invalid'];
- // Token is expired
- yield [
+ yield 'Invalid token' => ['invalid'];
+ yield 'Token is expired' => [
self::buildJWS(json_encode([
'iat' => time() - 3600,
'nbf' => time() - 3600,
@@ -112,8 +110,7 @@ public static function getInvalidTokens(): iterable
'email' => 'foo@example.com',
])),
];
- // Invalid audience
- yield [
+ yield 'Invalid audience' => [
self::buildJWS(json_encode([
'iat' => time(),
'nbf' => time(),
@@ -124,6 +121,42 @@ public static function getInvalidTokens(): iterable
'email' => 'foo@example.com',
])),
];
+ yield 'Missing "aud" claim' => [
+ self::buildJWS(json_encode([
+ 'iat' => time(),
+ 'nbf' => time(),
+ 'exp' => time() + 3600,
+ 'iss' => 'https://www.example.com',
+ 'sub' => 'e21bf182-1538-406e-8ccb-e25a17aba39f',
+ ])),
+ ];
+ yield 'Missing "iss" claim' => [
+ self::buildJWS(json_encode([
+ 'iat' => time(),
+ 'nbf' => time(),
+ 'exp' => time() + 3600,
+ 'aud' => self::AUDIENCE,
+ 'sub' => 'e21bf182-1538-406e-8ccb-e25a17aba39f',
+ ])),
+ ];
+ yield 'Missing "exp" claim' => [
+ self::buildJWS(json_encode([
+ 'iat' => time(),
+ 'nbf' => time(),
+ 'iss' => 'https://www.example.com',
+ 'aud' => self::AUDIENCE,
+ 'sub' => 'e21bf182-1538-406e-8ccb-e25a17aba39f',
+ ])),
+ ];
+ yield 'Missing "iat" claim' => [
+ self::buildJWS(json_encode([
+ 'nbf' => time(),
+ 'exp' => time() + 3600,
+ 'iss' => 'https://www.example.com',
+ 'aud' => self::AUDIENCE,
+ 'sub' => 'e21bf182-1538-406e-8ccb-e25a17aba39f',
+ ])),
+ ];
}
public function testThrowsAnErrorIfUserPropertyIsMissing()
diff --git a/src/Symfony/Component/Security/Http/Tests/Authenticator/X509AuthenticatorTest.php b/src/Symfony/Component/Security/Http/Tests/Authenticator/X509AuthenticatorTest.php
index afc6335d2635b..50e89a1efea97 100644
--- a/src/Symfony/Component/Security/Http/Tests/Authenticator/X509AuthenticatorTest.php
+++ b/src/Symfony/Component/Security/Http/Tests/Authenticator/X509AuthenticatorTest.php
@@ -81,6 +81,26 @@ public static function provideServerVarsNoUser()
yield ['cert+something@example.com', 'emailAddress=cert+something@example.com,CN=Sample certificate DN'];
yield ['cert+something@example.com', 'emailAddress=cert+something@example.com'];
yield ['firstname.lastname@mycompany.co.uk', 'emailAddress=firstname.lastname@mycompany.co.uk,CN=Firstname.Lastname,OU=london,OU=company design and engineering,OU=Issuer London,OU=Roaming,OU=Interactive,OU=Users,OU=Standard,OU=Business,DC=england,DC=core,DC=company,DC=co,DC=uk'];
+ yield ['cert@example.com', '1.2.840.113549.1.9.1=cert@example.com,CN=Sample certificate DN'];
+ yield ['cert@example.com', 'CN=Sample certificate DN/1.2.840.113549.1.9.1=cert@example.com'];
+ }
+
+ /**
+ * @dataProvider provideSpoofedDns
+ */
+ public function testAuthenticationRejectsSpoofedEmailInDn(string $dn)
+ {
+ $request = $this->createRequest(['SSL_CLIENT_S_DN' => $dn]);
+
+ $this->assertFalse($this->authenticator->supports($request));
+ }
+
+ public static function provideSpoofedDns()
+ {
+ yield ['CN=emailAddress=admin@target.example,O=Attacker Corp'];
+ yield ['CN=foo,OU=emailAddress=admin@target.example,O=Attacker'];
+ yield ['CN=1.2.840.113549.1.9.1=admin@target.example,O=Attacker Corp'];
+ yield ['CN=foo,OU=1.2.840.113549.1.9.1=admin@target.example,O=Attacker'];
}
public function testSupportNoData()
diff --git a/src/Symfony/Component/Yaml/CHANGELOG.md b/src/Symfony/Component/Yaml/CHANGELOG.md
index 0c2021f48b2ef..61ac370ecaf1c 100644
--- a/src/Symfony/Component/Yaml/CHANGELOG.md
+++ b/src/Symfony/Component/Yaml/CHANGELOG.md
@@ -20,6 +20,9 @@ CHANGELOG
5.4
---
+ * Add a `$maxNestingLevel` argument to `Parser::__construct()`, `Yaml::parse()` and `Yaml::parseFile()` to bound recursion depth (default 128)
+ * Add a `$maxAliasesForCollections` argument to `Parser::__construct()`, `Yaml::parse()` and `Yaml::parseFile()` to bound alias expansion of collection values (default 128)
+ * Add `Yaml::PARSE_EXCEPTION_ON_ALIAS` to reject YAML aliases while parsing untrusted input
* Add new `lint:yaml dirname --exclude=/dirname/foo.yaml --exclude=/dirname/bar.yaml`
option to exclude one or more specific files from multiple file list
* Allow negatable for the parse tags option with `--no-parse-tags`
diff --git a/src/Symfony/Component/Yaml/Inline.php b/src/Symfony/Component/Yaml/Inline.php
index e8e7a04f3e3a1..08730aafd453b 100644
--- a/src/Symfony/Component/Yaml/Inline.php
+++ b/src/Symfony/Component/Yaml/Inline.php
@@ -55,9 +55,10 @@ public static function initialize(int $flags, ?int $parsedLineNumber = null, ?st
*
* @throws ParseException
*/
- public static function parse(string $value, int $flags = 0, array &$references = []): mixed
+ public static function parse(string $value, int $flags = 0, array &$references = [], ?ParserState $state = null): mixed
{
self::initialize($flags);
+ $state ??= new ParserState();
$value = trim($value);
@@ -66,18 +67,19 @@ public static function parse(string $value, int $flags = 0, array &$references =
}
$i = 0;
+ $isQuoted = null;
$tag = self::parseTag($value, $i, $flags);
switch ($value[$i]) {
case '[':
- $result = self::parseSequence($value, $flags, $i, $references);
+ $result = self::parseSequence($state, $value, $flags, $i, $references);
++$i;
break;
case '{':
- $result = self::parseMapping($value, $flags, $i, $references);
+ $result = self::parseMapping($state, $value, $flags, $i, $references);
++$i;
break;
default:
- $result = self::parseScalar($value, $flags, null, $i, true, $references);
+ $result = self::parseScalar($value, $flags, null, $i, true, $references, $isQuoted, $state);
}
// some comments are allowed at the end
@@ -267,7 +269,7 @@ private static function dumpNull(int $flags): string
*
* @throws ParseException When malformed inline YAML string is parsed
*/
- public static function parseScalar(string $scalar, int $flags = 0, ?array $delimiters = null, int &$i = 0, bool $evaluate = true, array &$references = [], ?bool &$isQuoted = null): mixed
+ public static function parseScalar(string $scalar, int $flags = 0, ?array $delimiters = null, int &$i = 0, bool $evaluate = true, array &$references = [], ?bool &$isQuoted = null, ?ParserState $state = null): mixed
{
if (\in_array($scalar[$i], ['"', "'"], true)) {
// quoted scalar
@@ -309,7 +311,8 @@ public static function parseScalar(string $scalar, int $flags = 0, ?array $delim
}
if ($evaluate) {
- $output = self::evaluateScalar($output, $flags, $references, $isQuoted);
+ $state ??= new ParserState();
+ $output = self::evaluateScalar($state, $output, $flags, $references, $isQuoted);
}
}
@@ -346,96 +349,102 @@ private static function parseQuotedScalar(string $scalar, int &$i = 0): string
*
* @throws ParseException When malformed inline YAML string is parsed
*/
- private static function parseSequence(string $sequence, int $flags, int &$i = 0, array &$references = []): array
+ private static function parseSequence(ParserState $state, string $sequence, int $flags, int &$i = 0, array &$references = []): array
{
+ $state->enterNestingLevel(self::$parsedLineNumber + 1, null, self::$parsedFilename);
+
$output = [];
$len = \strlen($sequence);
++$i;
- // [foo, bar, ...]
- $lastToken = null;
- while ($i < $len) {
- if (']' === $sequence[$i]) {
- return $output;
- }
- if (',' === $sequence[$i] || ' ' === $sequence[$i]) {
- if (',' === $sequence[$i] && (null === $lastToken || 'separator' === $lastToken)) {
- $output[] = null;
- } elseif (',' === $sequence[$i]) {
- $lastToken = 'separator';
+ try {
+ // [foo, bar, ...]
+ $lastToken = null;
+ while ($i < $len) {
+ if (']' === $sequence[$i]) {
+ return $output;
}
+ if (',' === $sequence[$i] || ' ' === $sequence[$i]) {
+ if (',' === $sequence[$i] && (null === $lastToken || 'separator' === $lastToken)) {
+ $output[] = null;
+ } elseif (',' === $sequence[$i]) {
+ $lastToken = 'separator';
+ }
- ++$i;
-
- continue;
- }
+ ++$i;
- $tag = self::parseTag($sequence, $i, $flags);
- switch ($sequence[$i]) {
- case '[':
- // nested sequence
- $value = self::parseSequence($sequence, $flags, $i, $references);
- break;
- case '{':
- // nested mapping
- $value = self::parseMapping($sequence, $flags, $i, $references);
- break;
- default:
- $hasAnchorAtStart = null === $tag && isset($sequence[$i]) && '&' === $sequence[$i];
- $value = self::parseScalar($sequence, $flags, [',', ']'], $i, null === $tag, $references, $isQuoted);
-
- // the value can be an array if a reference has been resolved to an array var
- if (\is_string($value) && !$isQuoted && str_contains($value, ': ')) {
- // embedded mapping?
- $j = $i;
- $mappingValue = $value;
- $mappingException = null;
- do {
- try {
- $pos = 0;
- $value = self::parseMapping('{'.$mappingValue.'}', $flags, $pos, $references);
- $i = $j;
- $mappingException = null;
- break;
- } catch (ParseException $exception) {
- $mappingException = $exception;
- if ($j >= $len) {
- break;
- }
+ continue;
+ }
- $mappingValue .= $sequence[$j++];
- if ($j >= $len) {
+ $tag = self::parseTag($sequence, $i, $flags);
+ switch ($sequence[$i]) {
+ case '[':
+ // nested sequence
+ $value = self::parseSequence($state, $sequence, $flags, $i, $references);
+ break;
+ case '{':
+ // nested mapping
+ $value = self::parseMapping($state, $sequence, $flags, $i, $references);
+ break;
+ default:
+ $hasAnchorAtStart = null === $tag && isset($sequence[$i]) && '&' === $sequence[$i];
+ $value = self::parseScalar($sequence, $flags, [',', ']'], $i, null === $tag, $references, $isQuoted, $state);
+
+ // the value can be an array if a reference has been resolved to an array var
+ if (\is_string($value) && !$isQuoted && str_contains($value, ': ')) {
+ // embedded mapping?
+ $j = $i;
+ $mappingValue = $value;
+ $mappingException = null;
+ do {
+ try {
+ $pos = 0;
+ $value = self::parseMapping($state, '{'.$mappingValue.'}', $flags, $pos, $references);
+ $i = $j;
+ $mappingException = null;
break;
+ } catch (ParseException $exception) {
+ $mappingException = $exception;
+ if ($j >= $len) {
+ break;
+ }
+
+ $mappingValue .= $sequence[$j++];
+ if ($j >= $len) {
+ break;
+ }
+
+ $mappingValue .= self::parseScalar($sequence, $flags, [',', ']'], $j, null === $tag, $references);
}
+ } while ($j < $len);
- $mappingValue .= self::parseScalar($sequence, $flags, [',', ']'], $j, null === $tag, $references);
+ if ($mappingException) {
+ throw $mappingException;
}
- } while ($j < $len);
+ }
- if ($mappingException) {
- throw $mappingException;
+ if ($hasAnchorAtStart && !$isQuoted && \is_string($value) && '' !== $value && '&' === $value[0] && Parser::preg_match(Parser::REFERENCE_PATTERN, $value, $matches)) {
+ $value = '' === $matches['value'] ? null : $matches['value'];
+ $references[$matches['ref']] = $value;
}
- }
- if ($hasAnchorAtStart && !$isQuoted && \is_string($value) && '' !== $value && '&' === $value[0] && Parser::preg_match(Parser::REFERENCE_PATTERN, $value, $matches)) {
- $value = '' === $matches['value'] ? null : $matches['value'];
- $references[$matches['ref']] = $value;
- }
+ --$i;
+ }
- --$i;
- }
+ if (null !== $tag && '' !== $tag) {
+ $value = new TaggedValue($tag, $value);
+ }
- if (null !== $tag && '' !== $tag) {
- $value = new TaggedValue($tag, $value);
- }
+ $output[] = $value;
- $output[] = $value;
+ $lastToken = 'value';
+ ++$i;
+ }
- $lastToken = 'value';
- ++$i;
+ throw new ParseException(\sprintf('Malformed inline YAML string: "%s".', $sequence), self::$parsedLineNumber + 1, null, self::$parsedFilename);
+ } finally {
+ $state->leaveNestingLevel();
}
-
- throw new ParseException(\sprintf('Malformed inline YAML string: "%s".', $sequence), self::$parsedLineNumber + 1, null, self::$parsedFilename);
}
/**
@@ -443,144 +452,150 @@ private static function parseSequence(string $sequence, int $flags, int &$i = 0,
*
* @throws ParseException When malformed inline YAML string is parsed
*/
- private static function parseMapping(string $mapping, int $flags, int &$i = 0, array &$references = []): array|\stdClass
+ private static function parseMapping(ParserState $state, string $mapping, int $flags, int &$i = 0, array &$references = []): array|\stdClass
{
+ $state->enterNestingLevel(self::$parsedLineNumber + 1, null, self::$parsedFilename);
+
$output = [];
$len = \strlen($mapping);
++$i;
$allowOverwrite = false;
- // {foo: bar, bar:foo, ...}
- while ($i < $len) {
- switch ($mapping[$i]) {
- case ' ':
- case ',':
- case "\n":
- ++$i;
- continue 2;
- case '}':
- if (self::$objectForMap) {
- return (object) $output;
- }
+ try {
+ // {foo: bar, bar:foo, ...}
+ while ($i < $len) {
+ switch ($mapping[$i]) {
+ case ' ':
+ case ',':
+ case "\n":
+ ++$i;
+ continue 2;
+ case '}':
+ if (self::$objectForMap) {
+ return (object) $output;
+ }
- return $output;
- }
+ return $output;
+ }
- // key
- $offsetBeforeKeyParsing = $i;
- $isKeyQuoted = \in_array($mapping[$i], ['"', "'"], true);
- $key = self::parseScalar($mapping, $flags, [':', ' '], $i, false);
+ // key
+ $offsetBeforeKeyParsing = $i;
+ $isKeyQuoted = \in_array($mapping[$i], ['"', "'"], true);
+ $key = self::parseScalar($mapping, $flags, [':', ' '], $i, false);
- if ($offsetBeforeKeyParsing === $i) {
- throw new ParseException('Missing mapping key.', self::$parsedLineNumber + 1, $mapping);
- }
+ if ($offsetBeforeKeyParsing === $i) {
+ throw new ParseException('Missing mapping key.', self::$parsedLineNumber + 1, $mapping);
+ }
- if ('!php/const' === $key || '!php/enum' === $key) {
- $key .= ' '.self::parseScalar($mapping, $flags, ['(?leaveNestingLevel();
+ }
}
/**
@@ -588,7 +603,7 @@ private static function parseMapping(string $mapping, int $flags, int &$i = 0, a
*
* @throws ParseException when object parsing support was disabled and the parser detected a PHP object or when a reference could not be resolved
*/
- private static function evaluateScalar(string $scalar, int $flags, array &$references = [], ?bool &$isQuotedString = null): mixed
+ private static function evaluateScalar(ParserState $state, string $scalar, int $flags, array &$references = [], ?bool &$isQuotedString = null): mixed
{
$isQuotedString = false;
$scalar = trim($scalar);
@@ -609,6 +624,8 @@ private static function evaluateScalar(string $scalar, int $flags, array &$refer
throw new ParseException(\sprintf('Reference "%s" does not exist.', $value), self::$parsedLineNumber + 1, $value, self::$parsedFilename);
}
+ $state->countAlias($references[$value], self::$parsedLineNumber + 1, null, self::$parsedFilename);
+
return $references[$value];
}
diff --git a/src/Symfony/Component/Yaml/Parser.php b/src/Symfony/Component/Yaml/Parser.php
index 744181f7342e5..c3432a094a123 100644
--- a/src/Symfony/Component/Yaml/Parser.php
+++ b/src/Symfony/Component/Yaml/Parser.php
@@ -26,6 +26,8 @@ class Parser
public const TAG_PATTERN = '(?P![\w!.\/:-]+)';
public const BLOCK_SCALAR_HEADER_PATTERN = '(?P\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?';
public const REFERENCE_PATTERN = '#^&(?P[[^ ]++) *+(?P.*)#u';
+ public const DEFAULT_MAX_NESTING_LEVEL = 128;
+ public const DEFAULT_MAX_ALIASES_FOR_COLLECTIONS = 128;
private ?string $filename = null;
private int $offset = 0;
@@ -38,6 +40,21 @@ class Parser
private array $skippedLineNumbers = [];
private array $locallySkippedLineNumbers = [];
private array $refsBeingParsed = [];
+ private ?ParserState $state = null;
+
+ public function __construct(int $maxNestingLevel = self::DEFAULT_MAX_NESTING_LEVEL, int $maxAliasesForCollections = self::DEFAULT_MAX_ALIASES_FOR_COLLECTIONS)
+ {
+ if ($maxNestingLevel < 1) {
+ throw new \InvalidArgumentException('The maximum nesting depth must be greater than 0.');
+ }
+
+ if ($maxAliasesForCollections < 0) {
+ throw new \InvalidArgumentException('The maximum number of collection aliases must be greater than or equal to 0.');
+ }
+
+ $this->getState()->maxNestingLevel = $maxNestingLevel;
+ $this->getState()->maxAliasesForCollections = $maxAliasesForCollections;
+ }
/**
* Parses a YAML file into a PHP value.
@@ -81,6 +98,9 @@ public function parse(string $value, int $flags = 0): mixed
}
$this->refs = [];
+ $state = $this->getState();
+ $state->reset();
+ $state->aliasesEnabled = 0 === (Yaml::PARSE_EXCEPTION_ON_ALIAS & $flags);
try {
$data = $this->doParse($value, $flags);
@@ -94,11 +114,17 @@ public function parse(string $value, int $flags = 0): mixed
$this->skippedLineNumbers = [];
$this->locallySkippedLineNumbers = [];
$this->totalNumberOfLines = null;
+ $state->reset();
}
return $data;
}
+ private function getState(): ParserState
+ {
+ return $this->state ?? $this->state = new ParserState();
+ }
+
private function doParse(string $value, int $flags): mixed
{
$this->currentLineNb = -1;
@@ -243,6 +269,8 @@ private function doParse(string $value, int $flags): mixed
$refValue = $this->refs[$refName];
+ $this->getState()->countAlias($refValue, $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename);
+
if (Yaml::PARSE_OBJECT_FOR_MAP & $flags && $refValue instanceof \stdClass) {
$refValue = (array) $refValue;
}
@@ -357,7 +385,7 @@ private function doParse(string $value, int $flags): mixed
}
try {
- return Inline::parse($this->lexInlineQuotedString(), $flags, $this->refs);
+ return Inline::parse($this->lexInlineQuotedString(), $flags, $this->refs, $this->state);
} catch (ParseException $e) {
$e->setParsedLine($this->getRealCurrentLineNb() + 1);
$e->setSnippet($this->currentLine);
@@ -370,7 +398,7 @@ private function doParse(string $value, int $flags): mixed
}
try {
- $parsedMapping = Inline::parse($this->lexInlineMapping(), $flags, $this->refs);
+ $parsedMapping = Inline::parse($this->lexInlineMapping(), $flags, $this->refs, $this->state);
while ($this->moveToNextLine()) {
if (!$this->isCurrentLineEmpty()) {
@@ -391,7 +419,7 @@ private function doParse(string $value, int $flags): mixed
}
try {
- $parsedSequence = Inline::parse($this->lexInlineSequence(), $flags, $this->refs);
+ $parsedSequence = Inline::parse($this->lexInlineSequence(), $flags, $this->refs, $this->state);
while ($this->moveToNextLine()) {
if (!$this->isCurrentLineEmpty()) {
@@ -419,7 +447,7 @@ private function doParse(string $value, int $flags): mixed
// 1-liner optionally followed by newline(s)
if (\is_string($value) && $this->lines[0] === trim($value)) {
try {
- $value = Inline::parse($this->lines[0], $flags, $this->refs);
+ $value = Inline::parse($this->lines[0], $flags, $this->refs, $this->state);
} catch (ParseException $e) {
$e->setParsedLine($this->getRealCurrentLineNb() + 1);
$e->setSnippet($this->currentLine);
@@ -475,7 +503,7 @@ private function doParse(string $value, int $flags): mixed
}
try {
- return Inline::parse(trim($value));
+ return Inline::parse(trim($value), 0, $this->refs, $this->state);
} catch (ParseException) {
// fall-through to the ParseException thrown below
}
@@ -520,8 +548,15 @@ private function parseBlock(int $offset, string $yaml, int $flags): mixed
$parser->skippedLineNumbers = $skippedLineNumbers;
$parser->refs = &$this->refs;
$parser->refsBeingParsed = $this->refsBeingParsed;
+ $parser->state = $this->state;
+
+ $this->getState()->enterNestingLevel($offset + 1, $this->currentLine, $this->filename);
- return $parser->doParse($yaml, $flags);
+ try {
+ return $parser->doParse($yaml, $flags);
+ } finally {
+ $this->getState()->leaveNestingLevel();
+ }
}
/**
@@ -717,6 +752,8 @@ private function parseValue(string $value, int $flags, string $context): mixed
throw new ParseException(\sprintf('Reference "%s" does not exist.', $value), $this->currentLineNb + 1, $this->currentLine, $this->filename);
}
+ $this->getState()->countAlias($this->refs[$value], $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename);
+
return $this->refs[$value];
}
@@ -740,18 +777,18 @@ private function parseValue(string $value, int $flags, string $context): mixed
if ('' !== $value && '{' === $value[0]) {
$cursor = \strlen(rtrim($this->currentLine)) - \strlen(rtrim($value));
- return Inline::parse($this->lexInlineMapping($cursor), $flags, $this->refs);
+ return Inline::parse($this->lexInlineMapping($cursor), $flags, $this->refs, $this->state);
} elseif ('' !== $value && '[' === $value[0]) {
$cursor = \strlen(rtrim($this->currentLine)) - \strlen(rtrim($value));
- return Inline::parse($this->lexInlineSequence($cursor), $flags, $this->refs);
+ return Inline::parse($this->lexInlineSequence($cursor), $flags, $this->refs, $this->state);
}
switch ($value[0] ?? '') {
case '"':
case "'":
$cursor = \strlen(rtrim($this->currentLine)) - \strlen(rtrim($value));
- $parsedValue = Inline::parse($this->lexInlineQuotedString($cursor), $flags, $this->refs);
+ $parsedValue = Inline::parse($this->lexInlineQuotedString($cursor), $flags, $this->refs, $this->state);
if (isset($this->currentLine[$cursor]) && preg_replace('/\s*(#.*)?$/A', '', substr($this->currentLine, $cursor))) {
throw new ParseException(\sprintf('Unexpected characters near "%s".', substr($this->currentLine, $cursor)));
@@ -795,7 +832,7 @@ private function parseValue(string $value, int $flags, string $context): mixed
Inline::$parsedLineNumber = $this->getRealCurrentLineNb();
- $parsedValue = Inline::parse($value, $flags, $this->refs);
+ $parsedValue = Inline::parse($value, $flags, $this->refs, $this->state);
if ('mapping' === $context && \is_string($parsedValue) && '"' !== $value[0] && "'" !== $value[0] && '[' !== $value[0] && '{' !== $value[0] && '!' !== $value[0] && str_contains($parsedValue, ': ')) {
throw new ParseException('A colon cannot be used in an unquoted mapping value.', $this->getRealCurrentLineNb() + 1, $value, $this->filename);
@@ -984,11 +1021,11 @@ private function cleanup(string $value): string
// strip YAML header
$count = 0;
- $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#u', '', $value, -1, $count);
+ $value = preg_replace('#^%YAML[: ][\d.]++[^\n]*+\n#u', '', $value, -1, $count);
$this->offset += $count;
// remove leading comments
- $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count);
+ $trimmedValue = preg_replace('#^(?:\#[^\n]*+\n)++#', '', $value, -1, $count);
if (1 === $count) {
// items have been removed, update the offset
$this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n");
@@ -996,14 +1033,14 @@ private function cleanup(string $value): string
}
// remove start of the document marker (---)
- $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count);
+ $trimmedValue = preg_replace('#^---[^\n]*+\n#', '', $value, -1, $count);
if (1 === $count) {
// items have been removed, update the offset
$this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n");
$value = $trimmedValue;
// remove end of the document marker (...)
- $value = preg_replace('#\.\.\.\s*$#', '', $value);
+ $value = preg_replace('#\.\.\.[ \t]*+$#', '', $value);
}
return $value;
diff --git a/src/Symfony/Component/Yaml/ParserState.php b/src/Symfony/Component/Yaml/ParserState.php
new file mode 100644
index 0000000000000..2f05c886b97d6
--- /dev/null
+++ b/src/Symfony/Component/Yaml/ParserState.php
@@ -0,0 +1,69 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml;
+
+use Symfony\Component\Yaml\Exception\ParseException;
+use Symfony\Component\Yaml\Tag\TaggedValue;
+
+/**
+ * @internal
+ */
+final class ParserState
+{
+ public int $maxNestingLevel = Parser::DEFAULT_MAX_NESTING_LEVEL;
+ public int $currentNestingLevel = 0;
+ public int $maxAliasesForCollections = Parser::DEFAULT_MAX_ALIASES_FOR_COLLECTIONS;
+ public int $collectionAliasCount = 0;
+ public bool $aliasesEnabled = true;
+
+ public function reset(): void
+ {
+ $this->currentNestingLevel = 0;
+ $this->collectionAliasCount = 0;
+ $this->aliasesEnabled = true;
+ }
+
+ public function enterNestingLevel(int $line, ?string $snippet, ?string $filename): void
+ {
+ if (++$this->currentNestingLevel > $this->maxNestingLevel) {
+ --$this->currentNestingLevel;
+
+ throw new ParseException(\sprintf('Maximum nesting depth of %d exceeded.', $this->maxNestingLevel), $line, $snippet, $filename);
+ }
+ }
+
+ public function leaveNestingLevel(): void
+ {
+ if ($this->currentNestingLevel > 0) {
+ --$this->currentNestingLevel;
+ }
+ }
+
+ public function countAlias(mixed $refValue, int $line, ?string $snippet, ?string $filename): void
+ {
+ if (!$this->aliasesEnabled) {
+ throw new ParseException('Aliases are disabled.', $line, $snippet, $filename);
+ }
+
+ if ($refValue instanceof TaggedValue) {
+ $refValue = $refValue->getValue();
+ }
+
+ if (!\is_array($refValue) && !$refValue instanceof \stdClass) {
+ return;
+ }
+
+ if (++$this->collectionAliasCount > $this->maxAliasesForCollections) {
+ throw new ParseException(\sprintf('Maximum number of collection aliases (%d) exceeded. This limit can be increased via the Parser constructor.', $this->maxAliasesForCollections), $line, $snippet, $filename);
+ }
+ }
+}
diff --git a/src/Symfony/Component/Yaml/Tests/ParserTest.php b/src/Symfony/Component/Yaml/Tests/ParserTest.php
index 01f37fd399488..272ae3c29c915 100644
--- a/src/Symfony/Component/Yaml/Tests/ParserTest.php
+++ b/src/Symfony/Component/Yaml/Tests/ParserTest.php
@@ -3226,6 +3226,130 @@ public function testSkipBlankLines()
$this->assertSame(['foo' => [null]], (new Parser())->parse("foo:\n-\n\n"));
}
+ public function testParseRejectsDocumentsThatExceedTheDefaultNestingDepth()
+ {
+ $this->expectException(ParseException::class);
+ $this->expectExceptionMessage('Maximum nesting depth');
+
+ $yaml = "root:\n";
+ for ($i = 1; $i <= Parser::DEFAULT_MAX_NESTING_LEVEL + 1; ++$i) {
+ $yaml .= str_repeat(' ', $i).sprintf("level%d:\n", $i);
+ }
+
+ $this->parser->parse($yaml);
+ }
+
+ public function testParseRejectsDocumentsThatExceedTheConfiguredCollectionAliasLimit()
+ {
+ $parser = new Parser(Parser::DEFAULT_MAX_NESTING_LEVEL, 5);
+
+ $this->expectException(ParseException::class);
+ $this->expectExceptionMessage('Maximum number of collection aliases');
+
+ $yaml = <<parse($yaml);
+ }
+
+ public function testParseCountsTaggedValueCollectionAliases()
+ {
+ $parser = new Parser(Parser::DEFAULT_MAX_NESTING_LEVEL, 2);
+
+ $this->expectException(ParseException::class);
+ $this->expectExceptionMessage('Maximum number of collection aliases');
+
+ $yaml = <<parse($yaml, Yaml::PARSE_CUSTOM_TAGS);
+ }
+
+ public function testParseAcceptsScalarAliasesWithoutCountingThem()
+ {
+ $parser = new Parser(Parser::DEFAULT_MAX_NESTING_LEVEL, 1);
+
+ $yaml = <<parse($yaml);
+
+ $this->assertSame('scalar_value', $result['a']);
+ $this->assertSame('scalar_value', $result['d']);
+ }
+
+ public function testParseAcceptsLargeCollectionAliasedOnce()
+ {
+ $items = implode(', ', array_map(function ($i) { return "item$i"; }, range(1, 500)));
+ $yaml = <<parser->parse($yaml);
+
+ $this->assertCount(500, $result['a']);
+ }
+
+ public function testParseRejectsBlockAliasesWhenDisabled()
+ {
+ $this->expectException(ParseException::class);
+ $this->expectExceptionMessage('Aliases are disabled');
+
+ $yaml = <<parser->parse($yaml, Yaml::PARSE_EXCEPTION_ON_ALIAS);
+ }
+
+ public function testParseRejectsInlineAliasesWhenDisabled()
+ {
+ $this->expectException(ParseException::class);
+ $this->expectExceptionMessage('Aliases are disabled');
+
+ $yaml = <<parser->parse($yaml, Yaml::PARSE_EXCEPTION_ON_ALIAS);
+ }
+
+ public function testParseHandlesLargeYamlHeaders()
+ {
+ $yaml = "%YAML:".str_repeat('1', 100000)."\nfoo: bar\n";
+
+ $this->assertSame(['foo' => 'bar'], $this->parser->parse($yaml));
+ }
+
+ public function testParseHandlesLargeLeadingComments()
+ {
+ $yaml = '#'.str_repeat('comment', 20000)."\nfoo: bar\n";
+
+ $this->assertSame(['foo' => 'bar'], $this->parser->parse($yaml));
+ }
+
+ public function testParseHandlesLargeDocumentMarkers()
+ {
+ $yaml = '--- '.str_repeat('header', 20000)."\nfoo: bar\n... ";
+
+ $this->assertSame(['foo' => 'bar'], $this->parser->parse($yaml));
+ }
+
private function assertSameData($expected, $actual)
{
$this->assertEquals($expected, $actual);
diff --git a/src/Symfony/Component/Yaml/Tests/YamlTest.php b/src/Symfony/Component/Yaml/Tests/YamlTest.php
index 151b5b9deb824..d04d2d1472387 100644
--- a/src/Symfony/Component/Yaml/Tests/YamlTest.php
+++ b/src/Symfony/Component/Yaml/Tests/YamlTest.php
@@ -12,6 +12,8 @@
namespace Symfony\Component\Yaml\Tests;
use PHPUnit\Framework\TestCase;
+use Symfony\Component\Yaml\Exception\ParseException;
+use Symfony\Component\Yaml\Parser;
use Symfony\Component\Yaml\Yaml;
class YamlTest extends TestCase
@@ -37,4 +39,34 @@ public function testNegativeIndentationThrowsException()
$this->expectExceptionMessage('The indentation must be greater than zero');
Yaml::dump(['lorem' => 'ipsum', 'dolor' => 'sit'], 2, -4);
}
+
+ public function testParseAllowsConfiguringTheMaximumNestingLevel()
+ {
+ $yaml = "root:\n child:\n grandchild:\n greatgrandchild: value\n";
+
+ $this->expectException(ParseException::class);
+ $this->expectExceptionMessage('Maximum nesting depth of 2 exceeded');
+
+ Yaml::parse($yaml, 0, 2);
+ }
+
+ public function testParseFileAllowsConfiguringTheMaximumCollectionAliasCount()
+ {
+ $file = tempnam(sys_get_temp_dir(), 'yaml_');
+
+ file_put_contents($file, <<expectException(ParseException::class);
+ $this->expectExceptionMessage('Maximum number of collection aliases (0) exceeded.');
+
+ try {
+ Yaml::parseFile($file, 0, Parser::DEFAULT_MAX_NESTING_LEVEL, 0);
+ } finally {
+ unlink($file);
+ }
+ }
}
diff --git a/src/Symfony/Component/Yaml/Yaml.php b/src/Symfony/Component/Yaml/Yaml.php
index e2d2af731083d..b6dce0d4ee199 100644
--- a/src/Symfony/Component/Yaml/Yaml.php
+++ b/src/Symfony/Component/Yaml/Yaml.php
@@ -35,6 +35,7 @@ class Yaml
public const DUMP_EMPTY_ARRAY_AS_SEQUENCE = 1024;
public const DUMP_NULL_AS_TILDE = 2048;
public const DUMP_NUMERIC_KEY_AS_STRING = 4096;
+ public const PARSE_EXCEPTION_ON_ALIAS = 8192;
/**
* Parses a YAML file into a PHP value.
@@ -44,14 +45,16 @@ class Yaml
* $array = Yaml::parseFile('config.yml');
* print_r($array);
*
- * @param string $filename The path to the YAML file to be parsed
- * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior
+ * @param string $filename The path to the YAML file to be parsed
+ * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior
+ * @param int $maxNestingLevel The maximum nesting depth for nested YAML blocks
+ * @param int $maxAliasesForCollections The maximum number of collection aliases to resolve
*
* @throws ParseException If the file could not be read or the YAML is not valid
*/
- public static function parseFile(string $filename, int $flags = 0): mixed
+ public static function parseFile(string $filename, int $flags = 0, int $maxNestingLevel = Parser::DEFAULT_MAX_NESTING_LEVEL, int $maxAliasesForCollections = Parser::DEFAULT_MAX_ALIASES_FOR_COLLECTIONS): mixed
{
- $yaml = new Parser();
+ $yaml = new Parser($maxNestingLevel, $maxAliasesForCollections);
return $yaml->parseFile($filename, $flags);
}
@@ -65,14 +68,16 @@ public static function parseFile(string $filename, int $flags = 0): mixed
* print_r($array);
*
*
- * @param string $input A string containing YAML
- * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior
+ * @param string $input A string containing YAML
+ * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior
+ * @param int $maxNestingLevel The maximum nesting depth for nested YAML blocks
+ * @param int $maxAliasesForCollections The maximum number of collection aliases to resolve
*
* @throws ParseException If the YAML is not valid
*/
- public static function parse(string $input, int $flags = 0): mixed
+ public static function parse(string $input, int $flags = 0, int $maxNestingLevel = Parser::DEFAULT_MAX_NESTING_LEVEL, int $maxAliasesForCollections = Parser::DEFAULT_MAX_ALIASES_FOR_COLLECTIONS): mixed
{
- $yaml = new Parser();
+ $yaml = new Parser($maxNestingLevel, $maxAliasesForCollections);
return $yaml->parse($input, $flags);
}
]