Jump to content

Recommended Posts

Posted

Bonjour mesdames, bonjour mesdemoiselles, bonjour messieurs.

 

Je m'explique.
C'est d'abord une marotte qui me fait gamberger et c'est sans doute la raison la plus importante.
C'est ensuite une réflexion toute personnelle -aussi- basée sur ma propre pratique bizarre de l'astrophoto

Voilà, en gros je trouve complètement superflu de laisser tourner un planétarium ou autre truc orchestrateur (SGP...) et tout ce qui tourne autour pendant toute une session alors qu'il ne sert qu'à deux moments :
- la mise en place et l'ajustement des paramètres (mise en station, focus, pointage ...)
- la surveillance
On va dire que 95% du temps on a une interface graphique qui bouffe des ressources et de la batterie pour rien.
(aucune idée de la réelle empreinte que ça a, m'enfin quand même...)
Kstars/Ekos et leurs acolytes sont des outils superbes, mais il faut bien se résoudre à avouer que sur un petit Raspberry ça bagotte quand même de temps en temps.
Et au prix de la nuit potable, ça commence à faire ch..r.

DONC:
ça fait quelques semaines que je farfouille un peu partout, et que mon cerveau bout.
Il y a les solutions commerciales, type AsiAir
ça fait vraiment envie, mais ça manque de fun ces trucs qui marchent tout de suite, là.

Ensuite nous avons deux candidats que je trouve exceptionnels
- Mobindi de @pludov


- AstroPhotoPlus
https://astrophotoplus.gulinux.net/

 

Je fais joujou avec les deux, j'adore.
Un seul reproche :
Les deux sous traitent la partie autoguidage à un PHD2 qui tourne en cachette
Adieu la notion de headless
Et puis coté architecture, je pense que ce type de choix augmente le risque de plantage en ajoutant des intermédiaires.
Et de fait : je n'ai jamais pu les utiliser en vrai, j'ai toujours eu un truc qui fouarre.
Attention, hein, critiquons le bonhome (moi) qui veut bien bidouiller mais pas trop se donner de mal avec ses gros doigts.

Autre reproche pour AstroPhotoPlus : pas d'autofocus
Rédhibitoire pour moi. Moi je veux appuyer sur un bouton.

Bref. Je compte consigner ici mes petites tergiversations, et en particuleir celle qui me travaille depuis aussi depuis semaines.
Ma petite contribution à moi.
Encore très tôt, et rien de partageable, mais allons-y :
Il existe un driver indi nommé "Agent Imager".
ça a été la révélation pour moi, ça rentre vraiment pil poil dans ce que je voudrais.
Que fait-il ?
C'est un driver indi bidon, qui "snoop" un CCD et une roue à filtres
On lui programme des séquences, et hop roule ma poule :
Tout se passe coté driver, plus besoin de laisser allumé quoi que ce soi, sans fioriture.
Et pourquoi il me plait encore plus ?
Parce que c'est du C++, et rien d'autre :
J'ai essayé de comprendre le fonctionnement de Mobindi et AstrophotoPlus :
Python, NodeJS, C'est merveilleux, mais laaaaaargement trop loin de mes compétences en tambouille.
Donc en C++ je ne dis pas que je m'y connais, mais au moins que ça discrimine un peu le truc pour mes neurones de 47 piges.
Et j'y suis allé de mes petits essais, je commence à piger comment ça marche.
L'idée serait d'y aller petit à petit :
un agent focuser en premier : ça permettrait de l'utiliser sur Astrophotoplus en palliatif

(je suis dessus là 🙂 )
ensuite tout le reste :
- agent alignement
- agent guideur
- etc..

Autant l'alignement et le focus je pense que c'est facilement jouable, autant le guideur ça va être coton.
PHD2 est déjà loin devant, mais il est extrêmement difficile de repiquer le code.

 

Bref, c'est le début d'un fil que j’espère au long cours, n'hésitez pas à participer.

Gilles.


 

  • Merci / Quelle qualité! 1
Posted

Tiens par exemple :

image.png.747b2c32400f09b93ba4ddb81cf80234.png

 

Il s'apelle "allsky agent" le mien, mais j'ai commencé à ajouter tous les devices, pour pouvoir faire joujou avec

 

=> et donc on paramètre le truc juste avec le control panel de Kstars, on ferme le PC et on va se coucher ça continue à tourner

 

Posted
il y a une heure, rmor51 a dit :

Gehelem t'es trop fort !

merci mais ne nous emballons pas...

Pour le moment je n'ai pas grand chose de concrètement utilisable, et la somme de travail à abattre est gigantesque 😆

 

Ce qui est certain c'est que je n'y arriverai pas seul, je voudrais avant tout réussir à poser un truc qui facilite la collaboration sur github :

La route est droite, la pente est raide.

 

Là je compte éplucher Sextractor pour le focus, ça me parait une bonne option.

(J'en ai une autre, plus roots, mais sur laquelle j'ai déjà bien avancé)

Ce qui me fait le plus peur c'est le guidage...

Posted

Salut Gilles,

Je suis complètement d'accord avec toi.

Moi, ce que j'aimerai, c'est un Ekos+indi et c'est tout. (Bon, c'est déjà pas mal).

