Chat log from the meeting on 2022-07-19/fr

= Introduction =

[11:12] Ubit.Umarov @hg.osgrid.org:80 : il a 2022 à tester

[11:12] Andrew Hellershanks : Bonjour à tous.

[11:12] Ubit.Umarov @hg.osgrid.org:80 : cela devrait aussi fonctionner parfaitement.

[11:12] Ubit.Umarov @hg.osgrid.org:80 : Bonjour Andrew, humide et gelé.

[11:12] Andrew Hellershanks : J'ai oublié quel jour on était et j'ai un peu somnolé après le déjeuner.

[11:12] Vincent Sylvester : hehehe

[11:13] Ubit.Umarov @hg.osgrid.org:80: "

[11:13] Ubit.Umarov @hg.osgrid.org:80 : * Tampa jette un seau d'eau sur Plugh
 * Tampa jette des glaçons sur Plugh

[11:13] Ubit.Umarov @hg.osgrid.org:80: "

[11:13] Ubit.Umarov @hg.osgrid.org:80: ( at irc)

= Changements de la semaine=
 * Journal des commits OpenSim
 * Mantis : suivi de bogues
 * Fsassets
 * localiser API LSL dans le code source : OpenSim-0.9.2.1/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs

[11:13] Vincent Sylvester : Pas beaucoup de changements cette semaine, quelques corrections de fsassets et une autre chose mineure dans libomv en essayant de comprendre pourquoi ça pouvait planter.

[11:14] Vincent Sylvester : Jusqu'à présent, je n'ai pas entendu parler d'autres plantages après le retour de mono à la version 122 et les journaux sont vides également.

[11:16] Andrew Hellershanks : Bonjour, Kayaker.

[11:17] Vincent Sylvester : En parcourant l'api lsl  pour ajouter plus de try catch j'ai trouvé quelques petites choses pour lesquelles je pourrais préparer des patches si je peux me rappeler où elles étaient exactement.

[11:17] Kayaker Magic : Bonjour à tous. Est-ce que j'ai manqué beaucoup de choses dans le premier quart d'heure ?

[11:17] Andrew Hellershanks : Kayaker, non, tu n'as rien manqué.

[11:20] Andrew Hellershanks : En ce qui concerne un autre élément de la semaine dernière, j'ai résolu les causes des exceptions que j'avais la semaine dernière avec un objet scriptés.

[11:20] Andrew Hellershanks : Le problème de la référence nulle pendant la compilation a été résolu en mettant à jour le code de la grille vers 0.9.2.1.

[11:22] Andrew Hellershanks : L'erreur HeapException a été résolue en faisant glisser l'objet de l'inventaire vers le sol, en recompilant les scripts, puis en ramenant l'objet dans l'inventaire. Après cela, je n'ai plus eu d'exception de tas en faisant glisser l'objet vers le sol.

[11:23] Andrew Hellershanks : Quand je creusais encore dans le code de la grille pour déterminer la cause du problème de référence nulle, j'ai vu une incohérence dans la vérification du tas qui me laisse encore perplexe.

[11:24] Andrew Hellershanks : Pour le test local pour voir s'il y a encore du tas disponible, un usage est ajouté avant le texte mais pour le ArraysHeap, il n'y en a pas.

[11:24] Ubit.Umarov @hg.osgrid.org:80 : as-tu regardé le code actuel ?

[11:25] Vincent Sylvester : Je ne me souviens pas exactement quand, mais il y a eu des changements assez récents dans le calcul du tas après qu'un rapport de mantis ait signalé qu'il était erroné.

[11:25] Vincent Sylvester : Cela fait peut-être deux mois.

[11:27] Ubit.Umarov @hg.osgrid.org:80 : Oui.

[11:27] Andrew Hellershanks : Je pensais l'avoir fait, mais je vais devoir regarder à nouveau. Je dois regarder le code sur une autre machine pour me rappeler quel fichier contient les routines qui font le contrôle d'utilisation.

[11:28] Vincent Sylvester : Essaie le dernier master dev pour voir les résultats que tu obtiens avec ça, ça peut être déjà corrigé, sinon, yay plus de corrections sur le chemin

[11:28] Andrew Hellershanks : Vincent, le problème est déjà résolu depuis la 0.9.2.1, il n'est donc pas nécessaire que je vérifie le master.

= Script : llRequestInventoryData et llSetPrimitiveParams = [11:29] Andrew Hellershanks : C'est l'heure des questions-réponses. :) Jagga, tu as quelques questions.

[11:29] Jagga Meredith : Je fais une zone de cours sur Aviworlds. Je fais un tutoriel sur le scripting.

[11:30] Selby.Evans @grid.kitely.com:8002 est entré dans la distance de dessin (25,44 m).

[11:30] Selby.Evans @grid.kitely.com:8002 est entré dans la région (25.44 m).

[11:30] Jagga Meredith : Si cela vous intéresse de jeter un coup d'œil, voici l'olandmark

[11:30] Selby.Evans @grid.kitely.com:8002 est entré dans la zone de chat (10.81 m).

[11:30] Jagga Meredith : deux problèmes à résoudre.

[11:30] Ubit Umarov : bienvenue  selby.Evans

[11:30] Selby.Evans @grid.kitely.com:8002 : bonjour à tous.

Problèmes avec les paramètres
Voir également les pages du wiki en anglais qui sont plus souvent mises à jour.
 * llRequestInventoryData : Demande des informations sur des objets de l'inventaire. Quand la donnée est disponible, l'évènement dataserver est déclenché.
 * INVENTORY_LANDMARK : Utilisé avec les fonctions d'inventaire et spécifie les éléments d'inventaire de type LANDMARK qui seront récupérés par la fonction.
 * Dataserver : évènement déclenché lorsque le script reçoit des données asynchrones.
 * llSetPrimitiveParams : Permet de modifier les paramétres de la prim en appliquant les règles indiquées.
 * PRIM POINT LIGHT :  PRIM_POINT_LIGHT est utilisé pour paramètrer les effets de lumière des prims.