Je trouve également dommage (Sauf dans de rares cas) d'avoir un planétarium quand j'image qui me bouffe pleins de ressources. Surtout depuis l'émergence de ces nano-machines.

Bon, avec la rpi4/4G ça va, mais pourquoi dépenser des ressources pour rien.

Ce que j'utilise, c'est le scheduler, l'imageur, l'astrométrie et le guidage interne. Je fais le goto soit sur le nom de l'objet, soit sur les coordonnées. Sous Linux, j'aime pas utiliser phd. Le guideur interne me suffit.

J'avais regardé mobindi : le guideur phd me rebute, et j'ai pas trop réussi à le faire fonctionner en opérationnel (Je dois être trop bête, trop vieux maintenant ...).

Je trouve les fonctions AsiAir intéressante, mais elle n'a pas le coté fun du libre ....

Je trouve le travail effectué dans tous ces projets très impressionnants (Kstars, indi, nafabox, mobindi,....).

J'aimerai participer, même modestement à ce genre d'activité, mais le boulot, le transport (3h00 par jour, ... Bon je raconte ma vie là, et tout le monde doit s'en foutre ....). Pas évident.

Je suis à l'aise en shell, et je connaissais bien le C (Mais avec l'age, j'ai oublié. Faudra que je révise).

Jean-Jacques

Posted
Il y a 9 heures, jjc a dit :

Je suis à l'aise en shell, et je connaissais bien le C

par-fait !! Je note, je note...

 

Il y a 9 heures, jjc a dit :

(3h00 par jour, ... Bon je raconte ma vie là, et tout le monde doit s'en foutre ....).

du tout : je suis pareil, version 4h par jour

Il y a 9 heures, jjc a dit :

Je trouve les fonctions AsiAir intéressante, mais elle n'a pas le coté fun du libre ....

 

On est jamais aussi bien servi que par soi même 🙂

Le plaisir de manger le plat qu'on a cuisiné s'ajoute au plaisir de se l'enfiler avec un ballon de cotes du Rhône

 

Posted

Dommage que Jasem ne puisse couper le cordon ombilical entre Ekos et Kstars sinon la solution serait super simple.

  • J'aime 1
Posted
il y a une heure, patdut a dit :

Dommage que Jasem ne puisse couper le cordon ombilical entre Ekos et Kstars sinon la solution serait super simple.

On va l'aider 🙂 (quelle prétention !!)

 

Sans rire, à propos de la séparation Ekos/Kstars :

Déjà ça ne répond pas à ce que je souhaite faire : ça resterait un client graphique...

Ensuite, pour avoir survolé le code avec mes yeux de noob, j'y ai fait le même constat que sur beaucoup d'autres (Siril, PHD) :

Les parties traitement, logique de contrôle et affichage sont difficiles à séparer, souvent mélangées

Pas de critique (d'autant que je n'ai aucune légitimité pour ça)  c'est juste un constat :

En voulant comprendre le code de-ci-de-là, on pige rapidement qu'on ne va pas pouvoir tout pomper sans élaguer.

 

Posted

Allons-y

ce sera donc ici :

https://github.com/gehelem/indi_hic_agent

 

ça ne fait pas encore grand chose de phénoménal, mais c'est le début.

à chaque image prise, HIC Agent affiche le HFD :

image.png.315e199e8da4a7580975fdf7cc389caa.png

 

En parallèle j'ai trouvé cette petite merveille :

https://www.lost-infinity.com/fofi-a-free-automatic-telescope-focus-finder-software/

https://github.com/carsten0x51h/focus_finder

Miam miam...

 

On va passer au contrôle du focus avec cette base.

 

... to be continued.

 

Gilles.
 

 

 

Posted

Tu peux utiliser le code de siril pour connaître la FWHM moyenne des étoiles d'une image pour l'autofocus éventuellement, mais je suppose que ça existe déjà comme code. J'avais pour projet de faire ce dont tu parles ici aussi, mais finalement siril me prend trop de temps et je n'ai toujours pas monté l'onstep...

Posted

Merci @vinvin

J'ai déjà épluché le code de Siril 🙂 et j'ai laissé tomber : 

Je suis incapable de faire le tri entre les trucs qui m'intéressent et le reste (lorsque j'arrive à les identifier !)

Mais tu as raison, on trouve "des bouts de code" qui sont plus à ma portée (comme les liens donnés plus haut)

 

Je vais continuer comme ça, on verra bien : ce que j'ai là répond à mes attentes pour le moment.

J'ai un FITS, et je peux identifier les étoiles dedans, et les analyser (HFD, saturation, position, ...)

Me reste à articuler les traitements autour.

 

 

Posted

Un peu d'avancement, nous avons un processus de focus qui a l'air de vouloir fonctionner !

 

1/ parcours d'une plage de positions (de mini à maxi avec un nombre de pas fixés) et mesure à la volée des HFD

2/ méthode des moindres carrés pour déterminer une courbe théorique HFD=f(position) (polynôme ordre 2)

3/ positionnement sur le minimum théorique

image.png.18428512453f51e69cd172be56502638.png

image.png.e4d0ddb2fb118d14f159c8dff32eaf5a.png

 

Tout ça sans client graphique, rien qu'avec les drivers

 

Bon, là c'est facile avec les simulateurs, faudrait tester sur le ciel et c'est pas gagné...

Mais j'ai un début de truc en tout cas.

Je suis très content

 

 

 

 

Posted

Pardon de buzzer, là, mais je viens de prendre d'autres options.

Plutôt que de faire un unique driver qui fasse tout, je vais en faire un dédié à chaque tache.

Les uns pouvant causer avec les autres.

Par exemple :

un driver pour le focus

un driver pour les séquences

un driver pour l'alignement

etc...

Je pense que ça va permettre de bien simplifier la lecture du code

Et coté utilisation ça ne devrait pas changer grand chose.

 

Je viens de prendre acte, en renommant / élaguant mon focuser.

 

... to be continued.

 

 

 

Posted

Oh ! idée
et un driver allsky ?!

genre qui balance une séquence et qui fasse le job à la fin (filé, timelapse, ...)

Tout bête.

En + "il suffit" de pomper le code de Thomas Jacquin 😀

pétard, ça cogite.

 

 

  • 1 month later...
Posted

Je remonte ce truc à cause de ça :

 

 

==> grosse remise en question sur ce sujet de "La quête d'un de mes Graal"

On s'en approche vraiment très près.

Très très près.

 

Manque deux/trois trucs, mais va falloir recommencer à coder différemment, pffff. 

 

  • 7 months later...
Posted

"yo" comme disaient les jeunes qui sont désormais vieux.

 

Je reviens -encore- sur cette marotte qui me hante.

J'ai un peu décanté depuis mes derniers essais, j'ai fait quelques choix architecturaux, baptismaux, et utopistes. 

(c'est pas des mots qu'on arrive à caser tous les jours, autant en profiter quand ça se présente)

Le confinement se prête à l'introspection codeuse, autant en profiter aussi :

J'ai un peu tambouillé ces dernières semaines, et j'ai réussi à m'abstenir d'acheter un AsiAir.

J'ai besoin d'aide une fois de plus, mais faut que j'explique avant.

 

Baptismaux 

Si un jour ça arrivait au bout, ça s’appellera donc ...tatata... "OST - Observatoire Sans Tête"

C'est juste pour mon ami @Ron

Et aussi pour faire le mariole.

 

Architecturaux

Je tiens absolument à :

- Rester avec une couche de contrôle du matériel sur indi, ni plus ni moins

- Tout doit être écrit en C/C++

- Pas de client graphique, rien, nada, nibe, ligne de commande et puis c'est tout

 

Donc les choix sont les suivants

Je compte créer autant de bibliothèques écrites en C/C++ que j'ai besoin de fonctions "natives"

- Autofocus (contrôles d'un CCD et d'un focuser)

- Alignement (Monture + CCD +Astrometrie)

- Guidage (Monture + CCD guide)

- Séquenceur d'images (CCD + RAF)

- ...etc etc ...

Ces bibliothèques seront toutes montées sur la base de clients indi :

https://github.com/indilib/indi/blob/master/libs/indibase/baseclient.h

Exemple ici

https://github.com/indilib/indi/tree/master/examples/tutorial_six

L'idée est de diviser pour mieux régner, et l'utilisation de cette classe d'objet est relativement simple (là comme ça à froid)

Hop, une classe d'objet "OSTFocuser" héritée de "baseclient" , qui ne s'occupe que du contrôle du focus par l'intermédiaire d'une caméra et d'un focuser indi

Quelques méthodes publiées pour paramétrer, lancer et suivre les traitements, pas bien compliqué sur le principe (on en reparlera 🙂 )

 

Ces différentes librairies seront regroupées et organisées au sein d'un unique contrôleur

C'est lui qu'on appelle en ligne de commande, c'est sur lui que je fonde tous mes espoirs les plus fous pour faire des trucs de dingo (voir plus bas)

Ce contrôleur est responsable d'organiser un peu tout ça ensemble, et d'apporter une logique globale de comportement.

Par exemple, c'est lui qui interdira de lancer une routine d'autofocus alors qu'une séquence est en cours (ou bien de déclencher un autofocus en mettant en pause la séquence, etc...)

Ce contrôleur doit aussi permettre d'accéder aux fonctions "natives" des drivers indi, comme le control panel de Kstars.

(peut-être en passant par un client indi dédié, j'y pense...)

Le contrôleur se contente d'instancier une ou plusieurs classes clientes et joue le rôle de chef d'orchestre fonctionnel.

image.png.10e7a68c8e279f86d50e2dac6727ba3b.png

C'est à peu près là que j'en suis :

https://github.com/gehelem/OST

J'explique un peu.

 

La classe OSTClientGEN est héritée de baseclient

Elle permet de surcharger baseclient en apportant des propriétés communes aux différents clients

(genre des objets CCD, focuser, monture, etc...)

 

La classe OSTClientSEQ héritée de OSTClientGEN est bidon pour le moment, j'ai mis "SEQ" pour "séquence"  mais elle ne fait rien de plus que sa mère

 

La classe OSTClientFOC héritée OSTClientGEN c'est elle qui me travaille le plus : l'autofocus.

Déclencher une prise de vue, analyser l'image, bouger le focuser, reprise de vue, rebouger, etc, etc...

Je me concentre sur cette fonction car c'est celle que j'ai le plus gambergé dans ma tête

(et qui manque à Astrophotoplus 🙂 )

J'essaie en ce moment d'y utiliser la superbe librairie d'analyse de FITS suivante :

https://github.com/rlancaste/stellarsolver

(Qui est juste une tuerie)

Elle est en cours de développent actif en ce moment, pour être intégrée à Kstars

Mais on peut d'ores et déjà faire joujou avec.

Donc en gros, j'essaie d'utiliser ce %$⁹#$§:;%$⁹ d'objet "stellarsolver" sans succès pour charger une image, y compter les étoiles et leurs HFD/HFR

Je n'y arrive pas du tout, je pense que c'est lié à Qt que je ne pige pas du tout, mais alors pas du tout du tout <- c'est là que j'ai besoin d'aide actuellement

 

Utopistes

 

L'utopie consiste à vous expliquer ce qui est encore vague dans ma tête faute de connaissance, mais je vois bien des trucs de ce genre :

Mon contrôleur est modifié pour devenir un service

Il est capable de communiquer par un protocole quelconque avec d'autres couches 

J'ai les websocket en tête, sans vraiment savoir ce que ça représente, mais ça a l'air d'être assez classique

Une fois ces websocket en place (ou autre) :  on monte un serveur web frontend qui permet d'accéder aux contrôleur (qui donc est un backend)

Ce truc je sais que ça ne se fait pas trop en C/C++

Les trucs qu'il faut c'est node.js react et autres bazars qui ne sont que des noms pour moi

La j'aurai besoin d'aide plus tard, chaque chose en son temps

 

De l'aide

https://github.com/gehelem/OST

C'est là dedans que j'ai besoin de suggestions, et que je permet de poker @Alhajoth qui m'a déjà proposé son aide par ailleurs

Comment utiliser la librairie stellarsolver dans ma classe ?

J'ai créé une librairie "OSTimage" dédiée qui pourrait être utilisée par plusieurs clients indifféremment

image.png.f76826e83c6903dcb216ec2cb5627adf.png

J'ai du mal à piger comment l'utiliser vraiment

C'est une cochonnerie de QObjet Qt que j'y pige rien de comment il part en sucette.

image.png.5b5f0d5180e661c62fc5dcbd82ba80b1.png

En particulier, j'ai l'impression que mon objet "stellarsolver" travaille bien comme il faudrait, mais qu'il est incapable de communiquer comme il faut avec ma classe à moi

J'ai essayé 25 façons de connecter les slots pour avoir les logs (entre autres) je n'arrive jamais à rien

Donc là dessus, si un gars kissiconnait en C++ peut me filer un coup de main je prends

 

Sans doute le plus long post que j'aie jamais écrit ... trop c'est trop, on s'arrête là

 

Merci pour vos conseils/lumières amis bidouilleurs qui n'ont pas envie de lâcher 300€ dans un Asiair

(j'rigoooooooole 🙂 )

 

Gilles.

Posted (edited)
Il y a 8 heures, gehelem a dit :

C'est là dedans que j'ai besoin de suggestions, et que je permet de poker @Alhajoth qui m'a déjà proposé son aide par ailleurs (...)
Donc là dessus, si un gars kissiconnait en C++ peut me filer un coup de main je prends

 

J'ai l'impression qu'il faut surtout s'y connaître en INDI, pour débrouiller ton truc, non ?

Il faut connaître Qt, INDI, et StellarSolver pour te filer un coup de main. Sans compter pour plus tard tes mentions de NodeJS, React.

Bref, il faut être en généraliste, et tu connais les chances de succès des généralistes au criterium.... :)

 

Tu as ton port 7624 ouvert, au moins ?

Tu devrais mettre une implémentation à OSTClientGen::ServerConnected() avec un log, pour voir si la connection se fait.

 

PS : OST devrait être un namespace, pas un préfixe de nom de classe

Edited by Alhajoth
Posted

Gilles, tu devrais montrer ton code à Lancaster. Je suis sûr qu'il peut t'aider à comprendre ce qui se passe. Utilises tu le debbuger pour voir où ça coince ?

 

Posted
Il y a 21 heures, patdut a dit :

Gilles, tu devrais montrer ton code à Lancaster. Je suis sûr qu'il peut t'aider à comprendre ce qui se passe. Utilises tu le debbuger pour voir où ça coince ?

 

Tu t'imagines bien que que c'est déjà  fait ! 🙂

:

https://github.com/rlancaste/stellarsolver/issues/8

A priori c'est bouillant les garçons sont occupés entre eux, ça commit tous les 4 matins, ça push, ça merge, ça change tout le temps les appels de proc, l'enfer à suivre

 

Le 14/11/2020 à 23:41, Alhajoth a dit :

J'ai l'impression qu'il faut surtout s'y connaître en INDI(...)

 

il y a une heure, Alhajoth a dit :

@gehelem Tu as fini par le suicide, finalement ? :)

 

Excuse moi de ne t'avoir pas répondu, merci d'avoir essayé (j'ai pris note de ta remarque sur les namespace : "regarder ce que c'est, un jour" promis)

Le suicide : non surtout pas, c'est justement là que je prends le plus mon pied, apprendre.

Je progresse, mais doucement.

J'arrive désormais à articuler mon truc à peu près comme je voulais (mes bibliothèques séparées) y compris l'utilisation de la librairie Stellarsolver

Elle a donné signe de vie il y a qq heures, à force de tambouiller le code.

Sauf que :

image.png.2714a6d5c8c139f45cad5fac5319f776.png

 

C'est tout ce bazar avec Qt qui me freine, faudrait vraiment que je me pose à essayer de piger ces histoires de Threads

 

 

Il y a 20 heures, JMDSomme a dit :

Pour suivre !

T'es fou.

ça va te faire comme "Crime et Châtiment" 

2 tomes de 600 pages où tu piges seulement à la fin que t'as perdu ton temps avec ce machin de taré 🙂

Va vite commander "La Tour de Babylone" de Ted Chiang chez ton libraire

(je déconne pas)

 

 

 

 

Posted
il y a 1 minute, gehelem a dit :

merci d'avoir essayé

 

J'aurais aimé faire plus, mais à domicile, je suis sur Windows.

Alors installer Linux, me remettre à Qt, apprendre INDI.. J'avoue que c'est un peu lourd.

Surtout que du point de vue fonctionnel, ça ne me parle pas trop (j'en suis à la Star Adventurer).

 

J'ai toutefois fait un petit diagramme UML de ton code, si ça intéresse d'autres bonnes âmes. :)

 

C'était quoi, le problème de communication, sinon ?

 

il y a 7 minutes, gehelem a dit :

C'est tout ce bazar avec Qt qui me freine, faudrait vraiment que je me pose à essayer de piger ces histoires de Threads

 

Il y a les bons et les mauvais chasseurs...

Sinon, pour le multithreading, le bouquin de référence, c'est C++ concurrency in action (je suis de la vieille école, je fonctionne surtout avec des bouquins).

Ça, c'est pour les concepts. Mais après, il faut te familiariser avec Qt.

Tu t'es lancé sur un truc où effectivement, il faut se poser.

Posted

bon, énorme progrès

vous me direz que j'étais déjà arrivé à ce résultat il y a quelques mois...

pas tout à fait là j'utilise Stellarsolver, et pas du code à ma sauce

Bref

une image arrive, je calcule la HFR moyenne, je bouge le focuser, nouvelle  image, nouvelle HFR

ça ne correspond à rien de fonctionnellement intéressant, ça montre juste que les briques marchouillent ensemble comme je voulais 

 

chu bin contin

847008430_Slection_277.png.9c3b5ae970da250695d5e8d3d3dd4f17.png

 

  • 2 weeks later...
Posted

Je buzz je buzz...

Mais c'est parce que je suis content

 

Enorme progression aujourd'hui les amis

Nous avons désormais une page web toute bête, avec un bouton "autofocus"

Quand j'appuie dessus, euh... ça me fait l'autofocus

image.png.8c4e7ac2b7e00d98c399ee42b550a21f.png

 

Et même avec mon téléphone, tant qu'on y est

image.png.1b96043f5907d73ad5008ad48b228529.png

 

 

J'ai crié !!! ma femme m'a regardé avec son air de pitié...

Bref.

Nous avons quoi désormais ? :

- une structure de clients indi qu'on va pouvoir affecter modulairement à des fonctions précises

- un contrôleur pour les organiser entre eux

- le contrôleur peut émettre et recevoir des messages par des websockets

- une page web toute bête en javascript que j'y pige rien mais qui fait ce que je veux (des boutons et un dialogue avec le contrôleur)

- un serveur web (nginx) pour servir la page web à l'extérieur

Tout est là, ya plus qu'à broder !!

Je vais mettre un peu d'ordre dans tout ça, parce que là c'est vraiment un de ces bazars...

 

Prochaine étape :

Faire en sorte que les différents modules puissent exposer leurs propriétés et statuts par l'intermédiaire des sockets

Par exemple, mon autofocus nécessite quelques paramètres (course, incréments, backlash...), quelques actions (start, abandon, vérif ...), quelques retours (résultats, courbes HRF...)

Il faut que tout ça soit publié vers le contrôleur, qui puisse à son tour balancer ça dans les websockets

Charge à la page web de se débrouiller à ajouter/supprimer des boutons et des beau graphes en fonction de ce que le contrôleur lui indique

(là ya du taf ...)

 

Comme un petit enfant qui joue aux Lego

 

 

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.