[11:30] Jagga Meredith : requestid = llRequestInventoryData( llGetInventoryName( INVENTORY_LANDMARK, 0 ) ); dataserver(key id, string data) {       if (id == requestid) {   llSay(0,(data);

[09:57] dataserver demo 1 : LOOKING UP Orientation

[09:57] dataserver demo 1 : <122.368202, 1316115418448010.000000, 30.213690>

[11:30] Andrew Hellershanks : Bonjour, Selby.

[11:31] Jagga Meredith murmure : la deuxième valeur est bancale.

[11:31] Andrew Hellershanks : C'est certainement le cas.

[11:31] Jagga Meredith : Orientation de l'île, Orientation de l'île (122, 136, 30)

[11:32] Jagga Meredith : aussi...

11:32] Jagga Meredith : {// [integer boolean,vector couleur,float intensity,float rayon,float falloff] llSetPrimitiveParams([PRIM_POINT_LIGHT, toggle, colour, intensity, size, falloff]);

[11:32] Jagga Meredith : la taille ne semble pas avoir d'effet.

[11:33] Andrew Hellershanks Je pense que quelqu'un joue avec les paramètres de windlight (https://wiki.firestormviewer.org/fs_windlight_fr?s[]=windlight].

[11:33] Andrew Hellershanks : Jagga, as-tu déposé une mantis pour ce premier problème ?

[11:33] Jagga Meredith : non, il y a une prim en face de vous.

[11:33] Jagga Meredith : non.

[11:33] Jagga Meredith : Je viens de le découvrir.

[11:35] Andrew Hellershanks : L'autre question est de savoir quelle version du code Aviworlds utilise. Il est possible qu'ils aient modifié quelque chose qui a entraîné cette erreur. Il devrait être assez facile de tester le comportement dans le master.

[11:35] Jagga Meredith : j'ai essayé ici.

[11:35] Jagga Meredith : même problème.

[11:35] Andrew Hellershanks : ok, bon à savoir.

[11:35] Ubit Umarov : où est le point prim ?

[11:36] Jagga Meredith : dans une sphère.

[11:36] Ubit Umarov : Je veux dire ici.

[11:36] Ubit Umarov : je suis trop paresseux pour faire mon propre test :p

[11:37] Andrew Hellershanks : hehe

[11:37] Ubit Umarov : je l'aime bien.

[11:37] Jagga Meredith : je te l'ai donné.

[11:37] Jagga Meredith : ou bien tu peux t'en procurer un exemplaire.

[11:37] Ubit Umarov : ou obtenir des pouvoirs divins

[11:37] Jagga Meredith : heh

[11:38] Jagga Meredith : tu dois être propriétaire pour que le menu fonctionne.

[11:38] Vincent.Sylvester @hg.zetaworlds.com:8002 : Le dataserver affiche deux réponses comme ça, quel est exactement le problème ?

[11:38] Jagga Meredith : c'est une démonstration de l'utilisation de la fonction.

[11:39] Jagga Meredith : le paramètre size ne semble rien faire.

[11:39] Jagga Meredith : ou je l'utilise mal.

[11:39] Ubit Umarov : float big = 75.0 ;

[11:39] Ubit Umarov : max est 20

[11:39] Jagga Meredith : ah

[11:39] Ubit Umarov : https://wiki.secondlife.com/wiki/PRIM_POINT_LIGHT

[11:40] Jagga Meredith : merci.

[11:40] Ubit Umarov : float small = 30.0 ;

[11:40] Jagga Meredith : ça va le faire.

[11:40] Ubit Umarov : aussi faux

[11:41] Ubit Umarov : maintenant je vois 15 sur big

[11:41] Ubit Umarov : oups c'est parti lol

[11:41] Jagga Meredith : je vais le corriger.

[11:42] Jagga Meredith : Erreur RTFM

[11:42] Ubit Umarov : mais c'était le problème.

[11:42] Ubit Umarov : valeurs hors limites

[11:42] Ubit Umarov : non le lm (landmark : repère)

[11:42] Ubit Umarov : pas sûr qu'on puisse le lire comme ça.

[11:42] Ubit Umarov : mais qui sait :)

Documentation LSL et OSSL

 * Wiki LSL : https://wiki.secondlife.com/wiki/LSL_Portal
 * Digigrids -- fonctions LL : http://digigrids.free.fr/wiki/index.php?title=Scripting/Fonctions/LlFonctions
 * OSSL http://opensimulator.org/wiki/OSSL_Implemented

[11:42] Jagga Meredith : c'est ce que dit le Wiki, mais le Wiki est horriblement dépassé et seuls les Linden peuvent le mettre à jour apparemment.

[11:43] Jagga Meredith : avons-nous notre propre wiki ?

[11:43] Ubit Umarov : seulement avec ossl.

[11:43] Kayaker Magic : Quelqu'un a une copie de l'ancien wiki de LSL.

[11:43] Andrew Hellershanks : Jagga, oui mais pas pour des informations sur les fonctions de LSL autres que celles qui ont été implémentées.

[11:43] Jagga Meredith : ok.

[11:43] Kayaker Magic : Donc nous aurons quelque chose quand LL supprimera les leurs.

[11:43] Jagga Meredith : oui.

[11:43] Ubit Umarov : Digi en a un.

[11:44] Ubit Umarov : le vieux wiki de Sl.

[11:44] Ubit Umarov : une copie de celui-ci

[11:44] Andrew Hellershanks : Il y avait un autre wiki sur les fonctions LSL autre que celui de LL mais je ne sais pas s'il existe encore.

[11:44] Kayaker Magic : Oui, il n'est plus à jour mais c'est mieux que rien.

[11:44] Jagga Meredith : beaucoup d'exemples douteux, orthographe/grammaire, trucs cassés.

[11:45] Ubit Umarov : http://opensimulator.org/wiki/Scripting_Documentation

[11:45] Ubit Umarov : le nôtre avec ossl

[11:46] Ubit Umarov : http://opensimulator.org/wiki/OSSL_Implemented

[11:46] Jagga Meredith : yup - on l'utilise beaucoup.

[11:46] Ubit Umarov : http://opensimulator.org/wiki/YEngine

[11:46] Vincent.Sylvester @hg.zetaworlds.com:8002 : La première réponse de dataserver est l'événement réel qui a été déclenché, la seconde est les données qui ont été retournées.

[11:47] Andrew Hellershanks : bbiba

[11:47] Object : Script en cours d'exécution

[11:48] Vincent.Sylvester @hg.zetaworlds.com:8002 : Ou quelle est la question sur le code du dataserver ?

[11:48] Object : Script en cours d'exécution

Deuxième question : deuxième valeur bancale
[11:49] Jagga Meredith : pourquoi la deuxième valeur est bancale ?

[11:49] Vincent.Sylvester @hg.zetaworlds.com:8002 : Parce que c'est la coordonnée totale de la région où on se trouve.

[11:49] Jagga Meredith : Orientation Island, Orientation Island (122, 136, 30)

[11:49] Object : Script en cours d'exécution

[11:49] Object: <18446744073709400000.000000, 11437119952138600.000000, 37.792831>

[11:50] Jagga Meredith : [09:57] dataserver demo 1 : <122.368202, 1316115418448010.000000, 30.213690>

[11:50] Vincent.Sylvester @hg.zetaworlds.com:8002 : Le vecteur de région est celui de cette même région.

[11:50] Ubit Umarov : ouais, de belles valeurs lol

[11:50] Andrew Hellershanks : Je suis de retour.

[11:50] Kayaker Magic : RegionCorner+region locale ?

[11:50] Kayaker Magic : Regioncorner*256+region locale ?

[11:50] Ubit Umarov : je ne me souviens pas de ce qu'ils utilisent.

[11:50] Vincent.Sylvester @hg.zetaworlds.com:8002 : La description du vecteur retourné dans l'événement dataserver ci-dessus implique que la valeur est une coordonnée de région ; elle représente en fait la distance en mètres de l'emplacement du point de repère par rapport à <0,0,0> dans la région dans laquelle le script s'exécute. Pour un point de repère pointant vers un emplacement dans la région actuelle, c'est la même chose qu'une coordonnée de région ; cependant, lorsqu'il est utilisé avec un point de repère pointant vers une région différente, les valeurs x et y du vecteur peuvent être assez grandes (et/ou négatives). Le vecteur peut être utilisé pour calculer une coordonnée globale (comme ci-dessus) ou la distance d'un point de repère par rapport à l'objet contenant le script dans la région actuelle ou sur toute la grille.

[11:50] Ubit Umarov : il est possible que ce soit global, oui.

[11:51] Vincent.Sylvester @hg.zetaworlds.com:8002 : Ne pas oublier la section avertissements :)

[11:51] Ubit Umarov : oui, cela ressemble à des coordonnées globales.

[11:51] Andrew Hellershanks : C'est ce que je pensais aussi.

[11:52] Ubit Umarov : Pour lbsa, x est 10402

[11:52] Ubit Umarov : nahh ne correspondra pas lol

[11:52] Vincent.Sylvester @hg.zetaworlds.com:8002 : Il s'agit d'une valeur relative entre le point de départ et le point d'arrivée, et non de la coordonnée de la région globale, donc cela vous indique simplement la distance à l'autre région en x et y.

[11:52] Vincent.Sylvester @hg.zetaworlds.com:8002 : Vous devez récupérer les coins de la région pour calculer les coordonnées globales.

[11:53] Vincent.Sylvester @hg.zetaworlds.com:8002 : région actuelle + coordonnées du point de repère (landmark)

[11:53] Vincent.Sylvester @hg.zetaworlds.com:8002 : Il y a un script d'exemple sur le wiki LSL pour cela.

[11:53] Jagga Meredith : ok

[11:53] Ubit Umarov : c'est 2,667,520 m

[11:54] Jagga Meredith : toujours étrange que peu importe où je l'essaie, c'est toujours la deuxième valeur qui est bizarre.

[11:54] Jagga Meredith : les deux autres valeurs sont correctes.

[11:55] Jagga Meredith : je vais essayer de faire fonctionner Visual Studio et de le trouver par moi-même.

[11:55] Ubit Umarov : (Note de la traduction : code source : OpenSim-9.2.1/OpenSim/Framework/LSL_Api.cs Ligne5033 ) if(lm != null) {           double rx = (lm.RegionHandle >> 32) - World.RegionInfo.WorldLocX + (double)lm.Position.X;            double ry = lm.RegionHandle - World.RegionInfo.WorldLocY + (double)lm.Position.Y;            LSL_Vector region = new LSL_Vector(rx, ry, lm.Position.Z); reply = region.ToString; } [11:56] Ubit Umarov : errr

[11:56] Andrew Hellershanks : Pourquoi ce code ne fait pas le >> 32 bit pour ry ?

[11:56] Ubit Umarov : parce qu'il n'est pas censé le faire :p

[11:56] Jagga Meredith : *gloussements*

[11:56] Andrew Hellershanks : alors pourquoi le fait-il pour rx ?

[11:57] Ubit Umarov : parce qu'il est censé le faire.

[11:57] Ubit Umarov : :p

[11:57] Kayaker Magic : Précise.

[11:57] Andrew Hellershanks : Cela ne semble pas avoir de sens qu'il produise des types de valeurs complètement différents pour X et Y dans le cadre d'un seul résultat.

Découverte d'un bogue et correction à tester
[11:57] Ubit Umarov : mais je vois un bogue là.

[11:58] Jagga Meredith : uh oh

[11:58] Ubit Umarov : double rx = (lm.RegionHandle >> 32) - World.RegionInfo.WorldLocX + (double)lm.Position.X;    double ry = (lm.RegionHandle & 0xffffffff) - World.RegionInfo.WorldLocY + (double)lm.Position.Y;     SL_Vector region = new LSL_Vector(rx, ry, lm.Position.Z);

[11:58] Ubit Umarov : c'est mieux comme ça.

[11:58] Ubit Umarov : je testerai plus tard

[11:58] Jagga Meredith : ok

[11:58] Object : Script en cours d'exécution

[11:58] Object: <18446744073709400000.000000, 11437119952138600.000000, 37.792831>

[11:59] Ubit Umarov : bien sur lbsa X est aussi étrange

[11:59] Ubit Umarov : très :)

[11:59] Ubit Umarov : et désolé d'élaborer quoi ?

[12:00] Andrew Hellershanks : Nous sommes au début de l'heure. Des sujets de dernière minute pour aujourd'hui ?

[12:00] Ubit Umarov : un handle de région est une chose de 64bit avec 2 choses de 32bit encodées.

[12:00] Jagga Meredith : J'ai fini.

[12:00] Kayaker Magic : Explique pourquoi la formule pour x devrait être différente de celle pour y. Tout ce que tu as dit c'est "supposé être".

[12:00] Andrew Hellershanks : Jagga, ok.

[12:00] Ubit Umarov : X sur les 32 bits supérieurs

[12:00] Ubit Umarov : ok ?

[12:01] Andrew Hellershanks : Kayaker, je sais. Je n'aime pas le problème d'incohérence apparente.

[12:01] Vincent.Sylvester @hg.zetaworlds.com:8002 : 12314530233958400 C'est un identifiant de région.

[12:01] Kayaker Magic : En interne, il a été stocké comme un entier 64bit ? Je n'ai jamais entendu parler de ce type de données dans OpenSim.

[12:01] Vincent.Sylvester @hg.zetaworlds.com:8002 : L'emplacement réel du handle de cette région est : 2867200 2867200

[12:01] Ubit Umarov : on l'appelle aussi un long

[12:02] Kayaker Magic : Je veux dire que je n'ai jamais entendu parler de coordonnées stockées comme des entiers 64 bits entiers.

[12:02] Ubit Umarov : depuis toujours...

[12:02] Ubit Umarov : handle de région

[12:02] Andrew Hellershanks : Kayaker, handles  de région.

[12:02] Ubit Umarov : le truc de la région et du viewer.

[12:03] Ubit Umarov : mais ce code est confus.

[12:03] Ubit Umarov : il semble retourner à une distance depuis l'angle de la région actuelle.

[12:03] Kayaker Magic : OH, j'ai vu LL faire des trucs bizarres avant, ça explique tout.

[12:04] Vincent.Sylvester @hg.zetaworlds.com:8002 : C'est ce qu'il est censé retourner

[12:04] Ubit Umarov : selel (lm.RegionHandle & 0xfffffff) semble manquer ici

[12:04] Vincent.Sylvester @hg.zetaworlds.com:8002 : C'est un vrai décalage entre la région où on se trouve et la position du point de repère dans l'autre région.

[12:05] Ubit Umarov : Landmark (vecteur) Les données vectorielles reçues par dataserver sont un décalage de <0,0,0> de la région actuelle. Pour obtenir la position globale d'un point de repère, ajoutez llGetRegionCorner.

[12:05] Vincent.Sylvester @hg.zetaworlds.com:8002 : Si tu l'appliquais globalement en te tenant sur <0,0,0> sur la région actuelle, tu te retrouverais sur les coordonnées exactes....

[12:05] Ubit Umarov : ouais c'est la position lm dans les coordonnées locales de la région actuelle.

[12:05] Ubit Umarov : peut être < 0 etc...

[12:05] Andrew Hellershanks : Si le code récupère un handle de région, alors le masque semble manquer à ry.

[12:06] Ubit Umarov : je viens de le dire deux fois :p

[12:06] Andrew Hellershanks : Je suis d'accord avec toi.

[12:06] Vincent.Sylvester @hg.zetaworlds.com:8002 : Aujourd'hui nous sommes tous en surchauffe lol

[12:07] Andrew Hellershanks : Vincent, apparemment oui.

[12:07] Ubit Umarov : :)

[12:08] Andrew Hellershanks : Rien d'autre pour aujourd'hui ? Je dois partir sous peu. Mon chat me réclame un temps de jeu (ou de l'attention) depuis environ 15 minutes.

[12:08] Ubit Umarov : L'ancienne version 0.8 avait une autre forme du bug.

[12:08] Vincent.Sylvester @hg.zetaworlds.com:8002 : On pourrait probablement construire une fonction ossl pour les données de landmark pour retourner une liste des différents paramètres du lm, je ne sais pas trop pourquoi, mais il y a aussi un tas d'autres paramètres.

[12:09] Jagga Meredith : oui, s'il vous plaît.

[12:09] Ubit Umarov : (Note de la traduction : Dans OpenSim-9.2.1/OpenSim/Framework/AssetLandmark.cs Ligne 33) public class AssetLandmark : AssetBase {       public Vector3 Position; public ulong RegionHandle; public UUID RegionID; public string Gatekeeper = string.Empty; public int Version;

[12:09] Ubit Umarov : pas beaucoup :)

[12:10] Vincent.Sylvester @hg.zetaworlds.com:8002 : La position réelle pourrait être utile et uuid je suppose.

[12:10] Jagga Meredith : yup

[12:10] Ubit Umarov : ok je sais pourquoi le grand nombre

[12:10] Ubit Umarov : je pense

[12:11] Ubit Umarov : c'est une chose négative lol

[12:11] Jagga Meredith : Je me posais la question.

[12:12] Ubit Umarov : double rx = (double)(lm.RegionHandle >> 32) - (double)World.RegionInfo.WorldLocX + (double)lm.Position.X;        double ry = (double)(lm.RegionHandle & 0xffffffff) - (double)World.RegionInfo.WorldLocY + (double)lm.Position.Y;

[12:12] Ubit Umarov : ça devrait le faire.

[12:12] Andrew Hellershanks : Est-ce que le fait d'isoler un paquet de handle de région fonctionnera correctement avec une valeur négative ?

[12:12] Kayaker Magic : Ah, quand on enlève la moitié inférieure, il faut signer l'extension.

[12:12] Jagga Meredith : kewl

[12:12] Ubit Umarov : nopes

[12:13] Ubit Umarov : handler et worldloc sont des uints.

[12:13] Ubit Umarov : bon ulong et uint

[12:13] Jagga Meredith : mais est-ce que tu veux y mettre quelque chose de plus gros ?

[12:13] Ubit Umarov : non.

[12:13] Kayaker Magic : Pourquoi ne pas convertir le regionHandle en 32bit int avant de le convertir en double ?

[12:14] Ubit Umarov : c'est le cas.

[12:14] Ubit Umarov : le compilateur fun dit que le (double) n'est pas nécessaire :)

[12:15] Andrew Hellershanks : :)

[12:15] Ubit Umarov : bien, je vais le tester et le valider.

[12:15] Kayaker Magic : Bien vu Jagga ! Merci d'avoir attiré l'attention d'Ubit sur ce problème !

[12:15] Andrew Hellershanks : C'est toujours agréable de voir un rapport de bogue suivi d'une correction rapide.

[12:16] Jagga Meredith : Merci.

[12:17] Ubit Umarov : c'est mieux que le lm soit pour une région de la même grille aussi :P

= Conclusion = [12:17] Andrew Hellershanks : Sur ce, je vais conclure la réunion d'aujourd'hui. Je pense que mon chat a déjà renoncé à moi, mais je vais quand même aller la voir pour savoir si elle veut encore jouer.

[12:17] Andrew Hellershanks : Merci à tous d'être venus. Nous nous reverrons la semaine prochaine.

[12:17] Selby.Evans @grid.kitely.com:8002 : au revoir à tous.

[12:17] Andrew Hellershanks : Au revoir, Selby.

[12:17] Ubit Umarov : cya