From 7ee14e7b3f60a24dc1a0ee041400f5e15a707442 Mon Sep 17 00:00:00 2001 From: fatima Date: Thu, 30 Apr 2026 13:28:53 +0200 Subject: [PATCH] clean: remove pycache from tracking --- SIRH/__init__.py | 0 SIRH/__pycache__/__init__.cpython-310.pyc | Bin 123 -> 0 bytes SIRH/__pycache__/__init__.cpython-312.pyc | Bin 137 -> 0 bytes SIRH/__pycache__/__init__.cpython-313.pyc | Bin 149 -> 0 bytes SIRH/__pycache__/__init__.cpython-314.pyc | Bin 145 -> 0 bytes SIRH/__pycache__/settings.cpython-310.pyc | Bin 2888 -> 0 bytes SIRH/__pycache__/settings.cpython-312.pyc | Bin 3290 -> 0 bytes SIRH/__pycache__/settings.cpython-313.pyc | Bin 3688 -> 0 bytes SIRH/__pycache__/settings.cpython-314.pyc | Bin 3231 -> 0 bytes SIRH/__pycache__/urls.cpython-310.pyc | Bin 1520 -> 0 bytes SIRH/__pycache__/urls.cpython-312.pyc | Bin 1928 -> 0 bytes SIRH/__pycache__/urls.cpython-313.pyc | Bin 4185 -> 0 bytes SIRH/__pycache__/urls.cpython-314.pyc | Bin 1934 -> 0 bytes SIRH/__pycache__/views.cpython-310.pyc | Bin 1246 -> 0 bytes SIRH/__pycache__/views.cpython-312.pyc | Bin 1800 -> 0 bytes SIRH/__pycache__/views.cpython-313.pyc | Bin 30001 -> 0 bytes SIRH/__pycache__/views.cpython-314.pyc | Bin 1840 -> 0 bytes SIRH/__pycache__/wsgi.cpython-310.pyc | Bin 520 -> 0 bytes SIRH/__pycache__/wsgi.cpython-312.pyc | Bin 618 -> 0 bytes SIRH/__pycache__/wsgi.cpython-313.pyc | Bin 630 -> 0 bytes SIRH/__pycache__/wsgi.cpython-314.pyc | Bin 621 -> 0 bytes SIRH/asgi.py | 16 - SIRH/static/SIRH/PS1.jpg | Bin 59768 -> 0 bytes SIRH/static/SIRH/cerfig.jpeg | Bin 184572 -> 0 bytes SIRH/static/SIRH/icons.css | 2078 --- SIRH/static/SIRH/per1.webp | Bin 134594 -> 0 bytes SIRH/static/SIRH/user.jpg | Bin 86713 -> 0 bytes SIRH/static/templates/SIRH/index.html | 157 - SIRH/static/templates/SIRH/login.html | 197 - .../static/templates/SIRH/menu_principal.html | 150 - SIRH/static/templates/SIRH/message.html | 10 - SIRH/static/templates/SIRH/monprofil.html | 384 - SIRH/static/templates/SIRH/parametre.html | 223 - SIRH/static/templates/SIRH/rapport.html | 205 - SIRH/static/templates/SIRH/registration | 0 SIRH/static/templates/SIRH/rest.html | 33 - SIRH/static/templates/SIRH/tiket.html | 620 - SIRH/static/templates/menu_principale.js | 12 - SIRH/templates/SIRH/BASE.html | 31 - SIRH/templates/SIRH/login.html | 43 - SIRH/templates/SIRH/parts/menu_principal.html | 56 - SIRH/urls.py | 67 - SIRH/views.py | 37 - SIRH/wsgi.py | 16 - .../fonctions_utilitaire.cpython-310.pyc | Bin 1373 -> 0 bytes .../fonctions_utilitaire.cpython-312.pyc | Bin 1793 -> 0 bytes .../fonctions_utilitaire.cpython-314.pyc | Bin 1835 -> 0 bytes fonction_utilitaire/fonctions_utilitaire.py | 34 - gestion_conge/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 132 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 146 -> 0 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 153 -> 0 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 154 -> 0 bytes .../__pycache__/admin.cpython-310.pyc | Bin 173 -> 0 bytes .../__pycache__/admin.cpython-312.pyc | Bin 190 -> 0 bytes .../__pycache__/admin.cpython-313.pyc | Bin 197 -> 0 bytes .../__pycache__/admin.cpython-314.pyc | Bin 198 -> 0 bytes .../__pycache__/apps.cpython-310.pyc | Bin 424 -> 0 bytes .../__pycache__/apps.cpython-312.pyc | Bin 465 -> 0 bytes .../__pycache__/apps.cpython-313.pyc | Bin 530 -> 0 bytes .../__pycache__/apps.cpython-314.pyc | Bin 528 -> 0 bytes .../__pycache__/forms.cpython-310.pyc | Bin 858 -> 0 bytes .../__pycache__/forms.cpython-312.pyc | Bin 1082 -> 0 bytes .../__pycache__/forms.cpython-313.pyc | Bin 6075 -> 0 bytes .../__pycache__/forms.cpython-314.pyc | Bin 1167 -> 0 bytes .../__pycache__/models.cpython-310.pyc | Bin 1284 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 1911 -> 0 bytes .../__pycache__/models.cpython-313.pyc | Bin 8578 -> 0 bytes .../__pycache__/models.cpython-314.pyc | Bin 2032 -> 0 bytes .../__pycache__/urls.cpython-310.pyc | Bin 551 -> 0 bytes .../__pycache__/urls.cpython-312.pyc | Bin 739 -> 0 bytes .../__pycache__/urls.cpython-313.pyc | Bin 2027 -> 0 bytes .../__pycache__/urls.cpython-314.pyc | Bin 742 -> 0 bytes .../__pycache__/views.cpython-310.pyc | Bin 5893 -> 0 bytes .../__pycache__/views.cpython-312.pyc | Bin 12079 -> 0 bytes .../__pycache__/views.cpython-313.pyc | Bin 55172 -> 0 bytes .../__pycache__/views.cpython-314.pyc | Bin 12508 -> 0 bytes gestion_conge/admin.py | 3 - gestion_conge/apps.py | 6 - gestion_conge/forms.py | 17 - gestion_conge/migrations/0001_initial.py | 30 - gestion_conge/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 1267 -> 0 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 1952 -> 0 bytes .../__pycache__/0001_initial.cpython-313.pyc | Bin 3766 -> 0 bytes .../__pycache__/0001_initial.cpython-314.pyc | Bin 2245 -> 0 bytes .../0002_alter_conge_type.cpython-310.pyc | Bin 655 -> 0 bytes .../0002_alter_conge_type.cpython-314.pyc | Bin 871 -> 0 bytes .../__pycache__/0002_initial.cpython-310.pyc | Bin 1170 -> 0 bytes .../__pycache__/0002_initial.cpython-313.pyc | Bin 2353 -> 0 bytes .../__pycache__/0002_initial.cpython-314.pyc | Bin 2408 -> 0 bytes ...e_validateur_chef_and_more.cpython-314.pyc | Bin 794 -> 0 bytes ...3_alter_conge_date_demande.cpython-314.pyc | Bin 869 -> 0 bytes ...03_alter_reservation_motif.cpython-310.pyc | Bin 634 -> 0 bytes ...03_alter_reservation_motif.cpython-313.pyc | Bin 816 -> 0 bytes ...03_alter_reservation_motif.cpython-314.pyc | Bin 818 -> 0 bytes ...4_notification_reservation.cpython-310.pyc | Bin 794 -> 0 bytes ...4_notification_reservation.cpython-313.pyc | Bin 1091 -> 0 bytes ...4_notification_reservation.cpython-314.pyc | Bin 1098 -> 0 bytes ...e_notification_reservation.cpython-310.pyc | Bin 576 -> 0 bytes ...e_notification_reservation.cpython-313.pyc | Bin 725 -> 0 bytes ...e_notification_reservation.cpython-314.pyc | Bin 726 -> 0 bytes ...06_reservation_besoin_ordi.cpython-310.pyc | Bin 677 -> 0 bytes ...06_reservation_besoin_ordi.cpython-313.pyc | Bin 862 -> 0 bytes ...06_reservation_besoin_ordi.cpython-314.pyc | Bin 869 -> 0 bytes ..._date_debut_range_and_more.cpython-310.pyc | Bin 847 -> 0 bytes ..._date_debut_range_and_more.cpython-313.pyc | Bin 1166 -> 0 bytes ..._date_debut_range_and_more.cpython-314.pyc | Bin 1197 -> 0 bytes ...ve_reservation_besoin_ordi.cpython-310.pyc | Bin 573 -> 0 bytes ...ve_reservation_besoin_ordi.cpython-313.pyc | Bin 722 -> 0 bytes ...ve_reservation_besoin_ordi.cpython-314.pyc | Bin 723 -> 0 bytes ...08_reservation_besoin_ordi.cpython-310.pyc | Bin 679 -> 0 bytes ...08_reservation_besoin_ordi.cpython-313.pyc | Bin 864 -> 0 bytes ...08_reservation_besoin_ordi.cpython-314.pyc | Bin 871 -> 0 bytes ..._date_debut_range_and_more.cpython-310.pyc | Bin 702 -> 0 bytes ..._date_debut_range_and_more.cpython-313.pyc | Bin 953 -> 0 bytes ..._date_debut_range_and_more.cpython-314.pyc | Bin 972 -> 0 bytes .../0010_merge_20260122_1101.cpython-310.pyc | Bin 571 -> 0 bytes .../0010_merge_20260122_1101.cpython-313.pyc | Bin 688 -> 0 bytes .../0010_merge_20260122_1101.cpython-314.pyc | Bin 683 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 143 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 157 -> 0 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 167 -> 0 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 165 -> 0 bytes gestion_conge/models.py | 36 - .../static/gestion_conge/js/detail_conges.js | 75 - .../static/gestion_conge/js/index.js | 71 - .../templates/gestion_conge/index.html | 51 - .../parts/modalDemandeConge.html | 26 - .../gestion_conge/parts/modalDetailConge.html | 92 - .../parts/modalModificationConge.html | 48 - .../gestion_conge/parts/modalRefus.html | 24 - gestion_conge/tests.py | 3 - gestion_conge/urls.py | 27 - gestion_conge/views.py | 225 - gestion_employe/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 134 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 148 -> 0 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 155 -> 0 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 156 -> 0 bytes .../__pycache__/admin.cpython-310.pyc | Bin 625 -> 0 bytes .../__pycache__/admin.cpython-312.pyc | Bin 863 -> 0 bytes .../__pycache__/admin.cpython-313.pyc | Bin 714 -> 0 bytes .../__pycache__/admin.cpython-314.pyc | Bin 932 -> 0 bytes .../__pycache__/api.cpython-313.pyc | Bin 2148 -> 0 bytes .../__pycache__/api_urls.cpython-313.pyc | Bin 579 -> 0 bytes .../__pycache__/api_urls.cpython-314.pyc | Bin 156 -> 0 bytes .../__pycache__/apps.cpython-310.pyc | Bin 456 -> 0 bytes .../__pycache__/apps.cpython-313.pyc | Bin 536 -> 0 bytes .../__pycache__/apps.cpython-314.pyc | Bin 534 -> 0 bytes .../__pycache__/forms.cpython-310.pyc | Bin 2739 -> 0 bytes .../__pycache__/forms.cpython-312.pyc | Bin 3964 -> 0 bytes .../__pycache__/forms.cpython-313.pyc | Bin 13526 -> 0 bytes .../__pycache__/forms.cpython-314.pyc | Bin 4368 -> 0 bytes .../__pycache__/models.cpython-310.pyc | Bin 5472 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 8111 -> 0 bytes .../__pycache__/models.cpython-313.pyc | Bin 11595 -> 0 bytes .../__pycache__/models.cpython-314.pyc | Bin 8281 -> 0 bytes .../__pycache__/urls.cpython-310.pyc | Bin 1508 -> 0 bytes .../__pycache__/urls.cpython-312.pyc | Bin 2190 -> 0 bytes .../__pycache__/urls.cpython-313.pyc | Bin 1836 -> 0 bytes .../__pycache__/urls.cpython-314.pyc | Bin 2193 -> 0 bytes .../__pycache__/views.cpython-310.pyc | Bin 13625 -> 0 bytes .../__pycache__/views.cpython-312.pyc | Bin 25470 -> 0 bytes .../__pycache__/views.cpython-313.pyc | Bin 35725 -> 0 bytes .../__pycache__/views.cpython-314.pyc | Bin 26203 -> 0 bytes gestion_employe/admin.py | 14 - gestion_employe/forms.py | 84 - gestion_employe/migrations/0001_initial.py | 88 - .../0002_alter_contrat_type_contrat.py | 18 - gestion_employe/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 3991 -> 0 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 7185 -> 0 bytes .../__pycache__/0001_initial.cpython-313.pyc | Bin 9674 -> 0 bytes .../__pycache__/0001_initial.cpython-314.pyc | Bin 7065 -> 0 bytes ...alter_contrat_type_contrat.cpython-312.pyc | Bin 1070 -> 0 bytes ...casier_judiciaire_and_more.cpython-314.pyc | Bin 1349 -> 0 bytes ...ail_alter_employe_username.cpython-310.pyc | Bin 689 -> 0 bytes ...ail_alter_employe_username.cpython-313.pyc | Bin 940 -> 0 bytes ...ail_alter_employe_username.cpython-314.pyc | Bin 954 -> 0 bytes ...casier_judiciaire_and_more.cpython-314.pyc | Bin 1464 -> 0 bytes ...ail_alter_employe_username.cpython-310.pyc | Bin 1074 -> 0 bytes ...ail_alter_employe_username.cpython-313.pyc | Bin 1519 -> 0 bytes ...ail_alter_employe_username.cpython-314.pyc | Bin 1528 -> 0 bytes ...004_alter_departement_chef.cpython-310.pyc | Bin 854 -> 0 bytes ...004_alter_departement_chef.cpython-313.pyc | Bin 1185 -> 0 bytes ...004_alter_departement_chef.cpython-314.pyc | Bin 1192 -> 0 bytes ...mation_certificat_and_more.cpython-314.pyc | Bin 2006 -> 0 bytes ...ail_alter_employe_username.cpython-310.pyc | Bin 704 -> 0 bytes ...ail_alter_employe_username.cpython-313.pyc | Bin 955 -> 0 bytes ...ail_alter_employe_username.cpython-314.pyc | Bin 969 -> 0 bytes ...mploye_projet_employe_sexe.cpython-314.pyc | Bin 1033 -> 0 bytes ...ail_alter_employe_username.cpython-310.pyc | Bin 1074 -> 0 bytes ...ail_alter_employe_username.cpython-313.pyc | Bin 1519 -> 0 bytes ...ail_alter_employe_username.cpython-314.pyc | Bin 1528 -> 0 bytes ...issance_alter_employe_sexe.cpython-314.pyc | Bin 1086 -> 0 bytes ...rmations_formation_employe.cpython-314.pyc | Bin 1217 -> 0 bytes .../0007_tachehebdomadaire.cpython-310.pyc | Bin 1357 -> 0 bytes .../0007_tachehebdomadaire.cpython-313.pyc | Bin 1978 -> 0 bytes .../0007_tachehebdomadaire.cpython-314.pyc | Bin 2017 -> 0 bytes ...artement_chef_employe_chef.cpython-314.pyc | Bin 1015 -> 0 bytes ...8_tachehebdomadaire_statut.cpython-310.pyc | Bin 713 -> 0 bytes ...8_tachehebdomadaire_statut.cpython-313.pyc | Bin 914 -> 0 bytes ...8_tachehebdomadaire_statut.cpython-314.pyc | Bin 916 -> 0 bytes ...se_alter_employe_telephone.cpython-314.pyc | Bin 1002 -> 0 bytes ...adaire_created_at_and_more.cpython-310.pyc | Bin 844 -> 0 bytes ...adaire_created_at_and_more.cpython-313.pyc | Bin 1111 -> 0 bytes ...adaire_created_at_and_more.cpython-314.pyc | Bin 1125 -> 0 bytes ...adaire_date_tache_and_more.cpython-310.pyc | Bin 865 -> 0 bytes ...adaire_date_tache_and_more.cpython-313.pyc | Bin 1129 -> 0 bytes ...adaire_date_tache_and_more.cpython-314.pyc | Bin 1143 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 145 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 159 -> 0 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 166 -> 0 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 167 -> 0 bytes .../static/gestion_employe/js/index.js | 263 - .../static/gestion_employe/js/mon_profil.js | 46 - .../templates/gestion_employe/index.html | 67 - .../gestion_employe/modifier-profil.html | 105 - .../templates/gestion_employe/monprofil.html | 241 - .../parts/modalAffectationProjet.html | 28 - .../parts/modalAjoutFormation.html | 21 - .../parts/modalCreationContrat.html | 57 - .../parts/modalDetailEmploye.html | 136 - .../gestion_employe/parts/modalDocument.html | 41 - .../parts/modalListeContratExpirants.html | 17 - .../parts/modificationMotPasse.html | 36 - .../tags_personnaliser.cpython-310.pyc | Bin 1117 -> 0 bytes .../tags_personnaliser.cpython-312.pyc | Bin 1625 -> 0 bytes .../tags_personnaliser.cpython-314.pyc | Bin 1633 -> 0 bytes .../templatetags/tags_personnaliser.py | 24 - gestion_employe/tests.py | 3 - gestion_employe/urls.py | 102 - gestion_employe/views.py | 447 - gestion_projet/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 133 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 147 -> 0 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 159 -> 0 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 155 -> 0 bytes .../__pycache__/admin.cpython-310.pyc | Bin 438 -> 0 bytes .../__pycache__/admin.cpython-312.pyc | Bin 555 -> 0 bytes .../__pycache__/admin.cpython-313.pyc | Bin 203 -> 0 bytes .../__pycache__/admin.cpython-314.pyc | Bin 611 -> 0 bytes .../__pycache__/apps.cpython-310.pyc | Bin 453 -> 0 bytes .../__pycache__/apps.cpython-313.pyc | Bin 538 -> 0 bytes .../__pycache__/apps.cpython-314.pyc | Bin 531 -> 0 bytes .../__pycache__/forms.cpython-310.pyc | Bin 4551 -> 0 bytes .../__pycache__/forms.cpython-312.pyc | Bin 6561 -> 0 bytes .../__pycache__/forms.cpython-313.pyc | Bin 8356 -> 0 bytes .../__pycache__/forms.cpython-314.pyc | Bin 6947 -> 0 bytes .../__pycache__/models.cpython-310.pyc | Bin 7654 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 11000 -> 0 bytes .../__pycache__/models.cpython-313.pyc | Bin 21228 -> 0 bytes .../__pycache__/models.cpython-314.pyc | Bin 11385 -> 0 bytes .../__pycache__/urls.cpython-310.pyc | Bin 2294 -> 0 bytes .../__pycache__/urls.cpython-312.pyc | Bin 3222 -> 0 bytes .../__pycache__/urls.cpython-313.pyc | Bin 2633 -> 0 bytes .../__pycache__/urls.cpython-314.pyc | Bin 3225 -> 0 bytes .../__pycache__/views.cpython-310.pyc | Bin 16279 -> 0 bytes .../__pycache__/views.cpython-312.pyc | Bin 30579 -> 0 bytes .../__pycache__/views.cpython-313.pyc | Bin 41096 -> 0 bytes .../__pycache__/views.cpython-314.pyc | Bin 31054 -> 0 bytes gestion_projet/admin.py | 6 - gestion_projet/forms.py | 176 - gestion_projet/migrations/0001_initial.py | 107 - gestion_projet/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 4306 -> 0 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 7782 -> 0 bytes .../__pycache__/0001_initial.cpython-313.pyc | Bin 10691 -> 0 bytes .../__pycache__/0001_initial.cpython-314.pyc | Bin 7575 -> 0 bytes ...domainederecherche_options.cpython-310.pyc | Bin 623 -> 0 bytes ...domainederecherche_options.cpython-314.pyc | Bin 808 -> 0 bytes ...get_alter_projet_budget_rh.cpython-314.pyc | Bin 1005 -> 0 bytes ...projet_dernier_alerte_mail.cpython-310.pyc | Bin 652 -> 0 bytes ...projet_dernier_alerte_mail.cpython-313.pyc | Bin 837 -> 0 bytes ...domaine_recherche_and_more.cpython-314.pyc | Bin 1341 -> 0 bytes .../0002_projet_volets.cpython-313.pyc | Bin 1087 -> 0 bytes ...eprojet_livrables_and_more.cpython-314.pyc | Bin 2043 -> 0 bytes ...ter_domainederecherche_nom.cpython-314.pyc | Bin 1049 -> 0 bytes ...rnier_alerte_mail_and_more.cpython-310.pyc | Bin 985 -> 0 bytes ...rnier_alerte_mail_and_more.cpython-313.pyc | Bin 1268 -> 0 bytes ...rnier_alerte_mail_and_more.cpython-314.pyc | Bin 1276 -> 0 bytes .../0004_delete_plan.cpython-310.pyc | Bin 547 -> 0 bytes .../0004_delete_plan.cpython-313.pyc | Bin 696 -> 0 bytes ...e_activiteprojet_livrables.cpython-314.pyc | Bin 733 -> 0 bytes ...nom_delete_livrableattendu.cpython-314.pyc | Bin 979 -> 0 bytes ...et_motif_changement_budget.cpython-314.pyc | Bin 931 -> 0 bytes ...ter_domainederecherche_nom.cpython-314.pyc | Bin 1040 -> 0 bytes ...inederecherche_id_and_more.cpython-314.pyc | Bin 1172 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 144 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 158 -> 0 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 170 -> 0 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 166 -> 0 bytes gestion_projet/models.py | 309 - .../gestion_projet/js/creation_projet.js | 19 - .../js/enregistrement_bailleur.js | 23 - .../js/enregistrement_financement.js | 22 - .../static/gestion_projet/js/index.js | 64 - .../js/liste_documents_projet.js | 20 - .../gestion_projet/js/suivi-activites.js | 59 - .../gestion_projet/ajout-financement.html | 37 - .../gestion_projet/creation_projet.html | 32 - .../templates/gestion_projet/index.html | 61 - .../parts/creation_bailleur.html | 20 - .../parts/liste_document_projet.html | 16 - .../parts/modalAjoutActivite.html | 20 - .../parts/modalAjoutDocument.html | 20 - .../parts/modalAjoutLivrable.html | 20 - .../parts/modalAjoutProjet.html | 21 - .../parts/modalAnnulerActivite.html | 26 - .../parts/modalDetailActivite.html | 58 - .../parts/modalDetailProjet.html | 115 - .../parts/modalFinancement.html | 20 - .../parts/modalMiseAJourDepense.html | 36 - .../gestion_projet/suivi_activite.html | 64 - gestion_projet/tests.py | 3 - gestion_projet/urls.py | 122 - gestion_projet/views.py | 485 - gestion_salle/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 132 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 146 -> 0 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 154 -> 0 bytes .../__pycache__/admin.cpython-310.pyc | Bin 173 -> 0 bytes .../__pycache__/admin.cpython-312.pyc | Bin 190 -> 0 bytes .../__pycache__/admin.cpython-314.pyc | Bin 198 -> 0 bytes .../__pycache__/apps.cpython-310.pyc | Bin 367 -> 0 bytes .../__pycache__/apps.cpython-312.pyc | Bin 404 -> 0 bytes .../__pycache__/apps.cpython-314.pyc | Bin 467 -> 0 bytes .../__pycache__/forms.cpython-310.pyc | Bin 1553 -> 0 bytes .../__pycache__/forms.cpython-312.pyc | Bin 2209 -> 0 bytes .../__pycache__/forms.cpython-314.pyc | Bin 2331 -> 0 bytes .../__pycache__/models.cpython-310.pyc | Bin 1531 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 2361 -> 0 bytes .../__pycache__/models.cpython-314.pyc | Bin 2431 -> 0 bytes .../__pycache__/urls.cpython-310.pyc | Bin 926 -> 0 bytes .../__pycache__/urls.cpython-312.pyc | Bin 1279 -> 0 bytes .../__pycache__/urls.cpython-314.pyc | Bin 1282 -> 0 bytes .../__pycache__/views.cpython-310.pyc | Bin 6126 -> 0 bytes .../__pycache__/views.cpython-312.pyc | Bin 11139 -> 0 bytes .../__pycache__/views.cpython-314.pyc | Bin 12317 -> 0 bytes gestion_salle/admin.py | 3 - gestion_salle/apps.py | 5 - gestion_salle/forms.py | 32 - gestion_salle/migrations/0001_initial.py | 34 - gestion_salle/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 1551 -> 0 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 2418 -> 0 bytes .../__pycache__/0001_initial.cpython-314.pyc | Bin 2493 -> 0 bytes ...ve_reservation_motif_refus.cpython-310.pyc | Bin 534 -> 0 bytes ...ve_reservation_motif_refus.cpython-314.pyc | Bin 707 -> 0 bytes ...3_alter_reservation_statut.cpython-310.pyc | Bin 747 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 143 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 157 -> 0 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 165 -> 0 bytes gestion_salle/models.py | 33 - .../static/gestion_salle/js/index.js | 193 - .../templates/gestion_salle/index.html | 59 - .../parts/ModalRefusReservation.html | 22 - .../parts/ModaleAjoutLienZoom.html | 26 - .../parts/modalCreationReservation.html | 23 - .../parts/modalDetailResevation.html | 71 - .../parts/modalListeValidation.html | 16 - gestion_salle/tests.py | 3 - gestion_salle/urls.py | 48 - gestion_salle/views.py | 195 - manage.py | 22 - static/css/bootstrap.min.css | 6 - static/css/styles.css | 278 - static/css/tabulator_bootstrap5.min.css | 2 - ...bulator_bootstrap5.min.css:Zone.Identifier | Bin 25 -> 0 bytes static/img/cerfig.jpg | Bin 86605 -> 0 bytes static/js/monprofil.js | 13 - static/js/rapport.js | 102 - static/js/sirh-index.js | 75 - staticfiles/admin/css/autocomplete.css | 279 - staticfiles/admin/css/base.css | 1180 -- staticfiles/admin/css/changelists.css | 343 - staticfiles/admin/css/dark_mode.css | 130 - staticfiles/admin/css/dashboard.css | 29 - staticfiles/admin/css/forms.css | 498 - staticfiles/admin/css/login.css | 61 - staticfiles/admin/css/nav_sidebar.css | 150 - staticfiles/admin/css/responsive.css | 904 -- staticfiles/admin/css/responsive_rtl.css | 89 - staticfiles/admin/css/rtl.css | 293 - .../admin/css/unusable_password_field.css | 19 - .../css/vendor/select2/LICENSE-SELECT2.md | 21 - .../admin/css/vendor/select2/select2.css | 481 - .../admin/css/vendor/select2/select2.min.css | 1 - staticfiles/admin/css/widgets.css | 613 - staticfiles/admin/img/LICENSE | 20 - staticfiles/admin/img/README.txt | 7 - staticfiles/admin/img/calendar-icons.svg | 63 - staticfiles/admin/img/gis/move_vertex_off.svg | 1 - staticfiles/admin/img/gis/move_vertex_on.svg | 1 - staticfiles/admin/img/icon-addlink.svg | 3 - staticfiles/admin/img/icon-alert.svg | 3 - staticfiles/admin/img/icon-calendar.svg | 9 - staticfiles/admin/img/icon-changelink.svg | 3 - staticfiles/admin/img/icon-clock.svg | 9 - staticfiles/admin/img/icon-deletelink.svg | 3 - staticfiles/admin/img/icon-hidelink.svg | 3 - staticfiles/admin/img/icon-no.svg | 3 - staticfiles/admin/img/icon-unknown-alt.svg | 3 - staticfiles/admin/img/icon-unknown.svg | 3 - staticfiles/admin/img/icon-viewlink.svg | 3 - staticfiles/admin/img/icon-yes.svg | 3 - staticfiles/admin/img/inline-delete.svg | 3 - staticfiles/admin/img/search.svg | 3 - staticfiles/admin/img/selector-icons.svg | 34 - staticfiles/admin/img/sorting-icons.svg | 19 - staticfiles/admin/img/tooltag-add.svg | 3 - staticfiles/admin/img/tooltag-arrowright.svg | 3 - staticfiles/admin/js/SelectBox.js | 116 - staticfiles/admin/js/SelectFilter2.js | 311 - staticfiles/admin/js/actions.js | 204 - .../admin/js/admin/DateTimeShortcuts.js | 408 - .../admin/js/admin/RelatedObjectLookups.js | 252 - staticfiles/admin/js/autocomplete.js | 33 - staticfiles/admin/js/calendar.js | 239 - staticfiles/admin/js/cancel.js | 29 - staticfiles/admin/js/change_form.js | 16 - staticfiles/admin/js/core.js | 184 - staticfiles/admin/js/filters.js | 30 - staticfiles/admin/js/inlines.js | 359 - staticfiles/admin/js/jquery.init.js | 8 - staticfiles/admin/js/nav_sidebar.js | 79 - staticfiles/admin/js/popup_response.js | 15 - staticfiles/admin/js/prepopulate.js | 43 - staticfiles/admin/js/prepopulate_init.js | 15 - staticfiles/admin/js/theme.js | 51 - .../admin/js/unusable_password_field.js | 29 - staticfiles/admin/js/urlify.js | 169 - .../admin/js/vendor/jquery/LICENSE.txt | 20 - staticfiles/admin/js/vendor/jquery/jquery.js | 10716 ---------------- .../admin/js/vendor/jquery/jquery.min.js | 2 - .../admin/js/vendor/select2/LICENSE.md | 21 - .../admin/js/vendor/select2/i18n/af.js | 3 - .../admin/js/vendor/select2/i18n/ar.js | 3 - .../admin/js/vendor/select2/i18n/az.js | 3 - .../admin/js/vendor/select2/i18n/bg.js | 3 - .../admin/js/vendor/select2/i18n/bn.js | 3 - .../admin/js/vendor/select2/i18n/bs.js | 3 - .../admin/js/vendor/select2/i18n/ca.js | 3 - .../admin/js/vendor/select2/i18n/cs.js | 3 - .../admin/js/vendor/select2/i18n/da.js | 3 - .../admin/js/vendor/select2/i18n/de.js | 3 - .../admin/js/vendor/select2/i18n/dsb.js | 3 - .../admin/js/vendor/select2/i18n/el.js | 3 - .../admin/js/vendor/select2/i18n/en.js | 3 - .../admin/js/vendor/select2/i18n/es.js | 3 - .../admin/js/vendor/select2/i18n/et.js | 3 - .../admin/js/vendor/select2/i18n/eu.js | 3 - .../admin/js/vendor/select2/i18n/fa.js | 3 - .../admin/js/vendor/select2/i18n/fi.js | 3 - .../admin/js/vendor/select2/i18n/fr.js | 3 - .../admin/js/vendor/select2/i18n/gl.js | 3 - .../admin/js/vendor/select2/i18n/he.js | 3 - .../admin/js/vendor/select2/i18n/hi.js | 3 - .../admin/js/vendor/select2/i18n/hr.js | 3 - .../admin/js/vendor/select2/i18n/hsb.js | 3 - .../admin/js/vendor/select2/i18n/hu.js | 3 - .../admin/js/vendor/select2/i18n/hy.js | 3 - .../admin/js/vendor/select2/i18n/id.js | 3 - .../admin/js/vendor/select2/i18n/is.js | 3 - .../admin/js/vendor/select2/i18n/it.js | 3 - .../admin/js/vendor/select2/i18n/ja.js | 3 - .../admin/js/vendor/select2/i18n/ka.js | 3 - .../admin/js/vendor/select2/i18n/km.js | 3 - .../admin/js/vendor/select2/i18n/ko.js | 3 - .../admin/js/vendor/select2/i18n/lt.js | 3 - .../admin/js/vendor/select2/i18n/lv.js | 3 - .../admin/js/vendor/select2/i18n/mk.js | 3 - .../admin/js/vendor/select2/i18n/ms.js | 3 - .../admin/js/vendor/select2/i18n/nb.js | 3 - .../admin/js/vendor/select2/i18n/ne.js | 3 - .../admin/js/vendor/select2/i18n/nl.js | 3 - .../admin/js/vendor/select2/i18n/pl.js | 3 - .../admin/js/vendor/select2/i18n/ps.js | 3 - .../admin/js/vendor/select2/i18n/pt-BR.js | 3 - .../admin/js/vendor/select2/i18n/pt.js | 3 - .../admin/js/vendor/select2/i18n/ro.js | 3 - .../admin/js/vendor/select2/i18n/ru.js | 3 - .../admin/js/vendor/select2/i18n/sk.js | 3 - .../admin/js/vendor/select2/i18n/sl.js | 3 - .../admin/js/vendor/select2/i18n/sq.js | 3 - .../admin/js/vendor/select2/i18n/sr-Cyrl.js | 3 - .../admin/js/vendor/select2/i18n/sr.js | 3 - .../admin/js/vendor/select2/i18n/sv.js | 3 - .../admin/js/vendor/select2/i18n/th.js | 3 - .../admin/js/vendor/select2/i18n/tk.js | 3 - .../admin/js/vendor/select2/i18n/tr.js | 3 - .../admin/js/vendor/select2/i18n/uk.js | 3 - .../admin/js/vendor/select2/i18n/vi.js | 3 - .../admin/js/vendor/select2/i18n/zh-CN.js | 3 - .../admin/js/vendor/select2/i18n/zh-TW.js | 3 - .../admin/js/vendor/select2/select2.full.js | 6820 ---------- .../js/vendor/select2/select2.full.min.js | 2 - .../admin/js/vendor/xregexp/LICENSE.txt | 21 - .../admin/js/vendor/xregexp/xregexp.js | 6126 --------- .../admin/js/vendor/xregexp/xregexp.min.js | 17 - staticfiles/bootstrap.min.css | 6 - staticfiles/css/bootstrap.min.css | 6 - staticfiles/css/styles.css | 278 - staticfiles/css/tabulator_bootstrap5.min.css | 2 - ...bulator_bootstrap5.min.css:Zone.Identifier | Bin 25 -> 0 bytes staticfiles/gestion_conge/admin.py | 3 - staticfiles/gestion_conge/apps.py | 6 - staticfiles/gestion_conge/js/detail_conges.js | 75 - staticfiles/gestion_conge/js/index.js | 71 - staticfiles/gestion_employe/js/index.js | 263 - staticfiles/gestion_employe/js/mon_profil.js | 42 - .../gestion_projet/js/creation_projet.js | 19 - .../js/enregistrement_bailleur.js | 23 - .../js/enregistrement_financement.js | 22 - staticfiles/gestion_projet/js/index.js | 64 - .../js/liste_documents_projet.js | 20 - .../gestion_projet/js/suivi-activites.js | 59 - staticfiles/gestion_salle/js/index.js | 193 - staticfiles/icons.css | 2078 --- staticfiles/img/cerfig.jpg | Bin 86605 -> 0 bytes staticfiles/js/monprofil.js | 13 - staticfiles/js/rapport.js | 102 - staticfiles/js/sirh-index.js | 75 - staticfiles/styles.css | 278 - 525 files changed, 45689 deletions(-) delete mode 100644 SIRH/__init__.py delete mode 100644 SIRH/__pycache__/__init__.cpython-310.pyc delete mode 100644 SIRH/__pycache__/__init__.cpython-312.pyc delete mode 100644 SIRH/__pycache__/__init__.cpython-313.pyc delete mode 100644 SIRH/__pycache__/__init__.cpython-314.pyc delete mode 100644 SIRH/__pycache__/settings.cpython-310.pyc delete mode 100644 SIRH/__pycache__/settings.cpython-312.pyc delete mode 100644 SIRH/__pycache__/settings.cpython-313.pyc delete mode 100644 SIRH/__pycache__/settings.cpython-314.pyc delete mode 100644 SIRH/__pycache__/urls.cpython-310.pyc delete mode 100644 SIRH/__pycache__/urls.cpython-312.pyc delete mode 100644 SIRH/__pycache__/urls.cpython-313.pyc delete mode 100644 SIRH/__pycache__/urls.cpython-314.pyc delete mode 100644 SIRH/__pycache__/views.cpython-310.pyc delete mode 100644 SIRH/__pycache__/views.cpython-312.pyc delete mode 100644 SIRH/__pycache__/views.cpython-313.pyc delete mode 100644 SIRH/__pycache__/views.cpython-314.pyc delete mode 100644 SIRH/__pycache__/wsgi.cpython-310.pyc delete mode 100644 SIRH/__pycache__/wsgi.cpython-312.pyc delete mode 100644 SIRH/__pycache__/wsgi.cpython-313.pyc delete mode 100644 SIRH/__pycache__/wsgi.cpython-314.pyc delete mode 100644 SIRH/asgi.py delete mode 100644 SIRH/static/SIRH/PS1.jpg delete mode 100644 SIRH/static/SIRH/cerfig.jpeg delete mode 100644 SIRH/static/SIRH/icons.css delete mode 100644 SIRH/static/SIRH/per1.webp delete mode 100644 SIRH/static/SIRH/user.jpg delete mode 100644 SIRH/static/templates/SIRH/index.html delete mode 100644 SIRH/static/templates/SIRH/login.html delete mode 100644 SIRH/static/templates/SIRH/menu_principal.html delete mode 100644 SIRH/static/templates/SIRH/message.html delete mode 100644 SIRH/static/templates/SIRH/monprofil.html delete mode 100644 SIRH/static/templates/SIRH/parametre.html delete mode 100644 SIRH/static/templates/SIRH/rapport.html delete mode 100644 SIRH/static/templates/SIRH/registration delete mode 100644 SIRH/static/templates/SIRH/rest.html delete mode 100644 SIRH/static/templates/SIRH/tiket.html delete mode 100644 SIRH/static/templates/menu_principale.js delete mode 100644 SIRH/templates/SIRH/BASE.html delete mode 100644 SIRH/templates/SIRH/login.html delete mode 100644 SIRH/templates/SIRH/parts/menu_principal.html delete mode 100644 SIRH/urls.py delete mode 100644 SIRH/views.py delete mode 100644 SIRH/wsgi.py delete mode 100644 fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-310.pyc delete mode 100644 fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-312.pyc delete mode 100644 fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-314.pyc delete mode 100644 fonction_utilitaire/fonctions_utilitaire.py delete mode 100644 gestion_conge/__init__.py delete mode 100644 gestion_conge/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestion_conge/__pycache__/__init__.cpython-312.pyc delete mode 100644 gestion_conge/__pycache__/__init__.cpython-313.pyc delete mode 100644 gestion_conge/__pycache__/__init__.cpython-314.pyc delete mode 100644 gestion_conge/__pycache__/admin.cpython-310.pyc delete mode 100644 gestion_conge/__pycache__/admin.cpython-312.pyc delete mode 100644 gestion_conge/__pycache__/admin.cpython-313.pyc delete mode 100644 gestion_conge/__pycache__/admin.cpython-314.pyc delete mode 100644 gestion_conge/__pycache__/apps.cpython-310.pyc delete mode 100644 gestion_conge/__pycache__/apps.cpython-312.pyc delete mode 100644 gestion_conge/__pycache__/apps.cpython-313.pyc delete mode 100644 gestion_conge/__pycache__/apps.cpython-314.pyc delete mode 100644 gestion_conge/__pycache__/forms.cpython-310.pyc delete mode 100644 gestion_conge/__pycache__/forms.cpython-312.pyc delete mode 100644 gestion_conge/__pycache__/forms.cpython-313.pyc delete mode 100644 gestion_conge/__pycache__/forms.cpython-314.pyc delete mode 100644 gestion_conge/__pycache__/models.cpython-310.pyc delete mode 100644 gestion_conge/__pycache__/models.cpython-312.pyc delete mode 100644 gestion_conge/__pycache__/models.cpython-313.pyc delete mode 100644 gestion_conge/__pycache__/models.cpython-314.pyc delete mode 100644 gestion_conge/__pycache__/urls.cpython-310.pyc delete mode 100644 gestion_conge/__pycache__/urls.cpython-312.pyc delete mode 100644 gestion_conge/__pycache__/urls.cpython-313.pyc delete mode 100644 gestion_conge/__pycache__/urls.cpython-314.pyc delete mode 100644 gestion_conge/__pycache__/views.cpython-310.pyc delete mode 100644 gestion_conge/__pycache__/views.cpython-312.pyc delete mode 100644 gestion_conge/__pycache__/views.cpython-313.pyc delete mode 100644 gestion_conge/__pycache__/views.cpython-314.pyc delete mode 100644 gestion_conge/admin.py delete mode 100644 gestion_conge/apps.py delete mode 100644 gestion_conge/forms.py delete mode 100644 gestion_conge/migrations/0001_initial.py delete mode 100644 gestion_conge/migrations/__init__.py delete mode 100644 gestion_conge/migrations/__pycache__/0001_initial.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0001_initial.cpython-312.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0001_initial.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0001_initial.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0002_alter_conge_type.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0002_alter_conge_type.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0002_initial.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0002_initial.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0002_initial.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0002_remove_conge_validateur_chef_and_more.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0003_alter_conge_date_demande.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0003_alter_reservation_motif.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0003_alter_reservation_motif.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0003_alter_reservation_motif.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0004_notification_reservation.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0004_notification_reservation.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0004_notification_reservation.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0005_remove_notification_reservation.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0005_remove_notification_reservation.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0005_remove_notification_reservation.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi_reservation_date_debut_range_and_more.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi_reservation_date_debut_range_and_more.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi_reservation_date_debut_range_and_more.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0008_reservation_besoin_ordi.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0008_reservation_besoin_ordi.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0008_reservation_besoin_ordi.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0009_reservation_date_debut_range_and_more.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0009_reservation_date_debut_range_and_more.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0009_reservation_date_debut_range_and_more.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0010_merge_20260122_1101.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0010_merge_20260122_1101.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/0010_merge_20260122_1101.cpython-314.pyc delete mode 100644 gestion_conge/migrations/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestion_conge/migrations/__pycache__/__init__.cpython-312.pyc delete mode 100644 gestion_conge/migrations/__pycache__/__init__.cpython-313.pyc delete mode 100644 gestion_conge/migrations/__pycache__/__init__.cpython-314.pyc delete mode 100644 gestion_conge/models.py delete mode 100644 gestion_conge/static/gestion_conge/js/detail_conges.js delete mode 100644 gestion_conge/static/gestion_conge/js/index.js delete mode 100644 gestion_conge/templates/gestion_conge/index.html delete mode 100644 gestion_conge/templates/gestion_conge/parts/modalDemandeConge.html delete mode 100644 gestion_conge/templates/gestion_conge/parts/modalDetailConge.html delete mode 100644 gestion_conge/templates/gestion_conge/parts/modalModificationConge.html delete mode 100644 gestion_conge/templates/gestion_conge/parts/modalRefus.html delete mode 100644 gestion_conge/tests.py delete mode 100644 gestion_conge/urls.py delete mode 100644 gestion_conge/views.py delete mode 100644 gestion_employe/__init__.py delete mode 100644 gestion_employe/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestion_employe/__pycache__/__init__.cpython-312.pyc delete mode 100644 gestion_employe/__pycache__/__init__.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/__init__.cpython-314.pyc delete mode 100644 gestion_employe/__pycache__/admin.cpython-310.pyc delete mode 100644 gestion_employe/__pycache__/admin.cpython-312.pyc delete mode 100644 gestion_employe/__pycache__/admin.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/admin.cpython-314.pyc delete mode 100644 gestion_employe/__pycache__/api.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/api_urls.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/api_urls.cpython-314.pyc delete mode 100644 gestion_employe/__pycache__/apps.cpython-310.pyc delete mode 100644 gestion_employe/__pycache__/apps.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/apps.cpython-314.pyc delete mode 100644 gestion_employe/__pycache__/forms.cpython-310.pyc delete mode 100644 gestion_employe/__pycache__/forms.cpython-312.pyc delete mode 100644 gestion_employe/__pycache__/forms.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/forms.cpython-314.pyc delete mode 100644 gestion_employe/__pycache__/models.cpython-310.pyc delete mode 100644 gestion_employe/__pycache__/models.cpython-312.pyc delete mode 100644 gestion_employe/__pycache__/models.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/models.cpython-314.pyc delete mode 100644 gestion_employe/__pycache__/urls.cpython-310.pyc delete mode 100644 gestion_employe/__pycache__/urls.cpython-312.pyc delete mode 100644 gestion_employe/__pycache__/urls.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/urls.cpython-314.pyc delete mode 100644 gestion_employe/__pycache__/views.cpython-310.pyc delete mode 100644 gestion_employe/__pycache__/views.cpython-312.pyc delete mode 100644 gestion_employe/__pycache__/views.cpython-313.pyc delete mode 100644 gestion_employe/__pycache__/views.cpython-314.pyc delete mode 100644 gestion_employe/admin.py delete mode 100644 gestion_employe/forms.py delete mode 100644 gestion_employe/migrations/0001_initial.py delete mode 100644 gestion_employe/migrations/0002_alter_contrat_type_contrat.py delete mode 100644 gestion_employe/migrations/__init__.py delete mode 100644 gestion_employe/migrations/__pycache__/0001_initial.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0001_initial.cpython-312.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0001_initial.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0001_initial.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0002_alter_contrat_type_contrat.cpython-312.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0002_alter_employe_cv_alter_employe_casier_judiciaire_and_more.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0002_alter_employe_email_alter_employe_username.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0002_alter_employe_email_alter_employe_username.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0002_alter_employe_email_alter_employe_username.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0003_alter_employe_cv_alter_employe_casier_judiciaire_and_more.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0003_alter_employe_email_alter_employe_username.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0003_alter_employe_email_alter_employe_username.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0003_alter_employe_email_alter_employe_username.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0004_alter_departement_chef.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0004_alter_departement_chef.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0004_alter_departement_chef.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0004_alter_employe_formations_alter_formation_certificat_and_more.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0005_alter_employe_email_alter_employe_username.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0005_alter_employe_email_alter_employe_username.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0005_alter_employe_email_alter_employe_username.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0005_remove_employe_projet_employe_sexe.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0006_alter_employe_email_alter_employe_username.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0006_alter_employe_email_alter_employe_username.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0006_alter_employe_email_alter_employe_username.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0006_employe_date_naissance_alter_employe_sexe.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0007_remove_employe_formations_formation_employe.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0008_remove_departement_chef_employe_chef.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0008_tachehebdomadaire_statut.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0008_tachehebdomadaire_statut.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0008_tachehebdomadaire_statut.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0009_alter_employe_adresse_alter_employe_telephone.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0009_alter_tachehebdomadaire_created_at_and_more.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0009_alter_tachehebdomadaire_created_at_and_more.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0009_alter_tachehebdomadaire_created_at_and_more.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-314.pyc delete mode 100644 gestion_employe/migrations/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestion_employe/migrations/__pycache__/__init__.cpython-312.pyc delete mode 100644 gestion_employe/migrations/__pycache__/__init__.cpython-313.pyc delete mode 100644 gestion_employe/migrations/__pycache__/__init__.cpython-314.pyc delete mode 100644 gestion_employe/static/gestion_employe/js/index.js delete mode 100644 gestion_employe/static/gestion_employe/js/mon_profil.js delete mode 100644 gestion_employe/templates/gestion_employe/index.html delete mode 100644 gestion_employe/templates/gestion_employe/modifier-profil.html delete mode 100644 gestion_employe/templates/gestion_employe/monprofil.html delete mode 100644 gestion_employe/templates/gestion_employe/parts/modalAffectationProjet.html delete mode 100644 gestion_employe/templates/gestion_employe/parts/modalAjoutFormation.html delete mode 100644 gestion_employe/templates/gestion_employe/parts/modalCreationContrat.html delete mode 100644 gestion_employe/templates/gestion_employe/parts/modalDetailEmploye.html delete mode 100644 gestion_employe/templates/gestion_employe/parts/modalDocument.html delete mode 100644 gestion_employe/templates/gestion_employe/parts/modalListeContratExpirants.html delete mode 100644 gestion_employe/templates/gestion_employe/parts/modificationMotPasse.html delete mode 100644 gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-310.pyc delete mode 100644 gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-312.pyc delete mode 100644 gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-314.pyc delete mode 100644 gestion_employe/templatetags/tags_personnaliser.py delete mode 100644 gestion_employe/tests.py delete mode 100644 gestion_employe/urls.py delete mode 100644 gestion_employe/views.py delete mode 100644 gestion_projet/__init__.py delete mode 100644 gestion_projet/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestion_projet/__pycache__/__init__.cpython-312.pyc delete mode 100644 gestion_projet/__pycache__/__init__.cpython-313.pyc delete mode 100644 gestion_projet/__pycache__/__init__.cpython-314.pyc delete mode 100644 gestion_projet/__pycache__/admin.cpython-310.pyc delete mode 100644 gestion_projet/__pycache__/admin.cpython-312.pyc delete mode 100644 gestion_projet/__pycache__/admin.cpython-313.pyc delete mode 100644 gestion_projet/__pycache__/admin.cpython-314.pyc delete mode 100644 gestion_projet/__pycache__/apps.cpython-310.pyc delete mode 100644 gestion_projet/__pycache__/apps.cpython-313.pyc delete mode 100644 gestion_projet/__pycache__/apps.cpython-314.pyc delete mode 100644 gestion_projet/__pycache__/forms.cpython-310.pyc delete mode 100644 gestion_projet/__pycache__/forms.cpython-312.pyc delete mode 100644 gestion_projet/__pycache__/forms.cpython-313.pyc delete mode 100644 gestion_projet/__pycache__/forms.cpython-314.pyc delete mode 100644 gestion_projet/__pycache__/models.cpython-310.pyc delete mode 100644 gestion_projet/__pycache__/models.cpython-312.pyc delete mode 100644 gestion_projet/__pycache__/models.cpython-313.pyc delete mode 100644 gestion_projet/__pycache__/models.cpython-314.pyc delete mode 100644 gestion_projet/__pycache__/urls.cpython-310.pyc delete mode 100644 gestion_projet/__pycache__/urls.cpython-312.pyc delete mode 100644 gestion_projet/__pycache__/urls.cpython-313.pyc delete mode 100644 gestion_projet/__pycache__/urls.cpython-314.pyc delete mode 100644 gestion_projet/__pycache__/views.cpython-310.pyc delete mode 100644 gestion_projet/__pycache__/views.cpython-312.pyc delete mode 100644 gestion_projet/__pycache__/views.cpython-313.pyc delete mode 100644 gestion_projet/__pycache__/views.cpython-314.pyc delete mode 100644 gestion_projet/admin.py delete mode 100644 gestion_projet/forms.py delete mode 100644 gestion_projet/migrations/0001_initial.py delete mode 100644 gestion_projet/migrations/__init__.py delete mode 100644 gestion_projet/migrations/__pycache__/0001_initial.cpython-310.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0001_initial.cpython-312.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0001_initial.cpython-313.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0001_initial.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0002_alter_domainederecherche_options.cpython-310.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0002_alter_domainederecherche_options.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0002_alter_projet_budget_alter_projet_budget_rh.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0002_documentprojet_dernier_alerte_mail.cpython-310.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0002_documentprojet_dernier_alerte_mail.cpython-313.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0002_domainederecherche_remove_projet_domaine_recherche_and_more.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0002_projet_volets.cpython-313.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0002_remove_activiteprojet_livrables_and_more.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0003_alter_domainederecherche_nom.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0003_remove_documentprojet_dernier_alerte_mail_and_more.cpython-310.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0003_remove_documentprojet_dernier_alerte_mail_and_more.cpython-313.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0003_remove_documentprojet_dernier_alerte_mail_and_more.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0004_delete_plan.cpython-310.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0004_delete_plan.cpython-313.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0004_remove_activiteprojet_livrables.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0005_alter_livrableslivres_nom_delete_livrableattendu.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0006_activiteprojet_motif_changement_budget.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0007_alter_domainederecherche_nom.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/0008_remove_domainederecherche_id_and_more.cpython-314.pyc delete mode 100644 gestion_projet/migrations/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestion_projet/migrations/__pycache__/__init__.cpython-312.pyc delete mode 100644 gestion_projet/migrations/__pycache__/__init__.cpython-313.pyc delete mode 100644 gestion_projet/migrations/__pycache__/__init__.cpython-314.pyc delete mode 100644 gestion_projet/models.py delete mode 100644 gestion_projet/static/gestion_projet/js/creation_projet.js delete mode 100644 gestion_projet/static/gestion_projet/js/enregistrement_bailleur.js delete mode 100644 gestion_projet/static/gestion_projet/js/enregistrement_financement.js delete mode 100644 gestion_projet/static/gestion_projet/js/index.js delete mode 100644 gestion_projet/static/gestion_projet/js/liste_documents_projet.js delete mode 100644 gestion_projet/static/gestion_projet/js/suivi-activites.js delete mode 100644 gestion_projet/templates/gestion_projet/ajout-financement.html delete mode 100644 gestion_projet/templates/gestion_projet/creation_projet.html delete mode 100644 gestion_projet/templates/gestion_projet/index.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/creation_bailleur.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/liste_document_projet.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalAjoutActivite.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalAjoutDocument.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalAjoutLivrable.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalAjoutProjet.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalAnnulerActivite.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalDetailActivite.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalDetailProjet.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalFinancement.html delete mode 100644 gestion_projet/templates/gestion_projet/parts/modalMiseAJourDepense.html delete mode 100644 gestion_projet/templates/gestion_projet/suivi_activite.html delete mode 100644 gestion_projet/tests.py delete mode 100644 gestion_projet/urls.py delete mode 100644 gestion_projet/views.py delete mode 100644 gestion_salle/__init__.py delete mode 100644 gestion_salle/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestion_salle/__pycache__/__init__.cpython-312.pyc delete mode 100644 gestion_salle/__pycache__/__init__.cpython-314.pyc delete mode 100644 gestion_salle/__pycache__/admin.cpython-310.pyc delete mode 100644 gestion_salle/__pycache__/admin.cpython-312.pyc delete mode 100644 gestion_salle/__pycache__/admin.cpython-314.pyc delete mode 100644 gestion_salle/__pycache__/apps.cpython-310.pyc delete mode 100644 gestion_salle/__pycache__/apps.cpython-312.pyc delete mode 100644 gestion_salle/__pycache__/apps.cpython-314.pyc delete mode 100644 gestion_salle/__pycache__/forms.cpython-310.pyc delete mode 100644 gestion_salle/__pycache__/forms.cpython-312.pyc delete mode 100644 gestion_salle/__pycache__/forms.cpython-314.pyc delete mode 100644 gestion_salle/__pycache__/models.cpython-310.pyc delete mode 100644 gestion_salle/__pycache__/models.cpython-312.pyc delete mode 100644 gestion_salle/__pycache__/models.cpython-314.pyc delete mode 100644 gestion_salle/__pycache__/urls.cpython-310.pyc delete mode 100644 gestion_salle/__pycache__/urls.cpython-312.pyc delete mode 100644 gestion_salle/__pycache__/urls.cpython-314.pyc delete mode 100644 gestion_salle/__pycache__/views.cpython-310.pyc delete mode 100644 gestion_salle/__pycache__/views.cpython-312.pyc delete mode 100644 gestion_salle/__pycache__/views.cpython-314.pyc delete mode 100644 gestion_salle/admin.py delete mode 100644 gestion_salle/apps.py delete mode 100644 gestion_salle/forms.py delete mode 100644 gestion_salle/migrations/0001_initial.py delete mode 100644 gestion_salle/migrations/__init__.py delete mode 100644 gestion_salle/migrations/__pycache__/0001_initial.cpython-310.pyc delete mode 100644 gestion_salle/migrations/__pycache__/0001_initial.cpython-312.pyc delete mode 100644 gestion_salle/migrations/__pycache__/0001_initial.cpython-314.pyc delete mode 100644 gestion_salle/migrations/__pycache__/0002_remove_reservation_motif_refus.cpython-310.pyc delete mode 100644 gestion_salle/migrations/__pycache__/0002_remove_reservation_motif_refus.cpython-314.pyc delete mode 100644 gestion_salle/migrations/__pycache__/0003_alter_reservation_statut.cpython-310.pyc delete mode 100644 gestion_salle/migrations/__pycache__/__init__.cpython-310.pyc delete mode 100644 gestion_salle/migrations/__pycache__/__init__.cpython-312.pyc delete mode 100644 gestion_salle/migrations/__pycache__/__init__.cpython-314.pyc delete mode 100644 gestion_salle/models.py delete mode 100644 gestion_salle/static/gestion_salle/js/index.js delete mode 100644 gestion_salle/templates/gestion_salle/index.html delete mode 100644 gestion_salle/templates/gestion_salle/parts/ModalRefusReservation.html delete mode 100644 gestion_salle/templates/gestion_salle/parts/ModaleAjoutLienZoom.html delete mode 100644 gestion_salle/templates/gestion_salle/parts/modalCreationReservation.html delete mode 100644 gestion_salle/templates/gestion_salle/parts/modalDetailResevation.html delete mode 100644 gestion_salle/templates/gestion_salle/parts/modalListeValidation.html delete mode 100644 gestion_salle/tests.py delete mode 100644 gestion_salle/urls.py delete mode 100644 gestion_salle/views.py delete mode 100644 manage.py delete mode 100644 static/css/bootstrap.min.css delete mode 100644 static/css/styles.css delete mode 100644 static/css/tabulator_bootstrap5.min.css delete mode 100644 static/css/tabulator_bootstrap5.min.css:Zone.Identifier delete mode 100644 static/img/cerfig.jpg delete mode 100644 static/js/monprofil.js delete mode 100644 static/js/rapport.js delete mode 100644 static/js/sirh-index.js delete mode 100644 staticfiles/admin/css/autocomplete.css delete mode 100644 staticfiles/admin/css/base.css delete mode 100644 staticfiles/admin/css/changelists.css delete mode 100644 staticfiles/admin/css/dark_mode.css delete mode 100644 staticfiles/admin/css/dashboard.css delete mode 100644 staticfiles/admin/css/forms.css delete mode 100644 staticfiles/admin/css/login.css delete mode 100644 staticfiles/admin/css/nav_sidebar.css delete mode 100644 staticfiles/admin/css/responsive.css delete mode 100644 staticfiles/admin/css/responsive_rtl.css delete mode 100644 staticfiles/admin/css/rtl.css delete mode 100644 staticfiles/admin/css/unusable_password_field.css delete mode 100644 staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md delete mode 100644 staticfiles/admin/css/vendor/select2/select2.css delete mode 100644 staticfiles/admin/css/vendor/select2/select2.min.css delete mode 100644 staticfiles/admin/css/widgets.css delete mode 100644 staticfiles/admin/img/LICENSE delete mode 100644 staticfiles/admin/img/README.txt delete mode 100644 staticfiles/admin/img/calendar-icons.svg delete mode 100644 staticfiles/admin/img/gis/move_vertex_off.svg delete mode 100644 staticfiles/admin/img/gis/move_vertex_on.svg delete mode 100644 staticfiles/admin/img/icon-addlink.svg delete mode 100644 staticfiles/admin/img/icon-alert.svg delete mode 100644 staticfiles/admin/img/icon-calendar.svg delete mode 100644 staticfiles/admin/img/icon-changelink.svg delete mode 100644 staticfiles/admin/img/icon-clock.svg delete mode 100644 staticfiles/admin/img/icon-deletelink.svg delete mode 100644 staticfiles/admin/img/icon-hidelink.svg delete mode 100644 staticfiles/admin/img/icon-no.svg delete mode 100644 staticfiles/admin/img/icon-unknown-alt.svg delete mode 100644 staticfiles/admin/img/icon-unknown.svg delete mode 100644 staticfiles/admin/img/icon-viewlink.svg delete mode 100644 staticfiles/admin/img/icon-yes.svg delete mode 100644 staticfiles/admin/img/inline-delete.svg delete mode 100644 staticfiles/admin/img/search.svg delete mode 100644 staticfiles/admin/img/selector-icons.svg delete mode 100644 staticfiles/admin/img/sorting-icons.svg delete mode 100644 staticfiles/admin/img/tooltag-add.svg delete mode 100644 staticfiles/admin/img/tooltag-arrowright.svg delete mode 100644 staticfiles/admin/js/SelectBox.js delete mode 100644 staticfiles/admin/js/SelectFilter2.js delete mode 100644 staticfiles/admin/js/actions.js delete mode 100644 staticfiles/admin/js/admin/DateTimeShortcuts.js delete mode 100644 staticfiles/admin/js/admin/RelatedObjectLookups.js delete mode 100644 staticfiles/admin/js/autocomplete.js delete mode 100644 staticfiles/admin/js/calendar.js delete mode 100644 staticfiles/admin/js/cancel.js delete mode 100644 staticfiles/admin/js/change_form.js delete mode 100644 staticfiles/admin/js/core.js delete mode 100644 staticfiles/admin/js/filters.js delete mode 100644 staticfiles/admin/js/inlines.js delete mode 100644 staticfiles/admin/js/jquery.init.js delete mode 100644 staticfiles/admin/js/nav_sidebar.js delete mode 100644 staticfiles/admin/js/popup_response.js delete mode 100644 staticfiles/admin/js/prepopulate.js delete mode 100644 staticfiles/admin/js/prepopulate_init.js delete mode 100644 staticfiles/admin/js/theme.js delete mode 100644 staticfiles/admin/js/unusable_password_field.js delete mode 100644 staticfiles/admin/js/urlify.js delete mode 100644 staticfiles/admin/js/vendor/jquery/LICENSE.txt delete mode 100644 staticfiles/admin/js/vendor/jquery/jquery.js delete mode 100644 staticfiles/admin/js/vendor/jquery/jquery.min.js delete mode 100644 staticfiles/admin/js/vendor/select2/LICENSE.md delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/af.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ar.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/az.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/bg.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/bn.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/bs.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ca.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/cs.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/da.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/de.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/dsb.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/el.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/en.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/es.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/et.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/eu.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/fa.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/fi.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/fr.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/gl.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/he.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/hi.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/hr.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/hsb.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/hu.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/hy.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/id.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/is.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/it.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ja.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ka.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/km.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ko.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/lt.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/lv.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/mk.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ms.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/nb.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ne.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/nl.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/pl.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ps.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt-BR.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/pt.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ro.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/ru.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/sk.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/sl.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/sq.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/sr.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/sv.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/th.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/tk.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/tr.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/uk.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/vi.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-CN.js delete mode 100644 staticfiles/admin/js/vendor/select2/i18n/zh-TW.js delete mode 100644 staticfiles/admin/js/vendor/select2/select2.full.js delete mode 100644 staticfiles/admin/js/vendor/select2/select2.full.min.js delete mode 100644 staticfiles/admin/js/vendor/xregexp/LICENSE.txt delete mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.js delete mode 100644 staticfiles/admin/js/vendor/xregexp/xregexp.min.js delete mode 100644 staticfiles/bootstrap.min.css delete mode 100644 staticfiles/css/bootstrap.min.css delete mode 100644 staticfiles/css/styles.css delete mode 100644 staticfiles/css/tabulator_bootstrap5.min.css delete mode 100644 staticfiles/css/tabulator_bootstrap5.min.css:Zone.Identifier delete mode 100644 staticfiles/gestion_conge/admin.py delete mode 100644 staticfiles/gestion_conge/apps.py delete mode 100644 staticfiles/gestion_conge/js/detail_conges.js delete mode 100644 staticfiles/gestion_conge/js/index.js delete mode 100644 staticfiles/gestion_employe/js/index.js delete mode 100644 staticfiles/gestion_employe/js/mon_profil.js delete mode 100644 staticfiles/gestion_projet/js/creation_projet.js delete mode 100644 staticfiles/gestion_projet/js/enregistrement_bailleur.js delete mode 100644 staticfiles/gestion_projet/js/enregistrement_financement.js delete mode 100644 staticfiles/gestion_projet/js/index.js delete mode 100644 staticfiles/gestion_projet/js/liste_documents_projet.js delete mode 100644 staticfiles/gestion_projet/js/suivi-activites.js delete mode 100644 staticfiles/gestion_salle/js/index.js delete mode 100644 staticfiles/icons.css delete mode 100644 staticfiles/img/cerfig.jpg delete mode 100644 staticfiles/js/monprofil.js delete mode 100644 staticfiles/js/rapport.js delete mode 100644 staticfiles/js/sirh-index.js delete mode 100644 staticfiles/styles.css diff --git a/SIRH/__init__.py b/SIRH/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/SIRH/__pycache__/__init__.cpython-310.pyc b/SIRH/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ac4fa12864033794e619fee2bfd1edad64044c8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmd1j<>g`kf*ikRnIQTxh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2Bwzbvsxzr4I$ nKiD(K146{dXXa&=#K-FuRNmsS$<0qG%}KQb=__Ue5-bb=mOB?I diff --git a/SIRH/__pycache__/__init__.cpython-312.pyc b/SIRH/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index ed69fcf727a2e287003fc29a319fc6693af390a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmX@j%ge<81gB1Z%mmSoK?FMZ%mNgd&QQsq$>_I|p@<2{`wUX^OG7^+KQ~oBEwLms zH&H(~KP59wzc{lfLqFIv$U{FqJ~J<~BtBlRpz;@o4N$f;C)KWq6{wLBh>JmtkIamW Jj77{q76AQJA4UKG diff --git a/SIRH/__pycache__/__init__.cpython-313.pyc b/SIRH/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index e48fe1b4bbd2384fca14bdf38a77a021266c7705..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmey&%ge<81ho%8WPs?$AOZ#$p^VQgK*m&tbOudEzm*I{OhDdekkl;`XRDad;?$zz z7)Ku;1;>*7s2G>j;_Q2KczG$)vkyY UXb8xXVi4maGb1Bo5i^hl0FUS*p8x;= diff --git a/SIRH/__pycache__/__init__.cpython-314.pyc b/SIRH/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index f5c536a71c0c3b18b69a9ea73382d1778c6ae401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 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 diff --git a/SIRH/__pycache__/settings.cpython-314.pyc b/SIRH/__pycache__/settings.cpython-314.pyc deleted file mode 100644 index 20060b0cb71a76ded20d61a6d4547f2d468e17a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3231 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 QYub*9{Ok9x!EyV|KZDWFcK`qY diff --git a/SIRH/__pycache__/urls.cpython-312.pyc b/SIRH/__pycache__/urls.cpython-312.pyc deleted file mode 100644 index f7fbb04d2fe125e74e03f3f2b7b1a3fee1609431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1928 zcmb7E&u<$=6rQzr?e#j2LlRmyB4I#H9iwDNR6;@#pay8wNI)SJ3Hjn~ykmQ<{b9|F zAu%Uz?Wsrp1xor~Z~`twL5f+a;=rl5TA`O-;LWU8S<+O3J?y^u-Z$U-F>m&lO2tC( z{QT3z8y67zQ!dhHW@?=Lpds`fa#0hxnw#^rAlJ-k($4$&KyT`S(KOUr_X|O>SyZ;+ zn?b2r0=wWAeJdz8%NoidYPcpX_iJg8)2~~4XdUE}wc?duz?(V4s{n85R429E*)zN< zsOs+A0aPQOgIw}ev0hTX`Ez{>%C~r~?`7q?aIWtn&GlbNVr1X_mFz09(_FeH=oM+H zkDuoN`ug+e!&kgSCyePz-h~dw-cW&YVi~6)J zY|FacqxjB{`2$A?%0hkz`yLmVMMFV31__Qugun9W*WAW8V1E!XioFn|f<$!SQ-@Q` zDc!U%JUt->e3KA2YIED|J7G6U!?mM;(2%@kUnL?Mcx_H3nLv0>tm}JD09t(0x-ksf zDqj^=iN0y$E!V|Ph`nGCF|mnpheZJn_FK+iFa?t|760m#FDsA*WGaNMP;76lUSFTq z)r$hUjzcG)@7ASVZ&)Ar4(A)YP?(!heNh&X=usvUu~o)tIyXV<|70Wiw!>ReWUX-~ zqwTQm4_zsvNCC6dQhNnqRx$CMa|2f-T zKk5=_U>d0|0i|1SG_1#ROdDEkIBwvDja*!u@?u@K9y|puV0zkMnVbp%W%0-ITFOnT zhcSu`FLdc1Ai6x7Q2`=&A&Cw39nH8Dst@TN3^s|&nboiaLKJ2x+W+wZ87+1xm($cr zAgZz)%}&t`5b07fnon73op7otN6oJwqlJ`|0B4lAOSMnUSUi{MT7u}@6ExQ4fW)PbuYb6`)q*jLt;F29b?bIq&fKL3=ma#; zv&%%@8`6O@4IC0guGb;lV?84OHtK%cgZ*dbJK!1m^gZ?}Y?8;#|AyC-yryZBTvgMb zVx+zH2U>lE-gt!Y(*n{KCl)eFW78U&m1DDZXx7G+#lMQWQJBnt<8JL=xRD3kR2wcR z$I79(GOjEo8xp03-_7c;b61Yc`bmafQ|RR*b2W=zQt0ZDc_oXU&z*yS_pN)@{p!7{ wVn5l^)~dP5ry4TKci%oPFCUhdzyI=h diff --git a/SIRH/__pycache__/urls.cpython-313.pyc b/SIRH/__pycache__/urls.cpython-313.pyc deleted file mode 100644 index e144e3544b843110be33559371a6ddd609451266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4185 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 KqP3pX``-XSuu5tG diff --git a/SIRH/__pycache__/views.cpython-312.pyc b/SIRH/__pycache__/views.cpython-312.pyc deleted file mode 100644 index 21272c60b5a117edd0e4b94c2e88e0e60e5a8603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1800 zcmb7FO>7%Q6rTODy|JCzkwa3NpbiZvu@LJ@94fUILh2#ql0s8@@FiMyC-H>+F*CC% zjkZycDq*-Z6^Ep^92^KseTrT!DD@-MCv!$ zZJ9HS+ghZpzT8JH#d@)iNLxJB!|a#;A%5fK*kUNfj8LTY*;i7%GmusevVB1ns`>D1 zu+L){(>o6s!LEhv!1u{#H1M%QI1UAMDF;f0jALtw*f=GSwBW=A=@QI#z6D7HPOz4C zwiun4Ozgp6cha(L(h|oC3%3H73i@eCurrx@0dq4!i1iPy&R&mo&!TQz^a3&Gkhzw{ zIaz-F1_`O_l4Xd*Yq^wR5riCq;Mi_jUW=Q{`GoyuQ+O^=-v~KjzU7hFkO(&e=7c7s zJrj7?`F-_%>KszUL5RT_WR4SOnEH0WWV@KlZ(R<&mLQM;~F#-kS0uIQ^Fv+i2m-%sNChzh2o3&=(k=i`e+Ouk2;L!ORr>t3bX$K~D7EW-=GS+NADu9NTB_V#`D&%lT}X+7{n^t*YoWQcdqUgDr?i-!gxm?XQyFfrdo(A&Z6Zn1SS9oMn5*?A3(yM9%ZCk z!0*}cX266U3f|+Gq*HwALCxl6Toz*pl({F%Zu*MNyuh aOApbdC+O{8(8S;Rm{L8ss41@{hyMW-;jSzI diff --git a/SIRH/__pycache__/views.cpython-313.pyc b/SIRH/__pycache__/views.cpython-313.pyc deleted file mode 100644 index 375885f06c5c187ae07f4145afdad1983accbabb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30001 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 Kf@LootN#xQ@#}N| diff --git a/SIRH/__pycache__/views.cpython-314.pyc b/SIRH/__pycache__/views.cpython-314.pyc deleted file mode 100644 index 6eab784d96d5dc83ca4c21cae2c4cf3e784657d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1840 zcmb7F&ube;6rTMdX)Vc?j9fd7T|B8nY+7)sCfYceU!w ztke2nR47E`;^Y+fR3Gbm554=^gNy_Ti%UXl2)%{6e?Z@?w2oW|Z3gsa=FOY;z4!Ke zqs6h&B!cnLi>LN@452^7CK~c!ar!YVTIh3RNNcDlaj7VCxu|euR_Nq4wHV{EVw}gr zy|R`lYFwK|hB}4#h!F#sG~#n8pZHTa%qv0K^m&~$xLq|l31W^{vl~GiCeP=2Ifzrz zum}w_N-Ud_D$h%S<`Txt8evsw5S5tX@KX>{Pty=<3zbo6=rCFu(g&X*WC8e$u!ypX zj$tlA=Kmgse0_k_l-}T$a&}8DOY;M#)<}pgNBi1kv9E~e!%@M52hq-= zN-8=7eJs+?p~`5azblnxBfbRn5TmJ-mCgT)lZgDi9;d97#`>OzDZ}O#sp5!g z!h#V8q(d-0{23(SIJtFrKijvVEyceA{uzHbmey9h+kA`3%4ruGUSr$@J}H*dKbGyACvm z<}*SYrb_}%c(~_L%hw^*b8ikZd5%g8cN?@T=Co{C!jK` z+}_mjir3(xq+E{Mud!LL9S`7vR31!Ej6t}IvX2u-C} zs(eD&SKMn>Zmk)`A+cqXdrWVB8}uu+A@+0%Jczbtzk+C?mr0~$?(clJvp3mG%s$Od zJx)JLKgr^wEZ(2&W*6GAr@4!d3y%scV~B}y)$I= zX)kS@Gdj^m+qIrHbCQ|rT+q9js~zp?NoxGz{9d7(TIi??r;rai_X>&{hp(XEK?_yR zUdS?vItBWA@Gc;D#Um}e$+9n6_^eH=!-L^Y0WJ*jNe{nXUZ$e1{f{V7(UwdgUZIm9 zgRDi)JoLZBMNq#htR_IT(21ICFMWUWIF)<2+D*-L)ERmK4%YLjAZLAPHfo*@4mh>H z(8b?G$e=!L1T6UP+pxMvdDZ8v&oe=(VC?+;kc}Y`sEFYJg+Toa>*qds&g*2`~Qx6jPlA diff --git a/SIRH/__pycache__/wsgi.cpython-310.pyc b/SIRH/__pycache__/wsgi.cpython-310.pyc deleted file mode 100644 index c64a40c50074f525fa58d77d0f6200385672f474..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmYjO!HN?>5bfz?H|uD`gLv@N*MLro;6+3fc8w9ug0mvzGHItPlMX#y!*p-P-K$^V zAL!Bl@zhsA@E1H;lOUv^tEsN4_g+`wc$_jaJO6FICXD^+gF_oq@PdwiL{75>(~0Ib zStN81EUyQPLBb%}48I-ep+5S~DH?oXi(}1mHaWijnSRWtGf|>jnM$m%75VJ_Ytgj0 zfih%iItv0mH|W8Oum-WOR@SOd7KHLbi5m5#g@+clV8vFoW|wlR1}&CL)iljyiW*xG#t~b+O9*rXZoF6-3lD?`NY^1W{;8B2OP}eDauxp9RAMc`$tT%kxyCM_ z)X-SGs=)=>`O3)j56yzjCrP|pK`8pS;y^~cclze#e0pBwXBQW<`7|%you7Vqdv-nU zzn*yr!MMs#MsZXW#9tJVqmOs?DzcKqXFX=ii6xG}ZB2_Vrqrlmr7mrVHxKB3u(n^} p&i%bFX+W~;I@xpWU5}MDSMlW8ev;2=&&>BdLw0iG7Qf9?{txELom2n- diff --git a/SIRH/__pycache__/wsgi.cpython-312.pyc b/SIRH/__pycache__/wsgi.cpython-312.pyc deleted file mode 100644 index c0a33c3be179b2715eb9ccbc6520ab7632bb5280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 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⪼^)+M}0#-+Q*3#&pwI}2ozwT&EE;^AtEWp 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�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 diff --git a/SIRH/static/SIRH/cerfig.jpeg b/SIRH/static/SIRH/cerfig.jpeg deleted file mode 100644 index da67c8972d876c9490f02c989b711cd546fabb18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184572 zcmbUId0diP8wLtL42qhwP@rfIq@oR?s9;h!1I{>`wN*@o%tXpetL>Z-Ia^9Zs5szM znwB=aTT7e@H5@VLO3;wmK*=eAx1{mDm+O>}aWvdY$NNR;jlQ!{g{1>V-q zo}<)7!4l$MoWx?EAo zudWf-*3~yi8ryGnbl$q%)qUr|!#-*Mz~IoZe0*YZ>gn{enb&jk3vU*e-Y&oU^!dyB z#@BD(fBgI(E)W3uzhM18$o@ZYX>H;HL!l5T?0>jG;FFtQh!#}A2&bs+lj;S zD#4wLtJ->%O>F2N5z)y{RJLO9uXlXvo(1UtmmMWdG-1CW4^8sK_#g159i z7uP}=3MgU)V?M&*=evDT#MPjrc1w6~4nwQat#WmCm48TTABA#U>Mf`a!F`rlu zaBT9D0?UrD8mxdanX!3(KO_ZrEAZ2+>ogG5AW!0{mpJIC-m#A1p6bge9x}c;V{_Nc zFl|y&Gh-vPkykNFvpB)LXQ~BH1ia#qqp`b%b4{KP)@K9#e6xA8Dk)vX)rqtcPEcYZ zFB@1G-~JbgwI6fK=WJF^(Fds>H|AP@DD@au5Vmf7P=Na zI&+q+yjT-!R*%>=?-LRDOl7qop}6Rj#HeDA+C%^XH?*Hd??y=t&2}SWbd@$%{05N8 z&ZR{*Tq-8AhqEDm!o2k4{6W$DN15B+C}s4uT4M@eXz-GSH8s>6fZ;J}CDKu7;5MaU z>Z-G6=S{)7)PZSl1l_1BuT-mUOAy}22F5J4C^!f!YhjR?s zKgSy5iu>8VyMciKZxxsAY0m1b#Gsti-#zI8UWU8(ew82w_f1g#1$KKJnhepwcBGn- z(%IfcF>$srF%nD+KfhkatqRkO{4{g*MkfEN@rzVclXGuAR5kY8ZofC({N%j>w@N@# zroQ8D>y9T!N^}1xJAv;W`w`}CL`n4kAU-#pZ8yN zf1=Za`qrdJB@Dpl>{`<&RY$spV+^_)wQ)r0p}R->zBVsY{oDZZd;1uEr-4fLIHB>L zPKgcuM@>BX7l^!dcLW2-&XhMiG9vkqBnL<*lUW@XODHQ|m!z>n4W1mz0TVtgMbqC6 z-lIIiJXecFikJ9BdK9-^@C@&coM>S%-<{QS6fTY~$cig z$}^cyBP|&h^a8C*eP`!7?Z}UcB*4XJI@F-tl^0DFzw)4+E*9eaH9f*Lvmbw}u1I?l zXeq3~e5*0K|4zW!N?8BalW!sR(ydytbojZrWzPQ zfySr?&MKk+t>vHz)h{w%t)8A`7lx~L4;88!psH}r#P)QQB&9$=U%au(F+N~3D9ka+^d&i02 zj991EpI3g%p-Cg|^cieGvY+##A7w$3n6ERdA9O>Ty0Uz5&k;K2{zA0_F>0@xUN{3g zeAIAu{$1z)AkN0|8@|rjJhhzAEul`^C_2U=w$QpF`_u_d;gz`8@GAY4eRDQ?3+kKG z|H)8hmJ@M>&kv$9WZ`4ZGxZfUCfv%Fr$h*{VONDaps#RXFv%xXa?-`kGvCMBAw38i zGK`862!eCoJELQ`ReQJ6#q245no3`x$|@Zg(r>(1f;cMHTBBn`eIySjVcECm*4aJA z%_Vn^o>l%Wb)QOqgfLll3eW++B(dD0dSNSWGh5&b8Fk4HCmMWx%5Qcar1U3SD2p`-a1r<#LZPT$j}h?n`-5L+}3 zVIy{$=}QR=NT;cs`Dip@TsOSXohS+FT^nlnR4~yNc|+3m#O_sIwPOkEkw}Hm;F`KW zJS#KWY}xDZ%=7fG2;y)7Hb3`TiVazbo3c>&5bm+{gYPj`NAc^l7=D^`Iw}2$ENc2X zluXd$$XFJQ4Wob1vhYfrS7Oq>PPLa8EumcHW&gsm<6vR356d2(5oN0;ID5z)||%w(xGuw?<9ln1z5B2-IkJB_l9mjz9JR&7m!;Y1Z87 ziu6A2aQd<}R5f*A-{iH!iPf%jMe2I%C8aD-hRr)dbKUq@SBo=#b37(;Q)O5p{HnX9 ziF-3isXuM}aCFErO>EweTl2!8d1J=Bft@T~15*2l`)l$L!rhBQRjLk5?7{y|@Jq$_ z51Q66snFPlqRJmVjX#F!+lEZ56U%^e*;F@2bNmNLQaZ;88u-A<&CzWByT9mtu!=9s zSuI?PXMp=2pc1(*a!c-zcUtbUt5B;e=AJMICNj63Et@IMQ^OasIw0}&496$8ij>qX zjwfUm`>od3Fu)nR++TbOb{eq>oO^vU;75-AA*_|bW2auYoI?xUiXNwYlWhg+tP5#p zVEn_y2=J9#V)64}2slPwE_GD(C##8nW7ntjabz_Uc-ilC|JyTJO2cFDz)YJ}U*)N~ zw<#uCb7D#_@t?A4N8O^xJw9a-J59{}gRVNEmg$e|EN%{_mEZy|iQBirFel*maa?9m z9BQ-$m|bix_WkR1&~t!ad4=@7p^zw28a-4NP#A8J%V@hen4tP4#JKE}%#$72`^|VE zD9%0qO&KqEo7XFuE^b&|S(5XRpm@{dnjw(HaKKgtM+ZJPdFe{2loVl5*Kl5KugpYW5~e|) zzY(<(WO_?mJ0wr!!}bjWnauEm%{ZjjhhM0(E=ntjCxGIKI8;mbjd!WQ*G6t7!I=NT zJEGS*ySQ}VI=t=WkJH+ztHGT|_h${Nzh6h>VpA6kvydl{Epl(o50y`P?KTGIZCS=v z%I_={XMR0$+9XLwXnM7V2BL2bW#J6E_qNTUgYn}NGy;|bUwt>xbT||5IZ>4Lr*5#t z+k3mq+Z}XU@O_*Dn-%H}+Oq&|%v;*0-ZhHKHV-|)JZiChx7io;m!9SD+xh>5{OUY! zjuBd>K9^ibT(~lXTH?0fPR)j0cM5tvXXPNz&t^c7O-yCGFzQEO`5kM*X3gvCdL!7F zGBmg@`SHh{F377Y@!rcbfzxC(zX`v$lz<{h8sGQD1U6qYO88Px?x0q-qY!4<(0k6l zE0U>$v-1d5?V=>AG=h5^$R17XRIP65+k%8@Q_%b&u+Ip?t%@Iyex>DURBQaT{7AXENs;N%L{t>TqY)+IO zoT2U1y| ze{`y(=skU?ZZ>VQa@TMvPb(1b)c!th-2Z01S%RdCmGJ3Z9YIV zH-qP>ytnXs)^O7Q`7f35SVMG+A6)<- zGzbd_y7vNX2%puP;d)p>RX>dM?3{ z--=!mOmXd9BkqkaXsVxS^bFQUtM}jRyJoeEnYo;t@fmVVr7&QMNIm>AX z+1T7=+CoY8cDqq3Z(L~CCe&F^yzfFb46aDQMzx2!>aDfo{hXF5?eP|d2bS9=d)-V6vUffJdqQL@9w=9 z|K_xcqE*~|)r`*$UNy%CC11b6XZrq+4b%#7jIeb5C)g=W`FAP zl|u!bHR&G*%oqI27YvjndOm*ks#&na^;Thyc&bKpF9^^XT%rG6^LUW1+<#>Eahy(Z zw%6@0qderoIFsbJb`+I-${wq>JlOp7VhVdLL~Ou8C$VJ#SG{nv!nzzR!UT#N9BhhT zzRf#(!jIaSOfg$=hX}GjKc}t~g@?gQV2X7-*u3qv%Q?Ivr)6&W9x|j&Jgyr*j>|c; z1a2I%)FwkgE56*{R;Ym+8%=s9-GxNpZKEu?8JQa5zU*8 zBcSAdr^Cc=jR)erJ134Tj|>n@gw@yHC`~k}lRvPAUu-pu`8695dpp8rp>(5qt>Hi$ z+`rWqiO&V&fQ?#@Eg3J*b`1Gfl&CA<5~!0(D}o@Z{%P4&bz*JV(01sjl_35fxGx1~ zm{R5T_o0BocJpO=-=L3@LgrlK0WTtSzCi83ty{r6&c92QFsoWTZzvFkGxn7&-vW|A z>w|SUKooV~!@u-l2@{x`F%l?b!ocFBR}2p;p=jMr?$dKkMep$tJNPQbvFlh zYfTtho%!zmAB-3A>QRh9^t#h)rI#(9ox{&Z5o zy@o}JEHZRKUBfBdtz_<*U^t2GKg(Nep&r>8bFmYWcSy9@x?I^|T}ihxTyIz|F?<)# zqL~9C!4ts~vVtXDz2hCQ8Np^#$-oNT2!hZ@;lF{$wmiMBmz*{yQgz$?dGALBn2UROlB&M4sZ9fbo$sQ_}k*% zXFwcVaT29scW^WHA=FHY}lS5lkAByD{VU z9`dym*}TQNKp+lL`yOa^X96!MwtMtWNg+=Wdc5;Q36yV-O;-F2`j@ zH{-5oy>S&4kl`@7cx4=+gChWt(hxS@<49uIXAfY#CDr)H84Ep1iYaB`OYlSeE^vEU zD?QlAeDIk*==ZyUncGqBuQQj&#u2yC3|qYa$)Sd0-Qk688YZPiW+YNmG{Ub2!XLdD z8d*g6V6pCDxx5-?7k|r4BRh-PJYagI;FO48T--g>aJ7xTy2j5tWDYh>5c*h{{U~r4 zuZRf<rExLa#t zN_d+-W{q&U7G9*^G#Vbc*C(D>M;4d*ca5-|#uiI5EVcM{-16~PHR8}K?pO^Ln;;&g z0gS+yi3PS_adu!nWU3U*_3P+i8cdXZ#%<1vWp^Cye*7-sWaJKbz$A$UIF+2LZx{%V zh%P&04kAmk!qnSUi$s4nl&wYU^;Di(B!oi?LEG!C2b($sn;&Gl-R&p?{NJdlUFd> z`&BYUhm({{J0&IN5CW<-W+dA_>c0i-SAwrSRr6+usHZ9Hr^}Sa=Sd#6Azi3pDM()l zPu;!EOtda(jWlXkw3%w8@j@V3@tOc*nhJ^qaJ|9xd}z3V<$zhffA5o zVB>6L9R30-2yz|%QfyELa+u}t=xu`y4-FJ{&yU1|?9uYpRR{1Os|1a32AWSZ z*D_CNfFpZH9QYS7$3?yc-$jhaQSM5kCI|&-L$MFJ_k+dopkC<^oTw^3QFk@x@Rmp} zjO?I$M6s}H(3a)ee@Yr0J41PS?E!xail5_!EYh&OBtDg)9r(4C*EsaKSTITKI3qtC zf+8IW!jxB*)ugzoR5JRLJ?g`=K5v~Z+v{;UIBVK5!LCHhGgoS^hwX+Gk=~iGe&ri3 z1PkJOd(5C4i!FMQ4^2=X*dBy#uN}MeB0st@m*2@b+3ziS+O%)Xm$2ox6PitK z5p30&P4Mauhw*X5n4NnksV%2_C?LvPp!G5fXPCJzHEPduCZL)pDr<`$U5V1oF6}xg zbsV^tOvaqCIf&-R5K!o!Q?d1R#;)O}7CoOqD}lAi5eYoKim&#LL9xZEd>F@S#Si^$;;Iau;on>TxpQf6-WeuOoHE)~ zyBn>Zlpgr$btUZOTTMsGKpAL_(upO_h zf2KuW-?wF!_e);4m26YOteX^TeClk$TqrgPRWW_%|4Ee;>#q`#Z7?ZJP-`0mMHZAC|F734y_~m$^4tVuv<; zrMbNKT-sWI`$MnYcV9%Ngm?aZ731B_F1#Mz3GJ;}9@3XAdUwGTyU|zdxs>DP&Z^n` z;4_;7H=FBTvHBxT2*}*qx{`c}Yhmr@D!AEMXD-?dtJW5>u0gY~jUakmj$({FH`%7A z;rC+!SNQqqo1L(;onBoovV=}o+(P272UREfeZx7vYyOTIn{+xHW0}=TdUraDFxOa; zwp6gbk!;aSi#b=o`OJ0x(XRoYy8PyA-DXh1rK(~|kD(f0Ma2%7kSu}@j{f(vMEALc zI&PC!?i#w;t+F+N!*4^!2)@>4jVAhvP)P_$=mx zA0&x|)j1LBFOX}kk`a#C+5PdMN{+msd&TQ@I5WrObozwr7VWlv2m1XkKMEq2@UeTq zw5(yV;_=kQ3vr4S^bRhA)OfFrfl&cko3fM^YfAP}HzcFOsrVsc02zUdoF~>nxE%Gg zfMjM#-^(>$G&eua))>u&Vo?p1Ni4>At@~Vtu?ap}u=TRRM1pdaR~I8Q9R@!{oRW}xmML3>ip&=~?G*~awV|W(3U%!3 zf;4%8>pSrLZ|pyziEi%O!9||Dd2ZGt5SX`7*HM*<*1a%dcHf@3SP`)))jK}Pej!(9 zKF>2p^yiMgb^_>YbNs&f7W{dw0t;*E8l`XXV)t4&Fyq}ZhsANLl-xmcHD_6L8-JqV zTzOyr2EHZ>=Sfp!<|p$u>OovLkw6YI7Z0sh7kx-ONpoN3`KdEG5qI^WN0ih`>4>kj z;Wle72`R?$*=)Z~?oH0q<=_$XxvSI7+@lF5n_?PFxfh)_bs=)2;g#XDb}mXS>)!VYA;WSuE0Ze#^!iMfa8RhQewy066x=^n%|&f+dkIsR$3Upu~%2o z9;4zO4GYIOZblWNOACIG><@sBlixs#rQraYZa!lUau2A-e_YU@@ow38?>-X`dgHPX zNS}!-{@v)BP#pZk-8vpZI_l#PE!4~cAw+>G@CO--8Es+3)DghsKCbG8&8zx9ohaG6 zvIzC;_y9X&cjBQltm7RN#tbZxGs1dpQ3I|@8Hw)-9hls;?PR3^JTnV7RoxbHHA@(J zq9v?GJ4?xobV{;omr2f6H()cz^`A>ySeUIKmD22jw4n1h?i~l{$7UXsq?i%s!D1#R z@RW*BjjG@8AWRQBrSaI!?OuT!1pj+>R5X=d}#=pS+yd$YYwvwFcss2#>i?i_6oS16^f`5Sx zN!9%oh9%zT<}Ew^5enin5n*tKS=O9s%`tQ=mD$D+2MCJQ%cHd9w!u32mX3JWV6xKS zzVgEdPGQ#9o4+5bFL1{IxY6)o$|Onc$Z0q_@@L@pAE#ip3LTkn?Q|8v3oH^=8g_s_ z)u+uk<34aiXY6bJ<6p@hZ-Rsjqn`Sxh%z7Ah9N&IHU$d0mPS`L@<`Lvms09(>rA4) zZEc?Y0HjaF6qiMlR;tU%bX;lZH=O=Lfx?k(ExZM;Yjk~Eq3o*DhjcDa0xKxrslC&y zz6#cIAjEaoh6BX}00{3{6Mj1_D5!mPO`+8Lke`$1O)ZPm*mqm&>7Ds?k=7b0#~@`< z2(0APY*06)NLA=zi#`=>nBhc{DtDNcTGx(OR+OW4_!-k}$#%t=PZ4qia#kZv8CIa}l?3JJdB4yMG9jry2K;sfCqwI9m(Q222Fi|IQ_|7iodt z{ls&(rysF%K@kRO79t2itTf`|5b(eXpm)8;i->cX%7nqWIzJ}}!tQY<|5AT(STsZs z_`-YyE6ZH--z&^u)4u8FhMijfTHkyw#i_BjXWs@U!S_G$H%!C7oJao)I0Thx!)$d6 zKqg$Fm1tI@g)%u*LKbr}L#ja&9R6siB1eAx08ceLjLNL4HVf_PH5Kj!c@5QL6-Cu# zobMLlzd)@On|__3gI5qX(> z_wcjtw$&OH7jtQ4ym6H=C^=G2ka-reoep8SeR}cF>E%)dP(8ay9+=Cf-d>?(c0^xw zGwz$0U&`pHVzqkr=hgzkNz)l{ChY+#n@S%8;Gv3}iqaXlA2>?^Di81sQh#_S@YD)L zM*SXSbP%*mqil#rf5_}ATK5&L*Nu5wbp<9^dpio`{!vN}^m%;c035=P-dcJBI(LPv zbbyc52sekw8D&L8$<1+Ld8KN%3ID!cVy}!7y1cV$ux2ellYjPIUZ-yKx+33O;Xac$ zkCZ7Zx3&IG(@oR%u=QS;={tdH(xRcrvY^~#=Zp#Z10~0^w%ABD^B_N6r8HOeIN$&(x-xGKmf27^-bGduFmKe&<=bc=dDI&tE;2;yW%>MB} zfY+&1^wOt>LtfdpOL>!+>DI6p2k!6o-PHWvGZfmg19ptO=eT$)JUQYRkfgjU!z5>E zq@7MwmY{axw3Aa2M-s=dZJOH*#~+nS0cqV0j3(9-Fjp%j58i7}8xNx0Mi7Y&&$>mK zIdRwFFVa*lU-w@ZYb}u)z>3bCf{E`#(70NMAPXCR%cu;~tRbJ5eG}GyndxH}K5nMG zd!c?#(2FuxAM=z)C+apI;9^pgS||Rmy&1S9pr8{0Fndj`H|FK70~Q(f$w#!YVWB4m zrdp*qMhTm{1&_(6iQ`&aNHveP7~gcK^c?OnDIPQhOeW0kWpYvM$f|EmQ6=ViHW!Oo9Nqw z@1wbADCm)ARVD+O#%P`UqkD=~aKTVb3K99w3FOM5OuKW3IhMnpzzfMf?C&aXY+LsH z+Lx?jYC1$uPvgF_)fwv@KN5I&bMvMNHhnk-Zt*cx)m%vWT)mDU`*)+nV0}|D6Hg9% zUzUCWEGWCbbqzH#k$?JOUl{%H*w@{_KBz*Em6V5R{E)fns$TlQY9F4K(Qaz1Q+gVh z)#I*xxoe}WBcmNjr`7^L#1dvFgUSm+H&dex|D{JXzmE_uC-v!!hL7@-`@Rg+YSRul ze(`Ht2yWxHsfXzLq_b)D#ljr9j?~Pwa?csH)qTfa@(e&dh=zA48!5-meqVq&W_9Gq zS?px>?2_Y@&c&;;xev{jkpSCyzSZL1Z2*!jbKXtM@NIFsGSO7MAdf@`g69)SGNSkk zJmw?oCb(4XB@8duiM@Ki|LiB?Xj=D@YGiPP`VRd&pMurN5MuK}^CO?Pe-)h~%w=Be z31SO4bkQ0=>&d=30(>g@{`vL#Jto45zskW{*6wGR&G(ZnqQ=HC3E;Fbg%JO2X;4}2 zrjcprg@t&wXnG0Z|6hOWZC8`X%b}lL)gFE+O6T6+Tc)a^>K5b*qM9wP9grRf*w)bI zTsefWzohXJ9l(ev_|u_1Gspuyel&~L=l}4Fs=5VRJJY|E+EuV&*EM7(TBS^{`d5;c zPxpYTA1iu(^KEfkuc({R_A1sf zDWx0d5?8$448g4U34`jJheMOKDf*4;${B=)C?1+UKGSNP$(6Os;r&XBxje{3&vq z$7{tTb4~dv@h0yzfdf4IfUy5Db3h7P=AXqXNr4^k_x@zn=ak^9SvKxx{t5@Y;`mHj zDoVujgC0JkU^>1`mnVvp!mx<6@t^YFHMQ1?M{9d(9d(suo7Wx}zg+cFsOF|_uGNQ) z2(@A}V4MOqv(>XzxVf1>;fpiagc_olMN2WAAClQh%XVYEASxHvbSV-fsQ|3F*vMiaj<^k2|4t=P8PALnCPd-;tI>HiZVm>YMc)D z6YGD}qd9@WE-L{$b9g6eqe?1$f7n6>IX=;+8uat=?;&B23{KS#7(p4lK=K!=Ko{uR zp;+rqkojxy0zd6bt#LYd=}{ii3~|W6h`bPZ#Z!~%>MHmu&Wn*%3=!telWsNlTEh zFRbd~B}`@p^W(4!;OnzKRc6@lL|FBsJthDd>66xp2`=XSAee0;bZ`h!T6=mLvvk|G z6V=mWD<~J{oiBxL@rfwr=eN$`rml8nD3GU{e-Okk3-SaadzK4Q2HvDL3yZ}E)M!17 zZ2tmta56}$cY}H5Z;5sM&f^701|o2yesFT@CjlKKEg&|S5@eJSr5;;oz2O%!{6*0- zF{4Yx1BU-o9b4qQD(uul2fP3UO@BTmN=Qu!c#6QE+(Cv;ZY@T`nc z{XV%8ihCTGr55Iyl`fBGUSW?8_AWLnTZ>9Vi@m5wVpEd|qIdq2sQU3`%j|KIrNh?; zyPQq+D(sY@9PaT}(Eb)XW9s1YW`bdm^>)7gqNsdqp&Y|m_7jqAyXP$9FI(@?i7VQl zAFRW0Jl;BeS3E+sv>L(MYdX~q)|K+x4wkg^B5RNEzBVw;$860G@VOT*5Wi&*}Fzk0{P`LlNOhXCFRAHf{Z;u^srd z9Q3essw~ED@*CFfQtm^;Xy1TWSMC`)eq`OQ%$5>;=4=Mnn_swJ!5i;nK!t7|Y$IZC z!&Ec?yKj4bgfdqeeE1J%SyOSr{UgEqub_Vhd(nJwQr2@phSFkt`9 z(}ThmwIn9jXdSJS=M$foU01SBI@P$;qD_&R=s5G=db%iXpxbi@l1skf`G)V(C*D;U z=jCPK&Q3fXk~(fb%S=u5wuDzA=kfR2`k4!mHD5QB$Q5j|KH5n|L#~HcfC?(>BLi>Y zOvoCv8*sMNLw6NnyeZe2xNucJTDV@Qhi7C^WuBWEQoA`&Nay}m|?5Lz7k z;EywuLq@~%arH4{)_&{&m|_#w){sHgF>rHzL@y}gS(}4znuX`{bZ@w;xj)=YGAV~g zAtm_(EU(xM<1KvW3Q0!YjX{x;Z@7zG_{bX%47=AGr1@vXgRXjmm{MQ(ERL+TN$bil z<7M~8z|p1575W|wUAT91RZ122NC1M#rjN`756E%e1Fz|DnI1u;grY1{Zy)u&*~-j? z)dKDm@k=^VYUIQPaym`dYKa-}hwCzH2yvMV!&fDzMGIl~@nF@lRMB6XQ9FBR9xvZg z?L0A%7SHi+q8xNC;*Fn|?eNPg;>nAcWSNoHrsn+yCNB>RxHYy{Ns)d2buPKXR}d9U1x8Xd-64C+Q~oFAc6|F|oDeXUbPQAL z4p1t|^MVsqrFA~O^7`emiG&wZjCk_hw1BYX=b!v;n`V*!j<3@xOtT+@UXe7PQM0-Fg7_d!cjnG^C=yjHevbf~`@M1NV~d=NEa zqDED8@@GJe-_W;Y<}ksLL%mOyF04dJ&|)&n`u_ZiC4c6ZH@`ncJtgjC5YyR%tPmD!^4ssW~b5%cK0`H zUqT#4&ITXNd0nt~s(`G2M6so+eWLUvLhm+ovF4=NefQCUa4JCi4vj-ZL?lMrc-m}* zp@SJCK_fnvl>UXG4YPZ9a6*mOfiuejgFjXBQg%Kwt$F8tykFS_W;*@#bV*vQ@Z3&y zRyVXb*iWI~2h^Bm>~B8HE!!OZ9g!aTcPF^t0To$|Yi}<`Sk~YR!J`+J_`Y}IQG1Zz zL|`WOp{<3T!zVv$|L0skYbHbmm(Y>X0YQz|lEJ$0|Z}wMU$KFf7hyCqI?4Wy(Ps(tuz}uww8wYhg z3IA*mUNj&|zw%TU%Z5iic0G9e#5xZ(5>K$Dna-qL>znA0oL(#qMqyDkM=dlT8egL* zDy(>!*kb4SFW-U{Q4JM=OD(QFu^A{DfWMbckCSJpbuZJlp=2oO?zR35-HGfL2R=~* z103XxYpf(f?OX;@(c!pAh#i1GoXXJ57Mj;W@N+d>z$u$DG-NDnTJ!0*AtSiOUWZMa zZ@@aO<}xhdJI`29uI}VKgwO5tbkZtbk(q}(cj0F{ zU8kMPu4vRcw#GlF&EJrnlV_Fv-GPwp&CO4f=hj=#UF?X6Y~lxpC(Gra4#rHmMD#(V zFwkk-0$mlqB&+{$Gjh!K+U5Q(lEklpnU+gBjidNjdw;Lp$Fkfg*QsxGo!Oy$jW4hU z(Omw4nWa!g*kp_qnMIxIOJEv3JDcMnHCe^CrcNa2xy? z__$A1{l28pPJ~ws7_Eg)CufmOg-_P!s&xwfq?HgoW3%$^oj~pN_Pr;;e73NASONfJ zP8yYYJ+_95UTJ~pNvsn{zz;B1Np|2T!9+bj1MKyuZOsXI__^j7?5Jtepw+AL$Zly! z*%!f>wZjp4=`z(>(Jh01lQPfmXH&S%#9TcCL?PV!*{LGBkK}w$D=Wsk-HnO2x2F3)hlUVPeA8}9b)BUqc zLqrKhIPx>BLYl6>(M)oBwD3`;|52pjIGGz#?B1s>x)wh49~E`*y#7k?zre}8WX#Ft zO2o_jNNUUcnGXz0lFAhajyJ@%M!z_IsArZFRF~7o;Vs_kzHq@v^JYr@j_%!!edZ$? z_>C85+Jaj|d(K6s*1ar}-`(j^Q!`MGx!t)l-1TCS6TvaIV`qD#q7Ug;&_?7oWNU~$ zr^*dA7W%^wtmx*wQyG&U=AxPwRHt_i9bKKgwfe)it_k|s!*03L&>^Mf^9)=Ytbx$V zKjjoHjx%eCdi5YU(+}T?kkghn2ke8Uc<87y*=+=pj>;jFWBLeEcOn9 zvl2d^V|31zIq zbkwa?l@dtz-@W=6VmP(yAm0>w*20uMiXS+A%SLL0;VqWmEtsS9{cUL-`uuUUq8rm7 z8Jp|yDcmetxBJpihk2SVKv!m^{WoFMc1&D(;bMLdG<|%cggyOp;=i%P zL1L}lYG%LrooU)mw@5`rY)|A^apbRYu28}AGgd=wbn04$uW`+mY?)V6>6Ew%K|lvy zFz~=HM5q*dyQGzmMe_nOYfR)#&O%arLbqC#?oJl>*AK<^4zep#_PwmvG~$HMq;Z`BRe(#CJ7^}15Tz%~eqP=|6Bc4}0_>>s|`+1O1@sEm2J zM&CuQuk`}0NiE?O-9P=Wv1nfN_bn9$o_Gz4Zoor#QwLh?kL~L;_?=R(41$M-Ye%Yg zh%&vtcm#Oc0Q-Ngzt`1KH0U_?t+7AgX|3UvTk&u7pX}v$5$b+qa4*(EYSGQR&$Z1} zF_rNB$uF0QKZ7uyX%~bXCt}?#@?5Sg_(4|(ecq&&pgM*t3%ncuoUG+fU#&T6DKf5s zf9?`LcNf`lQ)YZRTESX;Rx5TQpiA{|-9%0-KLFmt2w-`4$ZdRP?f9qa%cVeUZJV_X z?}_g~Cn5wdjk~n-~+5qD7lz_p~YM0XummXC$}eZyIi!8WE1>N5yCxR>qjw+@q_N*WDnM3 zEeII?k;fWo`7$054<4u(D2UH5#Uc$SoaycyS=jAA@i7G+X-b&GUu%$SzR_01ML`>Q zGv3R{N~gE7I7sw~I_tW!XEBtezt#9V!3aQt_~7;zttYio@&y|qAu1H4`CLo;)t_j-sgWm9L49k zyqG*XFeRRmCYvi#g~h!QUxwlZaI14Wnsi6#&~1$DoR2aSYoZlx1VOJBr4v(EcB}j1`*U!Ebyq0f@P8gRT(zbwHah*j1Qofkac|* zie0)mGtIqPuN)Zi2Ju3X^4e7As@4J6$L1Z!FJ8Lt{O7KNlpYv@x|-6qY2uvF${p&r zfSp(frg_N+#bdKNez|(x+r#gD=50@$JQNKs=~`^D8)O>8ASv6-X6ooc9*&GwR_j*` zd*~fY9;xWR9s^1-YBBx<)Mx-Q zRplMs_vvfb%@@ZY+bipiH0pWWMGj)Khn9;Y$WEoj%WGl75p`|c__cq5j)YOqiv4SE z{{?jY&#?ac`IGWb+W!779nDqGHww#qVG6oFZTGC%`Re^1uphd`vAlWJ%__G%*#6>H zPzbPOwj#s&XA2kwH6{)3G!i>FH{N)hxlhpx)tLqpH|DP|Qy$ltCH0t@{H1@S|N2qe z!j6~syd7##u7)%xqW=xe13(-`69iS=KqenxjdvIv@J@t=#a#+M*t{LH`l3$|1Nh*w zi$}sMk|VyN-()~bC}=QSc-7(4GT*;s?-HtCV`J&(uaJU+cGusGqM66rUE5W8nhV1! zt0tv6Lxa5#67JFZ^NTdpygl~#+XrN;oFdQDIR%tip>Nd+_w?(*bQlV~;TTsy@=2#R zq1DAjO8Qo3lpW);f2KX<4Ky6l@?h-{E*#u^9mastLZr_pQ}X72X$XmQT$dzv?mDw; zA#}%m9ka@=_ZXeU-H)}E%wl~}18+PC$-?1ngq5KlQsKP&KEG3__a45-uERcGx4aTM zdFeqEcV4ZW$Xyxr2%F=@Q8YwWN-I2bkEe5D9@ z=I6Ut@s!zSrRdN__kkAWi8h#t!N6~9|6!mg?U(Ks>C;Y4o3B~_dG4{j>Yo$F-_Ozg zrM;uSn*Kp-bJ;siG%UgS-4hGzy8P!32AG}bF}Y>($H%JQ)CTjx$^&LqZvO%*%qskd z>=6UipBCu6k4nUBv^svT_eUwr|I7jYsc7w=y!Sl*;GK5xSuy1ABd+65v?p(G*PVyd zS-1>J@sS3n#Ae4j{V^8=i{h8pSl1Ven5W0~%HvP&z;KzS{Bd)n%w3)>jHiUSX8D<0 zZ<<_ADlXw;3^;D*k^=-Wx^We+I&weaYE_Hp}jXUa9=F7 z>Y3r|>8%4O^eN)4bRW zMZt#^j~T*d{dCwsi}{asV1>L@)HSs9S;jmtl(B89Z7wqt&3-X;^^R8dQ@G}#5sGQO zT2Oy#{mps!9r(GM#e?|%BzJ1Vj2k*ubc$1?ZtkM|U(*K95sE}y#u2jAo)PPy&}+4( ze|Ifj#X&Nq!6jbW@rIR)!}GSZIJ$3IfDwtMtTf^Q*QnB4Z~Q=+Yu<(=HlWozRNWHY z!d*T`OX3vkxL#--az(p(+Jsq)uQ{yP&z?ihE9JtT;&V3rjyqhk={1oPz!!QpAGmyy zmOSAk`SfWt94OLFMK!z&ecHX4**09y_m2{yn^?<9v4Tlnd09>Ko*;xrYus1{FK+5&)fI=LK!W`-8cyh z%c{f}%>4EHAtYwlBaJJfrF|1}jie(n%`q>h{|}bVJ)X(`|NqwvbC_dO4#Ti=>fl(0 zF>)9=pGoDEQz?g3h#5jNGpCZ)5Oc`69E)-ul|#+`$){@QKV?RD*S zU9WA|>-Bm*?~li`Zl;KZ9EsY7t~yr?pHmVg(znie8edB9gzB7mXNtWRICVr=;6vsG zIK&Eom}sXvOR3INf#vb$t2#@!j9pUtrRw2LK)R)>$UQh~0->gAgSFP=jUt!&O4Njm zXE*eQ&@$~myCh9H2oj$1-l(k#$#jm^IO3Mh>meW+h+lhG);j=0u$Xf3c3oB&q*qF9 z(bfMXhXqXymMv0=Wd7~Ie*nh=YGwpN@BO0YnG-s?PW%ay5Tif&2I+0{y z=)^GHhO)IEX@3zN&WK9v>lMXC&E|4Gy$Zi7kc|w9gIlz5c;PW(y=bH#c~P(U^cCfk#?PlOphJ{(bQA7# zp5>^)p+iQ{@U1_kiH*>R*zzAnsfmcE-9!`|n%TZKxlT3apSnkPzc?ZEW?c#oA^z99 zOyAKZ(&I6nFGosZ-=WzMJaFQ`5CkoCxA!v+jf@MUeGHkJet3LTHdR(NUN!5O!4ZIm zENpg?6C<`rBlFyuo{=zk^xg}~LCwA@ieAL>LuTkWEzbPM6;4x=PwI$Al#vB(Fo2C4 z1IzElzyOw(to(4@YD5t08c}L=8Xkn|1JkZB`UNC0)(nQ^xpTxxK4WEI<7mp7O>9%> z`B=b?8%Fb3&rqjE(nf?azSN4y6v20{)>%dHU@KGf+?HhQfKHv8>y4*&Tc)zY?nUq5 zMkaD-7Q0|R8-69?JNx);r{CsM+`P)lf_D_`xY?-)fYZ5DbZ$|DctU&1^V;oG^UV

G=N75HO=|Z@3PQjZ&CFp%4TPzu4p~( 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 QOAzTVVOf>NB31wZ0KuFeQ~&?~ diff --git a/SIRH/static/SIRH/user.jpg b/SIRH/static/SIRH/user.jpg deleted file mode 100644 index 7ab6f31dc045c9a28ddb50686ea3f947779d80a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86713 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 BBhLT; diff --git a/SIRH/static/templates/SIRH/index.html b/SIRH/static/templates/SIRH/index.html deleted file mode 100644 index 45447a8..0000000 --- a/SIRH/static/templates/SIRH/index.html +++ /dev/null @@ -1,157 +0,0 @@ -{% load static %} - - - - - - - PRINCICALA - - - - - - - - - - - -

-
- - - - -
-

Bienvenue sur le tableau de bord

- - -
-
-
-
Congés en attente
- -

{{ nombre_conges_attente }}

- -
-
-
-
-
Nombre Employés
-

{{ nombre_employes }}

-
- - -
-
-
-
Projets en cours
- -
-
-
-
-

- La liste des employés en congé

- - - - - - - - - - - - - - - {% for employe in personnes_en_conge %} - - - - - - - - {% empty %} - - - - {% endfor %} - -
EmployéType de congéDate de débutDate de finStatut
{{ employe.nom }} {{ employe.prenom }}{{ employe.type }}{{ employe.date_debut }}{{ employe.date_fin }} - {{ employe.statut }} - - -
Personne en conge
-
-
- -
-
- - - diff --git a/SIRH/static/templates/SIRH/login.html b/SIRH/static/templates/SIRH/login.html deleted file mode 100644 index 83546bd..0000000 --- a/SIRH/static/templates/SIRH/login.html +++ /dev/null @@ -1,197 +0,0 @@ -{% load static %} - - - - - - Connexion SI-RH - - - - - - - - - - -
- - - - -{% if messages %} - - - - -{% endif %} -
- {% csrf_token %} -
- - -
-
- - - -
- -
- -

- Mot de passe oublié ? -

-
- - - - - {% if show_politique_modal %} - - - - - - - -> - - -{% endif %} - - - - - - - - - - - - - \ No newline at end of file diff --git a/SIRH/static/templates/SIRH/menu_principal.html b/SIRH/static/templates/SIRH/menu_principal.html deleted file mode 100644 index 974f8bb..0000000 --- a/SIRH/static/templates/SIRH/menu_principal.html +++ /dev/null @@ -1,150 +0,0 @@ -{% load static %} -{% load roles %} - - - - - - - PRINCICALA - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SIRH/static/templates/SIRH/message.html b/SIRH/static/templates/SIRH/message.html deleted file mode 100644 index 78ba3a4..0000000 --- a/SIRH/static/templates/SIRH/message.html +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/SIRH/static/templates/SIRH/monprofil.html b/SIRH/static/templates/SIRH/monprofil.html deleted file mode 100644 index 59c672f..0000000 --- a/SIRH/static/templates/SIRH/monprofil.html +++ /dev/null @@ -1,384 +0,0 @@ -{% load static %} - - - - - - Profil utilisateur - - - - - - - - - - -
-
- - {% include 'menu_principal.html' %} - - -
- - {% if messages %} - - - {% endif %} - - - - - -
- - {{ notifications_contrats|length }} -
- - - - - - - -
-
-
-
- -
-

- Mon Profil -

-
- -
- -
-
-

Nom : {{ employe.last_name|default:"Non renseigné" }}

-

Prénom : {{ employe.first_name|default:"Non renseigné" }}

-

Matricule : {{ employe.matricule|default:"Non renseigné" }}

-
-
-

Département : {{ employe.departement|default:"Non renseigné" }}

-

Email : {{ employe.email|default:"Non renseigné" }}

-

Téléphone : {{ employe.telephone|default:"Non renseigné" }}

-
-
- - -
Contrats
- {% for contrat in contrats %} -
-
-
-

Numéro : {{ contrat.numero_contrat }}

-

Type : {{ contrat.type_contrat }}

-

Date début : {{ contrat.date_debut|date:"d/m/Y" }}

-

Date fin : {{ contrat.date_fin|date:"d/m/Y"|default:"Non précisée" }}

-
-
-

Salaire mensuel : - {% if contrat.salaire_mensuel %} - {{ contrat.salaire_mensuel }} GNF - {% else %} - Non précisé - {% endif %} -

-

Statut : - - {{ contrat.statut_auto }} - -

-

Solde congé : {{ contrat.solde_conge|default:"Non précisé" }} jours

-

Fichier : - {% if contrat.fichier_contrat %} - - Télécharger - - {% else %} - Aucun fichier - {% endif %} -

-
-
-
- {% empty %} -

Aucun contrat trouvé.

- {% endfor %} - - -
Projets
-
    - {% for a in affectations %} -
  • -
    - {{ a.projet.nom_projet }} - {{ a.temps_affectation }}% - {% if a.projet.statut %} - - {{ a.projet.statut }} - {% endif %} -
    - -
    - - -
    -
  • - {% empty %} -
  • Aucun projet assigné.
  • - {% endfor %} -
-
- - - -
-
-
-
- - {% for a in affectations %} - - - - {% endfor %} - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SIRH/static/templates/SIRH/parametre.html b/SIRH/static/templates/SIRH/parametre.html deleted file mode 100644 index 62b46d0..0000000 --- a/SIRH/static/templates/SIRH/parametre.html +++ /dev/null @@ -1,223 +0,0 @@ -{% load static %} - - - - - Paramètres RH - - - - - - - - - -
-
- - {% include 'menu_principal.html' %} - - -
- - -{% if messages %} - - - - - {% endif %} - -

Paramètres Administration

- -
- -
-
-
Départements
- -
- - - - - -
    - {% for d in departements %} -
  • - {{ d.nom }} -
    - - - - - - - -
    - {% csrf_token %} - - - -
    -
    -
  • - - - - - - - {% endfor %} -
-
- - - -
-
-
Groupes et rôles
- -
- -
    - {% for g in groupes %} -
  • - {{ g.name }} - - - -
  • - {% endfor %} -
-
-
- -
-
-
- - - - diff --git a/SIRH/static/templates/SIRH/rapport.html b/SIRH/static/templates/SIRH/rapport.html deleted file mode 100644 index 7131aaa..0000000 --- a/SIRH/static/templates/SIRH/rapport.html +++ /dev/null @@ -1,205 +0,0 @@ -{% load static %} - - - - - Tableau de Bord RH - - - - - - - - - -
-
- {% include 'menu_principal.html' %} - -
-

Tableau de Bord RH

- - - -
-
- -
-
- -
-
- -
-
- - -
-
Total Employés

{{ total_employes }}

-
Hommes

{{ hommes }}

-
Femmes

{{ femmes }}

-
Contrats expirants(2mois)

{{ expirants }}

-
- -
-
Congés en attente
{{ conges_attente }}
-
Projets
(actifs / total)

{{ nb_projets_actifs }} / {{ nb_projets }}

-
Âge moyen
{{ age_moyen }} ans
-
- - -
-
-
Répartition par Département
-
-
-
-
Répartition par genre
-
-
-
- -
-
-
Projets (En cours / Terminés)
-
-
- -
-
Projets par domaine de recherche
-
-
-
- -
-
-
- - - - diff --git a/SIRH/static/templates/SIRH/registration b/SIRH/static/templates/SIRH/registration deleted file mode 100644 index e69de29..0000000 diff --git a/SIRH/static/templates/SIRH/rest.html b/SIRH/static/templates/SIRH/rest.html deleted file mode 100644 index 19f64e1..0000000 --- a/SIRH/static/templates/SIRH/rest.html +++ /dev/null @@ -1,33 +0,0 @@ -{% load static %} - - - - - Mot de passe oublié - - - - -
-

🔑 Réinitialiser le mot de passe

- - {% if messages %} - {% for message in messages %} -
{{ message }}
- {% endfor %} - {% endif %} - -
- {% csrf_token %} -
- - -
- -
-

- Retour à la connexion -

-
- - diff --git a/SIRH/static/templates/SIRH/tiket.html b/SIRH/static/templates/SIRH/tiket.html deleted file mode 100644 index 74b353d..0000000 --- a/SIRH/static/templates/SIRH/tiket.html +++ /dev/null @@ -1,620 +0,0 @@ -{% load static %} -{% load roles %} - - - - - - - Mes demandes - - - - - - -
-
- - -
- - - {% if notifications %} -
- -
- {% endif %} - - -{% if notifications_employe %} -
- -
-{% endif %} - - - - - - - -

La liste des demandes de congés

- -
-
-
-
-
Total Demandes
-

{{ total }}

-
-
-
-
-
-
-
Validés
-

{{ valides }}

-
-
-
-
-
-
-
Refusés
-

{{ refuses }}

-
-
-
-
-
-
-
En attente
-

{{ attentes }}

-
-
-
-
- - - -{% if messages %} - - - - -{% endif %} - - - -
-

Liste

- -
- - - - - - - - - - - - - - - - - - - - - {% for conge in conges %} - - - - - - - - - - - - - - - - - -{% for conge in conges %} - -{% endfor %} - -{% for conge in conges %} - -{% endfor %} - - -{% for conge in conges %} - - -{% endfor %} - - - {% empty %} - - - - {% endfor %} - -
EmployeDate demandeTypeDate débutDate finNombre joursJours restantStatutActions
{{ conge.employe.first_name }} {{ conge.employe.last_name }}{{ conge.date_demande|date:"d/m/Y" }}{{ conge.type }}{{ conge.date_debut|date:"d/m/Y"}}{{ conge.date_fin|date:"d/m/Y" }}{{ conge.nombre_jours }}{{ conge.employe.solde_conge }} - {% if conge.statut == "Refusé" %} - Refusé - {% elif conge.statut == "Validé directeur" %} - Valide - {% elif conge.statut == "Validé chef" %} - Approuvé - {% elif conge.statut == "Refusé par chef" %} - Refusé - {% elif conge.statut == "En attente" %} - En attente - {% endif %} - - -{% if conge.statut == "En attente" and conge.employe == request.user %} - - - - - -{% endif %} - -
Aucune demande trouvée.
- - - - - - - - - - - - - - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SIRH/static/templates/menu_principale.js b/SIRH/static/templates/menu_principale.js deleted file mode 100644 index 8a835dc..0000000 --- a/SIRH/static/templates/menu_principale.js +++ /dev/null @@ -1,12 +0,0 @@ - - \ No newline at end of file diff --git a/SIRH/templates/SIRH/BASE.html b/SIRH/templates/SIRH/BASE.html deleted file mode 100644 index 5a0f392..0000000 --- a/SIRH/templates/SIRH/BASE.html +++ /dev/null @@ -1,31 +0,0 @@ -{% load static %} -{% load tags_personnaliser %} - - - - - - - - - - {% block 'css' %}{% endblock %} - {% block 'titre_page'%}{% endblock%} - - -
-
- {% include 'parts/menu_principal.html' %} -
- {% block 'contenu' %} {% endblock %} -
-
- {% block 'modal' %} {% endblock %} -
- - - - {% block 'js' %} {% endblock%} - - - diff --git a/SIRH/templates/SIRH/login.html b/SIRH/templates/SIRH/login.html deleted file mode 100644 index 801af39..0000000 --- a/SIRH/templates/SIRH/login.html +++ /dev/null @@ -1,43 +0,0 @@ -{% load static %} - - - - - - - - Login - SIRH - - -
-
-
- -
Bienvenue sur les systèmes de gestion du CERFIG
-
-
-
-

Connexion

- {% if messages %} - {% for message in messages %} -
{{message}}
- {% endfor %} - {% endif %} - {% csrf_token %} -
- - -
-
- - - -
- -
-
-
-
- - \ No newline at end of file diff --git a/SIRH/templates/SIRH/parts/menu_principal.html b/SIRH/templates/SIRH/parts/menu_principal.html deleted file mode 100644 index 64ee3a5..0000000 --- a/SIRH/templates/SIRH/parts/menu_principal.html +++ /dev/null @@ -1,56 +0,0 @@ -{% load static %} -{% load tags_personnaliser %} - -
-
- {% if user.employe.photo %} - - {% else %} - - {% endif %} -
- {{ user.username }} -
-
- - - Mon profil - - {% if user|has_group:"ressource_humaine" or user|has_group:"direction" %} - - Tableau de bord - - {% endif %} - {% if user|has_group:"ressource_humaine" or user|has_group:"direction" %} - - Gestion des Projets - - {% endif %} - - Gestion des congés - - {% if user|is_chef_projet %} - - Suivi des Activités - - {% endif %} - - Réservation - - {% comment %} - Rapports et Statistiques - {% endcomment %} - {% comment %} - Gestion des Utilisateurs - {% endcomment %} - {% comment %} - Paramètres - {% endcomment %} - - Déconnexion - -
\ No newline at end of file diff --git a/SIRH/urls.py b/SIRH/urls.py deleted file mode 100644 index 50b9078..0000000 --- a/SIRH/urls.py +++ /dev/null @@ -1,67 +0,0 @@ -""" -URL configuration for SIRH project. - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/5.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import include, path -from django.conf.urls.static import static -from django.conf import settings -# from simple_sso.sso_server.server import Server - -from . import views - -# server_sso = Server() - -urlpatterns = [ - path( - '', - views.login_view, - name='index' - ), - - path('login/', - views.login_view, - name='login' - ), - path( - 'deconnexion/', - views.deconnexion_view, - name='deconnexion' - ), - path( - 'employé/', - include("gestion_employe.urls") - ), - path( - 'gestion-conge/', - include("gestion_conge.urls") - ), - path( - 'gestion-projet/', - include("gestion_projet.urls") - ), - path( - 'gestion-salle/', - include("gestion_salle.urls") - ), - path( - 'admin/', - admin.site.urls - ), - # path( - # 'sso', - # include(server_sso.get_urls()) - # ) -] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/SIRH/views.py b/SIRH/views.py deleted file mode 100644 index 77a057d..0000000 --- a/SIRH/views.py +++ /dev/null @@ -1,37 +0,0 @@ -from django.contrib.auth import authenticate, login, logout -from django.shortcuts import render, redirect -from django.contrib import messages - -def login_view(request): - """ - Gère la connexion des utilisateurs avec redirection selon le rôle et - vérification de l'acceptation de la politique d'utilisation. - """ - if request.method == 'POST': - email = request.POST.get('mail') - password = request.POST.get('mot_de_passe') - - if not (email and password): - messages.error(request, "Veuillez remplir tous les champs.") - return render(request, 'login.html') - - user = authenticate(request, username=email, password=password) - - if user is None: - messages.error(request, "Nom d’utilisateur ou mot de passe incorrect.") - return render(request, 'login.html') - - if not user.is_active: - messages.error(request, "Compte inactif. Contactez l'administrateur.") - return render(request, 'login.html') - - login(request, user) - - return redirect("gestion_conges:conge") - - return render(request, 'login.html') - -def deconnexion_view(request): - """Gère la déconnexion de l'utilisateur.""" - logout(request) - return redirect('login') \ No newline at end of file diff --git a/SIRH/wsgi.py b/SIRH/wsgi.py deleted file mode 100644 index 5f96c06..0000000 --- a/SIRH/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for SIRH project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SIRH.settings') - -application = get_wsgi_application() diff --git a/fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-310.pyc b/fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-310.pyc deleted file mode 100644 index 6ff146ba559099ffcd4ece9f49b4f9f1c03bccc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1373 zcmZux&rcgi6rR~%UhD-m#EO!tYPW|9`B2kiA|X@Sas zrH}4~qieKEYah_m*+%d2dwk(eT^+sgrc( z6?sfqJRp2f@R$~{5*)s52+F&;jwMr?GZ$ntW3#m6VB^8(e^dY7?Bhy~S(TcO(iGlT)CNXw6cqBa3HvlgaV9@rS8Y+EniwNZO|(ZMDYD#hLN!lJTrg##KdTR)0R+>$Q@t zz0Qkv(&}^$+b7fK6rTO_I*zjtVu)2xvQeW(MkN7y=>Z{`-~=S<(2#&+HCk=FW3$fw(An8g zM~<3Gy&zRWJ<$V)9*M%C#~v%V^yd;|R7X>gklG73)AUkKeY5t)RP@r3_RTl%&Aj)$ zH*e>cp`jFl@$*lw?2e4k?|cytu?P0g1GtAQWC;#(g_0m}EIOhqm81wuj_fKW1+ZL7 zSV~E?5~ZZ2mIkckm#CDg59CrWxwD+WlGJwbhVNm(>a6ckVp4z#z$$(@2Af_cxj4r~ z2}D@{5sw4_3BLVDpuLA^tVgw&?12WMn)1e?2OE&YLvg3KyQaRq!;*G-5o-f)TX%Y@ zO`#!tk!}dJsC@t47buo&DOTdXcn#5XZ2KP!ReI>))ZrNQ=a@rnq_2z7fh`kj`t!r& z4zC@IO_7dv5kd{|BDyP;#VRU`D;n6OhE&VO*8cpp_|;(<_G}*1XH#y-^qqLe+9wDR zp7}sGb4%^p8uA9zsUcgb`_eV=Aw+&|qugNlA)KG{y)w0ZPq(mMHl1?l=vJr)z5{En zg4TGvtrHwj)1$gGh22|@Uw^#K6cf%>aw1c^D$EkFhlX@x@RVgzY*=_Tq;ugK1i9{0 z68YjC$KArbZrYCSO_};FGteJzQ;1Ub3BhHGT@0ZJ_5y5IJxr$c>o~L>2XAmX6yjo{ zJ2>F10zV{WfHywD2mLw)|4ntuv|QV>1D-tu zoCZ2@*@&e-4Si}Frssv&VIy7lMonBts9;AKEe^;c`aHeiX0?Lhi0=@SbRW3|qd zicJE_QvI3}{_hdqZcOt0+f3#rCiC2w6of8IzZr=g`FMF@DR0a!6z2;@zF1r?T*)cj zda1nLK$<0ZAK-u~(abVkj$LJsDhYU4osZYEGdFz~&r~2?*PL;E%dX4>Hn}-d>2;eC zQroeq33qUy3*Jyp->S30s0ocI2$=-mgYX5vf!IQSXh-k*cl@?C+0-T<-1z>+t~S}y z3T>^})QUfDwzQSDR&HwLmWH?HU#QyF=igM@W2c{toqjQTq9dYgL42i1hf^IS4W#}` zA#LRD%AJ+=&_r`+;=$C9@>8SQHrATPTFY?T25B0kWze=!ZyNR8p^4Ve#@5`k<6}Q0 zejT6xF8o$$>t|c~*(c-kt>c$=rS$WMX4fwb&H(1ApGxaB<g75?X0D?N-ivR!s diff --git a/fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-314.pyc b/fonction_utilitaire/__pycache__/fonctions_utilitaire.cpython-314.pyc deleted file mode 100644 index af82555494d93d4669bca8c3cf3a91368a1c874f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1835 zcmb7E&u<$=6rT02cOA!Bn%4OtQsRwTHMq3yuSl&>g>VxmwkVES5?4Y_RvUX_wps7G zJF|gALPXqpYLEO0&5a`mE}@qm?K;TOh>A#Xfs@tt!i_g;I|(fpM)uB|_ujtmn{VFE z2kKB1!8qLb&FV-9{mvKt5$YMQJ_ch4ts-5>p{ziK1h+%EP*$X3V2e2^8>V5fC#k#| zp~~uQ8d?2<4(QStqES734khJ3dAX#(BGjtkZP&qIE3>XcJ(GeN2D6IG0?+CV8DD6E0-9e?k9~Ju4jywnz!Y39zvj~*+(9K?UL3ukv7iW5ig@L!DGd)*bC<^!tLT6D? zC+T@9nVv!&#M5O-W*4<_?r=g z^nsh8Cm;1tX{>7@R1BR$%c37jAwM(^$PaE5#{043IUo82xD234$f_TyR+oxW>D_+T zt)CF8oYWx7H2^&#`rvU^QMz%vTi9O~2U!OInsVxxlB ze99E!m&=%td8X80GOO6%0NA2Sy`VbpOAZ9{rfJ!lGi_>hlW0$ODd3h}&%=0~K9qgsFBK9rY#@n1A1t!?jY)m*$;`$x{YG3*_({eCLEhR-S0+1}eY1$T0gWVbx zi`NBO0mT^jy1=vtpVqn`L$IuK_#r+2Pkr^68Udh z(`Kb+ITqnN1;7-GJ@8#>8m8m;*k)(Cb&a5y5m3ZQ)q`sSF~wcG4>Spr*DV|N$Re&+ z!Je_U#lq{BM<|OPOYQMb)8n1TM92M#Nj$_Pz9}XWzs6!Gk=W_amKT@O#_VE#A!DTT z`Q^;rWVkDo!bJtPOyU28w@(o2%tO-5C-8-UczGs{h^LLav!>F^?Xx3 z|K#3}_ZsT?mYQj+`KFqG_DxG&X{+U?T5hR$XW>v$zx($4YJ2i3{2G&24`U;b{e##@ z2chvys1p`XMLS3wh`x>@^~|G{hb!%&spinslj&#DzEN!(8_$i6mQiaPUeoYe25lQ# zO=GJuG}Ri~-kJY(VscMzB^LJNAN;m#@OaD zU?+wKPCuSGh>Y%!Uu;}X|1zFFh`iTG+~_D$Ozt2lEdTv-7-?C7@EiK)Yw_8uk$iHH z#VYqrr|PD-illqqqi{$;TlYT2RL!km2nJ0Q?*{`h`=Ov&_?5zj^NXL}(KALNy^zbN zmvW1F7Msi5Sza>qbfJ*B%ZBHc^-RW?&*gcyEa~Z`;6!%OD|j7w30@>}8z6lff8-@$ z$uE0y2_79$5QGIJ&^0$u3HXmq@RP9MZa8ff_7o#CC>L3|X<*V33Ed+);w{{TrH B+OYrt diff --git a/fonction_utilitaire/fonctions_utilitaire.py b/fonction_utilitaire/fonctions_utilitaire.py deleted file mode 100644 index 1ccdba0..0000000 --- a/fonction_utilitaire/fonctions_utilitaire.py +++ /dev/null @@ -1,34 +0,0 @@ -from django.utils import timezone -from gestion_employe.models import Contrat -from gestion_conge.models import Conge - - -QUOTA_CONGE_ANNUEL = 30 -NOMBRE_PAGINATION = 8 -DEBUT_RAPPEL = 60 -DUREE_FIN_CONTRAT = 90 - -def solde_conge(employe): - """Fonction de calcul du solde de congé restant l'employé""" - contrat = Contrat.objects.filter(employe=employe, statut='actif').order_by('-date_debut').first() - - if contrat is None or not contrat.date_debut: - return { - "success": False, - "message": "Votre contrat de travail n'a pas été correctement renseigner. Veuillez contacter les ressources humaines." - } - - conges = Conge.objects.filter(employe=employe, validation_direction=True, date_fin__year = timezone.now().date().year) - jours_conges_valider = sum([conge.nombre_jours for conge in conges]) - - if jours_conges_valider >= QUOTA_CONGE_ANNUEL: - return { - "success": False, - "message": "Vous avez atteint le nombre maximal de jours de congés. Veuillez contacter l'administration." - } - - return { - "success": True, - "quota_annuel": QUOTA_CONGE_ANNUEL - jours_conges_valider, - "nombre_jours_valide": jours_conges_valider - } \ No newline at end of file diff --git a/gestion_conge/__init__.py b/gestion_conge/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gestion_conge/__pycache__/__init__.cpython-310.pyc b/gestion_conge/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 7832e91b695d090d722edc4f744a23ffb8e6c191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmd1j<>g`kf-2u_I|p@<2{`wUX^%TPZfKQ~oBEwLms zH&H(~KP59wzc{lfLq9#WxFj<_FFrXxFFjR1K0Y%qvm`!Vub}c5hYe6!X-=wL5i8IH SMj$Q*F+MUgGBOr116cr&up@l{ diff --git a/gestion_conge/__pycache__/__init__.cpython-313.pyc b/gestion_conge/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index 64ce2836ce1a3121716d651fc36236c338d93376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmey&%ge<81X*7hGePuY5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~h_vsFxJacWU< zjH8c_f@4X3RE$e%adt_5K}@h`kVi~+seqMZXeqMTNOniK1US>&ryk0@&Ee@O9 c{FKt1RJ$Tppg|yuib0Hz%#4hTMa)1J0Qx>8c>n+a diff --git a/gestion_conge/__pycache__/__init__.cpython-314.pyc b/gestion_conge/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index cc16157acbb674e998ecaaf1e4c51b6c63942bc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmdPqhza%#@_-QOsl_Fk`FZil`FZK7G4b)4d6^~g@p=W7w>WHa^HWN5 YQtgUZf#!g0Dh4q=F*7nU7BK@^0P8m*e*gdg diff --git a/gestion_conge/__pycache__/admin.cpython-310.pyc b/gestion_conge/__pycache__/admin.cpython-310.pyc deleted file mode 100644 index e1fa73bcbeedd5b54a5c8e08f3e9bd56b1ffbd18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmd1j<>g`kf-2u(44TX@fuanW zjJH@5Q*tx&{4|+v@ug%X=B4NBCFkdr6lEqAfecv5P{abHz{D>V{j$U&{qpj1{b0`^ r5B>Di;*!k#ym+Ac^i+MYF?t1+w>WHa^HWN5QtcRl8jC@O2rvKuF}x>8 diff --git a/gestion_conge/__pycache__/admin.cpython-312.pyc b/gestion_conge/__pycache__/admin.cpython-312.pyc deleted file mode 100644 index 5563e5d45a457cab3fa36b8fa9cf0c9377a1f9de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmX@j%ge<81gB1Z%ya_Mk3k$5V1hC}3ji6@8B!Qh7;_kM8KW2(87i4HnO}mWH5qTQ zCZ^JQIdTMb=W`15gP*ZxUKG-b1g34bUHb6C{IjMF<96;@iKwJ!Bd|+l|WW2|q JP{ao0005}bFiije diff --git a/gestion_conge/__pycache__/admin.cpython-313.pyc b/gestion_conge/__pycache__/admin.cpython-313.pyc deleted file mode 100644 index 5f7b1982c1bc1502b5296ed90916d090184a324f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmey&%ge<81X*7hGo66+V-N=hn4pZ$0zk%8hG2$ZMsEf$#v(=qhIA%P=9eI8O~zZS zi7C06d48HqxA;=B67$mY^^)`RN{TX*ikN{4Rx*4Bsk>$BY!wq)oLW>IC$ z72}dxoL!P%5EJYfPO4oI2hbEoAT9Iu}sg2g3>s|4HaGCO_+EkuSiI| z0u$$?66K`(d_UiPXPq96`arh3`^w+x{dCEp`IJn_%_#u_vI5pDVGQPg9`ZLpuGlM2 zJoJ|k_P&V)A+yJ`s=Cr;nrAClIW$Jel-x`R6eJ9Rrdh(#OMK*{;@k0DnN6-slE_r2 zvpc~@S!O!IhiI))6(+jOvstsz*SRXtj diff --git a/gestion_conge/__pycache__/apps.cpython-312.pyc b/gestion_conge/__pycache__/apps.cpython-312.pyc deleted file mode 100644 index 01b41705c035d72aab93c880ef4b7ad8947c4003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmY*VJx{|h5IrX;Ds6*Mg^&tjU_r`2vN9l~0-{@gKo-l?PHL1d@-dVRssEwuOo(3s zER0noCMGseVCjS%hXD_F@A>XMpYO#qJ0Q;U(-*%N`CXE~(`rCSADKFGpyE!Bo->yhe>i4M;`Yls;nYvNVO%v0vNc6f~!&F>Qr-$nQj?n zf5ft!$B~fxOnKbw(JK=9u}v@SFs3ZX>{IR!i#)#IETE<7D+!)R&Dd&{ZHyxlGK|X( z#zImA68A8^E=bT+`jmO32y#q>5%y{)L)IRkl5?&OooO60$0Iopi6dON=VUycI{%(? zNRniBGE3#c>RaDtS+$x^Y9GRr^@Y eev)nqDz}%(&3)Y5Z%4I#ApnDi-`)+LbxWCf`|xF@iU}wv5|w}lG_}s=iRxxS7dz-SbxN|@`Q zYlJVT?T)AtKq^Ikf4b}SImUk{F7hbc~syAhF;q6m#C6m-6$7e_0zY#q@ zO+_QU<>umpVAd2B9UjnIb@SDke=FDS_xa=>-*#ele@VmyI!gM=Re&3okxZe~?ZC)i0=@j8y;t diff --git a/gestion_conge/__pycache__/apps.cpython-314.pyc b/gestion_conge/__pycache__/apps.cpython-314.pyc deleted file mode 100644 index dc8e33b9b017a4227159021387399c030d973947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmY*WJxjzu5Zz63exE0YAE>B^jX}6Z3lS0gK+i^G#V$I;%U)Q`B{4fGw6YL?gT0mi z#!?ontn7pnYj@qVaEmu@n0b$x*_F}i5Yg|}b;Og7?2f{d?XXM`LhY?<#@sW_Y63uF zh@u4{Vj(U{Brw$23y|n|9f)qOMbOdO5D) V)1{QYk;Sh*ht57ue-j;kRX-MRiFE(~ diff --git a/gestion_conge/__pycache__/forms.cpython-310.pyc b/gestion_conge/__pycache__/forms.cpython-310.pyc deleted file mode 100644 index 96715510dfe26e2f7166eac2791d247558e5829b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 858 zcmZuvy^a$x5Vm){KS?&Z(-j95Npp#=eqqe+e`uxXlO!FyJMt zc*Z#c5B$=r{LJU<4FdteM+Sl78*%Mt0fcjwMt69IrQ8OqMpx#J|F&K>^;#_{c7OS3 zOmLegC=|;$u*?IV`G}6S5Z%A_G64dS1KV*RuMu}Q#C)fed7;%1=&SPD{fA4e_2qW- zU$p=aO>mp{DE?GaekRt~<7b`)D%?a=7sQPR!6*KJ9YY9F!6^#yjh}U(1KomWUFadl zm2zY_KeIV`z|h z+iIif$__o3X;i6}ZR+a?eL5!LjwE$cEwqxGW~a^JWaccIjdRS>o{gof^GZo+yHZvS z>`KxTDL?G;@)*%{`!>L!Ds8wbR0&4oD`B?t3dvs7TkIg5I|?@17qC{Xv0<4nRB3LR zJ|{XPzCRsb=6bx}@5l3tcW=jQW!j>tCEbo1QzK@yy|RMFMD)!WikJx=^HcAX4|w=P zMDb7k7~Qip(0%;t0f`e7Hj)yWrIarIuj)~IL}_&0)Qll?0zTu;H%mhs!X~fR&9Sl2 gHEWKYcc#=iy)Bpg5VDP*A7}T1Ubll!Si;Y}U$ef=@c;k- diff --git a/gestion_conge/__pycache__/forms.cpython-312.pyc b/gestion_conge/__pycache__/forms.cpython-312.pyc deleted file mode 100644 index 2bc7e19428b88ad22f62c15037ab8be337d3f758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1082 zcmb7DJxmlq6rS1NyS+aIGzgMhjE1byJ7aCsM8%lEH5TexY?hn3V=w!IvwNDOroaxW zgM@^HN`eKYy$xyu2?b6W$e!fOmW+{v9wDO4A)->;%A6cN{cp%Ax73bi>Ia~h zn5&JD`OyJB*6xQvlh#wi6qRG8cSVpcqR7GoSrWmPoJ5pFM0rEp8N^aLimCE!;$~cU zZkNSsLOjQ1v`pahogn#_>mu5R^~#xe8u$^?TN7{^kII(P6q&DKOO+7STE)cb3_vxA zvLd}xHy|G&|7qEmp86MwMsydSdL)?@*~*eEF$EM73 zVvXeik|X&b^rslLTVb0;v!z<1L6wt*nwjGn+YTI`+BP?A+Yd?G1D?0-mu<&OcNk0< zSH&jvxYlr~MIqA9RH;sfKCL#K z*!7*N@Z~nDk;|s5O&Y~+7}(Hku@B=`ndxu^YQ?hRD0Dn}Az%*e^_`zrdEc#h?d!0) zbal15Tz!9GtFm+R`R=f_H#D}Su9lWdo3FNtJC&!qL(ldG%L@;?6N?jX_07@kvAes2 z_rB}OfHAKh7Exhjd*u3|EcF|2G&Umqvrz#xQ)TBs=?54Pz;)XuVcoWqeKrj1iTNd9 z`U${8h)M$H&==*}Zz-o5Kahab7R+j<#x>G%f@YYOPfJP~rS;8DLVe*aq(0BaIm+A? o#-cfQ*k$1g<~M>%9LgBueKfR>F8)*s*jP}zrNz=OBxn-&57D*(+5i9m diff --git a/gestion_conge/__pycache__/forms.cpython-313.pyc b/gestion_conge/__pycache__/forms.cpython-313.pyc deleted file mode 100644 index 266e2a04cf67c3e92359960af334dadba5652509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6075 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 b^YJUWd$EpUtYe9T#*&+JZG4E`Y`gvoLe2$2 z_5=it3&uD<}jCe4U6Tj(Cm=e|I3$U>v=+DvaL=wBQ}F)YB%P;^iFGBwKYG@nweM;N{30zaYjT73!v(&YsSHXN}O^JUWKFcfE@G@EyZ4?~_UhO7hi@E|`XB!E=<1(W zw{kn@_rCmLf8fW%oO8zC$Q@Qld1PC$JiC1!5eA(KtgWhoctHMkzWUcHy8c@NBC|!a*_vm(&aEI`NwTVY zX(v?Hmck6S1^=v!^Ryq6|1N9t_i`Ml@Gnpp&Y?{yeMyF2l26|_W$Hh4A65UTz9Rrr G$L|4iMiV3e diff --git a/gestion_conge/__pycache__/models.cpython-310.pyc b/gestion_conge/__pycache__/models.cpython-310.pyc deleted file mode 100644 index 6725e07ba6a0eb2107223ebb93a9f0f86fb22474..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 zcmY*Y&2Aev5MJ(&w361c~Et58dYyK6^6 za&oS|^&zSk=nLpAcr8#MuTY>thuj!YDeP#z`QZ%bBh}ts+oQF9`FHkbtf4>p%i~4}Q8&=m5IVfqg>*g&yAB-3_l^{Q7)2#ljNC9Ye$Vat@X&ljLeK*2rCM&mJHq zk@$x!X7Q)>q2q9{8`OVlV(!S`+_X8Ty()>MC!D{jgtSZ&YH|*0V$IjT{c^!a&wqX~ zy13GIR;GQaG-lKMCtT^k8k(cCtI^r{g>G2XvJ72jC_x_)*2m5`nhEWUCM=0=lYAbL zBhe(!l#(d&I^yZAkQw>yiDwyVp(nHKO@-!o#{rqfi48HWYkXVQnVp3yvm37QrYcOl z)M|;kTHq)$ diff --git a/gestion_conge/__pycache__/models.cpython-312.pyc b/gestion_conge/__pycache__/models.cpython-312.pyc deleted file mode 100644 index daf953a77e467bcdfa28595f596bd0bfe14c2f8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1911 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 CA?_Cd diff --git a/gestion_conge/__pycache__/models.cpython-314.pyc b/gestion_conge/__pycache__/models.cpython-314.pyc deleted file mode 100644 index 46515aac815e5cbc7e68efd3e2bb6b03c40fa556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2032 zcma)7O>7fK6dwPq{}U72aY9Y~Lr`1O))f*JEkzB~PDsEF(Gnt6vYBqYlVoANYi7rk zAR+lyxRm}J;MN|KQ`1XDPesb5$H=l2cM26!PrU^Np&t8Y*N&_LQb+Ra`}y9RH}k$3 zzdbw@LNI=M=TGft38BA)(jTDPV{aZlEp!>lu35xf@O96+XFSZ45jM}PcSd4T292T| zlD%U{ma3llNH2EabKK)7%rCnpP~P{qQ0MY4?yH+B(JhetQ}u>!u94b681nU$y{}vd zDNsliijWa=UzV6BiA*SqdF7FUi%C`A{P19?Bj->x0G`;39@#B>PV~zP0Veq(Mr=x! zPQcn?u*fS>z5&z_pbj|^gL4jDR;!ZimjnB&MqimPD2L?m3AYo^4gl`(U@k|7>LPMb z9@@vn{wFRDxVK)KF9`XD_w$WblX7$n9q&Qen0$bZFCunOjzAM*Tq>Hz3TbA+|EZ~N zt?MMKl5CA`Z757L4N$CX4Io<^7WWgUy?Hkeng)iZ6GnK15?x_L#fDNRP0_y+s3J>g zYh$U&fESVLgf5vDu^~6ZegCv(*!YFDhK(1cY;EK{JXBY1V4WB%Y?b?KtEN^X78OKa zxEbvSmq=YPR06d`lqNH=VSa%XRkdMrVD+nHS!wEwdyS^9gF#x-72_(6LYi8S4Im;U zt_g4`u=fyz7FtB&y8L&%*)ynRgboQzudjo+ear^}Q}OnF^ZgspH^4XdigjL|Sw{VS zHe8ipKh2`+cyAvQaEF{<-Ys@&F@-YjA%;4amv~5pen7XN7d&9g%bLO64V8zNY?UfN z0q%hVhhVQo^kptxF`Lw~#4g{+^7o4;E0-)nt;)=Nr9`Z&%xqLH&dM{+v_dSw6)bo{ zD$Z+AXsq#wVb+%@!FDblvzb;Hv}GZ^bqb~ydJ>M_oxD4Fd-6W}{?_-m?%#TpNZyfA;OTCjQ-=2CDPk!C}?&Nml^`{cbzI$hK58}}Vg3=>)0a!7NCed$3 z?Deu|Y%Tv94`7>q81oRuP-IglAV)C1)>L%CUC^Q!FKg6dx@Hi=1cM)A)vO8J!e{eS zxHxlRwm5Z>iZ_RcrcFw;72`ZvqoUc|Up#ZMc&0Q({Xz>0rcP@_S7`!tI%*q>s|vM^ z+{=LWJko29O=ceX#58rH7!G3Wx}s~~7iYVw5vtJIs&=hOcw)ezYLwIjga;SM4dz6K z>n78dF(u1Qiw7FiY!J%UsCd%&D8|4Krq!^*7}bCk#DWcuU|iD`%Tl!(s}Wtt7%uM6 zfDyt3-A>b#*p1+{J&EgM{RY!NUqTyy_a5E#phYP_DJbH5AqE^7ZOePx0VlZ zUjrT)#iHVmg$LCua8t~Jy5tZb*(ZMQT`V}%cgP^Yb4qmQoH8P#omQM351ex7_c1*Q msyI|jICniRm+KD{e~b=2Mn|7{Gp_XQ>AU4S<>v@QJN{q4L+hjf diff --git a/gestion_conge/__pycache__/urls.cpython-310.pyc b/gestion_conge/__pycache__/urls.cpython-310.pyc deleted file mode 100644 index 3a92d23d369951c037a629139a36113dd08061da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551 zcmaKo%SyvQ6ozM#Nt<3$D_&OaTy@co4; zm53t{)@Mt3@aO(|)HOX=h;*J!mMYc?&qq|tHipgkBF|?woADwH_F%pusyd_D-vpR# z1=nWp+YG-NX%7wXDuq<3ekN*YO>BEV<}0CiS(bcyd2_+HuEcGsN&aa3(3}!|~Y<5i0R>v|B$IRyDnVz;7P<~nEzItbtT5|-rjb%ndRQybM=n^T3gu(Srjus_9RVqb*(QpkFbi(!~1-IFu{DUr0bQg{-? zJg+kz2MOaP;OBInw>6e;N1+(&$a%!SXASsUT~~}CJewHf3Gyar z_tD+|NoEyf*9zhkgkHN>Zb2KbRm-l-99{klV4s@eA UCe4C=)s5%o-lp-(&30h>e-I7A=>Px# diff --git a/gestion_conge/__pycache__/urls.cpython-313.pyc b/gestion_conge/__pycache__/urls.cpython-313.pyc deleted file mode 100644 index e4b611973614db8f047977c5bfc49168fc8a0931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2027 zcmaKt&rcgi6vx+i{2TwaLm+`TG$e5vvsHu|1rbtIO3Q|#s#Edpx^Hco z?4|0Bf1nb_9@AT-UiuI8zI*ISJybpQ7KuZyof+>=45anpv7a|@-}}Bdv%^U~pHG**IYhsy@Zsd^n4Dq0L;4gNgwa6*eiTtk4g1SGU1B()Tzv^1o( z3}mz{WVIaRv`LuM@{rdGP|%7{)Jjm&%23uSP|>PT)oM^{C?qzo;5f-*gcJATf|4YM zQqkK{D+Ub84FO~7#uV! zLD_g_4+j+Vu1PK3we4PzGAwJ@r4UrZ2OX$G;m{bEwiV>}Y^y_c+Us}i7c{5~baX>M zG`eP+CE7cn`@zgPciRNIH=siZX7_*^7Bz;?^|tBsZOilW%Q^Ubv9~Db@O4TEfMAx!ugJn zEuUgHC!$n7YSk_BKP^#J%)>2>R;47>t;y%{xcO0BsCSfY#k2;?!mpd{Rn?8!Zn3so zypY=n$0t4Nxp&S+xHm?X&IE>qTT-0r)*~M;C;jfict+_yS2)^mAx(z4MWBc5{6>4L z1_`mpZuQhDQu!%T-O4Fvi#y%fv8`02afxR5jG)dwsnao`+>t;LQ{pkx@=%?X4i&yW zZ}d&|f4>eD_)Y3I#|4F7=_uvcg4jSv^7yM`?*E8O@VG1I;<$KuHK>4C)OPbikZV6P ztd6}ngsuZ|<_xMG>hKF8aI60L5@{sR~WmwEaw;Hgt?U9?#Ihyhur`US=-ubtPSj4vQC|E2X>#V zuM@oaYV(F4Md)Hh2%11i_ zTb}yB+j!!mrvl&iTKB#6M?QKi@Q$~%>3zX!90>ftyYs2HO?|X4aOQaX)s&C!37GR5 z%ih|Kj~)rU>D^+9p89C_U3l$h+gthEN84hNY1r~G_{b5sCc7EH8)Zg-M Vv$T(W^yKwIy*Tk>4(8b0{sphRiCq8y diff --git a/gestion_conge/__pycache__/urls.cpython-314.pyc b/gestion_conge/__pycache__/urls.cpython-314.pyc deleted file mode 100644 index 7fbcf592a784c2f6a55ae1b1ed04f77a0c37d848..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 742 zcmZvYF>BjE6vyu@$vI1rn&6}aB5<5^F(uB>p-@VfcCeQau5?pkM06xdZAs`ZX`?B0 z>(tNDFVfvp#X+EuDbOJy{Q!M;vPo=waPQu||Bv_nyqBJ9BRFS&%h<0WbfZ4g)0iX= zzaY6nM~LD+>S2Lf=m^tVzt%H^(L&S^<{@q)Y91N~y4$ot^-_!0UmI1fxh3G1XBqXQ zWR7b9=PlsuInDuYWdXPR$aPK8pzaRpc()4dU}X?-eWarQ-QTIEc9Y4 zh+uibf1(FykL0WOZ-P&p0WE$HXsP|EaL4 hh3zrfF5T8sVM`0`F=?0X3oYEW*PqqCIr%C~{|{fuzCZu~ diff --git a/gestion_conge/__pycache__/views.cpython-310.pyc b/gestion_conge/__pycache__/views.cpython-310.pyc deleted file mode 100644 index f8a7f0b19546ec0f835fd49dcb7e09963cee9bac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5893 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 diff --git a/gestion_conge/__pycache__/views.cpython-312.pyc b/gestion_conge/__pycache__/views.cpython-312.pyc deleted file mode 100644 index a0252569281a25b42f3756ebff110e9e427f97fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12079 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

yZ|awwUC}vzU+OnlmW+`#^P=nzq+Ne77kjD> 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 &t7IX3I0n*M zc>{73-gdA7sd9U2$`-6JjKJ^7dQ!V#EwpQdb}OC>Ys&p=>h@n*?%_!K$@-V|9@M`o zgik$}T{7OP;nd(m8|BC-5(Ae5s(L&qfD72fO3aqhGn%S?Em-k4WC++-7|S?AfgQ>; z6+jL+@s%({CQUPO%r+^{Tm#0nYkd3SfGf(YurHd%N5pYB^~78h5K$7ZQ$93aja$Mi z5N2$EvXVN4e7O&N@`zE2QYBzqSJMMXC;Jqg0B7{%9hJ_X14dwWVkMRZe;rH4V)=E08h3^Fb zN$E>e6*wn`1tmR61uL`o%~3veEzwtwYBT|^D05g0Nc|Fv|0#qW9H?56v-QK_pAIh^ zy_mR=$T|9frLwsMn>TCoUNT6gIbN0X) zO;I}Plu4>WS3u}mm+e}|uiteemh0Nb>%9eUzu*mKy+M9p?1nn$orKfELUWhU+?#Fg zz4X@ABe~|yXH0iYT{lgE!r%)xPUHutuk7Ft9XT_aH~R~=-pecVwsl`@Sp?4PAV095 z@0rTAO!M~XLU8QH%6yRe$iyFb5es|nn7lVl{e`uoH(K*+_g-=G(=)ifw_xkObOI=_ zFHChB+5Y8;d~gpmvVXeNh~9F}c-Hv78J4+)gZ#>ay!*wR?Im9S(%ltE@B6-}L*@p- z;J}ufylnAX)eLIHHuZKHEU8>)-6Oj5n%sk8h9O@sB zCXc4zD+ewug@b4>*RaP@3^$wM*b+gCS34jhOVSVn91}lMqES0)D+AFCcPtR2XH!5Y zrx=#OF(Eo?DCGcVJz0rb6`SQd<#$Iw`dpkXA#41m79HgdBqjMaem4V-FWG~)Gi>RL z2HE`B5n0kAwIP3EuK2>dMEYvW{Yj6;c94}QRtfboI8d*kB}h>zob@9hok`HoFsGpo zq8G8JAOTks#D5^uZPfESwB|PIzKu5DM*iQSq1(9Fc^h@yMuWFe+a1DomkbevZb^km wdr`_3V*Zha$akDS4Y+@K1fJ7V z^l1SHSmKNsy?Me@ckHI#*kjHQ4!Gd`?tq8x!vD=3`@pW8p8t+)oS%DKH&YoaQOZ0k zbS=#RlVWOQ_pdI2=kyeR(1JF~m;)QTz+*P{&|lO{6bu%1V08OXgJ9#$IMnH^0S#zw z7@?L$;SRM4HK7wTIDjrZ*tn$e&}uMv1cw_=_!Gh{I3l0N7JvE?J|P_1n2)Xe3E?(& z76*%9(Oo=%C-513Zal{g_+n$SeF#TX|ChRPxv%@0SU8BWFdRgfE|YwPIy^f&`#O@D zETu@aKg_cjHJ5Oq`O8ty)1j!!Jen#LC4z1(l}v?NMXzwB8wDydl56sEgKCl&7-b?w z-2_sO04G&hb%@Ck!BfD~(c3#Z>M_-(LtVF8GnuVhdxZ;`X|G%@kunXZCY4BJS%t|u zw27UbTl5ad-g>?!UE|qE-`@3H9ZcuBoMJ)k7H^^iv$&jZ!-cz~Qjr0!5B4EPXb((4 zTWOZxMgm}Kb9_VPk)0uIE>Q_Joy*r1nt2KUXQE00;1Y9CfkxeBQikp;LL)+#{^KmHGoP;lAd`<&! zVM6GJA#JxE&V|};!xwp;pvZQDYkX5~x6O-Op^USiXjW>l5LujS4ijp;Dap_i49~BI z=cDg+GhY(B=B&7L)Hf8`F8@3m+z2(ey}cb=z5M0J!Ja8Q8iNlX^x*yw_m?YWei;Eh z#aFb{9glO@d++(29r6zAutV0}-H#dn+xxfv-dgl(`ed7DA13|nKcc@+Rt?CNZu~E| flv$Rn?T4hdyQfCG{_VC4-!YR*&E&$n?8yBOk{^7@ diff --git a/gestion_conge/migrations/__pycache__/0001_initial.cpython-312.pyc b/gestion_conge/migrations/__pycache__/0001_initial.cpython-312.pyc deleted file mode 100644 index 01f7119626dd587279bf312d54906c14dd643c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1952 zcma)7J#5=X6ecN&vSis7ZAXfKWXXkrmWFNFEzk<6)6}t}IBApS$4wh81g$$sbSTm$ zDJSxj0vS4HtH+Entf8YjH9(f6U5IIY{r2K7EfM0lKPl5)glFqGPqv>pzyV(83Ov~bU8n{MfoiZ2?cD?*!G8}+`TL!<0ee0Q-CFv18 zTCj=+E!8Skw4EBH_c9D%Nv-J)4jMIG$D=(^pjog;m2iL6bhMIU!BWj8I-yNnHSSsy zH2rX=1AEE;v}B=kK(dJtzvRM0hg8^tI&FbpVZkwpxge{ySkj;lYKK6Akd(qGYS6am+k^X8S(~rYN5-P}9>*?dZIO%2wFAPa_~7eyl#8T)jCy@jZr@Z(I{Q*OgOan4cD>}R zo18rgKA%Aa1sPT|X`{H)l2Rz0-QV@nSvQ?U=dL!>*HHYMmNbD<^ZU2G)V!OTKRVY; zT}JUMEh&k{T#m!Bj&dD)ehpKhS*8%_CJ z6u;e)rch?_vFK$M-OS?8&eNG@<`Rmpx1@12IlrIxCgG4h#*8KU}ds>y}m)@tEJ*1+cl` z|DG1Q{k4_|3`gFavngYP<@e@OYK57~5$bi{vOlw5Sf3M?{!i>Q`LqK(&mW5%Km7;y W(TSMk#Ya&uKI6t`{^kh74EzIsX$4gP diff --git a/gestion_conge/migrations/__pycache__/0001_initial.cpython-313.pyc b/gestion_conge/migrations/__pycache__/0001_initial.cpython-313.pyc deleted file mode 100644 index 355ad96015091c8b242caef63b28264746cc46c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3766 zcma)8O>Emn7N#hP`gKAnj;+|TOuJ4SI*FzDCy9$Th5zC>wbR5*QXo)E(BepDB9Yo5 z={7#>7Fb}<__9YzK1krHz@B_ln-&Y?v~NZ~76RF|0Fm=%zIi|2 zd-FK&`uf5Q{O*lMwCM{B^IsygfBx3s-8~rmgOM1?^Ck1pgFO#f%nD3`8D}JRh>^Tm z&nDO2bn>3_Hpkdo@QMCoB8aRTE@=g|*CR5WuZdl=?&OL+HpA2FI`ut#Dr zD|xV2VzDpHV1Jg|1Xn-&fiqsomkn;lKU`s`qY^9mB~A*=`({}w2)O=UxVhFOU_$4> zgaI?qOHZ1SB2PS0RO*v1%zHuGML;HcA;B+x-UEo(8M@-2>yp&p(sdb-L#OCsrGa^N zmQ4qw!Fl#nrV{67>dI-hx|kXQOtPmxercG-mITDv(VxnsG$N(aEabKoecFF!WTWSf zOaPxw%iS38J>JRPM}YjJYMB5`suu@cJY78p=3~H|#^oo{HIiFN1k4}g|IBKdgy^of z`IOF4P0|gpDD;XBs+W~+N>k^n@pR2s zfhrO<6mY44cKez$EfFB`9JK)uUC~Ta(Q{}w-r4r3JtwmEFc|KD)x-VV;lE8mwRNG4 zjodb}Nl|w;cGf@X0KnLAXFrfd{OQ`io9t}vEOu{p{R_5*5hmx95_GJ>Nc6ga+_s_R zkm&|glvnJc1)m`0d%1}8g0<~NTb!2^T}7g&l{ek^PF7UamP%I1S zz$%FaLXN`gIb;%|5g^1o<+(jkRxq6eT&xSHY8d4#WMi9r>AJz46_Nct0Bf6|&^+A7 zBQT~Gk4bE9q-0oHUdChhQRMe0z>>5VteQ2EwU%(LGBu06fr!HUI z2-FmAAD2*5Am=5rg-k=!Wuj(xaFGgvN=k)lCn|+6AV?B9Cie)}PZ<@xB*|d(gCr9k zcA7~>HW6AmLy%Y^(nK8YH`iJ@L-;mPOyi-B;0(y37Yk&=7MwGv4WFl< z`(eEiWI~r}!BjPvs>c#P$1eZ4QyZMD4o)8U{xjjckR2UY22F>z>amf%o!V%+I+{Kj zz2)%J_1N&<^V-PG>d4Kbk+j2S>aoGSf!Y!*o|uK%u_+r`U~ zFzxU&^;mK*UrS9@Q&UH&jKkk*A!e$=%)yHDSgQyx9sU(0zHReu|G{!)Xu;tZKgh=_ z@!$#j4SBs}izLisi3l;B?Xr844{G~g#y^d>%LkUT`AsGDt;5Sb=xhu|2}u`$B%zC> zvukl+kE#kD9e%#6Je~Qh^X;FVyMF=iHrTI-tHNXI>JxC47Hy_Fk~xT1 zMm}@+&l@2>u^$BcUwJZd?ynE=1b3g1`clyg#+156dkJkH&0|GQY!mwgMsD!4 qW~;h~B@jLEH_4Z^;q`bt|Kk{s_#1b}!~Gbp@e>t(;&%oFy8Hjg_^G)7 diff --git a/gestion_conge/migrations/__pycache__/0001_initial.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0001_initial.cpython-314.pyc deleted file mode 100644 index 4ee60f18ea6698fdcfaf5d15e732d0079a35dd62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2245 zcma)7PfXiZ7`L6o`9pvN0s#snY)D-?NU1gnw6&`!G=y%nsY|=H3$;xANIV=nwO?q- zE;_sFrwa@&!eR*6fGCPH%dE~~WDZqcZA-uG;WW-XQGDDQpW_kQ0We}A4o?dy#& z@J#;RQdW3|`I9o8C*Tn$c_5xL4;g`7WiSgnx60*x*q8TXe~KAmrWnDOWCZ_)ui#kg z7;yK`eeR9}0{bzO3H(Lbn;DKos!G|Au%c@w;j6lgRI}tl-F3iYPR2Rve*=6A4CWpN zu}@&JUzo_UIIzJN`nr`|8Y1EZ-$tm=vC##AGZub+At3Pce)r%rP6z@z(FOBJK!=3z zJbQ|Zd=S_3A6yi0!)MvcGQ#97_Mt5F3VrilZoq&42ko*#Oo-1z4(J2O0YHwpT=xo* z4#ImSx{yQv8#xTfv2JTF?d2-jWpf0O<7Xi^`U~mz<%QT8vX9P?O}{S_Mubse>}`&+ zVc}dS5~%&4Fpd+#AoNsiPnQ{)`sR+lq=5|!#$7fS|`Fp^16%}}b6 zu`6z)T@p5tp-8IIKqR_@j7{A{q9#=liO2vJWwcqxb=qOez@}xCUOwChQHC{oK}bRl zYD>`?Jsm(!(TE@K){vvN4g^)BF&*w_d?Z+^=t>Eh(EidBQAJuAS6o|B&tp~6WYp;I z*jq-900zc=4NZS6O0w+gBzGWo(1RfoD+)3sqf}8I)e)Vqpp3Spx{8TktE(zWbU|gs zKqaa~da62BwnPJM)lJX|Y^svBZ6xWt1yQx8>bt0sEF;tL;0dzc4sR0%zc9E6L;4J) z()_yVGGRQqgdOJ8Mc^Nf&I}nF`Ye$n5)0DIl zY7DptsNc6RHHA<;>&D3XXM!mU|X5ztXld{mcInr`6wMR7|pOspyz(sU36 zz5J4>jA{tlODieJH0bR^dX}8ISfdxPLGMEny{44Got~p*BVpQz9=TMJ43~^v({&X| zns=~{o?w@Z#)bkT2DufDDTwC;{tU@2eNns%!)g}uh2kUXw|CE;m~BqX9$Yz| zShZp|TJhxGusxb-j%NObJA6CPW|${|AL(|3f55+Cn6dA9VB$r-6;C}Mwx=#Nr!E~} zODG*r$yN-t;ul`z?3t_0nX9k-)}3#UXTGyy_gnGvFNW>R+soPGv(53@1OB)0uVH&3f3%Rd7j7Rd+_o3)A1&Os zDvuz9$83RvcqVRhG#-I#4@MGwZvwsHNZZ#x!2fi^SnOml!;?|B!dZDU>wdwroiZC= z(yE0|&z)v-`pYc=t*mS68U=eO4>JR3VH++)ipGEB0 N^igd39|jo5z`tMrT(8S%5Z*uE*_IDQ6bQPjkle&aYJ?IZ@lzxPp>nfwJcG|CdwqC)5ut@P50dBL z9VoV-p~@>Dp)hNM5=NTQe)Em@n;CDnSj3F%r20{R=ZyXI;JzsWhvfDt1z^A%*7BUU zA{U&!W*|U*WgwAnDD+%G1BtC?Q#9|kn{8J&xMTOQ2>asHxx@5IlJ=3+R zhq`E7FeTM+xkai?MyLy8cG!GQj{O(QqY>Qzb+daw;XTzZ0hgZrcAZK$FV|gNqNVAI zPr5-<4QrQNV1M3O)TU^WisEtF5jo{^F8EMm1E*=^LOtfScCpq}w`-8jiPj%?MdNEd z0^FhjG-Zvp7u1J~kD3AdSN@h>`b2cRE+*{aZi{~xea-sE#E#+D%WU1XnAxt!COdok z?oIaJda}F!lhL9Mbm1kY)oH(^{q1G%U%-sqKBN#bA=Rx41Q&ddtKZ@6$e*UlMX)JM j)$POi*zefmNZ$1`ou1G=E_^;s{(>GIvtDCQJd%F^l@7E) diff --git a/gestion_conge/migrations/__pycache__/0002_alter_conge_type.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0002_alter_conge_type.cpython-314.pyc deleted file mode 100644 index 2ef6f1c8d2e2d54bb0758dcf3ee093014dc36d2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 871 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 diff --git a/gestion_conge/migrations/__pycache__/0002_remove_conge_validateur_chef_and_more.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0002_remove_conge_validateur_chef_and_more.cpython-314.pyc deleted file mode 100644 index 1ba98d2ca4ef0439f3ae71e5c0c13ba2e47fa229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794 zcmaJ?S0=IET02H~YOe?|n1(uB-;2*Y~ZT>=Xg~GGxA-8JO;B zFor|GXb-wbqT8?mn}DqbVEX{|D)WTJ_n}>4Y2nHiw4C3DwvY-2tj{CK@=U}FHGn%K z(^P{o9Dqa^q;=>@8?UsHtQs!9>pmqZEUG&b^Yu&>3deJae1q%2qK zbUOD5%a~+Q+VYi0iaLa-fDm1Glv0grgnS%Dsj015oseV3g-lsSv)uen=#XX!&0RFDtp%vrTTh>+Ulm_$-?b~KVy5W=fEX=;p8$+O4dTS2)9yS?x^ z6(3|i4BzbGZW%7MA13rt+_ z?@nxM-5tN01mIsk^O~n#^SseKzk27wvHf7;UEbX(cdPz2_w!4BV_tK=Wh*~fgc5Z$#MH#X@9fvN~7Ev1)$6h(kk2|)#Fgi-`mWLou-bmhj=U~ufPy9t6* z4~R2=gBw2us)|H=<-{#gE4VUiCu))KVf@~#XZF3>^_`h%m*8Wq{|JvMAwM;lJh?GA zd5qwY>=BP{k{Xq?W=La+%#)kMGZu(vHfi0S6rH{An;Dj-XWb&D+%HW_hH^V$oBJ|M zVxjC#5bUA?KYL-Di1-~Z~ z7ANnR9|Wq<2fm*OV6oqUl8J7$!;~pY=Tz<>gedqzwy<`(4MIB8i&<{1+b53a?0DS5cxlOP!5Ggxw> z=c;x$9yE3YaM7sM8&wc*WYTTC-1KT$_{VGG>=rc8^*!cm5o6QmXI}2U=lXV~K?Cs! z!zVJbiBqE^)3|IOJ|DTnxirWx9_1H@3pa)rmxjeFgW}3japkM^ZDaemxN|yXIqt}` zi}uH7{OY9NR>@LM@Y;{tNjcb0$B~X8+fh5qzP*M>=th|`^nr1 zMHBpfUw*VbmK&N4uzYUUyB>$pmv5YHanzTu-o7jo{3k+rw}F!6c&zKltPixHwn>WR z_N$Alj@$6}334W+x>1?nf)`}!Pkxg!E=Z&qwDr)~C45Npq#081uHXIblq!Y%$zGYK MQEneuj>U=m3vyVjf&c&j diff --git a/gestion_conge/migrations/__pycache__/0003_alter_reservation_motif.cpython-313.pyc b/gestion_conge/migrations/__pycache__/0003_alter_reservation_motif.cpython-313.pyc deleted file mode 100644 index 7bcf2ef257509db05674c7223bee061a232b40de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 816 zcmZuuPm9w)9G%I(CfOEiRJMr4rSy^o*Q$6}Sr&?A(OUP=(aRDXvduI^)1*$OqBlYC z>}5ZIH~l!fmzKGD>a9}6t20SUS8yOR?`7uw=J(z#D-|1vvCFojuMmJAlB|cm0?R`I z&Hw@kJ_B7yVOOEb4yb_!K*~*kR1fxzwP>?GR0~YiP;>RUB(B2kQ4~_2MQM_8W0VFY z&ITI|0OpD;UkPvqJU}4=R6&rcNVyBC=IQOD=N~wQos7&JslbQ5S5U*uZbEK zvZx)}?iRP6ue+H`2co}9NHW@ACG!K1x|MoQu?e z3wbFZLw^#pBUck1r7xWLBf_e5^5a>pWgD|qcEVY(Nb=7HoP6c0%OZ-hbVZjEbx&!BY%?vRX;PD^=&gu& z_FwR(e~ydLGFMOD3SIQ-H%UuZa1LMIW9Iwv-kZ6(S+o$W-47M^1tauRlGW0eVDSLJ z1a*;v4^Rtp+)}u56>Xtw$WbcDQ9HP8teV!}duoQc>S))It^bnLR)jTVgV^IN3KL-r zBcBFIZ{3AZen}PqfC=g#jvd66t^tGc4a~KU-Y%SN$S{b(j?&4sOaI&JVn^KpgK{~V zqwi=LhIyuAaLdVoL{pg0R@%fyOcNTvO@#`57;)COvB>$f?~Mb#Z);#giYK8rq(V!p z-e)xMMQN1vQnEb#4IP5<;(#X7Ht9v-fQmx1*}Owo$T;%?dqd<&I*Jfs5dx#f0R>zj z0>TSkNW?1$1ATAz8_bC%9oK`fihPy#(xZi?Ng(OjnCG!RR3P8|3*O4?!QjS(0c#? diff --git a/gestion_conge/migrations/__pycache__/0004_notification_reservation.cpython-310.pyc b/gestion_conge/migrations/__pycache__/0004_notification_reservation.cpython-310.pyc deleted file mode 100644 index 67ed7d887550558442f348d9d321bd1f128aca74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794 zcmY*X&2H2%5O!iGn@x8m)B~c3pK~tBN+3>E)m2LYAu7aj3I{8@GaC|;cuBHINuv| z9g;wclDgpJPRdb~9=O2KFGnBfEg*kSv{7A9-e7i&Ff%u%eYP45i?-s|bm*L^*>^=>=}jXdow ztE~B?MYF9cJtlDK8GF=|7OSjBkWE&jc6$|ZV#hGDvj}VV)&*8@9!+&1tzAkTN-7by z71Dho<>zfynOLI%Zm%f+jAFB2jJ|W(p${~eA`s2+-YyR4ZcDGL=U@jL|!gC$hx$lTS!Ikw#zCPGB5W_OweWm!i mi}oHR>hXWS<-#&xb8ouY-5#0f;Bd$4kzg4~v>gWZw%NN+D|F`L~p3>7xlCCTX&{1cDLkYUQRqJz$i_y70ybH8*yq2QIhVIM z6k3p&RC7#skBM%_ahL+d0c;WwmZ8Kk17cyUO|AdgrkTpVq}*ZHgT*^Ftjn2 z#*qhOrebK)>No`C492fJrV~bkHimJ-rheeqE^)okZIL!{E#lT~;?wXouyo0?*21(@ z3{`c_qr`5y>*RpR)+^I(dW^SfEFCopaIw^CNnb6MHKuxPl02I!jQs$>sbez;s9oy> z#K)LULCOJa#CBGfjV(acH%c2D^QFLhX_Se-7kF)>TsHKl)hEU|+>C#3(tyc4z{4O9 z52)BapfXg5NH|*G0`ea9Wuz?k1%6U~yU|yXGSN%V9;IiGuiQSqbmKTT-ODW;tYFj;Rx2x^;v_@BJ^by+UG#*%mC;TZw6Ak_}B`RuPkaP083SCIb z7GyRPV^y?j#rOvm6Ts+o2xH1$e*}93cHDP}QJg9t2Bsg!!(5?vK;>Zjb3pn6$8iH0 aaW{XUyT9ZNCx1|TLE}voV4LOim-`fMrH=!Mph;4nmet-S?WfFjAUVm{M~s?}W)-$90*`i#Uy# zVwNV@wJ5fcXSFaBsh^iP;UUR!M2_N0!@;ioIa){N+A(Z#Wo6|lvRsM@8aWcR!oKqp zOhXY6Ld-xsXm?!9?KDDfJC+-Qb8iBnhC>4CIv)1?Fm2;D_H69c9UPF5B&KcJ_D!U z96b^#ZUiJ+s<1t39*PH5+{ZP6bosYEQ)C6#!EW@hTia$NAUQU#viX>& zf?X@bzfmC}i!AaorvJ-Flt)CzeTV$SP`R*BdloNpgFND{z~5kri@qcX!axPW{h#3R Vm6{gRk4A5DxjVW12XH3>_zRj)9sd9T diff --git a/gestion_conge/migrations/__pycache__/0005_remove_notification_reservation.cpython-310.pyc b/gestion_conge/migrations/__pycache__/0005_remove_notification_reservation.cpython-310.pyc deleted file mode 100644 index 2aaaa73c4610afca1afeb366fe941c7c6993a4e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmZ`%y-ve05VoD9q-iU`!iJF8vNRn)EC?|meg-PkZdt4lU(-ZM9FnvWGpsxaPr^HR zW#SbWDCZQ^bl{{r-Jid^&$b*49D?$GdKed!kPjWS#l+wOwK_s0h@dISs81=mCV~m$ zg$M&^!k!JE33EzZ>l6EkOO=zwQ5n>+%&SnR+Oh=-#HWJbaT-zI05h>PurOa4#vNfH zXh(JL{?J^e1`$*mn1?ctKpl)mqhp@SI-bR0Gm)22LAh*v)o)i+uT?@QCzAqFo(CBy zQ`@n-qio(JI9Cqm*sw?e{XXZ9iy+laIucMoE+7wMs7i+HRBr;AT*6fhsZfqA;Ftaz zDR;5nn6J4vml=37TwQ>7DZ@nud0lz;rA(ma)7#07*O)Di-sUnrWP5@H^{9VI4~wVL zz?mJ?N)NXQGt8A~G0Ld201i~OJjD(G?he*_j(`zgyR9LrQ;~I9J7|s%Qg%>Y{p7P(!s+_u-7+R_sGij>Q zAx~qbZnxX*M>OSmvX>0YcBo*IiNg}B#$rU(7ee}~V9X;nqG^B3RL$70up9cyqva8$ zDxg$TCL^YCgVOht{>ad@cY)HqM96%Uq%7qo9I=e05le>&lfo#b>OD5*hwMedMv)45 z#?IwZS1Fab?r%u@c`lN{BxjOR(bP#(qlOwh-z0DK5RzUW$r|boaMgNA8#4czNyn^4b|_r_BBXGnv4w diff --git a/gestion_conge/migrations/__pycache__/0005_remove_notification_reservation.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0005_remove_notification_reservation.cpython-314.pyc deleted file mode 100644 index 83dce27e08104bccddb10fcb6eef75137b0d8761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmZ`%zi-n(6nzZel_IF3Lu^h?seO$O96R-0DzRli z%={btIWW-bRwgz}EzG>L8xjU?c>ccg`}MtdJJ(iy!1MjZrkD_bABN12a|JH;5X@iz zlpH{pD6$C+*aB*80JZz1SD6PazPombl|?J}q2>HEv_-T(7NcyaM4HHO;SKP&)IQ$M zpbv^rP}aazHg(%XRr*e^z8p|uY=TgW+K;S~qvr~(s48`^=!*7U&#UQrk}7d5!lJgW zWnA*?v>+`DyGkP-vt&5tx?=1XIK=DK5tpV_7N*IF>wBF}XO}JKVasVeU1dcI#ADen))5lZYpw;4(8~(>2P+=_%hAJdU)VPWaWt zbb~Reu<4KumCD4?RB_2zW;S?X2A~Je9tUqxnGCwU;5nD?RXPdY9MEoQ{?QXGRuQ1G zhbYEW{jb3GWOxozEYXRmS}yqjm$=C^9|eB;6Sdh^n;JwLad z8}7%KSz{i3*s`@3y&EQ@v>hE4qRZ4qN$GYQk*@BQQ+%4;L5j~4fgc5ZwU3Y1brCK@Ig4f&&hE}FutuxvPH6-6>F0x!fR5my$6emzV2+*>(HOAIho*P49h$Ya zG(K-}A!%X1WI!(RITx2THgHB)O;pG$<)%te-_RhPXG&cRdEFP(uj6KcpXZi)l$h0H!Z>F|^qAHhpLG277h> z=Kbq5gjx3mj@#ePIr$d_KlBd_gJfpA3tmn8Z4&`6jM!$Lh diff --git a/gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi.cpython-313.pyc b/gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi.cpython-313.pyc deleted file mode 100644 index c5437fc0190ec5bd561c64e35e9865fcbd00e61e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmZuwO>fgM7`Br%ZL(H$g^7uxsY0Dl4vb!gGz3E})dZ#NP>TaqG%Ib~Dv-v-PAkC) z35g3AF8dGgZ`dxaeC4!TQ9)d>(^c&xEX8@A_sg%JH<{;hHjwMfyXiH z&}9t^S1)Wh$IL2&KX3gaTMEmJO z_m$LwyVYj1RE=rdtrPw>rbD-0chU3KGxv(7?&=G0rMeH+mBee>?G4{EHI!sifIpVo zXD~B?Rf98KyJ3E8&TL>^pJa;Xnd0m56Wu>3b()TeuXCy^u(VsWCn+#>e2L?ZKOA@m{JkyQRBfGhhC;9SOzWfJBl4Sn_NM+~) diff --git a/gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi.cpython-314.pyc deleted file mode 100644 index 944695870de788fef90dcb15f0a36e8d7a82a967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 869 zcmZuw&ubGw6rS1LY<9P4t1=QqWTl z;@Pu*f&MpIgoe3#@)l^(t8aE2TcLA!`+YO}-uvFSvsV}9Jp}9XtzI<22>sM#wsHqx z?>>Mr+Co0wKn*N$!;r>BR6>`KZ!96-Y~!XqOFDdBGcznr-@1${xnG)A4CM`?J`ZHX z5~1t?3u!F6hgk@@2V^e>Fh*@8v5%y&WkVsiilx=gH48@*G7Ms{Z?yBx#beJvgr8e8 zvNPXaI}iu;Tt6>8-vNo9a-Yt$sX0ys<=d%HHP@knMG0X%jMm?m>M2_ZuV|hGl8*Sw zJs2$?(q1r%r7CPw-eH20BpA?&2{Y?CQ>HAvr*gfB#^G1A32F0vDzqP@%aT4-Lh#3w6d~8YJnK^4O5hzE+74Awfx(1XA*-Gm=yg!WSTG zPaCUVJiOU@4iZJH(QG}U;*Dg(*0T-2k%j-pY#m;M77Tpj=y2qS-PPecu5VWwG!Sjnnq{$<#ycsao`u)i3m0{pFA1tNpy?dQ;Ob z+8-YCv$J}e6-&9{>mcc~YS>BbNKME(>cO&imjNl~c4qQjejX_NEl8Y$Ff}p8e{6&+ V`*s1_pS<10^7qB^Zv-UG{tE{mF*btn~_|(rq~_r=C1v4Vsnr?e11E!A6%#Y6Io*#~X(}8p6F! z4IQM47CSS1LcMx`v!bh7+h3uX=!QBJHI4*nyRL?2fZ6_`))f}YLpC`gB5OC*OZ@jkzcO=^a=rQaC3~l9%w{AcV0NUZU5%=3 zvR6hgu$8ATUO&&g*-|{a9FL5&f4Hf$+)#E4zp9EX6wpfz?k_(WH?0wEKdmtfMEEC+ z0v_-_4}bs9i+}h#C!^3NuppK7K1{qOUI~AA`OdX>%SjYJTC4k*yLPVc9=|UB0te0Y AjsO4v diff --git a/gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi_reservation_date_debut_range_and_more.cpython-313.pyc b/gestion_conge/migrations/__pycache__/0006_reservation_besoin_ordi_reservation_date_debut_range_and_more.cpython-313.pyc deleted file mode 100644 index 0b5130dbb05ab578f04385cfbf439e3189f5ebfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcma)5&rcIU6rTOjZFk#BT|o#Wrj!!x1@M3g#$c!oQA7@1y_hwVZFkzNYUdGXDbO@R<~HZ$|RH}Ac9`M%jfK5rlxcYp7AB?X~x z!bnEy3=CEQ>>~?V(o?h{F=<0)auH3T60+oJWGS{(*OH{sz6|xmU`ku9q)r8_$lU07 zZRSKC4MMJUs7w5?DUOnnJp+TU0QQlMm}DU)TM|<&c~N4jovP=O;L#4PD3)rc>xGdo zL2#C`G%LL#TbUK*FZnv;n@QGahkOIR>_78!|C7I{FvH5TZ2MYejO))5HckcGz)!wS zLctDh(x6Rvd1+~B88gzMy95U`@>*UqW)FNJVY@Nr*$YO4gwzW#Wv;jWcB&d%MfY|u zC<<5LM5M=x58)M2zW^>ndu?;GxE9fuc8!GF5$)Qwnr%I)KejJuVvk<1 z4eH!GuLM5F{RRJJ-mnw6zyu=;-8W49Jn>EhGah#bs z%FLWhmQSwVIx(k?&G{p9{(yX`+K1+=A8A!LE{Dy?W;oZEdk&(=2??3fW3aYUt^q(Rv&3#9)f8&ZCO}xn zI?M}$i0i%3C4STqTj|K17)Poke%nG!vJsOvGyoc_N=$8OjeMFsT7isY%dJeKFp8xX z>;VZ|Tat$nTVFaM_aCebU|A``Xa%e+e8z>a%!^`G6=vEwmb3HFx^ZqiPkY95lthGX zCk^DeHi<$nz#(vgdc=2m!G+VI9qQCBSHH-wC!LG4_2vo@8|4|H=LrvczJPg@eZb>7jDBZL*{k8PQo2xf9t5^c@`%WFyYK*m;cK#Evg$fp-bx zu16#0djSbTvF(yR30x9%JQ7hMDbGH3-BrP#s>03J!q6v9kc7Cg0woPiGwhS}7EWRu zF(B2!4rA1Vf=Pri72+QW;raU~_nWVPZPctcnkyvQVqw4eV$H4(r&AR-N7uUvwcq`> zPW+Etr{ZT@jh(=SE>KeKzop`BC6joN(I=QbqJfT#nlw=434Q0;z(mHCgY3*+cII%Z ze0cf#p*4MAE$mqfyX0G~xo@?OGpb>pO`A{BN_$pmcjD{HzIE^1thw{ErV5t+;VGR> zxvf`JZn&@Eo`hAmooJCLFk~-UIm|7B#j_8F3O}SJaN(Jw=o(A|MUteS=;pD0RnkA3 P2Zi$YLislWCpr5EibgI4 diff --git a/gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-310.pyc b/gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-310.pyc deleted file mode 100644 index 6c10521e9f70e84d283ada4efb21cb606ab09e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmZ`%y-ve05VoDPq-iU`!oU#3bwgbA)v6(fVouT0N)x<~o7h%RdUrQW% EKj?9s;{X5v diff --git a/gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-313.pyc b/gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-313.pyc deleted file mode 100644 index f360bcaddb4a3eefa5f8df404eeecfb0a8c4d939..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmZ`%O>Yx15FPJVcQ=hF<)eVAsGwX{pppw9A{412LQp~vvA7^h)+Xz&7Ls*pZz^#^ zLgLJ&KZ2hFmsY-V>Mbbrj=kHEaKMN08_yfh%(Lh9dI)+w=p1G_0{Cg1#d0sfysg0r zV8G}#>?478;1=8iY~2BD6V!JW3CsPFU14FRPUM~&CqgP5XQ_ybjOTK=Mwb)5OS9^^{3dl@58H zGPT`mwH{N!BooJFH*~-x&vME|lBwECK-E?v`l4{m6E>oGJZ8!<_8S~Tf%0j2M5ziX z)s*RoX}nJ9(KH?zn)a?xdYB1WjIx~N+=LT0VR^#xVaB8|dZ}8UjrlQqk+D&tLOx-a zVyPRH%0jm~q;XM*Y%ndDq*T;((%fjF;^%GhR?j2JUaz;aSMYbF%jAcGPe`{*@T>ky z@{a~&`4U8{@kFa(D*sQE-N{E`9;q}&RC!;UFEH~UXwPixy7#F!3n936>NkG)jkB%h z+117`*ABv&?QVLX_r=Xc_CaK;AbB6>Dc?;7<=oZPW|)e$rIGTVRYG>eZSCr>336MT cnT-&-@BrQY?bVR?H9XyDe&1+bfOg94KUrwL?f?J) diff --git a/gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0007_remove_reservation_besoin_ordi.cpython-314.pyc deleted file mode 100644 index 98e0fa7d6ac15b722bf7851704b87e74959824e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723 zcmZ`%J#Q015S_iR_|6F=fC)up6ye5-WVt|z6j?N&$Uz~p7SWxvvV9xtg1u*U*OBO4 zAZq>wKL?sb+fvb;lt9g_FUF=|i@7&@GjHb2?B2bN2=KH{&Qn1EepqL5{5x>dLNJ3f zpyU|ZM3bjbfnA`^Hc+=qI^H5-`F-vdSUc2v26g|Zb?d}L<8&x{I?aR{ETaMbmO8@Q z8FWDt3fegfv`d2q(O%c@tgj{%7@Hu}q3(fG_!zlHJzb(c7F{#pn?*HKmRxapIWKL> zeXg=puuLXt-NB}^gpZi$jk)ox{R*dey)op}IY&Q4V3JqIj2~CO385lDW zW5_riam4G4eVFz}mKDAGjGd=a=}{`U$n5WgPq;|97^GZDJ2X?Ke4JhKqm+*l6J-;A zH!o9ROlcG_U_Gs6+MjB!7?XB?H&(vszC4WIp-L6EJMk;7-s@}fgc5Zws1UvRvN)NEv1RY3yKy9Xg(LkT z{H48e;x8bfGP?ye92jZFJ2OxFW}eqfCL>1n^>|%*&e->m>{~*~3AuYj0T}RxwLIso z$OUJw7zmJG7)a!`{48?`$pxGBeh`+;gdeq4X^U-TwDbMe05)zFTKhJjSKDIm)^ zuv`Eyc`h-jdw~G^^#Bs+LH}C7;962Ig_MYfe)#q;1JO-Nbb(B*j4shXTr3t(l*QKU zkUkFWF3zHs=uD-Ru~7Mgy@o&7>zrLZIE}a|Jnr-~fOWCO&Q6~b)c|l^bj{X}cW9T! zq0&W*Gf69lHDl(JQ1iWYg$u+iApv6e`62sgTFllY1z`5lthyHU)@ARksd1|= z-n@UE#qf`2+1(GzNWG{3lWo5FWW&qole_yAQYK__lk@}^e9V(y=}qjP&k{d`y3nPW g!!oWDmx#@~X>U(QbdOJ;-3oI|kCC~+aZen{-*aZb9RL6T diff --git a/gestion_conge/migrations/__pycache__/0008_reservation_besoin_ordi.cpython-313.pyc b/gestion_conge/migrations/__pycache__/0008_reservation_besoin_ordi.cpython-313.pyc deleted file mode 100644 index 3073b82dabe509cdbe2d74eec7701adb90214509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmZ`&O>fgM7`Br%ZPHeB1w_TrRKX^c%jgBc5EOM(6O6G#EiRM6N*lKdq;av+N^n9# z;>3Z={sa6Qwo5BtIqgnyC-Sqeu7f zb0v+yje~<~BVk9lNyY1g4REuG(UaC={FkbD`3A7k_wN6M-5$K<`dZRS1MxsjAHmcH zP6JL&Y-*_^CxOv;sUdF!;i^@V=h#V6$#KeCqNPEEUPf7s{i zi~SBgOFF?TKkl*Zpq)yR3Nb%XH#d*HrjX3tp9@{*8;YtQ1qf}Qnh?U@Hh|twy8!La Q?zpshQri3l6iKuH05>w|s{jB1 diff --git a/gestion_conge/migrations/__pycache__/0008_reservation_besoin_ordi.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0008_reservation_besoin_ordi.cpython-314.pyc deleted file mode 100644 index 07ae4d0e448e7c38acb2aaf157d433d55f8d931f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 871 zcmZ`&&ubGw6rR~lHrZ`jYqYdje^lBcK`1>474cWAlvHX7D|*^=*koVA>Sia-ObUAH zK|K2h_y_2JqeV!Wt0!-P7QOmrx3Lv;4sX71X5X9deLHh=YSJS(K5lnnO$qsK$aoY_ zz|lhl`(&5+bc@ufqIFAI*T@XHPJC;Y_;!;voN?0We9O+Uvi-s$sTF@1TC=p*i@PFJ zF;As-dOU(ewokJNaZkumf?%ICiK0GH)~qqI6{sM2kycY1o6BjcuD&Go}k>O&2>cB++NGgK3jpkj4_$=4lu7 z;_B+^8WYgtdw|m)A?%Ef+Jr8%tR7?9V+`vL5Tw4}{Kr9|8sD3FYaDa<-D z*6J6J?gYu649oKe<@v+erNi@A536&->heK#`4fEE2)}#W)A9V(>b<2?2m5iJdQg=oMS;2u7 z0(iv>iAj@&0XS;*AfYe45iq)Wi0?g(SE9%uqXou({OMsbtud|8g(cL|=nDPOd_I4r zEIPE`;&N(%&eU2N3$=f?lkf*n_NV|CL$7Q}#h{E$cUh?;!+ zUOAEU`VmP_sZgZ`!eH@u{oRJ&WJKzY$Ye~&|HiglPxjP~HLa0K>ol diff --git a/gestion_conge/migrations/__pycache__/0009_reservation_date_debut_range_and_more.cpython-313.pyc b/gestion_conge/migrations/__pycache__/0009_reservation_date_debut_range_and_more.cpython-313.pyc deleted file mode 100644 index 9096966d4fb059d79c16e8464d7ca15004b9c0fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcma)4&ubGw6rR~%$!;4>W5r@C)-;z~+FS%vq!0|EG4_zri!2PA>?E$;?4~mt!J8m> z_R_0oy?ONCXfFwK_0(G=ir~pN8$;Ss#DRJH-n{qCyzhHE&E*^f>+A2sfN2PQQ^9358Y*HT1lyNC(FQ#OD7(%`82OnDiYw>pAcSyh z&E{q;iC?&NCJvH#;MVIddE9#Bo)gbq{3MX{(C`M{C0?ZF$aW|11@2oKDA zG_jDqJJGdO>uq!5Ap6=VyMB^gAKxgASGLB5wNasXQYd~}{Zc9n?YHxujv-f9n+2gk%#IS|BXrg0`e_05Z Ve^@Kn`rwT6rQ>|*CxReF{{i-=^|k;2 diff --git a/gestion_conge/migrations/__pycache__/0009_reservation_date_debut_range_and_more.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0009_reservation_date_debut_range_and_more.cpython-314.pyc deleted file mode 100644 index bedff98d86b09e4980ecaa4b324f7e65f034dcd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 972 zcmb7C&ubGw6rR~lHoKdqO=C-i6s12dK?perwM9fRNGe*ws<))WCNm9dH@k6WB6!O| zJo{(p&7*&USBuavS5MvoDSGwIZbRBq1PA8Ldo%OB_r7oD&SJquFuvJ5U)Wgf}oHzH6T-N{Qsv6Sqa?Pto_>kK8~e$-!4L6ky2qXPgJdQ50NNjHXcYQ0vg z-6I!Dk`5CwKw?gVN?zF{Nlb`x34ubxkb%EI$eW=b>S7Qr5poo8A;TbIQLK+C8?cD7 zs2ecBwR*~aMClXV70>9yw`dK z@`zTW*{U;fEaO4z#lF`_%_VNF`QK>)%iT*Xuj)$thyp*(s)Ki2f6&BeNBCeqpoxW? zy@_e8SfghX7dbah?ed9T9MM7>0_v@0z|dUqW>W#3QV|FICRoLS4* R`skh(x4##+eY zp=PKk41WB_h*cODjqrTrI6PM zm30&=*U}3I40Zgul4;xveSkWz2p|lBad5qC{SmGmleazyI za3k*7nSVFQovkRjWkyKJg`KY}svDnNIlG_+uD}2MmUL!^da{{pVoYkFBFC&IW^!cG z$pq5Wq=&0Vr@7A;R^M*8FO*g?dhPeR{4~~KfD0anJ;a%77t-Z7k9+sVd=UC4?<`OG Mg9zV_Y^3(|8=;Y#Y5)KL diff --git a/gestion_conge/migrations/__pycache__/0010_merge_20260122_1101.cpython-313.pyc b/gestion_conge/migrations/__pycache__/0010_merge_20260122_1101.cpython-313.pyc deleted file mode 100644 index 2a7e3e6001326bb1cb640548d8941297a3f6ff82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcma)4&ui2`6n>Lz(%s-%>U%3MA5wy^Hqnf<}in*(|IzRY`H=6!Fb&1L{*UChplf&u)oWVO5{m>wB$ z2?-?Z6`U|)Ew~L2AaU+O;&OIYTNSL|kK6?&C$ELxl_eq5!LZ0FtqNJH{yG=HS(0hX zfJ@*&ECF&7MsDIH?!H5{eIPHXk)L~^uN$vdI#<4_2p!$bg|fQXmt`*W(vlslDIea|?9z}74LqVqR zcGNzI;&vP3IEwd1U&u~>9<0UcjtSpj;zQ#-`(1xN@!VVfMRyXgE&uBYZLM-oLsvJl zkH$&4m-Wcrf`yPh?;>s6AYFgFaOMf^7-}vasCy<%T*lbU2X_CjUuXXJ;MeBv&&}N# I7&5Q^2b$Zu;Q#;t diff --git a/gestion_conge/migrations/__pycache__/0010_merge_20260122_1101.cpython-314.pyc b/gestion_conge/migrations/__pycache__/0010_merge_20260122_1101.cpython-314.pyc deleted file mode 100644 index b38b52a0c6d3eb48ca5849ae6d0e481a09d51f9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 683 zcma)4L2DC16n?XtY?H-mTUtaAq}t0WgxydIO6frbQ_)gJylwm3WT#;?*^M(3p|>2w zbN_}v$CENwPu>Di&%Vhfgx;LP+wYrs@0<6&okusbvh(*m%750HXRYMr`N<^Moqi*a&l6w4~C2O{USY$(iXhS5K zd^~XY2I9wYHdvh8LcEYln}IAuQM%(?j6{)(q9=v6VL1{Dlk5(nHZ(vFGh>vbE`>%^ z0W~&ro>~6vN&1$i)M@85eJ=C|Q;yO%$GlU8Yp$d#_tQ8|VjK!Z1GnS$L7cSPm?Ux1 z8eJ;)^++&HO!CShn)6au1*q waw1jQ79ra>tXw%#+eGQjfxb&&>NCdv1i*HG2Mrcnh2J;!zHRLN1tRn6f9Ddn5C8xG diff --git a/gestion_conge/migrations/__pycache__/__init__.cpython-310.pyc b/gestion_conge/migrations/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index fcf91ef17300a2a955d9151b3b9ddc671e314e2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143 zcmd1j<>g`kf-2u_I|p@<2{`wUX^%SJyVKQ~oBEwLms zH&H(~KP59wzc{lfLq9#WxFj<_FFrXxFFjR1H#5Bms3bqHSU)~KGcU6wK3=b&@)w5< cP)BJ_s$CH)&@e_IE(S3^GBYwV7BK@^0Enh1^Z)<= diff --git a/gestion_conge/migrations/__pycache__/__init__.cpython-313.pyc b/gestion_conge/migrations/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index bd80a58b13123ddc0e85a68877bb3b9c1e101fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmey&%ge<81WAhAnIQTxh=2h`DC08=kTI1Zok5e)ZzV$!6Oi{ABz4Qp*(xTqIJKxa z#?i+|!LcMiD#j(XIJ+djAjZWdCfGB`BPKnyxFj<_FFrXxFFiFTH#5B`5yUT!iI30B o%PfhH*DI*J#bJ}1pHiBWYFESxG!|rSF^KVznURsPh#ANN00QbMG5`Po diff --git a/gestion_conge/migrations/__pycache__/__init__.cpython-314.pyc b/gestion_conge/migrations/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 2870925b9db6ed7509ace7caeeaa44a92a75d9cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmdPqhza%#@_-QOsl_Fk`FZil`FZK7F}a!PMTsDOaZG%CW?p7Ve7s&k h { - const form = document.getElementById("form-detail-conge"); - const csrftoken = new FormData(form).get("csrfmiddlewaretoken"); - const actionUrl = form.action; - const id_conge = document.getElementById("id_conge").value; - const validation_hierarchique_input = document.querySelector('input[name="validation_hierarchique"]:checked'); - const validation_hierarchique = validation_hierarchique_input ? validation_hierarchique_input.value : null; - const validation_direction_input = document.querySelector('input[name="validation_direction"]:checked'); - const validation_direction = validation_direction_input ? validation_direction_input.value : null; - const motif_refus = document.getElementById("motif_refus").value; - - fetch(actionUrl, { - method: "POST", - headers: { - "Content-Type": "application/json", - "X-CSRFToken": csrftoken - }, - body: JSON.stringify({ - id_conge, - validation_hierarchique, - validation_direction, - motif_refus - }) - }) - .then(response => response.json()) - .then(data => { - alert(data.message); - navigation.reload(); - }); - }) -} - -if(document.getElementById("validation_hierarchique_refuse")){ - document.getElementById("validation_hierarchique_refuse").addEventListener('click', function(){ - if(this.checked){ - alert("coucou"); - document.getElementById("motif_refus_container").className="d-block form-group mt-3"; - }else{ - document.getElementById("motif_refus_container").className="d-none"; - } - }) -} - -if(document.getElementById("validation_hierarchique_refuse")){ - document.getElementById("validation_hierarchique_refuse").addEventListener('click', function(){ - if(this.checked){ - document.getElementById("motif_refus_container").className="d-block form-group mt-3"; - }else{ - document.getElementById("motif_refus_container").className="d-none"; - } - }) -} - -if(document.getElementById("validation_hierarchique_valide")){ - document.getElementById("validation_hierarchique_valide").addEventListener('click', function(){ - if(this.checked){ - document.getElementById("motif_refus_container").className="d-none"; - }else{ - document.getElementById("motif_refus_container").className="d-block form-group mt-3"; - } - }) -} - -if(document.getElementById("validation_direction_valide")){ - document.getElementById("validation_direction_valide").addEventListener('click', function(){ - if(this.checked){ - document.getElementById("motif_refus_container").className="d-block form-group mt-3"; - }else{ - document.getElementById("motif_refus_container").className="d-none"; - } - }) -} \ No newline at end of file diff --git a/gestion_conge/static/gestion_conge/js/index.js b/gestion_conge/static/gestion_conge/js/index.js deleted file mode 100644 index 1d156cf..0000000 --- a/gestion_conge/static/gestion_conge/js/index.js +++ /dev/null @@ -1,71 +0,0 @@ -const $ = (element) => document.getElementById(element); - -const url_liste_conge_attente = $("liste-demande-conges").dataset.url - -const tableau_liste_demande_conge = new Tabulator("#liste-demande-conges", { - layout : "fitColumns", - columns: [ - {"title": "Nom et Prénom", "field": "prenom_nom"}, - {"title": "Date de début", "field": "date_debut", formatter:"datetime", formatterParams:{ - inputFormat:"yyyy-MM-dd", - outputFormat:"dd/MM/yy", - }}, - {"title": "Date de fin", "field": "date_fin", formatter:"datetime", formatterParams:{ - inputFormat:"yyyy-MM-dd", - outputFormat:"dd/MM/yy", - }}, - {"title": "Type de congé", "field": "type"}, - {"title": "Date de la demande", "field": "date_demande"}, - {"title": "Validation par supérieur hiérarchique", "field": "validation_hierarchique", formatter:"tickCross", formatterParams :{ - allowEmpty : true , - }}, - {"title": "Validation par supérieur hiérarchique", "field": "validation_direction", formatter:"tickCross", formatterParams :{ - allowEmpty : true , - }}, - ], - pagination: true, - paginationSize: 5 -}) - -const bouton_demande_conges = $("bouton-demande-conge"); - -bouton_demande_conges.addEventListener("click", (e) => { - var modalDemandeConge = new bootstrap.Modal(document.getElementById('modalDemandeConge')); - modalDemandeConge.show(); -}) - -tableau_liste_demande_conge.on("rowClick", function(row, rowData) { - const data = rowData.getData(); - $("id_conge").value = data.id; - $("employe").value = data.prenom_nom; - $("type_conge").value = data.type; - $("date_debut").value = data.date_debut; - $("date_fin").value = data.date_fin; - $("date_demande").value = data.date_demande; - $("nombre_jours").value = data.nombre_jours; - $("solde_restant").value = data.solde_conge; - $("motif_refus").value = data.motif_refus; - - if($("validation_hierarchique_valide") & $("validation_hierarchique_refuse")){ - $("validation_hierarchique_valide").checked = data.validation_hierarchique === true; - $("validation_hierarchique_refuse").checked = data.validation_hierarchique === false; - } - - if($("validation_direction_valide") & $("validation_direction_refuse")){ - $("validation_direction_valide").checked = data.validation_direction === true; - $("validation_direction_refuse").checked = data.validation_direction === false; - } - - const modal = new bootstrap.Modal(document.getElementById('detailsCongeModal')); - modal.show(); -}); - -fetch(url_liste_conge_attente) - .then(response => response.json()) - .then(data => { - if(data.success === true){ - tableau_liste_demande_conge.setData(data.data) - }else{ - alert(data.message) - } - }) diff --git a/gestion_conge/templates/gestion_conge/index.html b/gestion_conge/templates/gestion_conge/index.html deleted file mode 100644 index 17d1ff6..0000000 --- a/gestion_conge/templates/gestion_conge/index.html +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% block 'titre_page' %} Gestion des congés {% endblock %} -{% block 'contenu' %} - {% if messages %} - {% for message in messages %} -

{{message}}
- {% endfor %} - {% endif %} -
-
-
- Congés refusés -
-
-
{{ nombre_conges_refuse }}
-
-
-
-
- Congés en attente -
-
-
{{ nombre_conges_en_attente }}
-
-
-
-
- Congés Validé -
-
-
{{ nombre_conges_valide }}
-
-
-
-

Liste des demandes de congé

- -
-
-
-
-
-{% endblock %} -{% block 'modal' %} - {% include 'gestion_conge/parts/modalDemandeConge.html' %} - {% include 'gestion_conge/parts/modalDetailConge.html' %} -{% endblock %} -{% block 'js' %} - - -{% endblock %} \ No newline at end of file diff --git a/gestion_conge/templates/gestion_conge/parts/modalDemandeConge.html b/gestion_conge/templates/gestion_conge/parts/modalDemandeConge.html deleted file mode 100644 index 511d7dc..0000000 --- a/gestion_conge/templates/gestion_conge/parts/modalDemandeConge.html +++ /dev/null @@ -1,26 +0,0 @@ - \ No newline at end of file diff --git a/gestion_conge/templates/gestion_conge/parts/modalDetailConge.html b/gestion_conge/templates/gestion_conge/parts/modalDetailConge.html deleted file mode 100644 index d3d3051..0000000 --- a/gestion_conge/templates/gestion_conge/parts/modalDetailConge.html +++ /dev/null @@ -1,92 +0,0 @@ - \ No newline at end of file diff --git a/gestion_conge/templates/gestion_conge/parts/modalModificationConge.html b/gestion_conge/templates/gestion_conge/parts/modalModificationConge.html deleted file mode 100644 index 7a920ca..0000000 --- a/gestion_conge/templates/gestion_conge/parts/modalModificationConge.html +++ /dev/null @@ -1,48 +0,0 @@ -{% for conge in conges %} - -{% endfor %} diff --git a/gestion_conge/templates/gestion_conge/parts/modalRefus.html b/gestion_conge/templates/gestion_conge/parts/modalRefus.html deleted file mode 100644 index ab358f2..0000000 --- a/gestion_conge/templates/gestion_conge/parts/modalRefus.html +++ /dev/null @@ -1,24 +0,0 @@ - \ No newline at end of file diff --git a/gestion_conge/tests.py b/gestion_conge/tests.py deleted file mode 100644 index de8bdc0..0000000 --- a/gestion_conge/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/gestion_conge/urls.py b/gestion_conge/urls.py deleted file mode 100644 index c8b0511..0000000 --- a/gestion_conge/urls.py +++ /dev/null @@ -1,27 +0,0 @@ -from django.urls import path -from . import views - -app_name = "gestion_conges" - -urlpatterns = [ - path( - '', - views.index, - name='conge' - ), - path( - 'demande_conge/', - views.demander_conge, - name='demande-conge' - ), - path( - 'liste-des-conges/', - views.liste_demande_conges, - name='liste-des-conges' - ), - path( - 'validation-des-conges/', - views.validation_de_conge, - name='validation-des-conges' - ), -] \ No newline at end of file diff --git a/gestion_conge/views.py b/gestion_conge/views.py deleted file mode 100644 index 0b92e84..0000000 --- a/gestion_conge/views.py +++ /dev/null @@ -1,225 +0,0 @@ -import json -from django.http import JsonResponse -from django.shortcuts import redirect, render -from django.contrib import messages -from django.contrib.auth.decorators import login_required -from gestion_conge.forms import CongeForm -from gestion_employe.models import Affectation, Employe -from django.forms.models import model_to_dict -from django.utils import timezone -from django.db.models import Q -from fonction_utilitaire import fonctions_utilitaire -from .models import Conge - -@login_required -def index(request): - """Vue de gestion de l'index""" - - employe = Employe.objects.get(user__username = request.user) - membre_direction = 'direction' in employe.user.groups.values_list('name', flat=True) - - try: - affectation = Affectation.objects.get(employe = employe, date_fin_daffectation__gte = timezone.now().date()) - except Affectation.DoesNotExist: - affectation = None - - try: - projet = Affectation.objects.get(employe=employe, date_fin_daffectation__gte = timezone.now().date()) - except Affectation.DoesNotExist: - pass - - if employe.chef: - nombre_conges_valide = Conge.objects.filter(validation_hierarchique = True, employe__departement = employe.departement).count() - nombre_conges_refuse = Conge.objects.filter(validation_hierarchique = False, employe__departement = employe.departement).count() - conges_en_attente = Conge.objects.filter(validation_hierarchique = None, employe__departement = employe.departement).order_by('-date_demande') - - elif membre_direction: - nombre_conges_valide = Conge.objects.filter(validation_direction = True).count() - nombre_conges_refuse = Conge.objects.filter(validation_direction = False).count() - conges_en_attente = Conge.objects.filter(validation_hierarchique = True, validation_direction = None).order_by('-date_demande') - - elif affectation and affectation.role == "chef_projet": - employes_du_projet = Affectation.objects.filter( - projet = projet.projet, - date_fin_daffectation__gte = timezone.now().date() - ).values('employe') - - nombre_conges_valide = Conge.objects.filter( - employe__in = employes_du_projet, - validation_hierarchique = True - ).count() - - nombre_conges_refuse = Conge.objects.filter( - Q(employe__in = employes_du_projet) & - (Q(validation_hierarchique = False) | Q(validation_direction = False)) - ).count() - - conges_en_attente = Conge.objects.filter( - Q(employe__in = employes_du_projet) & - ( - Q(validation_hierarchique__isnull = True) | Q(validation_direction__isnull = True) - ) - ).exclude( - Q(validation_hierarchique = True) | Q(validation_hierarchique = False) | - Q(validation_direction = True) | Q(validation_direction = False) - ).order_by('-date_demande') - - else: - nombre_conges_valide = Conge.objects.filter( - employe=employe, - validation_direction = True - ).count() - - nombre_conges_refuse = Conge.objects.filter(Q(employe=employe) & ( - Q(validation_direction = False) | Q(validation_hierarchique = False) - )).count() - - conges_en_attente = Conge.objects.filter( - Q(employe = employe) & - ( - Q(validation_direction__isnull = True) | Q(validation_hierarchique__isnull = True) - ) - ).exclude( - Q(validation_hierarchique = True) | Q(validation_hierarchique = False) - ).order_by('-date_demande') - - - return render(request, 'gestion_conge/index.html', { - "nombre_conges_valide": nombre_conges_valide, - "nombre_conges_refuse": nombre_conges_refuse, - "nombre_conges_en_attente": conges_en_attente.count(), - "formulaire_demande_conge": CongeForm, - "employe_est_il_chef": employe.chef, - "membre_de_la_direction": membre_direction, - "est_chef_projet": affectation.role == "chef_projet" if affectation else False, - }) - -@login_required -def demander_conge(request): - """Vue de gestion des demandes de congés""" - try: - employe = Employe.objects.get(user__username = request.user) - except Employe.DoesNotExist: - messages.error(request, "Votre demande de congé a échoué car votre profil Utilisateur n'est lié à aucun profil Employé. Veuillez contacter l'administrateur.") - return redirect("gestion_conges:conge") - - retour_quota = fonctions_utilitaire.solde_conge(employe) - if retour_quota["success"]: - quota_annuel = retour_quota['quota_annuel'] - else: - messages.error(request, retour_quota['message']) - return redirect("gestion_conges:conge") - - if request.method == "POST": - form = CongeForm(request.POST, request.FILES) - if form.is_valid(): - conge_obj = form.save(commit=False) - conge_obj.employe = employe - - if conge_obj.type == "conge_annuel": - if retour_quota["nombre_jours_valide"] + conge_obj.nombre_jours > quota_annuel: - messages.error(request, "Quota annuel dépassé (30 jours max).") - return redirect("gestion_conges:conge") - - conge_obj.save() - messages.success(request, "Votre demande de congé a été enregistrée.") - return redirect("gestion_conges:conge") - - return redirect("gestion_conges:conge") - -@login_required -def liste_demande_conges(request): - """Vue de liste des demandes de congés en attente de validation selon le statut de l'utilisateur actuel""" - try: - employe = Employe.objects.get(user__username = request.user) - except Employe.DoesNotExist: - return JsonResponse({ - "success": False, - "message": "Votre profil Utilisateur n'est lié à aucun profil Employé. Veuillez contacter l'administrateur." - }) - - try: - affectation = Affectation.objects.get( - employe=employe, - date_fin_daffectation__gte=timezone.now().date() - ) - except Affectation.DoesNotExist: - affectation = None - - if employe.chef: - print("chef") - conges_en_attente = Conge.objects.filter( - employe__departement = employe.departement, - validation_hierarchique = None - ).order_by('-date_demande') - - elif affectation and affectation.role == "chef_projet": - employes_du_projet = Affectation.objects.filter( - projet = affectation.projet, - date_fin_daffectation__gte = timezone.now().date() - ).values('employe') - - conges_en_attente = Conge.objects.filter( - employe__in = employes_du_projet, - validation_hierarchique = None - ).order_by('-date_demande') - - elif 'direction' in employe.user.groups.values_list('name', flat=True): - conges_en_attente = Conge.objects.filter( - validation_hierarchique = True, - validation_direction = None - ).order_by('-date_demande') - - else: - conges_en_attente = Conge.objects.filter( - employe__user__username = request.user - ).order_by('-date_demande') - - return JsonResponse({ - "success": True, - "data":[ - { - **model_to_dict(conge), - "prenom_nom": f"{conge.employe.user.first_name} {conge.employe.user.last_name}", - "date_demande": conge.date_demande, - "nombre_jours": conge.nombre_jours, - "type": dict(conge.TYPE_CHOICES).get(conge.type), - "solde_conge": fonctions_utilitaire.solde_conge(conge.employe)["quota_annuel"] - } - for conge in conges_en_attente]}, - safe=False - ) - -@login_required -def validation_de_conge(request): - """ - Vue de validation de conges par le superieur hierarchique. - 1- Si l'employe appartient à un département, le congé est validé par le chef de département. - 2- Si l'employé n'appartient pas à un département, le congé est validé par le chef de projet. - """ - request_data = json.loads(request.body) - conge_id = request_data.get("id_conge", None) - try: - conge = Conge.objects.get(id=conge_id) - except conge.DoesNotExist: - return JsonResponse({"message": "Le congé selectionné n'existe pas."}) - - if request.method == "POST": - validation_hierarchique = request_data.get("validation_hierarchique", None) - validation_direction = request_data.get("validation_direction", None) - motif_refus = request_data.get("motif_refus", "") - - if validation_hierarchique is not None: - conge.validation_hierarchique = True if validation_hierarchique == "valide" else False - if validation_hierarchique == "refuse" and not motif_refus: - return JsonResponse({"message": "Veuillez fournir un motif de refus."}) - conge.motif_refus = motif_refus if validation_hierarchique == "refuse" else "" - - if validation_direction is not None: - conge.validation_direction = True if validation_direction == "valide" else False - if validation_direction == "refuse" and not motif_refus: - return JsonResponse({"message": "Veuillez fournir un motif de refus."}) - conge.motif_refus = motif_refus if validation_direction == "refuse" else "" - - conge.save() - return JsonResponse({"message": "La décision a été enregistrée avec succès."}) \ No newline at end of file diff --git a/gestion_employe/__init__.py b/gestion_employe/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gestion_employe/__pycache__/__init__.cpython-310.pyc b/gestion_employe/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index ee0df520fb126e8508e18db1d81f2424c0afb59b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmd1j<>g`kf(qYfnIQTxh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2B#zbvsxzr4I$ zKiD(KLq9#WxFj<_FFrN5ASb^vRX;vHGcU6wK3=b&@)n0pZhlH>PO2Tqh+-xn!NLFl D2Iw4I diff --git a/gestion_employe/__pycache__/__init__.cpython-312.pyc b/gestion_employe/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 2a0cb6880df359878c6ec93c0e0b1a23d5029f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmX@j%ge<81gB1Z%mmSoK?FMZ%mNgd&QQsq$>_I|p@<2{`wUX^%UC}nKQ~oBEwLms zH&H(~KP59wzc{lfLq9#WxFj<_FFrN5ASb^vRX;vHGcU6wK3=b&@)w5>P{wB#AY&>+I)f&o-%5reCLr%KNa~iAvsFxJacWU< zjH8c_f@4X3RE$e%adt_5K}@h`kVi~+seqMZPZb43dWok@(d}dx|NqoFsLFFwD eo80`A(wtPgB37VLAghW&jE~HWjEqIhKo$UEH6?cd diff --git a/gestion_employe/__pycache__/__init__.cpython-314.pyc b/gestion_employe/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 7e654d6653ab7282374958cea916d05e91e0aa3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmdPqhza%#@_-QOsl_Fk`FZiFxdl1-m8miD@tJvy{LX#K0FIb!mP8p(25Rp+%w#%3_7uRH@>mI4Pxb`4AZUOJ0$X zIB0D~Uh@*a%r5fFQV#8h}lO-*};<=oO^ADS0x zu<{M#JWrJ5+%!2?g_vd54>^CDCD|4Uv$U+ZNXu!KELNcRv5hm|C((1FqxpOu4R7wQ zqp>Wjw8**K2#wq<-RVNt@r7>{TEl>OF7xjox`t&aJlsya5lxLhE2TCKl~g(%p;E&h zi+p5T4s-*b{3_dc2R3);TB2jOGLmq6wi*n0G`NJtjXrcaR_e diff --git a/gestion_employe/__pycache__/admin.cpython-312.pyc b/gestion_employe/__pycache__/admin.cpython-312.pyc deleted file mode 100644 index e0ae98abb1609cc533898e284e2557757aee690e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 863 zcmb7CziZn-6n=Ln%d+D%4sJMO?WJrcWd&8&q-o5v|?>*g*)zv28`Tp%X{73+P8)td! z%E-T>aRMATi9iyM5a5)vh)U)$X?Yd_3W6LKOv~c(E7%-a&7trPxHSb{!^~D0yNh#H zdh;si)&I(A-Q%>8v;L2q&cx|9u1tq6(Y1ifFupSSx>T>c5u-q5LW(%k^|x{qB@@xF z#1x-u5Xjr;o`3+4aPTN69-GiE)9pJ9uMIW!U~wXQre0`8-TVQ7}1$+%&y?;T|MXxPu@IW#D3EIB?TY9k@f0W?>ThqEzY@!|aVF z%E7V%EHu(O!W1q$o5$~!(Oum9*I2D;7v)GyTjNwH-H<`1!amNSok0@!jh3D=FF>ss zD0;0MtFr_nENvi6VPRPh?WH1<(Caqz1AZ99!(^|Y#7O-~nFpb599cxEs-dIIgVc@^ zLtGSUXnrtvg|2eyqSgKOx6aFQ-LKSBtTz8J4GOu=}QDX(CGg-kFI zK|04dGiL}ym|(%o8zK=WIB!aZOk^Ew)LhA|X76TkhBIV~`z(PMa}X`bR1J-23pr>r zhXr!we{~77E>|uoL;m9>l!{I}@InqO$M-Pp>UfOokRhLx5n2_;4xu=} zA-yOqrOWLHCv>CoT@+H{-4cHI>6(iZ>P6uVV_jShqBiyulIPM!CgIf=Oam8V$Wdqieg0lSdlGwsqdD z+nN0|+n!8bj=QOH#N0YQJ|X;?`KU>YEh7OT)Cau}yM5SW&qx9!J*!XZClueI_;S^Q c?LO>$f%u0sd!WxVb@tgjQ~Q7|vdSWU0F%j=0ssI2 diff --git a/gestion_employe/__pycache__/admin.cpython-314.pyc b/gestion_employe/__pycache__/admin.cpython-314.pyc deleted file mode 100644 index 73b477b2a6cba233c8bf5ad612af82e73c665844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcma)4O=}ZD7=CAWvb#xR{YXnx($*5C2BD|uK|~NMB%raZcuO*DlWADpk2o_q1oQVMf^tHb zqlhJ%t9i6@GrEQX%iVxWYO&VC#XG&iOnQ`(n}zNN#J zh0&YxqB4gt$9TnB5Y!EwMo}&gKX}n7-X6q})`#hrB`qa34LH-gv4YMxjE5z>&K3h6LwF?8Gwb|sf wx^-OLN%hr68;b;*5zvepVy?5fdK?cmW2KlD-$#)q@`Oj3Z8`RR$~+$X%%=A| z>U;YFN(COhzPjeP8#I61kQ`1L-@ssp7=#HrVWKWD$&k{qT1C81xhO2=|hP3X;?JV9FK9!+QdY z=n{*TWKH3jmu!yQroOe0S<%|KXcu@}(Po}+maSFFhMU>rcS}*J*MgTmT%`x%Lk{H*L~`N zY8F%*@DcvzJ8v0FKn~BCxphmO@!gM%S?b;K-8Ex&*3fU}ZWtx%;T25UB#B|I*&}Nk zT*j!d1Q@}{cu9bVq@Kz?QvMQ2dQSW*!Y;xZdlewxN&<`t5)0|v=mh%hkR_7C)l)4O z68`wIE=(d}p_RoYA=e^kb1A^f;n@0+kdLD+!P&aH*rL_puB(JBiOa7c=Hjj0NB!A$ z&Uy+hKL^SG-!n)`M3WYIl+nBE5OOX79kd9K=H0SSKZkjV`dkT^!lNsehZ*JR<#pRB znAWoAI*?qTkj)0cWliF;N1Y;<+~rT%C0Ow=qN=Jg6?)zQ#>_+3@ry5${)7S+8t)T; zO;S&1c89iyYUzPWdf@R?H9h<&T2FLtO>IqmmwnvzL*Ms(Pp;Sc#w&f}^<<`!9H?h6 z)Usoh?ATA2o@r0DXTwj2tJ!PMQ`hQUncb=Fsom-A>F4cgJ=xVH43cwE>tMamvp$6L z2>l3n2cFh}%H>jyI+jlhbI5eojnW>J_8b)hVCae)Dr8UrxyXhPE+F7Z%`;UT#ae(h z#G3{HLZ@G;rAPPDqt*2I=0ZJ@sU@_%gjP+wu{m2$_198kd#SN%YGU)|-?FI8iGLEr z7qN)a-L#BG^Y9%uyaKjH8Q^3+(nTg4O0GSSpMV@buT!m6ZFA>N31A8}Gkhv6ZnQzg zl%ZlOz^2YH(eJ}AK&SpbhT#6|Gpc99>!vEBR>3Vh8*2EAP>U{8!!0AM1C)cH{Y!dy z)HDljzEz8&Ks}oGJuX>}!(%QhP-ZS~@EGu$ZNLvGh&WFj{hQ1@R8#NF!KFtoebWVS!7T| z@44(wz$k{LghztX={4(U@;27dBPumr?ao1b-i7!C(lCaBSEsndV{d~sDBD*V@(6R` yT>$e=ZL~5f<#tW2i}+?XWwb|PEop~ zKtLA?1V4a=j=usfKr2NcQKbv=A7B>S@)R@g&Ca}iGYx_jpjdw$r2zx@qsb!dIhcMX z@Bw0oSr;OPtf{flH6jzu$U=*_8C%_2WTV{#&U*EQ#IlCao)dJr+q<-US)jPa?bwc; znO znO>xU`u$On<%eP?6$h~>l`CdkDrb&p$bFtjF-}H8!K2m%RYxJq{vJ}}Ajf?)NlN*H zSIKyoZ&a8`w5WqM-8PdVMMtBcBleOiD|`PPDSPHjxhRIIB#+9{tIDTLPN^}LUtmg` zpl;v0#UD#LgKuqbH@C|CDenlmU*-kxba?!*_ka({QkswZbJLu@?Q6Y_;!wGpqkK?h z;tpOVHGQ~@D4m;(u~P_t!TKp&`|Yj%@YcS2YZI?|Wd8*FP2;$6;(vPfH9cy4gS&ri fsCjQMzI$@A^Ktk6?j*QAvBGoHXc)&nULm=E9ek1m diff --git a/gestion_employe/__pycache__/api_urls.cpython-314.pyc b/gestion_employe/__pycache__/api_urls.cpython-314.pyc deleted file mode 100644 index 11bf6f45ed5ca5ab0cd8077034164d3b0d10551f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmdPq>P{wCAAftgHh(Vb_lhJP_LlF~@{~08C%hK5@CbT%U zs5r(WAjT!NIJ+djAST!|$OA&8rxurF=I6zy<`(4SSEj}!7G%bk7UdM{6;$5hu*uC& bDa}c>D`Ewj1hT6b#Q4O_$jDg43}gWS77ir( diff --git a/gestion_employe/__pycache__/apps.cpython-310.pyc b/gestion_employe/__pycache__/apps.cpython-310.pyc deleted file mode 100644 index 926c0884369129a17154535251db5752bd83eb1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmZ8dy-ve05VqqKh5iT$Wkq7mlDq(dmcPPMA-ZL;LeB}QoH)dZP+8$!5U=Ewi3ea| z;+#~X;-ve0zu);zO(sKv^88KncYHssvnwt-Q&fG700gKc1&t{sa{>;qHv&x1R~9?q zE=e%>!YUF_vp=h<3st6hwz833q3BFewT~c3Oo3oGjTtzx3k+FY<1!b4an5K@Qdc{Xbsb)5?d<{;~vxahkU!N7Q&mq{TwH$%>`sg>3qbNktVHdc!E?s?YLZ<`yjPFP6t0{(W5Fvl&(|>BDz$owh(2bqq|zIMZ=f3_cu`o z|9%lARi(pfQ!}Kp*VKCm9&xEhyVxRNX0+YR*4B=lX{-OH_tpqw#yjcPIJI}wmT*jb F_6xhhbJPF; diff --git a/gestion_employe/__pycache__/apps.cpython-313.pyc b/gestion_employe/__pycache__/apps.cpython-313.pyc deleted file mode 100644 index 853818e47fc9dc673739b28a00b0605d712054c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmZ8eO-md>5bd6sU02t|Xf&uOY;p+9Wp0W}2&|fDblF21FJYjV-RT`V&Q6crJp{c9 z{sSTZAoy=QN`og)-U6%lbldACb*Os9t5?*=xYe3L#(q6x_Q%8ro4i_W0>&Q=xJCpK ze2k8;z-_dQJ|N<)BI3t*!*_MU%Yv}>Xp<1@=}uYh@nXobfuo(rlVrSRz%`1Izyt}8 zVBr%_1jH9L5{P|p%+p*OsZT# zV!9j7whwHvUILIRQEUK-QiAm>MJ0e}nEA$bOTD?b6Q4*bWZda?+a1M!#QRj9DqhCq z+xNrxzaitKEM-)l3w!q$XIGUid-VRP?&0;{+t0{^7u7#Ye2-rM diff --git a/gestion_employe/__pycache__/apps.cpython-314.pyc b/gestion_employe/__pycache__/apps.cpython-314.pyc deleted file mode 100644 index 81342060cb66126d0b52e7dd71d243a18146c1f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmZ8eJ4*vW5Z=AJ_=t~)L`Cp{*cgOV3MwLKqQ*vK#qM-Cy-irX+?}^`g;puV-{3zG z|BYo>u(GlfBG&G@v2luTzG3DY=CL|HRwUXUT}M1?|89amEA&ZkMUxJ>AdDW721U9^ zrpOXu&J1DhIbCyY9XiZgCY8d62`f|$@1|)jiJPKzWeY6Qe$ZRcq(jaLQby3Z@X%!x zJ?3D6xj0~Zsq!J0D3W-;okqzWxBc$t!|Nb!CDrh<+D<|q$?BeH?dF&q2p)y1)UqPr zR`o)TD}!nXAP(9bKotSBERPHy1-Q+FsGlhTG({#c5;2bxot_MNGsq)^KzG+U)7~@1 zY6?JNfZ_@Q#7tb~$R$8FsJH5w71ere%RiGmlYZmGuXA~WN$Q^-v4(|zGx|ZA%4&L- znXCVTr->ZX@JPC|8?WAUcVzCNo|XRc#}!wN^bcXgnfZg2n;~rBgl1}J+pfElP3q7* ZK$bOpx|Gs4vh+3J(D|p$Z=&6=>Ib4@jD7$B diff --git a/gestion_employe/__pycache__/forms.cpython-310.pyc b/gestion_employe/__pycache__/forms.cpython-310.pyc deleted file mode 100644 index 17adcdd3a35367a91e9d7f1d5147e942b9cb690a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2739 zcmai$OK;mo5XVW86iHE*9pzQ@1+_&JsA%j%4{g!3P@43SLwu-<9(W;W?no>@$H-CokaJFPFa6I_vM5@n6SCF(S!j&# z$PXd75t_^hTg(hCc!M>=8|zssw3!W092LyXlfBs;%+N1coC-demNPNPOO}pPE(RHw zgR~%z^>^ifVT35hX*OUtXT^YPKmR^C=MXJ#ghyV1SUAKjxL}43Yrzfc=}yCq-3Ppi zhpuvCCb*Pb`4!Lj^kG?W)w=tea#@NU$+@ybdZ-+9RHeF<#1dXcM>CctDY?HtY%4E{ zia6&{q&iWAmCQ1F??%z@vpB1JL>pcy2c0}qZLBn7^289=pw;5^#@?e?>>VE;?;YI# z<>$Q#mlT1hUM}CG4UxOkC(0(b$(SVJ8Mf(};vKy14;^ud%=JlJhEQ%4u`-Dw-M{=+ z{dS#(`4GhJnX$g9b?0_>5$;#-V)SBn5o(jQ5b72}Z7~abY^&`CKosS3rd(JU(KlJc z)FM#4edH29smbg=O|(4bP)@vPUC>?~?PIP}&t>KdC+si}PWex-tT|N&-%)L#b;K*R z!{UlZaRdFUS~E_Ih&9!=C^N1;AZ8QfO+4WdGH5DS<~m6hOL-bl&~8akl~gB4!?>!1 zJnd?2LP=O=%BIhpw8Tf)3uRYNrT{8fi=&_&6NI(6N}@$$+XvdN^6$aG{bD*pLhsM= zLoVuudz`WfujIzC6E8%FBvyza+wA!}=8oCJzw=+s(}}(A2Tj{(?>%&osaM33X8Ll{2ac5)~Ii zw#RAmkP6J)n&v`$iX9N2kocIy4H7pY_J`f|5K#cuQSpD}k1I`u7*h9V5Gd_wR&ygh zC*@fsYE%b`H+@V}XI*M~K@XVJpa7NEH7erPMJD#pq21r55!8As72Az-X(JhDm7d&c zlEKW$vesW&Go$0BtfI_Ove&oGA@7zMcF|^hi(zM_vNNx{7cc&648Kj5_2Q}Z*2Qnp ziuK92ap@jxjPS@u5Y44um=x=nTU1XQ)pWH@^>bN!SJR-4G;mQ(y{G*ZC+kFLE2l~; zfn&53lekDFPR^bNzC5f@DRG#IFW|Ha7?+7ir}~1?Nw}zR@F#J#j{2J@r)_A2iwdIn zl7vRvBi>`dWAPQ~-iY`27@=I8)OfnYrJpvTm4@D Ja{u}@=YK>-Rnq_f diff --git a/gestion_employe/__pycache__/forms.cpython-312.pyc b/gestion_employe/__pycache__/forms.cpython-312.pyc deleted file mode 100644 index 16ad728319ea4c3a4f776cd6cf5861b7496249b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3964 zcmb_fOKclO7~Y3>*N-Gl(>$8KVinTXK;j_U3PBtC3TaE5BIpZ?X4!Zr&PHpmnOzIQ zp}q9bic4}zB2}d2(njTwV~&-$@VGdV5oRUC0ST$Mwh5}p0rCH{abj-_4TP2U%gp@0 zXaAY`ziNjFz7h%O2Zb-*pGPZNv?9j$~shY+{j6i)2Kr-BxSNjU$SP(+W-#(E1ks`p)tu3F3Ia$QqcLN$RZRVLh*s% zc_jm50r+fWL#_k{$8xu%G#esRNAtRoGBEUkxaTB!*$J87;wfAz>SIB#|aI9)jwv7d-G3 zyK`f10Ar{1@M9TXy8++^S88m#DLoc~P2pQI-2p>%7r;PVqAl2IMQ8(X6;;)(l&Ug2 z-HzkTeJ8enPafbA+fjfU+)sgbo(W+o{FDRme9^6H`&Tm}29~w$XW76*HVCWPAdZRg zfE%sIGE9W3$$~HkK8wErtW8!vOMxTuC@$LfAi)j(tH6VmTws1R$gE4ctSh&L|LnQZ zZ#Ve@gf7G=RmQ0Ex20rwEEo?hH~Y54%TURcA@@g#<2LG=LsYGToh@u+*vP7S<#2#n zCUJKmsZu~~ElpG)dCso-t&}n~+g^@fQgzvo`YC4?ltObHYA@HZ(G=>0Wx4_U%&b87 zL;P;Q8OuS|M|@dD@yzHpgmwfGedYJryl&_uOmI4z%Y)_&?Eb;*m&RM*@?6FmAPGoeQy<;kCwW6?_d0} zt9PNR_hI^*YlXhSVwd_PB5w`fQYxr48}Kih1?po^48o-dc=~o7zzy!1(1`Q_@TNm^ zRmT5Y`b1VVd>wVz%?PtEz5yhtrcN5}!Y@GzH%%X33bXlYrMg&?W*hh1D9vh7yjF~O zGx#3AWB?tNWQ5VNv0{tMmqkN1pCQyz88hGptwS=b_QH&gIvIjI50iwQ>E?ksm__ibYi}{@ZOb$o)3!KlcjC@rlgtZbacL<@b0CB z?#sn(S4uEje&+i0^||!?wZg%HV#oPX>z;LdUhnlJ8uU?;9;mUNLpX-e3GXTcn~{M4 z9s|+5DF#L>il=ofTrEcM)~#lt&Zo=eNV9JWmSwJ(wK7mu_zxRz`ijG@b%cH3as=Mh zf&dh=)YLZKR#gzx+_DomJHlc7eOa^wsr@Mj;B6V2H??K;xKFI4Teo2$m>ZwPrvFE_ zHX|J()(0D^4r+VW61ZBG$;RYJ202pV!R4l^&GQ6Fb|uGfDAcYNO>0@hhH|xm36C}8 zz|9ZEBgF%CBRa8D)X1@#KAa-dfl522Iey9cC$+&Nsz^W)yGIe2!~{`yG)gpj49EUf zX3l{1IK1}f04OuIb7!epkIYwaArIH^vk_xtAt3ooB6w)BBEHsSBtv`Ys$=y_|(Cf-s#@CHV~wq)5RTURu!r|wEfJJdSxS; zatc?4fXiDYNE2!bfJYEC55yZ>Ss&H1X=|khVl}@_nOHLtq4 xmN;lG?c4%=GHFd%OB^(p_O`6qp}Ev8^6h0iG?&6#!QMA{e&YP^95mS){{jG`S_A+9 diff --git a/gestion_employe/__pycache__/forms.cpython-313.pyc b/gestion_employe/__pycache__/forms.cpython-313.pyc deleted file mode 100644 index af96bda5cabe6abe91c9d95f44e925b6ce7f8aa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13526 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 Q#z&W@o=yFmKvS;qe=|0LX#fBK diff --git a/gestion_employe/__pycache__/models.cpython-310.pyc b/gestion_employe/__pycache__/models.cpython-310.pyc deleted file mode 100644 index 56a56185c20a048428d6f6f1b856d296f048fff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5472 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 K_Z#nR-T6NT?5pVj diff --git a/gestion_employe/__pycache__/models.cpython-312.pyc b/gestion_employe/__pycache__/models.cpython-312.pyc deleted file mode 100644 index e3ece7e1fb2ffcfd2ec808e11a576d0fab6aecd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8111 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 VHRiDlZ8)CzzV!VU2Sv7w{{@5qvi$%6 diff --git a/gestion_employe/__pycache__/models.cpython-313.pyc b/gestion_employe/__pycache__/models.cpython-313.pyc deleted file mode 100644 index b3703439603cba88d6ecb69b1ce66823c90a8ba8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11595 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 DY};@_ diff --git a/gestion_employe/__pycache__/models.cpython-314.pyc b/gestion_employe/__pycache__/models.cpython-314.pyc deleted file mode 100644 index a270e41d2832f0a0ff4d352e1b6e3a08ee6c6b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8281 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 Idue?61D%@KjsO4v diff --git a/gestion_employe/__pycache__/urls.cpython-312.pyc b/gestion_employe/__pycache__/urls.cpython-312.pyc deleted file mode 100644 index 618a5d83b708de5ee2f90527f597dc55da428814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2190 zcmZ{kOK;mo5XVW$vS~52CEI$~dMkEdqh+m@sc zbWuD9x$*gRO_F|>EXk6Wk|UqXvSih)`m*NK&+A}soNv@5T(=rnzGk}>8)X01=G(15 z>zU0s1-N^68M?Bz1+EF)P6ek5+&$o06`Uq;JHYK#aJvH60A95V#?5^9pVxaAV+(E4Yck zO@Vt*!OaA24%}%4H(zs?t@F;!{j=kbGH_>d+W5uB&x4ON2v!@u8D6EkmpBM*&o!{) zFTER_N@>G(E&PHKuIb=tcWDP9)^j~T(av2*G{7#wmjDq=bPI>3y)0-H9erPny5?em zFG7>%N5RVXiS1y5qE2b+91*oIJU1j}h%N}uVxm@I>bVx}6;QbcirS@JV*MvvYAy*% zd)W$;q9TS*ylWgrs^hsj*b94!qUL(RU(vyCs9WB}iW%f8YB`=|FKj4GUcad4;6Pt^ z#9>zmka_K`Lb!F>&Ml)9qmIC`!lR-iYi=fRMN;(0cEg|iXOB_3SNOQ?=R#OnCN6Hj zbaH|F#b&zWg}QGB0Y*`oVeO21*{I|_(eVr4CZ-z(PtUq!3&xPpFJP)#*QR^vJzSAx zKpNDen7(h&=_3kVYHXXLAt^soMmBJz)???zK|p7kYiwGMijkit&90WCxs%XObxONS z+YYTxd+PzFO*M+{rtP8#MQ%b=8l1f^>uM4DRVNyi$`Tn+H-ptJ%}P`p$|y^es!$Gi zMPWAF;1B6D#7kchy7C;17BD-GiP!;9V3R8(yv2x?@}Yn8Re1!^YKb3{3B=RyK=1~B zKhR^2Rl VR;%oSpPtu#mUn9}RWgEx{SSajOP>G$ diff --git a/gestion_employe/__pycache__/urls.cpython-313.pyc b/gestion_employe/__pycache__/urls.cpython-313.pyc deleted file mode 100644 index a2c48f5d2772564a5d894ac10cf8123156ed9f4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1836 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 }lyHYU9lKlV0nfmzEC%!gmm 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 J8c30){QqKnr&0g_ diff --git a/gestion_employe/__pycache__/views.cpython-313.pyc b/gestion_employe/__pycache__/views.cpython-313.pyc deleted file mode 100644 index 954bb6a69f30a560e02da2d4ffc63421bf5f89c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35725 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 U;9GXGFoSLn%lok&J~o^GAM)9Ns{jB1 diff --git a/gestion_employe/__pycache__/views.cpython-314.pyc b/gestion_employe/__pycache__/views.cpython-314.pyc deleted file mode 100644 index 0185fd3e781bbbe6edad145a74cf3239c393200a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26203 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 diff --git a/gestion_employe/admin.py b/gestion_employe/admin.py deleted file mode 100644 index 03e7ed2..0000000 --- a/gestion_employe/admin.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.contrib import admin -from .models import Departement, Employe - -@admin.register(Departement) -class DepartementAdmin(admin.ModelAdmin): - list_display = ("nom", ) - -@admin.register(Employe) -class EmployeAdmin(admin.ModelAdmin): - list_display = ( - "user", - "matricule", - "fonction", - ) \ No newline at end of file diff --git a/gestion_employe/forms.py b/gestion_employe/forms.py deleted file mode 100644 index 55fab64..0000000 --- a/gestion_employe/forms.py +++ /dev/null @@ -1,84 +0,0 @@ -from django import forms -from .models import Contrat, Departement, Employe,Affectation,Formation - -class EmployeForm(forms.ModelForm): - """Formulaire pour modifier les informations de profil d'un employé""" - class Meta: - model = Employe - fields = ( - 'adresse', - 'telephone', - 'CV', - 'diplome', - 'rib', - 'photo', - 'casier_judiciaire' - ) - -class AffectationForm(forms.ModelForm): - class Meta: - model = Affectation - fields = ( - 'projet', - 'date_affectation', - 'date_fin_daffectation', - 'role', - 'pourcentage_temps_affectation' - ) - - widgets = { - 'projet': forms.Select(attrs={'class': 'form-select'}), - 'date_affectation': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), - 'date_fin_daffectation': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), - 'role': forms.Select(attrs={'class': 'form-select'}), - 'pourcentage_temps_affectation': forms.NumberInput(attrs={'class': 'form-control'}), - } - -class ContratForm(forms.ModelForm): - class Meta: - model = Contrat - fields = [ - "numero_contrat", - "type_contrat", - "date_debut", - "date_fin", - "salaire_mensuel", - "statut", - "fichier_contrat" - ] - - widgets = { - 'numero_contrat': forms.TextInput(attrs={'class': 'form-control'}), - 'type_contrat': forms.Select(attrs={'class': 'form-select'}), - 'date_debut': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), - 'date_fin': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), - 'salaire_mensuel': forms.TextInput(attrs={'class': 'form-control'}), - 'statut': forms.Select(attrs={'class': 'form-select'}), - 'fichier_contrat': forms.FileInput(attrs={'class': 'form-control'}), - } - -class DepartementForm(forms.ModelForm): - class Meta: - model = Departement - fields = ['nom'] - -class FormationForm(forms.ModelForm): - class Meta: - model = Formation - fields = [ - 'titre', - 'organisme', - 'date_obtention', - 'date_fin', - 'description', - 'certificat' - ] - - widgets = { - 'titre': forms.TextInput(attrs={"class": "form-control"}), - 'organisme': forms.TextInput(attrs={"class": "form-control"}), - 'date_obtention': forms.DateInput(attrs={"class": "form-control", "type": "date"}), - 'date_fin': forms.DateInput(attrs={"class": "form-control", "type": "date"}), - 'description': forms.Textarea(attrs={"class": "form-control"}), - 'certificat': forms.FileInput(attrs={"class": "form-control"}), - } \ No newline at end of file diff --git a/gestion_employe/migrations/0001_initial.py b/gestion_employe/migrations/0001_initial.py deleted file mode 100644 index 26edccb..0000000 --- a/gestion_employe/migrations/0001_initial.py +++ /dev/null @@ -1,88 +0,0 @@ -# Generated by Django 5.2.13 on 2026-04-17 12:03 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('gestion_projet', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Departement', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('nom', models.CharField(max_length=100)), - ], - ), - migrations.CreateModel( - name='Employe', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('matricule', models.CharField(blank=True, max_length=10, null=True, unique=True)), - ('fonction', models.CharField(blank=True, choices=[('directeur', 'Directeur'), ('assistant_direction', 'Assistante de direction'), ('comptable', 'Comptable'), ('raf', 'RAF'), ('data_manager', 'Data Manager'), ('logisticien', 'Logisticien'), ('post_doctorant', 'Post-Doctorant'), ('qualiticien', 'Qualiticien'), ('technicien_surface', 'Technicien de surface'), ('chauffeur', 'Chauffeur')], max_length=50, null=True)), - ('date_embauche', models.DateField(blank=True, null=True)), - ('adresse', models.CharField(blank=True, max_length=100, null=True)), - ('telephone', models.CharField(blank=True, max_length=15, null=True)), - ('sexe', models.CharField(blank=True, choices=[('m', 'Masculin'), ('f', 'Féminin')], max_length=1, null=True)), - ('date_naissance', models.DateField(blank=True, null=True)), - ('CV', models.FileField(blank=True, null=True, upload_to='cv/')), - ('diplome', models.FileField(blank=True, null=True, upload_to='diplomes/')), - ('rib', models.FileField(blank=True, null=True, upload_to='rib/')), - ('photo', models.ImageField(blank=True, null=True, upload_to='photos/')), - ('casier_judiciaire', models.FileField(blank=True, null=True, upload_to='casier/')), - ('chef', models.BooleanField(default=False, verbose_name='Cet utilisateur est-il chef de ce département ?')), - ('departement', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='gestion_employe.departement')), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='Contrat', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('numero_contrat', models.CharField(max_length=100, unique=True)), - ('type_contrat', models.CharField(choices=[('contrat_duree_determinee', 'Contrat à Durée Déterminée'), ('contrat_duree_indeterminee', 'Contrat à Durée Indéterminée'), ('contrat_prestation', 'Contrat de Prestation de Service'), ('contrat_stage', 'Contrat de Stage')], max_length=50)), - ('date_debut', models.DateField()), - ('date_fin', models.DateField(blank=True, null=True)), - ('salaire_mensuel', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)), - ('statut', models.CharField(choices=[('actif', 'Actif'), ('termine', 'Terminé'), ('suspendu', 'Suspendu'), ('rupture_contrat', 'Rupture de Contrat')], max_length=50)), - ('fichier_contrat', models.FileField(blank=True, null=True, upload_to='contrats/')), - ('employe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion_employe.employe')), - ], - ), - migrations.CreateModel( - name='Formation', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('titre', models.CharField(max_length=255, verbose_name='Nom du certificat')), - ('organisme', models.CharField(max_length=255, verbose_name="Nom de l'organisme")), - ('description', models.TextField(blank=True, null=True, verbose_name='Description de la formation')), - ('date_obtention', models.DateField(blank=True, null=True, verbose_name="Date d'obtention")), - ('date_fin', models.DateField(blank=True, null=True, verbose_name='Date de fin de validité')), - ('certificat', models.FileField(blank=True, null=True, upload_to='documents/formations/', verbose_name='Certificat (PDF/Image)')), - ('employe', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='employe_formation', to='gestion_employe.employe')), - ], - ), - migrations.CreateModel( - name='Affectation', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date_affectation', models.DateField()), - ('date_fin_daffectation', models.DateField(blank=True, null=True)), - ('role', models.CharField(choices=[('chef_projet', 'Chef de projet'), ('doctorant', 'Doctorant'), ('mastorant', 'Mastorant'), ('consultant', 'Consultant'), ('stagiaire', 'Stagiaire'), ('laborantin', 'Laborantin'), ('medecin', 'Médecin'), ('autre', 'Autre')], default='Membre', max_length=20)), - ('pourcentage_temps_affectation', models.DecimalField(decimal_places=2, max_digits=5)), - ('projet', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion_projet.projet')), - ('employe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion_employe.employe')), - ], - options={ - 'unique_together': {('projet', 'employe')}, - }, - ), - ] diff --git a/gestion_employe/migrations/0002_alter_contrat_type_contrat.py b/gestion_employe/migrations/0002_alter_contrat_type_contrat.py deleted file mode 100644 index 4fd9717..0000000 --- a/gestion_employe/migrations/0002_alter_contrat_type_contrat.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 6.0.4 on 2026-04-29 10:42 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('gestion_employe', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='contrat', - name='type_contrat', - field=models.CharField(choices=[('contrat_duree_determinee', 'Contrat à Durée Déterminée'), ('contrat_duree_indeterminee', 'Contrat à Durée Indéterminée'), ('contrat_prestation', 'Contrat de Prestation de Service'), ('contrat_stage', 'Contrat de Stage'), ('convention_bourse_entretien', "Convention de bourse d'entretien")], max_length=50), - ), - ] diff --git a/gestion_employe/migrations/__init__.py b/gestion_employe/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gestion_employe/migrations/__pycache__/0001_initial.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0001_initial.cpython-310.pyc deleted file mode 100644 index fb1dd03f50798e31e21217c30603207d7a83d0a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3991 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 A0{{R3 diff --git a/gestion_employe/migrations/__pycache__/0001_initial.cpython-312.pyc b/gestion_employe/migrations/__pycache__/0001_initial.cpython-312.pyc deleted file mode 100644 index b2e823a7da9a18890b7493262d5d3be89a84dee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7185 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 AMF0Q* diff --git a/gestion_employe/migrations/__pycache__/0001_initial.cpython-313.pyc b/gestion_employe/migrations/__pycache__/0001_initial.cpython-313.pyc deleted file mode 100644 index ea8f5b7e0f3eb0ded84538b4cdc05864fc213ae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9674 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 diff --git a/gestion_employe/migrations/__pycache__/0002_alter_contrat_type_contrat.cpython-312.pyc b/gestion_employe/migrations/__pycache__/0002_alter_contrat_type_contrat.cpython-312.pyc deleted file mode 100644 index eded6f879c80ebc09326f5bf447a453a545526c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1070 zcmZuwOKTHR6h3z*Gnovj)+i`y+p!d7pft5>DM*Xrs|ZDqY%XK&$z;Mj;!ILZR|;LY z?5TC7K5hek-t zon9OH5ZM|rZwvt!-58Mz>|h*tA!2uu>Mjj<*4`&;xf}0oqqV%ZJ%}Jc^qUvyUO1A# z`fq|Kp}3f$lBa0LG(@)Nbt^9{(0Y01wg|0ayyn$q>9L$gBp27mM<}b(Lm{^)WDUb? zGjF19oFFF@W5>fVt1*0(i3jhNxOWzDv_Jz;mSVjbQOSga;Jo8LhHj^6tAwN!c<2O} z7P4Dwc<752`f&`N`8iKb&MB_zBiUun-*z2e#!4ixjkK?@?qL#3<)!9BpO*VbW{C^Z zQCey`1Du*s8;2^~hGTk!(^u7I6kxSMI}4mDmGK(Y#EYBNf7DPt7jTtyvA`W!CYJ#p z)x=!87t23Jc1a_7M%M=PbtujDRppxg{(0Yo(&R_;z?j%KCJwJ#hgYT!E7O~I4=U69 zmFZsqv#+&20BWvw0&umdofHctv#;tE{ln8($|}pgVi(eqXgQ%9&51YJ0Jv7NewD#Te5vS-L|R-0s$$DG8o9 z7|+JU|A0TlgGWgd$Xq>nYXZ@$Z+5#WA;p9_ynS!>d*6I--QT)s!8?R7!Ef z8spMk7=xx}s9nAe=0-7xwj6J(aL^8CgO-fux zjMi;NNr1Q84y{w021IDlmPk7k7$70jbC^iAwtVgjEqpMM2e85|ytu`nRNCpT+on+jgZOh(<8pqyghD^@!)o*A8hB&mmr& z5*El|5yoSelVDkD58$F8p)XUHgt0JInsy`h{T7L*JC8BrFzIz{a}JW*oG^@oJft7X z28s_$_p57+1gu)FRG$#`j{B|Z%N45}nKQLj`xmDQRW4v#N{TDT^_{aDXTLDEJqNx) zKuWFMK;GEUNQeCZ^9gk|q~Gi&)GONF^R9vP%ZHiCgUsa7*woQz{>U6ZG^Y>D>HSw7 zbKxYN)Qz*4nLg%C$GkfbGttMq?U?rlV#Y&E;lM2HZ*|PYftag(p0$p7JHpIOnA*o@ z!E{{PYB4EvXWRA~e#zMgI~jH_s$MoC!WO_2nFrB)JPc+bls^l04NNzoD9T?ADa8|Q TO3^+Whq;-bxtTu*f-w6Zh{iS1 diff --git a/gestion_employe/migrations/__pycache__/0002_alter_employe_email_alter_employe_username.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0002_alter_employe_email_alter_employe_username.cpython-310.pyc deleted file mode 100644 index 92ad5b79438329a7ee2efb9fdc5861ad43e5cfb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmZ8fOK;Rb44y}_n~k=D6L8>+luNU4MyN>8!hx!yoN^h3wVO^f$!znGT5+V;{t*5S z$GLLqU#P^xGbP$;E!nX@JN9QMc5g3bBtO3`^@(8Ymk%CFM8N@R|AGuK;D$B4;EgB* zXGaVK$ZG}?c`d)oLPB)PviO#2SteZC=&CCRZQI_>8VhLpwNE{ign|Ro{*Vl^f&(iA z@QN1_qdN8ja8}PDf*58u0_Happ6ue4C=yr@fz&NNO_PbnqY8UZLSeHp_6pr{wOYMY zy48a&jhjz!j7_P{?H?lYC9p3qmBF?e&fRQm^~H#pq@Da8sx2FIQLyouMguMxd+a=L zoGo0ULWNQ;Rf^si4U)f9>S8R7FY*!K23x>(t+DUu_{^nm&4AsZ@7Kuyy!Vs>;8MH6 z|JVG%x~G&5=5EZ-ZG-vQ+ETOpon4O&wnLwvbhgGpoqqiMArEHf4Egr!-)RC;eLpp_E3DV_N(gG`j& z)=+L+{|DdtAO4ocEMzmgmv;)ndXm0oq8yO#Tj>$5UWZA45JX2r6zcW*bxcDVQ!fzN zw45P*j|P)plJzXH#e0nd687R3!W@S5a7Y|onxzcFq1PwENMh!IlE4?aAty`~K7(B+ zFLF5P!C2TBOU^JL5*IK&9D0Fjli3Q!2bA$Rpdkq(_1Px_68a?UQo@-UmarQ^OxOc; z1v8SueWfxf2s;{(baLl0=CPb&7khEc=>9M!9Ama7IWxI|i0<8XpG%G0ZM569MjY+A zO~PNr(ZFpsUG%8)&|NahUHllXwCo1o!4XsTCqV)3$?zUbO<-M{ z>e@N;ZF_11Yi*RPp606K3$^iTWn8X|%Il})^-uiE&6D!oZ&|~#m%A>V-Brw&&37$U zP4C=w3}N{%y|5Q;`umBOiGOod%9VNV6^TUd&U`{UtR_<^H@_^yREH4$Gy!zJo2$_L QV2?^0C#8)aKqd+MH(_G%lK=n! diff --git a/gestion_employe/migrations/__pycache__/0002_alter_employe_email_alter_employe_username.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0002_alter_employe_email_alter_employe_username.cpython-314.pyc deleted file mode 100644 index 4ccea1ab212d0274fc3cd7d9dc718f27051ceac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 954 zcmb7C&ubGw6rR~lHoM!@q|wqstv^UFOC>}p6hx%r4^q(*R=p(|w%KVMyV*^5CSY$l zh~UjXL;r*R8x|p9j(YMINYR`4X454Sir~P!dGF1>{DH3}|Fku*fvC_59xjQy;)!S8L|##f$b@ zzg>W_4HVUIv)kw3{?W_$-(D3>SZ+?(t_gH)X+2MQ${g+Xg6NpaEbV$Mc$ui+y(Iw+ zJL0u8`XM{&Q%47FlpZAXx>RNon>}DO@TJ-3G**evXb-9j9mQD!$@uWv`0gqhHXZ9tQ3;=gFw*u ziNX+PlEh=hAW29&>e2KimkHqlUbRg;A!4@Q7nBnc7ocVW6UoDecN?#O1aH*pjYpIp zim2CkvFp~RW{yx}_DLE*?GEu2j+8E}0AeneDpctm$Lc#KMmgLA^B#>2WZfF;+7)B) zY-}Uz^3YsAHP=TgH%3dVqtfcIR6Z@0Kk<{Tuce){T*k8JPpw^iYH^`tyn7n2rFZT* z8EN@%ys#5h{QX47M7t>}rO5Q`Rq&*FZ~8j-<7*INm|W$@I>z{yfv|ICEMeoLJuGf~ MDQ^5k5G2)q0I}Qc(EtDd diff --git a/gestion_employe/migrations/__pycache__/0003_alter_employe_cv_alter_employe_casier_judiciaire_and_more.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0003_alter_employe_cv_alter_employe_casier_judiciaire_and_more.cpython-314.pyc deleted file mode 100644 index 69cbd16d106ae0f028be220db8e304686828c09a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1464 zcmb7E!B5jr7=LZoZY={w0U<;pGA;|rM%2W_7@`5m28v5X6O)aXvOZ>^YiIjL!cH8F zXa5R=H|}1zcs7zHkazIn$=ec$Uj5pxL6*5l4_|-Zd%y43@B7~OIzKe1Ab39KznEWR z2>tM#=n*^M{1Jcyw23sXfbtyW@;v2lp>cE@Y5WAzgfdr@qM*z7Jt4$Y&|+zn5r6t_ zhG$C6thzci9ou74%`u4ORW73t8tORbA36WCWkfj*QGQbbp^+>{V`Z_J{5v4TkPN5s z<#;jGb5GD94Nbh?NlKF<)JHAeS1oZ(HMy^va!s`XP*eX|Y4VzCgMD)w>ZO(ysiF)YIV!mCyZZuwb2wRd%29j#4Ss=cUjDCSQe8TK+p|L9oSKV8Njw) zBe3mTaoZ%8!A2^&XA&3hGz_z1>ZVJY@o*`};)V$lHPVzjz{@eQ{>GtBGakIa7hH3z z83U91gw|p3hO5N$#|}sNEiNo9+`+m<;Uk?jT-obh=uQIbwt;JoOEO88z(L*^GX=w% z(Xa^MB*t$Wy5-jb-Y~}7rt4A5w2AHb+Xkr<+aPwuB%bRJBvT&yNv!x~yKoH=lUGcO z1U^#=HN6^Pr%s}~Gmf!G;T~16PAOE`pv1%29fk07e=t~c=|SnGM_jLzFP4^xw@aOR z=|w@yho-9=rORtsg1+4CZo~igC0pNj{r^E=eBgZt^B%P&ByVzUfgh6&p0*VvkDex` zPZHB-6EkNc<7evRsXBY2&K`~(EgwH=sjC<9n5=a3=C1MzEp@#oZ|W*zNpnjUC;tI$2{YINsn$!^Q`CB$Veq!~{7pq!@WzNO}VA#j4|Kbjq1RsaA1 diff --git a/gestion_employe/migrations/__pycache__/0003_alter_employe_email_alter_employe_username.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0003_alter_employe_email_alter_employe_username.cpython-310.pyc deleted file mode 100644 index 69590704795f56b25137db8d300a5b7023dd8189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1074 zcmaJ=J8u&~5WctVi|vF0L;>h{G!}4YKy(Nt0s=@7p@dMlIo6)Z`Hp)yyLU;Pmb7W9 zp`_;DY)h5D5Q)d^*(Om6R@&K_+1a`8o0%&*9ap1ubh8uxFg5L`GR`lHj8)pgCjlDh zsW#B*G*Tlo2WDmsEM0r4feF@;1{Ru${n;GYpl@kC`-I+T8$Cn1SsZaz#ziiqlNEre z7^%DSt4+o#ZSj!=)?XPIphx<^L@Tku027_00T$TcK;zhi=JDdDMK?`wVJX(34IRSK zO59{AX@Bi}(;^*O&^>lkd}Iu|uuRxiWb5q$69HU~P$+mIW|Op-q73@|{=<-^CGv%j zP8O#Ze3d|+vkYZp@zSot-kO=kbV!Z+qUe4-0hCEhadh&+i()MZvW=t%7lpVX#BV0E6en zsLC)eMevRn36|m3>&;g|EiQ~ta5nF1kRDwan*R-wKbdm%(=}*|Yb2VQVOoDI+t3ZY zt6RTj+8xrGr*$NCH4lPeUDCRYb%Ha(GwrsDZa$ec=c%rM MI0}fdqF*up0t=%>9RL6T diff --git a/gestion_employe/migrations/__pycache__/0003_alter_employe_email_alter_employe_username.cpython-313.pyc b/gestion_employe/migrations/__pycache__/0003_alter_employe_email_alter_employe_username.cpython-313.pyc deleted file mode 100644 index d7d4886b8f9492b683dc0dfee989d311fa6d00f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1519 zcmaJ>&2Jk;6rc63*Y-A!6SsgV3M^@aYEf*{DiT3}h#FEz(js{&NU&%+@lNca>s@DN zoG%501mesE{sy=qap6zk*hZBS&4mM}+)}xS8{*Bb7o!|HlIMNyZ{EE38;{Cm2f_OG zbMysIwfIQ?G>xdg5bL+V^lbdT6w_H?1^T;zVBhT{9c7m1xq;e5( z_2T)iQO}=h^-evfoIdMvB3T>>W%uKNhN7cm*_s|JBiqoY`^m{X=Na7ea!rF%?>p^hC$UUx z*D`G)+m|PLrnToXZ6X)PYSZu>ud-z8Dw{c8@n-l;ceY+trQ2E8P79C=eXMk;&|So| zKM3P}s+z4<>pCW(q&)M1BrH7V8w$!J(x_66)H)s$jguxR4=>XcX&kKnFAm zXw+d;aQzsRv#h7Hs$0XY#POaUP~uRfn{dHYwSzB6)Qwf46GxJ>O=Xdx>~T#nRl6Ip z4m_K?<1v1m6|9_iK(m+i48}sjE9+n)HNsF*fiZs`5JvDrD!%!quOWoLys_af%lK1& zg^K$!9{4LOzV|`=hfoeC-(dubbYYg_e4W}lX=C61J+jr>9Mx_spGc$L| z{(9rgL8Xhw#kr&6+{tt9$!zVUT05>@IjUayY2mjUzvGA1&mR}8l5;-qg(PqOs5<}4 z8xP*@J-E)!5ZW=m%7Iun@0cJyF+bCSnX&n|7Q5!-R3z46Y8|GrTUHXgWhJqDsddkS zt}%1d0+gQF(SlotI(G3(E3K-0p=y7##;<1A1jfCXj&u<$=6rT02*Y+mP52vLOD0FE;g;iLGwx|dJqAIiwEyWrr9I!JTdnfjg^{z8B z&MyVj1LDj9@i)K?i3@)M#}ZXaG#3t>xVcIMH^j`YM@BhxB+vJ~H_vZozV~LY%#=N# z#`m={{ly00Pi>fyACr^1B9Fj2fYurimcraxu5Jsv?g-~1I1gR|(7phm)3O_BHj^O3 z>ng7vA`h))P|g3Pjr-M{^!l{Ru%JoIrQ1(J67h~+Gh=26}Mm^Q%^RHw0Eu2pEvO?-ywldk^@9hko{J{5Egdq%c`%2qKsCaAI%VX0<8Z~X^o zx4g!4lQqK{i-t|G@%)4v)>txZg4f41uwVgB-EcE=a^fH-X5qA$gJq@btSo(G^ppkC zA4JI>k$KX`H2QSEoT87zkP*(Sw#>I99B--`;9V4vxGQ>cdYiCz!U>9TpQsQotx0N0 zNBd-cgOVte#UUpwb-2TrZVkzP^`@_V{tgvAU-Ym@O&#Lnh!Gs_`DB-J!GrzVkZcVp zBVpjb{>G}`>0yRDf-vqU%-kX^xa8!}yg>22ePhFBzwvnl2HDQ&%36|Wl)8J%jYtE*QL zj?}isr%*|E#%FF`otH(FN`sK}5K>YNBck{;LR&)|>8mSi7NHHwxQJ*>;zTcpWI*DO z#2rdF(>*A?n|jyVT3P0#jt}(4sY8}-DSa~PhF{{io5(^Zi3Ou=>ENO0u?78?#RoC% zs2B8LT$sy767gl~#u z(EMZ#*0br1XwAv{Z7TV$ossHU@&$uErrSB43X1S2YWfz8Tu}Ph8rivX?xTAn50n;; zic5#ZrQ-|!@%-X(W$~!8d{|ljapl)*zo93U)@i{hd1vEZNaHRYRxbVg=HqvIkFU}Z z0Nd8rIR$s^`?iA5?JqP?JF)-Kuwy^XAhixM>mXaZIqB=0o$-PYRhjA=3Aj!$vMtLxae;OD5Ae#VJ8!w)c}H_Azt64w4U~~4_z$%q BkGuc? diff --git a/gestion_employe/migrations/__pycache__/0004_alter_departement_chef.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0004_alter_departement_chef.cpython-310.pyc deleted file mode 100644 index 707adae70ca09692eecf6b37f4904dbd4c037f3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 854 zcmZ8fy>8nu5Ek`kS#j#1LxBJV+Et5Xpq+{$NPsv^QO7M}d(lG3=Gl=-i3%kTp4&CA zQJ}BHwNqcAK#?A)xG_S2cf8{rzq{`!4i7^MSM{TxRkmgQ(#HOB(Ky9jzeB++M!1y_ z)Hb&ZCvk}OIovJ0#4G&7C)Njxxy<`+F%P`F^UX;*j7+V_|Bd<9BqA!Pp=q*mT}QSG zi)<~^CKF|?{6a9`^-{;}FJ0d$?)n4;81%$uWK9wW+}vX}bHL9#i0VR+cXK}v^8-Zh z<%i6_^H}H3!PsXkz$&_`d$mJE`2HGd4Njq`xY&Yo|a#gTW&a4T|~rIp#jyCz|#g8HLux?h#VwE z6VZBHa5jnhDxk(ssR}8@xD5w9_b9#Hq+G{p3!$N8P%bm5rGu=g@JzRKp;Xzqe4u9j+2Fvi?PdIQMh(V-q=N-sagYto0s?#vx=$B zO3-b}OwzQYXZu)kwfpX44UPa3DTjm{2TZCpFW4h&dS+(k0k*w}(5?@p?Rw{Y^^j2C zt`gQ)CN-Nzq)PmV$)%U1vcb|^;GRHMVakqY`@2l`>z>Dwa3i2jBEtG9@$86{aa>J| zf~*Ama8BADIrb|Rmw4sRz~ms)a2&yy=@>(1-6Np)WBj^qdpsMg6vh>ohLPv`#1D8F zx*>j<_$8NwREF0xeU86!ffuHH4w=3XP~tlN3fW_7`IYTE0TatROp99ul$d538+fgl z&r?2REHzi$Sj0usDB#ugc_YvCphmibbrs_0yVH9-uKtK3ChL3AiENIMHDU z+k4bhQF2{qO5%w6Hs91ya=4+5A8O-AqnV?@(W9ZU#?aK^(A1~QmyNHR-?zSPHH_kc zQEV972gY{8a1IQoiO?HiNd&PbZi@f7sE8-0V%QN+5^_>+O6rjMZkgWcc9GTC^){lp z@=mV(%jLST(p!)QgA^m4D+PX~4R7-FL`+yrQu|>X#CGw!{HXS%JqAzdeJ}-B;UsKL iNf3mViiF!g(Znxw?~mFqs2}u3I&+ZD{6%2IHU0y=J2jO6 diff --git a/gestion_employe/migrations/__pycache__/0004_alter_departement_chef.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0004_alter_departement_chef.cpython-314.pyc deleted file mode 100644 index 9b3e7acff8c7ec15cf25ae547de91dc16ff62b7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192 zcmZuw&1(}u6rcUfW=)&)%T}<|+6V?A7AzD*gkrZOnzmt^R0>IkZ8C{#H@k6ng7lVy zc=pfGn+N{@J$X(KrVNM&Pu?Oedi6~=x-tWD=H$J8#_&T5Bc1uL)Cl^Ma zGGtB)z;sXrnL-v(0jQW2GZK{+xK7H-8HFktm8uJ91}!2}o<*ioR`TPcL}zqG3V9ka zg(Z|ye{pduB`_@@l-h11NQq2u+6~{Lw&w;+ZF)801l6+?2*rlN$v0p+s0=lkh>8`B zN@g@IP#NAH`J9V`$^=s^NAiht${`Cj$&|{`{PbnpRej{IU*R`*S!c@SvHZ;|^vdcG zT~l2hVgi-N%?M4H8X%*y=;jCocCAKQmQP8OxRlA&7o=Wb2~O}iLrP)FzGJxuOm^Fj z!=j!GW`|J1Vm@&!N^01(nuLkeOGyAS2R78m1HDqWiBtOk;}BWAK>|JiOqwmnJ0$G> z^78TnY&n$pBOOr7b}s1J0r7dZ)CAM;AUnoP#~5B~I|TR`#;@9z!+k)CV_diWfI7BI zT#uWfBjVPGTeV5x%YYoy*Z8X&yf~kO#`F!(Cw9YqMh=-;duh21kBPN?rVZMKs+qQ9 z6!2Ctm-9KcEWTDOWN>lEF!AR0x{+hL*CL}0o547sux(XrQR>_KZAt=+{V51MfrHrd zCl51=sRfZ56rpL2u4d~)g5p&xZJPSsh=EGk!Gsyzx<;IW?qQGgTNhN~|L gf^ecDVevb<^#k2KRbztsPVXg>-9+*a0%4HjAFIzY$^ZZW diff --git a/gestion_employe/migrations/__pycache__/0004_alter_employe_formations_alter_formation_certificat_and_more.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0004_alter_employe_formations_alter_formation_certificat_and_more.cpython-314.pyc deleted file mode 100644 index fe9aa4a50a544ab9e4de607b256827daf059061a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2006 zcmb7E%}*Og6rWw&YwrfIS-wkX9fBG*tqf8l(N+~rg+-xikhO6RX${ly?%-_L4|jHq zf~871R6Y04NN)Wfs@^F=0?oCjsuxS3^w`eq+G}DtQ5eg!@8kD=^Y*>B^U>I-2Kf5$ zhd-Qu6afAbN^fPl!o__qJO_Kgl(xZ^M5Qg6${&C!a0{673@}r>QiaD3u6wE2LQ`h? zHZU@O3)PUB<~a?5s1x`hQ@p^&ZfISN&3BcHby*y{3#eoQD(@+r=)ICe)4Q3<$kl*Y z=E+E=yqm2QhWdCCW@e2uie)Nm-Q?cLl{IsmOONqacYaQa|5Q^mZ>*(b&pYvraK6c_ zOtIYM8#TvzIlU8G{;h0U<&oyu;h7oqXrNqf+HB)zyf52oK7%4uu zVpyS%Jj~M3p4oS>Ycn+oVVZ>rb@m+#(e{)bSS=6xG+apl;YxdYBY_l`E9K3VZ4WiD zVWf%5YsQ&duFKRGPZima25jUIlX?*1_~4w4D2Drv-x3urbERnGBG<*^5V?-+(BEGg zsfdh-Z-Iy*W@AxYP^UZ}{`S`-QK6|DwpXkdk=<%lyPxb0$Hmz!}!4`Y4#S?w;#pG}0A_4;} z`x>nO?q4qH%Fo{rqgTrvBh6I%De@aZ$*xBu7L8S0ZPEJ}dzVWr_eDIo>*Qmu@&mQQ8 zv~4Q?1w$UQ>pRZe!VEhP&3xat(uao$qZ2-URG$gPe!JlQ2`D%w8(xwF2E1h*&v_?u z!Py4}0_0By5_uzk$Xr5j!P4-CdRZ!L($$qI##;A-jXDk34y7yIKQRTzWWy;rWH|?x z3*Z&cB?e9C7GTuOAb=2}YXP(CZ9d-5S0ayLP5=@+|FqpqFdkGmI1mcEb*rz?K3^;r zuT;^FXcXYOFe7%@kE&eZ($2PBA$CRG-uxw8Up<-PyK1qo#+8kxzP_9=l|<3eQhm{( z4ZIJRHMU^mX+Yx==jq(W%6BMb6Q$^jsYSXUD0Mj%t!r`-A;BK7FKZkOy#=$$iGz6R z<{9Y|?;Rwcu!&ydM%-V_Jf*UCw^O##9cIf?)3EHFE+@xr$UYn0;HWM>emTp$+fyam zJyu5gyx!=uQG>Lj&3m~m#iR9=aX(5#HoPDgGa-Y2K`6N32R!(*yT!M@^E?gg9Gar9 h^bvgXY&}C?+>yDvJ)?;>esibWTke*)Z4bp0`5!7Z!u0?E diff --git a/gestion_employe/migrations/__pycache__/0005_alter_employe_email_alter_employe_username.cpython-313.pyc b/gestion_employe/migrations/__pycache__/0005_alter_employe_email_alter_employe_username.cpython-313.pyc deleted file mode 100644 index cdcffdc741c3005c0f3ddf7bfe56cf406d7b4739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcma)4zi-n(6u$GX#BQplDHRbVD571wv>Do=fGQ#iDkXHt!GbKE+~krP96P;pB)TCX zF|%}KhW~(nqg`6v%G50=AU4E1Cst5YAx^sI@4b7U{oVIGnxA(NEOWUO>}d#nQ%SbW z2^j4FI7I{z{0!}5j`uaLRZ$t;MMS%Wi0W2yAw9WcH zPgsvd32hy*j?86UChPe@c=a1z@*;J~e@jCab(14$4Wi(9z+4@?Q-0CN?=fkl(d+~) zY|H#WFs=$;(1ANA^EB*iVM;rEG-g!cfN; Z|FRHve^`sy`siE~*UpM-KM^D;`wu%y^_>6! diff --git a/gestion_employe/migrations/__pycache__/0005_alter_employe_email_alter_employe_username.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0005_alter_employe_email_alter_employe_username.cpython-314.pyc deleted file mode 100644 index 06b5f3473d4711481085ee8077e0bf0cdb038617..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcmb7C&ubGw6rR~lHoM!_q_L%iSbvaS79r#iDX2)rAEcrsta?i_Y?Dd4cC(xA%!0k; zAfEj*^grmoVG$DM>d9LmMQ`Gp-7Jw%1PA8LdvE4_^S*E9?zJ@&!PqDl-MWI%cNwH3 zJ9lRL;EYfk+4um}F~@amI~TPJ&5lNsK~@N+jFVc6?(*IC=*}MAynu4lt~3i3S6pIt2N?yoQ9-J zhfc`pfcl(tj%m+Y5ju%62@xhCa7W}(@K*^rjT}$HLX;<@=Z1`Xu220yZUYeYyVUQv zl!a0-VLp~OJeMtnnKkZ^iw~T*fe$PnE7dwYE~! zKD-D^>79pGMi||9j^7U|-J@8?Si7VvsYr7626#e$n7q!T@Fs*9CX@N8iZTABA#7c0 T>sb3_jtjeA3%frN1ab8rHK+30 diff --git a/gestion_employe/migrations/__pycache__/0005_remove_employe_projet_employe_sexe.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0005_remove_employe_projet_employe_sexe.cpython-314.pyc deleted file mode 100644 index 0fce41c264898cb1ea6f8cdffb279d659d8d3e39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1033 zcmZ8f&rcIU6rR~_x4YZ&t3uFVP?1Yx(s01k7-J+DQdCH@>aAt6>`u$V{-`rkgc}Fr z*|UFv{2l%QR$>AfkDk0Wf#}sYyDbnW*|*<&^WK~JzBdoX$7}>E`uQ#38bZI6Gg|o} zIDZD<2yGz;ucJB^xULE94w^ytkfY5aM{nVVF)F(HFY6f=x|6$)D*4~at!UDYf(~;< zki=XXQR35(dskHmm4?pwX8=d2g#>nx(6$U{WLL4swepQo&b2zY40bd}uK^9UAZt8B z*KL}WYnhGm^=O7+FYgqcQdQf+fQ(u$i#vtdkV;h(wquH-V*#NtX>E*{$O4VJVRA^N z(Phal6)8`}jl^z5WiGRv9?&4nc&;FB?2{;A z6uROKX>PdO>xDtA+_jzw2d{lSj)E8>C25kB2O-iXP~`VQ3b;hbyPg{=Zs1K2(he9G z(1XT_+V*Le#y*X`fO4iJltqU|$v$0EgrvFR`zc~dXlbqPxGdYTlP(=Skr_g`05%?R zgn}U*a_>lBgA2;7}%6PNhXg;TWPbA&u>vgA|ng0Z9UcJ61NcWJi^hTH3 zW#hYa)x@gZL#Ez$Y82oE%ttgZkmcfmu1y<9uLd@L({ K_y>WLR{sMz3KQM{ diff --git a/gestion_employe/migrations/__pycache__/0006_alter_employe_email_alter_employe_username.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0006_alter_employe_email_alter_employe_username.cpython-310.pyc deleted file mode 100644 index 0b24c38b4a6af6efba38024dcc5cdae1096a0ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1074 zcmaJ=J8u&~5Wc4$7uyL1j{?vMXw2iz6rn;W5fDIv2qlEV&9U}O>^tt^?CvFTT4>YK z&_Kyw+LkJRArg<-vrVEDthBQ;v$J#GH#1kX+nzz|uDlw5wGHE^HqI}Hj5XRKAOQxL zsnIv-v{Eax`*!B^9n*MWfDO)P101vy_mkas!Q3{w?g_myHoKPcvUtRqjEh{TT2=t2 zVyN%VuNE0=w8aM!Sbe2$fjKh!Hadw57T8!z>fnG2HK-rk&^TV)H0h=R9xTNsw4hBm znu(VzC9QAm@5ac4CUlN#I(}sJJFraHR#fxN0uupT9-+|iBFrXfF+~;jdcD<%r4sqV zM<l-QLaavT8&XvnWzt z6cN)hMbcYQv{$lJBi9z-1arWA7^C1;m11ZA}SYU^cKi3{Tsp3S=+q(>Kq=6{0}Or~7_bamR|I*Ep1+0GxwwM@(G zn9i@6c89daX%$J`xH)4T%t;5Db8xQsHz<#4&Vyi3m9#2jmEer&2Jk;6rc63*Y-9}9Jf$Y6j-GZs-f5h6hsgpqJ|WbP$Vw}2^LMq-ibYQz3a@3 z^QC~0kT`RJ3;zJzIPxcOY$K#ZbK$@#w^RmkL%iAbVw6Ki^1RRe&71dr<8is{AXv}K ztLz68p+B^dt^7n8uY>X(@{nh2B5r`pZRR#iZf;oIa#0N}BG0^rJj*xR30ek_%4NXS zi|2brJ%6UvJN2A$2CT=4WN{>vJ%|Guimr}jYj&cHZ9|{#CnxiqXK>TYH4Se0`Swhf zJe9f@sHD)YOnsRKvAkz{1+TbbdZiWfF$fMIRI~4<5)dwVGcCg_d$V5NciK-*W0}^j zW!hA>uTAw#YcFKlR4z}{rr|l>+={KMZ07i!SK*c3e7&kl?`K^*D?l#vajr*&?jojx zVHh7!)ois|%b0|c^2`U4u<(L!Bq)!_fT}|FWj;y!@a!KzJ}f7OOM-w?A?l{ecR~`~ zhq;k`9MY&K`)X#F@=h!$);N&jBy&tGWhL18ZAQaD75_WT9z|?tL=Wq$uJ*ZmO!i&b zCo(bhH!cY|CBcD9_nDBQak$>5J0r$v&~RT`Zn@n);iL<<6K>4iZMsK!!`-4%dv3Y` z>oF-@5(Vzt%|`Qu=8H}2#!-0CIQw2V%vQ6M^O)lS+=@W&RH;wHA(nJsa?Lq@1vcgE zl8^;N#$50@aQpO zcs6$@WBe#9SUK^KW-sdrjD>_(*2P3>gps5IWBwE%jNyk=eCu^zLkNF$Ys+1g@hAQo z758O4^w-vW@4fcB{sn^h(}(K=)n2_otH)8TF+AWloSJN!zv4I8zCq_UDt%y_o4G6Y zS6k-}DqTJ)E*uvZPOrMB^R?4z?WB7BxO)A^rC(n86+f(g_NZW$oQru+CwYs<)y1D* zd+=ue!OQF%p&u<$=6rT00*Y@VO(~<}jx-_A}Dy##v6jgwz3avv+u?7kU>`ceri9KY!>&%Sv zO952~apuH@e*kVA`4c#{QKdw4;lPQTt3+@^%)*6tO#@t%21|_W7(!K!BgO>n;3jo;EDf<*$uSg`A8%BU?ddD`z>zsIwJOscIp2{YM0w zZvDCOTE^;&85?8$`7zH}eJNvOyfUJ`g$iimnvr)aK3W4U;ZkKSNI z0Jg1favJWydr-p{@Jj;>#_%5lJMd`=iFJ@#2kF{vJ6XGJCuw&EmW3XlGEM3?( z!0iM36oC1!?etVr6J_VSkNC^kHFd|nn3m8VRnRvD^#9kO7j&#Dje>$!(jQ4rq+*#u zrTH$Iz~Vb;*S*Ip+SK1jAWVWGv@Gky0oJ8Iz$>TDoaOxB9?h;io?ZDHXd_ARA4V^a AtpET3 diff --git a/gestion_employe/migrations/__pycache__/0006_employe_date_naissance_alter_employe_sexe.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0006_employe_date_naissance_alter_employe_sexe.cpython-314.pyc deleted file mode 100644 index fb636def514c86c0f3d4ce3957571271eeb88a34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 zcmZ8g&2G~`5Z-kh$99wcgj7W;74!$82r23T2q1*0T9p)N6&biCUAgf#b?Vr`yD9Ch z2gI2N-~s53M?m5QLR6{MUO91#)C#W5+DQ{w%j0imXTF{Nc71m|V;H*21Uc~y+n+8!crGeKKVuj%eWCho&&wx3C8-RgG%3WSP42qX zbA-z1ABr>KZv;+M{TH@M8y)}v diff --git a/gestion_employe/migrations/__pycache__/0007_remove_employe_formations_formation_employe.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0007_remove_employe_formations_formation_employe.cpython-314.pyc deleted file mode 100644 index 3a163c75081fffde56418904237f7bacc4316631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1217 zcmZuw&1(}u6rcUbW_O#mY5I|V&}vOVgRt}(9LccaFh6fI<;afzM)5EJ#!;$W*=pX2B|eQW`+HB9$VxQ5JAZib5KLLIz}G ze}ix*D>A)q*N91N&-Iy7_blxA)zOuSe$e~FonuhpdqY6Q{Wz6i!VsujiIoO5BkTBS z1Smo&$L|w-ylNuyMlG+Bp-@pvsnKlYb1YWTOLG^IQu31A{3W@?i#e#kI8<|Tgg`CV z*ToR&1k~vy9OLSYGwsPh6&A{{5Z+Sn(7h-?hvy7wAy2Zv+ohGm5w38ZHFwnwmCb06U&rdTgb zx8^a?I$&yeVXg{`Z*J^vZfreZy4S#i2RVz7Pr2k(WKv4(gC@m3LL_)CJw5<)Ht&?5 z`Iz|SLaDrk{g>2hly{4;5Ser0l+WIJnah+zBs}p@kYTg@v%U>Lqj5wOzGZ0Q-0_>- zd;nbqXgfkz5@(d-$6Xz0(`|L-L|y5muXd)EPh*m%chxYvbfPYG($_jui=EVbJC!*} zWj@V(o%_DJnT}~j_4wRiV@XXP^jLGdVh~x=b^xde}$W_BnU!J b0mAApaN|@-3d%>lom^`r*Zu(>garQqs!BXd diff --git a/gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-310.pyc deleted file mode 100644 index 8017401c8aa903e74ec003a9339a79e33cd27a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1357 zcmZ8hOOG2x5T5CIc>G%LCQBf|AqP14V(*DaQG~LwciBK3Q0#E9BDKb@^0+7SaC&A! zmMh$l{{%N~{GPsY+8=;~IIvXr*h#cAny&h)tE;QNuAaQxZCUjE_V;V?rDs`xY4G9W z5_m*k@qh-fz)q~WO_C)nb>@z(ZBF8*-rP(5xo=zFSm1*9s|6l1Syzj)tu~Wq=I`97P?%H z=_bi9Q4LQ{PQKz{Qli}3NQNT0VXF$1S(u_anuW_XUf=@qG=xw{R7}9^T(KwPzN>+)2?(k z(o|!)&czZ7>X7g)PcVzhwem_)O1!$(F1EZ!LbU;lr4$>@DfO1ONW$!uYOk@9$N?8s z*=O<#?dfJ!lBi}qvl5wV?MUKbNh@pKviv6=0;tCRcsiwKyWnfhci&M>Iy&l7EQv#j zi6*(`kd-;5?HWG)mB0jwXZ>Rpa5K%hYH>~tUL{C+hx6A}m}qB>05?PvW=nyEbWB+z zbAS_lBc#59s`FSxr*yREI<#tz)}h>~Gkja_Rgq$?cE^<3>>X^K=MqJfeMfEJLmXyN zt{5!n1avLLoob9ur=!#HnPhsm-sy|k1%EL;d(J1{kI$Z}R=&aAMg7B)kIBaj|Gpfq z^Av}xWljYQ$N92KF)NGV4>FIjMNx7k1Lf5El!?g#2_UEcr}gZhs$*cT}uQW$C(Q~!Wc nUe(n$->oq08^TSr_l4HlNUskb*5~-OO{mc61*}7v+;RQ~94VrQ diff --git a/gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-313.pyc b/gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-313.pyc deleted file mode 100644 index 71c9e23e6901c94f06d1fe1bac729ea033b143c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1978 zcma)7Pi)&%7=N~7=TFl%?$Upu%fcvwR9ahU1KKf=LennmAEw3Wq)nEL6Tc?j96Nh< z%8EE3A#vfd3sR3e4Pi}_^WWrgfh9#0U`m26IET;IiS= zbwf7^ro3sCwkUr+pAFHt-t-);La^>(gN`+bS=Y&tb`KxXD7Y|n%lr(}_#q}`$HkiO zGIZBzl57~l6RoCgm{iGnN3R>Mt#H3OHMUX~|sF=WVYS{984CkLiYV}m4Vx(Aj)-fZVn zO*af09+oHWv243qjpaKl&?uA+h8KH~LxL@qeo3+R`&Iw&f6PR_z_=49U2w+f|41Mj492 zUJueq!y7qeBbVPKY`xLR+zcQ=#soI7eByZ1b&q2}|da=lnkUziN_-;JrljJ&7$mGJ8@ z==iXS$JeCz9^Ti@(X!4-dPuOP$%J z??XQ?w(e*xo3v-$R>JGav&S>t`D|xC`v*do6rqpMCqh|xf>5f$1lbUJ^4#%-ZfdEM zT6$Dzr>?XT@Au^Nw^BE=+R3aw^4giJt;7faQ9WL4XRfspg`T`{e9%oVchbv`N{>VB z^kyru)sxR2A9l}O>YTguIN3h8)k<9J$*JS5?!v{+!o}~UAEQ4+yK9B^TA{mkv%Pk+ zyLP+1cDq$Ogm6CR^88w^uQ>KWQ2ppL3%?uv1`LwVY8*Jf&P*d$gC75o?12dNKrY*) keSzb+Qwede|AI2VqPPE)lAQD~)=ez76N^s~2)>Vh0H?4Mc>n+a diff --git a/gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0007_tachehebdomadaire.cpython-314.pyc deleted file mode 100644 index 276bdbfa2c26f1c232817753e224c0769e253a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2017 zcma)7O>7%Q6rSC+*Sn6JcvB~Ctky{(R5++6QV@wssTAV4PHAYmaVixhS=Qc(z3qC} z%#K5YIP`!x_ZV^F%B{z8qDPL770K2}2qaG245{D-yz$z_w5h~O-uE-#ym@clx6f~l zo{1uOzLtpnMi`-AxG{LZ?mZ_(5D(EV(uFld1(4#JSdgeR&3)2Zs1T;%f=uOUG=VN6 zJ(NUxcqhCu+TTAU-jM=>Ms(qIl#zes=0_QUDL$sub}N2HWYL;kAttpw*JpCgv#{fr zhhiYDZ=C!k@Vs^)Cmm67SD})AE-TOwoE;n95a^JZpo=?^jrgf+k}l~XJ*>-%pxX(;&Zh6D)jE(dUO$T^?W*IxGNXLrUoE}h~}EcV&5 zAZ8VPVo)!1IH6C{2|Wo6N-=ePz!s(z&2kkNaLMv&re)d$Gtst+c_yyqG9eZ-8`Lw( z1e+9FY@|-?nn@0f`}lyVJ|?#5*q>t-+sCBj`PgvH8fKw;UV{K9Bju`Rm$47zG#?la zb}O{X!qlb&X9U6-$wn;fmx*2H#05r&OOEN@XCqbIAlR^QsX;R$;eBTzx8XQU4OaGS zmqq(Y8776DL7uMnnPFNMi{M(_@eUv{%B%B@Dz7giG1YS+tb-{m5$y1yf}BO_LB^q8 z{_>uU9n1d~J~EMwRj|*qGX^2wo}Zt8*DxK5$-oEFw4E1x4Y(d2E)#($VW;6*HVfb6 zg4=M5++ODbY^81}^8(eVIK6b4Db*Ha^SN7o)fXSOZ$#E8R$%Vq1 zlIv@kNv0URQVoMe4Fg6*!@;1(4CB*=>F`X!8Z(SNoA}hRUF>>%*}`==3cF<+`-Fex zY-FX!hIKw<2%mQ>_JLhl2A<^ky)kvAYLdQM#1H5|wQD#~&*b3Vi_gty-XqwqxE}(i zWb2;kRy-zJC8&Zo3a*|-R+cwcmUF9wbDNDVZxsv1*5;~itl!G5-egg)jt8@E!Z3Ua zbFd7wpu`3OLH7-E5jLK{4>5h^%Jvqt#@{Y%Z0E3lpL+G}%{9Fcyk6+`_P=9w8~VOz z^!U_cQ~ztp)(=Po0{31DD1H*A)>o)2BlVWhmBfVn@MbrP)U$0R-BQvWZT4qv;?aIP zIoC?gJqi6V+x*yQy5uIO=69HTn^G5{Po$Fc453t+8=56`v~!1- z+Nrr#YVL9QICZ5Nf3KsZzmeNB^R1cr$MksSYBT=+e_T&zk7uqo?emvg=Py5zzgNFg+e?L`r9yk@ z_R-Sq_R`&>rMu1QKBV)7kQ4vpqA30r2*~upmdG=`BX%`4G5RbVQ=?sJbX@-O23Z~4 zR7PP_L9eq`DI5G@Wd{u>*LbH!`s-!S-3vOeKHt$}Vvl^m<@5dq!Sj5pay8)hHF5(? p{x9P5A=;G$K{%0-aPdbp^AmdWnVb;hN6~hC_9#C42LhuP;~#_%4MzX~ diff --git a/gestion_employe/migrations/__pycache__/0008_remove_departement_chef_employe_chef.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0008_remove_departement_chef_employe_chef.cpython-314.pyc deleted file mode 100644 index 7cba6b9ed756875eefed9ab4c0873385571fc8a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1015 zcmZ8f&1(}u6rcUbX0wTHjg}Ou?MmB25JL|_MZ}L*N-A2y6mLm~P4=a(Zg%7BY@xRv z#IyKU*uTTGphaoet0!-P7QOmrw`+m}`}X(deg58?+cQ@zg6GS^53j2d@>44LDO`f{ z#|VzeKB3AEX(~c#szO~R^W+wxYK>5>qqK}XX!5_SWmsrbUm^9vFR9km#2R=9+!0b`-A$_+*6okFWJ9gtycMxiRzHjsuq=rxm} zX^CDsRXb*@I(?gAv=yj9i+KiWZd_7msKTNpQKl9WsU)QrIfJC^!qDLY1`vou@4bS4 z%22Xmfir+aPh}AXLq9x%?RXt)ZGo_3;rU+V2#C22k+|dewv4u2uzO&;pHKd!wI5;1 zq6>W|_C-=T1l|oJNVC^9Uc!7_jw~tkJ@DNVvWxDs2bdEl%r5ID>v%R8he3D<`6cUz ze2^_-0&^qMG+A1NvBY8w7Zv+}xWd@m*zqMT)Mgp$dpr`p7eEk7GY$j-7lNJ#5ts8z z$}}yzE!#`XC$5_!u1i~GGYoxjg3M@zL&%@TJY$i-?t07-f_vRqK*SiI#i(=qNCI2; z+b<*FQM=h{KZWRx2#4*x9oo#qe-mg=UR@h!aW9|6)c%-UK+Zo^8p9(lUv?@ai1tvt zCu4(@TFO{cuN%kD#}+AFJ2RI~&81Oob#%3MQP4`(*i3I1PtCXbKc3NHg z1YbAB_iB7m)X}YMRgHJg_>H{EZe34G?rSGF2peuU9bh`CtPjaP^Sy~EF&|`WdB~Sh iRq%^sqOqnZ${&L$^$TN8F+NylbF1IxR(}&z(&)bs2@DGW diff --git a/gestion_employe/migrations/__pycache__/0008_tachehebdomadaire_statut.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0008_tachehebdomadaire_statut.cpython-310.pyc deleted file mode 100644 index 9e0bcceb3146d8e3e1e2c83c71ad24f5011dca29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 zcmZWny>8S%5Z)i(oo$F9DI!5dg>+4P1rihp1%=;&2oWkbE5|cu`(%4ByS7AVq0NKj z6=->jZK?7ENJuEm?tv1Kk!CdC%xJ#dZ&z<^rHt$wH_cDZ*bfh`TSQ==+&-iL40y{r zp7T!Rg0t5Q1jw%pB=VK~B6A7R5t~mgXqL@|OS`5r#n9;9x@o5YTU+|pb&Cn?liNoW zkmVd$E`V1&ml&-ko&cw-8ALFt1WaKD@tK6=OwvRQDbd|>$-93%M0%$}>nRm>>sFtl z+g&UckJV6=HP(0xx+|b)47%-`rKuf?VH{{njJ+!LXzb_sW&a>#zB-`knjUdX=(HaL z_!w8OW`N6LYzLB|_@r9wtD&ZT8iY`N(V>e%oGcq`;c%X~ScSS$ zE>()=#uh2Rt<=d_w0_njz%}-Oec7Njf=FHb9N?ATVWfx2L0y=DU8>jk_XWy~05qz5Vbe3*kR8v#S@)NY*DeWmOvq_tvMz|D7qh z-JuXOA*0J^BDml?Jo+79hW_C^atW-8zS4Ve9Ig{C5t>&A-emV_kBgsfgn35am08bm HSM16^i-*YX diff --git a/gestion_employe/migrations/__pycache__/0008_tachehebdomadaire_statut.cpython-313.pyc b/gestion_employe/migrations/__pycache__/0008_tachehebdomadaire_statut.cpython-313.pyc deleted file mode 100644 index 3a12f6bd68e56c1e1d6d0226a84bfa97585c1683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmZuwO>fgM7`Br%O|nkwItGIwQB}JH(AEndLuk@iH$mBUsNsTwOqO_UMw%4ckr*c= zB+gv+BlZ`#@(0Q;n|$T8Tc?6{#ZIY)7?$$pdHjC(eIF;o$w>#u^%c_S90Kq|k?|`0 z0mBsu4gdlOJ_k)mVN;`870iJeK-vv}bPu-7ani;6o<71&RKwWhEO;P^VpTCxyK=?&(y`A-kMv6Q+8^q}z+reIl;b>-7hi`$30v$WEAc z{m_pn5!08qOvZhlaaqM82@cYXvJcjJQq7Ut<%D*lgpkaZhrP(jw?jhJRHtfuR~N;g zlSTnyq8O50Ka084&3}($lC*h8`kh=kocLWLjNBG>BNB&)VB4J#7S25w3kPEvnZ-on z62|W`KUUF_O<}wnQO0B0Ns=meNO~j*NfJbaQFV91S`EVuRhAlx+G`!3=3F>wkBo0| z7GpJW6kwlo8tr79FpTM}Oc}}th}Ub6yqAnn=B;jSR#$oY%4-nzmZv?h(eTi-)>H2v zxxI^z#FN55yexcvWX2bJ`&3<7ZWLf!(tHL36WI3$x^~6T0=VnU}jxAD;l;l(9MeZsY!2*>ufgc5S_Ih$2NtwDW#zDQA#hNDCz-Ggb)Jyp%l?7GH^gjx;XYGadGUhyOt=Y z9uQ~#Mt=u4PNA1nd*#F}QY(68*KSlqvE=c4UeC;%x9i1A7afq-_i-AYAb_8WjIP2d zIC?6<9&Ce)HlT_)s%l)j1=DaFTx|wiy@6`xDCz8ZU(YeuUE>av3%?XCYr^SUwr$EnRt0gRQK*gmoseTG2Dw_JSey9on(aCj z&DFOZ*H}Ik<`zasR<&J|J8n@5y&&w(kwP)aJ-~ES&YjSU4EV{%J%c z9>e%U>P1R}WaAjOLdtj~E5wOf4oHv00g3&PFsh6a*0Ug3S7NE5sJ+thXvT$;^vGx@ zr!iK(gg*8-r(rYYgken8W*o^I#M_le^*4-AR#7w9}DVdhomme zczE87tX;}0yYy}# zP@3=GTkWso{^Gm-4j%$M*H*P-fT=a@xM5((>ZZu%2CC#n3ofL)his3U|(^b diff --git a/gestion_employe/migrations/__pycache__/0009_alter_employe_adresse_alter_employe_telephone.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0009_alter_employe_adresse_alter_employe_telephone.cpython-314.pyc deleted file mode 100644 index d24853009bbf74a616d653255aead0b23c448422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1002 zcmaJAr1OwzG9+YUCsb z{(^*rX0D#RHG$~WncXfBLYQP{pJ(R%eBN2THQ^w&wvPtkCj+71nq(_K z0;kUuI6ynd!&Owl0#^)SETUO-A9=G=49w+2|-;Z=!#U=@9g^Y_R zq(EbRt)c=AfHp(mOiL=A=aB&RLRZLg`oP}k_$il8+=Fc5vxIP=rr#vK5G>s73*dw> zJ+xCjI7v4i*WYqryk4o*H-YboxL1Eu^(yIhrP=z$W2&pR9}!=dao*%e>MN(`0+xIG zOuyV@(}1_s_5}?sWLNRfG-j-WS3?Kcw@-=-N5zG~+`Yl{-9hQjNonb*wDfJ}$MWIk zajAM%$l1NiANKe_KqF8-g2O63f<9`;y?wK`>t*_3>)XJ}^mA^=l#QQ(oN&hwg diff --git a/gestion_employe/migrations/__pycache__/0009_alter_tachehebdomadaire_created_at_and_more.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0009_alter_tachehebdomadaire_created_at_and_more.cpython-310.pyc deleted file mode 100644 index cef3ed8c936413cf66798f64812a65c22a19c8b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844 zcmZuv&5qMB5Vn)FO+u>$4shY`gw)HXM^-{;S1f-LtPtB%E|!~_rYVVCoCL94;o2AA z$Zem4H{j?ir+tN$5R6k+T>*|fnwig;`96>JXcRMAUv8S>yT{lM7hGNe1^cw?`(%It zFImM?UU{j<*)s+n_@5d0$d~>nKlLFvX5-!&on>Rs##NCU*%VsUwqI$$vd$cIc|{cL z)2?5VL6&l0sRumgsgJ?3=Ne#tIe>t^-r9ry`XWD|e3&x`zjBBmhAV5|p}ChvFeDly z8@;;dPh@s-tQ{4B)vDAdXm3v@lLw-a*#Z|h16@gwg+Wm_vS}N8?H|O(nL*hg2-!@j zVsBPT_0|TeEz7Y_YMnx%WQCM-wl^=Z1l!+K9Q*W7h)QI-HTB2viMrQ$F594~3WeCZ z>zH=Iw^Jl!AQhD-ASB?x`II+16r8!iQQJYb&_#x|9RSW{TQ)>Qeh?+9yjdKLV;hQ& zlMpr*f;dt+@`pmaYh~$px(INE3Q%PQ)`lJev++Smte!dr#&?O)A!(l$6?QorJzmHS zY-7E`KXX21<_;b1%=!Cdp({-0nWoaoq0ZV0RZ}Ogjb36Sj$gcao^)lx$&-(7oK+~kH&$GU@29u hcVX6v?*wfgc5M6)7v7LmrDX1+XQdO0rfYkPaL=deMH6SRZ64`J8!)g<66H~`d*N#Lv zAt7<*(hFw}^dE5N7c`evd*#$ys(`pM>ktK%3QJzUnb{e?c{77t&PMQjn&DngMd-UU zMo;Pw7_0+0Kp0`=G1^qPvZ-=)9?hZ!gw?AEYmQPiMoHuEZEc9T*3^rsQ)v`cVYj^| zr?D3Xkuch!%lxP@&Os>i#~6GDaDW`d6^yuw6|P}*Md7-Ws%HOA7-FEJVckhrCohbp za0(kG6{kzufAUSp&tH_kg0S^e!8Xp|Y)O+a!eMGM%d-iTl0P}pCIXt8E<<5V_gf#))M2} zA%jSo22dUXCIre7gP%)9PUV)sZ_|xd=rvd*(k|PfT|WjQ^bPS@(2QG$XuFsdCP`Qk zB5Xo{B@_glC1kHleaRH82|{)}9>qS;2tpZlS%(EK3mP7axLh1zmwh1mKsLp7>Bv<; zj+)nIiBDJ?EjkPfJM6I0PF*31rd|Vdi@8_t#w;R)&q0L&yhwC5?mEvR#v`Y^wKZRk z!{<(gMZ0m>aVixDKdL@-&JE8QudD-OED&OVnrksK04dvJU} zeFIr*eNDY=yxZ#A$eKPj3q7-NGIR4}s&JB@J+F4q+?DMzgl3NSC z{6g>6ejlNVx~;Wcy9DPkulwSr?ia(4g#rS9+Pc9x!F8)MdB-y_KU)m{I diff --git a/gestion_employe/migrations/__pycache__/0009_alter_tachehebdomadaire_created_at_and_more.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0009_alter_tachehebdomadaire_created_at_and_more.cpython-314.pyc deleted file mode 100644 index 38d4826588d71ad3b6ff4516c7d9a4dddc5ebbd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1125 zcmaJ=O>fgc5MA4eV>=0LQ>ubQ1^tvlrKks_0-}hj1*Hf|WWtFgtBt))OdUI2ZzRg8 z2gI45LHPxoxbO>zkXr4P6SqjM;L5DsC{?Lg$>W)wndfw(Jj<{kYt~PW4%9a$Ks;4Wt^9_j)!zi{|&s4@Q z&1p7_u?iIBveT<)!~F+K2dqL;f8Nfb60&nI6g$(fY-5NsLM*A=vQ3_~Eg+p2=JO$2 zF~Nz`rfu4E!wzwY$EdIzMhT}bCcFyLq?FYrKCDIARP*O(x!Jj>bpXZ zIN?1m3>si3?6C-nGfq4792$v?OLs`m=g>~xVxI;r-abUz06*5Ek<=a2PS+3jshC+= zS-Fe<84D-yMXji^G2s5rcpThHzM~3*Q`YeUN_!@xs&Vk`kOF*$1TZ)x3`nd?U+(9G zfny373kzeQ1U2C2Fy8ACU($kT4C5V-McfDEAe3pBc4^?!!0~9ra?36!=7MOo(eM25#4K?Y?XAAoKr)+LG!*($xO!o~5T4Bj;#xlp!CR0j@lG=Ij rgz+FbyoYQNLIs}a2AF}SD9RrlDaBKLLeW23N8=0M#}|Gh2;%O)%DN?n diff --git a/gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-310.pyc b/gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-310.pyc deleted file mode 100644 index bb5f52d8a31965c2fcd49cb0d4a611becb311055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmZuw&2H2{44%o)Hk-DhTsUzBX)nzpPDlu~qT;7wtBN8Hxs0ZUF1UM--AfP9_@L+Pm_K55oWS`~&qAwDr5RbmxOJmriBDUOg@jE+} zax2G{3sG3FDszr*PV14u+Q&x?xk!&o(vjQt{L1}tB3;9OXH&D3n6(5XiZ5c24ARN_b zsTMLti?zm4CH5S3$OlJ#zy`*sw`=W^+e)sDY-x%NTPj9>R24RPw>+9{x=0OmDdl2C z^q{Yh^ev^{_qyU*83C^7b=YJDww9(txM&~X8FR2c!|4I>AFzw}`BRSi^yyNs)!3|X zJpx~ay+@Y@akWa8rpDwfGn61XFj-$?)3wR5H6?cH8$$b7`{-54m z_vBCSc303s8xajft8J|c_!r6AbJN_@*sQ-Kb diff --git a/gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-313.pyc b/gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-313.pyc deleted file mode 100644 index a486ee0f6388cc8fa1eaa99e6eea26cd1f1fd628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1129 zcmZuvO-~a+7@qy??$Qbr3`8Un!ex~}jqy-pNE#ZWwGiy62eZj!+a201`%!1NMs6l1 zp1tq~Jn7B90vE_$JrOU(YP|Z+ZcB|a$-eVEGtWEwehmu+1Hrnt$K3BCLf<$UFJ%OV zTL6v_Mp$@?Y625#A`@58B3eaQyn(P}2@Q4ZG}-S<8D>&jHkETuOffNhx6SO>4TC6A z{m`La)SCDpl!gNb!%tw2kcF6l5fib%BrI+UOtzFp{%?m2LnsoKtz2W~$~y%sSS^b< zSC+uPc%??d8u-s&b+?JI{!G9Ip32_X6xkHcvwXW?UQ6_yaYpC73XtP;n?^iCLj9f> z9@3-)t4wS!ri{dPt3x}q>4d)R*e;`_#i$)qhuAT(1Bdt_qsi=lvczyemAOBMpD0bw z4h|AI=zE?iL0x$*NnraF&bU?fUFtcB+ztE8RJe!N4;(j9>U`tew;AU*mDCKg#6l}J@^9+S}u(kpQc2sIL;%U7Lz&Et5A}Z zCq{)=H^cgN#~wi=?9uVKT_+@pVf0#1>6p3AeoP}m*e!Tz2p>wi+YhW45oM88sn=I3 zarnxr(&!)#dsek-;U|s9)<2!KCev({N_R_Fba&FV%kFOU4jCVn)Nl|5U_PLMiu65U zAc^zpyZXRD`rN6ubfPVtE!;kvT|O%=o)%Y6imRXJzgCZn<%^uG8za^7iME`o7A{pk z5L&my0Ya{LAYLFe=ZTp|VXCOUudzGh0Cr6|(Veaxw8IUjnbtY2ZWbc1PNrQ4lxPpL n?rpIRpaOi+O)vvV5QN_<63n0Kte}20PG{DRXV!ipAgT8s)1)&O diff --git a/gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-314.pyc b/gestion_employe/migrations/__pycache__/0010_tachehebdomadaire_date_tache_and_more.cpython-314.pyc deleted file mode 100644 index 27da2cdfea7c7e53220c8c3de1cf7c86ee0f6428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1143 zcmZuw&rcIU6rSC7x4TObS|FGpF(8*k($vI+V2lwVrVzkp{c&nLnRbVEVSm)wsgWB8 z_71YOAJVl|VFg~B z5$;7{Ec769sUNqlvJgrdg24F~FvqBlxZ)tLHgqUtl@y+>Yt{T{LW-do#Zl|I>g2U& z83)=}g%Ra)wADd#P^*~6Mr~3{hg#F4(G)MB5^~0#DGkfX{a>%7@-fHYdB=p2^TOO6 z&MFF=v^umyn{E^kmw1c{%O#xRB>n<~(V9L94@EZY`M#Y2ouoE6Bmsq(wA#K$eOF`; zq8P-eRAIZQl8W_TXfqO=BrAra{+_j;JWZTEoQWl%?Mr?E|+Mg+^RV zI3}TsgNRXElMVU3(Dj72BRA;>gh_u_Zr~dMWsnOYV|Rcg>wxwoYg=xT^@fIS%6c_G z_P8)`G8x9g!th16=TpFWj9>SNFQ)}>0^@y;#oYHo8b#qA$ z%EGeJH8)|B#241O95==0Mu!Zb6?N(G`ORP)b9jm^7@ae(+2b_Em=&PXxx8($zww~< zGNvr9RjRd38XxkgTYJ9cR8sSg%(bhRT`QOGm9LTd>c%gnE_IKX{QD$Ef;a^89`$u( zR+WB6oz{IDz%RZ9rk_z1<&TaO`$8`$`UmTDa_Q^j(r*M#lKmGL4=*_Y diff --git a/gestion_employe/migrations/__pycache__/__init__.cpython-310.pyc b/gestion_employe/migrations/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index fa0bf213049c5ad38b72dc68ffbff93ebf980330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmd1j<>g`kf=b_KnIQTxh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6v6zbvsxzr4I$ zKiD(KLq9#WxFj<_FFrN5ASb^vRX;Z~y(keRQmh{zpP83g5+AQuP_I|p@<2{`wUX^%T7NdKQ~oBEwLms zH&H(~KP59wzc{lfLq9#WxFj<_FFrN5ASb^vRX;Z~y$Gl%Kd)FnK0Y%qvm`!Vub}c5 ehYe6qX-=wL5i8I*Mj$Q*F+MUgGBOr116cs^oG9f0 diff --git a/gestion_employe/migrations/__pycache__/__init__.cpython-313.pyc b/gestion_employe/migrations/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index 94382e6bdc411d7c8ca8496f9821c4c580059444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmey&%ge<81m#~DGePuY5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~iWvsFxJacWU< zjH8c_f@4X3RE$e%adt_5K}@h`kVi~+seqMZPZb43dWok@rW_nQ~NTfI>K0Y%q nvm`!Vub}c4hfQvNN@-52T@fqLRFJL3AjU^#Mn=XWW*`dydBQ3i diff --git a/gestion_employe/migrations/__pycache__/__init__.cpython-314.pyc b/gestion_employe/migrations/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 0954f9a9cb3a424ded7f964532d087bc2a86f7b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmdPqhza%#@_-QOsl_Fk`FZiFxdl1-m8mhgndwD|Ad%vj`1s7c%#!$c jy@JYH95%W6DWy57c15f}LqXOSgBYKf85tRin1L(+P+ce> diff --git a/gestion_employe/static/gestion_employe/js/index.js b/gestion_employe/static/gestion_employe/js/index.js deleted file mode 100644 index 95eb1d8..0000000 --- a/gestion_employe/static/gestion_employe/js/index.js +++ /dev/null @@ -1,263 +0,0 @@ -const $ = (element) => document.getElementById(element); - -const url_liste_employe = $("tableau_liste_employe").dataset.url; -const tableau_liste_employe = new Tabulator("#tableau_liste_employe", { - columns: [ - {"title": "Matricule", "field": "matricule"}, - {"title": "Nom & Prénom", "field": "employe"}, - {"title": "Fonction", "field": "fonction"}, - {"title": "Projet", "field": "projet"}, - {"title": "Téléphone", "field": "telephone"}, - ], - // ajaxURL: url_liste_employe, - pagination: true, - paginationSize: 10, -}) - -fetch(url_liste_employe) - .then(response => response.json()) - .then(data => { - if (data.success){ - console.log(data.data) - tableau_liste_employe.setData(data.data); - }else{ - alert(data.message); - } - } - ) - -tableau_liste_employe.on("rowClick", function (row, rowData) { - const data = rowData.getData(); - document.getElementById('detail-id').value = data.id; - document.getElementById('detail-matricule').value = data.matricule; - document.getElementById('detail-employe').value = data.employe; - document.getElementById('detail-fonction').value = data.fonction; - document.getElementById('detail-departement').value = data.departement; - document.getElementById('detail-sexe').value = ""; - document.getElementById('detail-dateNaissance').value = ""; - document.getElementById('detail-email').value = data.email; - document.getElementById('detail-telephone').value = data.telephone; - document.getElementById('detail-adresse').value = data.adresse; - document.getElementById('detail-dateEmbauche').value = data.date_embauche; - document.getElementById('detail-dateNaissance').value = data.date_naissance; - document.getElementById('detail-sexe').value = data.sexe; - - document.getElementById('document-diplome').href = data.diplome; - document.getElementById('document-diplome').textContent = data.diplome || "Aucun diplôme"; - document.getElementById('document-cv').href = data.CV; - document.getElementById('document-cv').textContent = data.CV || "Aucun CV"; - document.getElementById('document-rib').href = data.rib; - document.getElementById('document-rib').textContent = data.rib || "Aucun RIB"; - document.getElementById('document-casier-judiciaire').href = data.casier_judiciaire; - document.getElementById('document-casier-judiciaire').textContent = data.casier_judiciaire || "Aucun casier judiciaire"; - - document.getElementById("document-employe").innerHTML = data.employe || "Employé inconnu"; - - document.getElementById("formations-list").innerHTML = ""; - for (const formation of data.formations) { - document.getElementById("formations-list").innerHTML += ` -
-
- - -
-
- - -
-
- - -
-
- - -
-
- ` - } - document.getElementById("contrat-employe").innerHTML = data.employe || "Employé inconnu"; - document.getElementById("employeIdInput").value = data.id; - - document.getElementById("contrats-list").innerHTML = ""; - for (const contrat of data.contrats) { - document.getElementById("contrats-list").innerHTML += ` -
- ` - }; - - const supprimerButtons = document.getElementsByClassName("btn-supprimer-contrat"); - Array.from(supprimerButtons).forEach(button => { - button.addEventListener("click", function() { - const contratId = this.dataset.contratid; - fetch(`contrat/supprimer/`, { - method: "POST", - headers: { - "Content-Type": "application/json", - "X-CSRFToken": document.querySelector('[name=csrfmiddlewaretoken]').value - }, - body: JSON.stringify({ - "id": contratId - }) - }) - .then(response => response.json()) - .then(data => { - alert(data.message); - location.reload(); - }) - }); - }) - - document.getElementById("affectation-nom-employe").textContent = data.employe || "Employé inconnu"; - document.getElementById("affecter_employe_id").value = data.id; - - document.getElementById("affectations-list").innerHTML = ""; - for (const affectation of data.affectations) { - document.getElementById("affectations-list").innerHTML += ` -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
- ` - } - - Array.from(document.getElementsByClassName("btn-supprimer-affectation")).forEach(button => { - button.addEventListener("click", function() { - const affectationId = this.dataset.contratid; - fetch(`affectation/supprimer/`, { - method: "POST", - headers: { - "Content-Type": "application/json", - "X-CSRFToken": document.querySelector('[name=csrfmiddlewaretoken]').value - }, - body: JSON.stringify({ - "id": affectationId - }) - }) - .then(response => response.json()) - .then(data => { - alert(data.message); - location.reload(); - }) - }); - }) - - const modal = new bootstrap.Modal($("modalDetailEmploye")); - modal.show(); -}) - -$("enregistrerDetail").addEventListener("click", function() { - const id_ = document.getElementById('detail-id').value; - const fonction = document.getElementById('detail-fonction').value; - const dateEmbauche = document.getElementById('detail-dateEmbauche').value; - const matricule = document.getElementById('detail-matricule').value; - - const url_enregistrer_detail = $("modalDetailEmployeBody").dataset.url; - fetch(url_enregistrer_detail, { - method: "POST", - headers: { - "Content-Type": "application/json", - "X-CSRFToken": document.querySelector('[name=csrfmiddlewaretoken]').value - }, - body: JSON.stringify({ - "id": id_, - "fonction": fonction, - "date_embauche": dateEmbauche, - "matricule": matricule - }) - }) - .then(response => response.json()) - .then(data => { - alert(data.message); - location.reload(); - }) -}); - -$("input-recherche").addEventListener("input", function() { - const recherche = this.value; - if (recherche){ - tableau_liste_employe.setFilter("employe", "like", recherche); - }else{ - tableau_liste_employe.clearFilter(); - } -}) - -const listeContratExpirant = new Tabulator("#listeContratExpirant", { - columns: [ - {"title": "Employé", "field": "employe"}, - {"title": "Type de contrat", "field": "type_contrat"}, - {"title": "Date de début", "field": "date_debut", formatter: 'datetime', formatterParams:{ - inputFormat:"yyyy-MM-dd", - outputFormat:"dd/MM/yy", - }}, - {"title": "Date de fin", "field": "date_fin", formatter: 'datetime', formatterParams:{ - inputFormat:"yyyy-MM-dd", - outputFormat:"dd/MM/yy", - }}, - {"title": "Statut", "field": "statut"}, - {"title": "Lien du fichier", "field": "fichier_contrat", formatter:"link", formatterParams:{ - target:"_blank", - } - }, - ], - ajaxURL: $("boutonContratExpirants").dataset.urlexpirants, -}) \ No newline at end of file diff --git a/gestion_employe/static/gestion_employe/js/mon_profil.js b/gestion_employe/static/gestion_employe/js/mon_profil.js deleted file mode 100644 index 77178b4..0000000 --- a/gestion_employe/static/gestion_employe/js/mon_profil.js +++ /dev/null @@ -1,46 +0,0 @@ -const $ = (element) => document.getElementById(element); - -url_certificat = $("tableau-certificat").dataset.url; -const tableau_certificat = new Tabulator("#tableau-certificat", { - columns: [ - {"title": "Nom du certificat", "field": "titre"}, - {"title": "Nom de l'organisme", "field": "organisme"}, - {"title": "Date d'obtention", "field": "date_obtention", formatter:"datetime", formatterParams:{ - inputFormat:"yyyy-MM-dd", - outputFormat:"dd/MM/yy", - }}, - {"title": "Date de fin de validité", "field": "date_fin", formatter:"datetime", formatterParams:{ - inputFormat:"yyyy-MM-dd", - outputFormat:"dd/MM/yy", - }}, - ], - ajaxURL: url_certificat, -}) -const enregistrerProfil = $("enregistrerProfil"); - -enregistrerProfil.addEventListener("click", (e) => { - - const url = $("information-personnelles").dataset.url; - const csrftoken = document.querySelector("[name='csrfmiddlewaretoken']").value; - - const formData = new FormData(); - - formData.append("nom", $("nom").value); - formData.append("prenom", $("prenom").value); - formData.append("email", $("email").value); - formData.append("telephone", $("telephone").value); - formData.append("adresse", $("adresse").value); - formData.append("sexe", $("sexe").value); - formData.append("date_naissance", $("date_naissance").value); - - fetch(url, { - method: "POST", - headers: { - "X-CSRFToken": csrftoken - }, - body: formData - }) - .then(response => response.json()) - .then(data => alert(data.message)) - .catch(error => console.error("Erreur:", error)); -}); \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/index.html b/gestion_employe/templates/gestion_employe/index.html deleted file mode 100644 index 825dec9..0000000 --- a/gestion_employe/templates/gestion_employe/index.html +++ /dev/null @@ -1,67 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% block 'titre_page' %} Gestion des projets {% endblock %} -{% block 'css' %} -{% endblock %} -{% block 'contenu' %} -
-

Gestion des employés

- {% if messages %} - {% for message in messages %} - - {% endfor %} - {% endif %} - -
-
- Nombre d'employés -

{{ nombre_employes }}

-
-
- Nombre de prestataires -

{{ nombre_cps }}

-
-
- Nombre de stagiaires -

{{ nombre_stage }}

-
-
-
-
-

- - La liste des employés -

- -
-
-
-
-
- -
-
-
-
-
-
-
-
-
- -{% endblock %} -{% block 'modal' %} - {% include "gestion_employe/parts/modalDetailEmploye.html" %} - {% include "gestion_employe/parts/modalCreationContrat.html" %} - {% include "gestion_employe/parts/modalAffectationProjet.html" %} - {% include "gestion_employe/parts/modalDocument.html" %} - {% include "gestion_employe/parts/modalListeContratExpirants.html" %} -{% endblock %} -{% block 'js' %} - -{% endblock %} \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/modifier-profil.html b/gestion_employe/templates/gestion_employe/modifier-profil.html deleted file mode 100644 index c73010e..0000000 --- a/gestion_employe/templates/gestion_employe/modifier-profil.html +++ /dev/null @@ -1,105 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% block 'titre_page' %} Gestion des employés - Mon profil {% endblock %} -{% block 'contenu' %} -
-
-
- Modifier mon profil -
-
-
-
- {% csrf_token %} -
-
-

- -

-
-
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
-
-
-
-

- -

-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
-
-
-
-
- - Annuler - - -
-
-
-
-{% endblock %} -{% block 'modal' %} -{% endblock %} -{% block 'js' %} -{% endblock %} \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/monprofil.html b/gestion_employe/templates/gestion_employe/monprofil.html deleted file mode 100644 index ed42962..0000000 --- a/gestion_employe/templates/gestion_employe/monprofil.html +++ /dev/null @@ -1,241 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% block 'titre_page' %} Gestion des employés - Mon profil {% endblock %} -{% block 'contenu' %} -
-
- Les informations de mon profil -
- -
-{% if messages %} - {% for message in messages %} - - {% endfor %} -{% endif %} - -{% if not expiration_contrat %} -
- Important : Les informations sur votre contrat n'ont pas été renseignées, veuillez contacter les ressources humaines. -
-{% elif contrat_nb_jours_restant %} -
- Important : Votre contrat de travail expire dans {{ contrat_nb_jours_restant }} jours, veuillez contacter les ressources humaines. -
-{% endif %} - -
-
-

- -

-
-
-
- {% csrf_token %} -
-
- - {% if employe.photo %} - Fichier actuel : {{employe.photo}} - {% endif %} - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
-
-

- -

-
-
- {% for contrat in contrats %} -
-
- - -
- - -
- - -
-
- - -
-
- - -
-
- - -
-
- - Voir le contrat -
-
- {% empty %} -

Aucun contrat trouvé.

- {% endfor %} -
-
-
-
-

- -

-
-
-
    - {% for projet in projets %} -
  • - {{ projet.nom_projet }} ({{ projet.pourcentage_temps_affectation }}%) du {{ projet.date_debut|date:"d/m/Y" }} au - {{ projet.date_fin|date:"d/m/Y" }} en tant que {{ projet.role }}. -
  • - {% empty %} -
  • Vous n'êtes affecté à aucun projet.
  • - {% endfor %} -
-
-
-
-
-

- -

-
-
-
- {% csrf_token %} -
-
-
- - {% if employe.photo %} - Fichier actuel : {{employe.photo}} - {% endif %} - -
-
- - {% if employe.CV %} - Fichier actuel : {{employe.CV}} - {% endif %} - -
-
- - {% if employe.diplome %} - Fichier actuel : {{employe.diplome}} - {% endif %} - -
-
-
-
- - {% if employe.casier_judiciaire %} - Fichier actuel : {{employe.casier_judiciaire}} - {% endif %} - -
-
- - {% if employe.rib %} - Fichier actuel : {{employe.rib}} - {% endif %} - -
-
-
- -
-
-
-
-
-

- -

-
-
-
- -
-
-
-
-{% endblock %} -{% block 'modal' %} - {% include "gestion_employe/parts/modificationMotPasse.html" %} - {% include "gestion_employe/parts/modalAjoutFormation.html" %} -{% endblock %} -{% block 'js' %} - - -{% endblock %} diff --git a/gestion_employe/templates/gestion_employe/parts/modalAffectationProjet.html b/gestion_employe/templates/gestion_employe/parts/modalAffectationProjet.html deleted file mode 100644 index 2abcf46..0000000 --- a/gestion_employe/templates/gestion_employe/parts/modalAffectationProjet.html +++ /dev/null @@ -1,28 +0,0 @@ - \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/parts/modalAjoutFormation.html b/gestion_employe/templates/gestion_employe/parts/modalAjoutFormation.html deleted file mode 100644 index 104b791..0000000 --- a/gestion_employe/templates/gestion_employe/parts/modalAjoutFormation.html +++ /dev/null @@ -1,21 +0,0 @@ - - \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/parts/modalCreationContrat.html b/gestion_employe/templates/gestion_employe/parts/modalCreationContrat.html deleted file mode 100644 index fa0bb2b..0000000 --- a/gestion_employe/templates/gestion_employe/parts/modalCreationContrat.html +++ /dev/null @@ -1,57 +0,0 @@ - - \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/parts/modalDetailEmploye.html b/gestion_employe/templates/gestion_employe/parts/modalDetailEmploye.html deleted file mode 100644 index 187ef49..0000000 --- a/gestion_employe/templates/gestion_employe/parts/modalDetailEmploye.html +++ /dev/null @@ -1,136 +0,0 @@ -{% load tags_personnaliser %} - \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/parts/modalDocument.html b/gestion_employe/templates/gestion_employe/parts/modalDocument.html deleted file mode 100644 index 4eeb124..0000000 --- a/gestion_employe/templates/gestion_employe/parts/modalDocument.html +++ /dev/null @@ -1,41 +0,0 @@ - diff --git a/gestion_employe/templates/gestion_employe/parts/modalListeContratExpirants.html b/gestion_employe/templates/gestion_employe/parts/modalListeContratExpirants.html deleted file mode 100644 index 9051355..0000000 --- a/gestion_employe/templates/gestion_employe/parts/modalListeContratExpirants.html +++ /dev/null @@ -1,17 +0,0 @@ - - \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/parts/modificationMotPasse.html b/gestion_employe/templates/gestion_employe/parts/modificationMotPasse.html deleted file mode 100644 index 79366ba..0000000 --- a/gestion_employe/templates/gestion_employe/parts/modificationMotPasse.html +++ /dev/null @@ -1,36 +0,0 @@ - - diff --git a/gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-310.pyc b/gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-310.pyc deleted file mode 100644 index de89fbc6feb8ee2db121fc1fdeba048bbd48dc90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1117 zcma)4%Z}496t$g9nx>sDX2DA=yc=cH{s2OQ1`r4sAqIiy#`45Yo07)CPUv)0R5- z9M#`|_B9_FT1stHQSdx7n>B>0)-;!fR&rYAyaG=g^12$!qRP@N;Z>%JeiR)`3eh-| znkEV$fT?iT{*$w&rB)MJ(LCF%>1G+_oQ|Y%?7&0wL!Km?ukbi<)>Q`TKufI+<@Grg zS(e2JH2g`i%fJ_6tkya_ds7u005E_QWMUY1;M%dlBGaHLgTN@~i@I)O_cYS{-B ze!-_Q_H59=#s+DYS5n(Ro@b^qF|mGaAdVWGxzlT;JMj3gqrpe62ea91aQgJslfhN7 zm}`@o%fWTpt^osQ*iL7q?w51h9&^JQ;(Z`AF7X3TJ3ql-u9w>n;cp6ZADoL`1qGRq z1**KIze3Bs6^!5|`Gnu1qT?e#gZXWY-1iO%a*AeXfhR5Dy$3(`Pav(ES2`JU`E9Ms z&fXEwSe9l56Z~(77#mgcvF#*dnX>Jq#G&>vDj@;f=J7l`(_GJOsO1R6O08SK)AXZxYDc3R g0Nn@;?*T`h%locl&A9rg8+36Ohr}ll_Wd6I11_;crT_o{ diff --git a/gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-312.pyc b/gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-312.pyc deleted file mode 100644 index 17d6b7727aa8a9b793aeab137c0bebfed51d2b9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1625 zcma)6&ube;6rR~#$!m?Av~D9qU6T!NaTa3f6cU+l~pZaE38wry_2Q>4&_h#O_`M$UM zacQZ9VEpj?iT8nu(C^a7hcX3|uK?^J7d4QJT_wO>rJ-Pn)j;iP4K2l5Q0NvLMT`_g z75`kGWVSw>!iG+De|hH5kz4o-J>66Kk3Ge?J!G(8>d8-V{v*4^jUHt@3PU^a`0xPC zC}BoGxe?QDFR)`k?uMPjZ5qa2({t?Di^6KD^fooXYI~F!P6Qzc8?HR|KXWEVk3~L> zjldfo7{mQiU>hyUWp>D81RJ*F48MWPA!ibMP#x5gFmBk%j^TRE=J0^Qoe=HWaIRYV zLlR#xqPf)oW5UcM_pQL0s~#U){TI~ z8uwVcHl^K?f=2^d%L$ZH*5qW(^$2Cv-ast2ZEmGkFxj$8@Z+z-bRQiTQTe$qZ+vlM zOx8wZZU41HvUWtOV{&ywt{#zVhuXCXY(&nKIEj%YPZB)&1*Sc;h+MhjArnUv*tV}t!EU8j9OO3=!F0{AR^g_$EXMJi}t(d+ih|{J`EBjtdoypgWh3K{q z?aYPRqA}B?OAVvG&}1S}ekY=QD~jKhT_H3U1=LiSe7YcW`KPVHq<-R@$E~@G*eW>X z{|)zG0%0|^aN)PgrE$d^Rm^c^b5z;Wk>h;n9B<(~x4h^Uwvw_eV zZ2>!!u|>#}_Hp{=1H{ftha}}xe;v*y0eyq5gDHEKZ^Hz&Vtk@#So^z-@XL?UrN^lH xgseWep1t#ktlih2;Kk1`esb|dQSkMNij?P%B|6rTQp)@VyqWq>6hP^v{{oJbmyQ4c diff --git a/gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-314.pyc b/gestion_employe/templatetags/__pycache__/tags_personnaliser.cpython-314.pyc deleted file mode 100644 index 831b28970750a4845892b1cc5d9ce1eec91f9c63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1633 zcma)6&1)M+6rcUjTG1%(hhrJy2(2TUu*BA>!67cCYSJRp5>zGCN$Ij#jpVh~yPKI^ z90wZILTP*IHAf$-KO^YUOTmf@f}v>x{Rf;Xh0;^s>}n%nQs}_G`OSMX@4flGH+yCA zY!1Qrrt`b=iGt7{Vv!Dc3MP*M^icza=nK@4wxyaJ$|Zs2ZKbA$YK)cbOic^561pqb z7gHCrc@4cgU4+@Y+4|cvONtum%4|>WKlWti_TYwAM#e()GkCaTb(tOz%6!kWT!#$@ zu=FFUyM*Z>*$Z4N1k}E4Md1$dLZ{={R_OR%C6~KFbXe^;gzB~rCNS%5aqNHkjP!u| zyCl?IXE@M@hdI~MyMzhv;74~aTedy?5rTuyD0Cn@$R(mox1tAn+v#+M0}3(08dz|y zk~1WpO>>U1vqv8K9s!K2oer_XICVQMkYG@S4+^MGngIH!iRwaoYSdxJ>Cu!L(x#MX z>zUJ5^r|F4wH$o__9mnY^pS@;bM(lYzmjeRfkhJrhlj%0rG69;odv^z4TtVWqyo24 zJ!_8`3fE#Y<66gYLqfSm9ylyyhRoH7!8#Y)O|hGa%U-&~>o=~qJ_j3X)#|OAg!Mu{ zXx-j!)Dkh}-4qq~4@fJeQPi>}ggMtFgjRwBerCsFW*mr~g&5*v?||r|6Ak6x{9)_+ ztuZc+aPjc^5iTC%${1fA;j71Z^GMyCz(!P$98vw8NG>UgG2QTomrXmc7bknTvYdy@_MS`DEx(&ux`r+#L$hT4$j1yn*s zc>iVOpe?0{9LZ3iQY%xcO;eOCk)mMyd>h)_>^Pp;wq{Lhn%$6m%(1;gI%e{2j4T!1 z%NP86yU^Q=D_s&&!68>Xf1j(u5zpWB3A^QoABh&>D)n7r$W;8jIG*#L^odTzHTa^# z%(+1HJSfGVhdCgizN(U0{uYIN9y|DFEg>OJi_IdNXjhpH_n|XF#p3u$git% zbqPILTCT1uPp(KHZy9;MV47{;HchUzcP+2$Q&BOVPZkyNvtS7kg;R}P+4I{3j0tg{ zI`^nW4|tZ6F0ex=6/", - views.modifier_formation, - name="modifier_formation" - ), - path( - "mes-formations/supprimer//", - views.supprimer_formation, - name="supprimer_formation" - ), - path( - 'modifier-mot-passe/', - views.modifier_mot_passe, - name='modifier-mot-passe' - ), - # path( - # 'creation-departement/', - # views.creation_departement, - # name='creation-departement' - # ), - # path( - # 'modifier-departement/', - # views.modifier_departement, - # name='modifier-departement' - # ), - # path( - # 'suppression-departement/', - # views.supprimer_departement, - # name='suppression-departement/' - # ), - path( - "liste-contrat-expirants", - views.liste_contrat_expirants, - name='liste-contrat-expirants' - ) -] \ No newline at end of file diff --git a/gestion_employe/views.py b/gestion_employe/views.py deleted file mode 100644 index f9ef342..0000000 --- a/gestion_employe/views.py +++ /dev/null @@ -1,447 +0,0 @@ -import json -from datetime import timedelta, datetime -from dateutil.relativedelta import relativedelta - -from django.utils import timezone -from django.contrib import messages -from django.contrib.auth.models import User -from django.contrib.auth import authenticate -from django.shortcuts import render, redirect -from django.contrib.auth.decorators import login_required - -from django.http import JsonResponse -from django.forms.models import model_to_dict -from django.db.models import Sum - -from .models import Employe, Contrat, Affectation, Formation -from .forms import AffectationForm, ContratForm, FormationForm -from fonction_utilitaire import fonctions_utilitaire - -@login_required -def index(request): - """Vue d'index""" - employes = Employe.objects.all().order_by('-user__date_joined') - nombre_employes = Employe.objects.count() - nombre_cps = Contrat.objects.filter(type_contrat='contrat_prestation').count() - nombre_stage = Contrat.objects.filter(type_contrat='contrat_stage').count() - date_limite = timezone.now().date() + timedelta(days=60) - nombre_expirants = Contrat.objects.filter( - date_fin__lte=date_limite, - date_fin__gte=timezone.now().date(), - statut='actif' - ).count() - - return render(request, 'gestion_employe/index.html', { - 'employes': employes, - 'nombre_employes': nombre_employes, - 'nombre_cps': nombre_cps, - 'nombre_stage': nombre_stage, - 'nombre_expirants': nombre_expirants, - 'affectation_form': AffectationForm(), - 'contrat_form': ContratForm() - }) - -@login_required -def liste_contrat_expirants(request): - """ Liste des contrats proches """ - - date_limite = timezone.now().date() + timedelta(days = fonctions_utilitaire.DUREE_FIN_CONTRAT) - contats_expirants = [ - { - 'employe': f"{contrat.employe.user.first_name} {contrat.employe.user.last_name}", - 'type_contrat': dict(Contrat.TYPE_CONTRAT).get(contrat.type_contrat), - 'date_debut': contrat.date_debut, - 'date_fin': contrat.date_fin, - 'statut': contrat.statut, - 'fichier_contrat': contrat.fichier_contrat.url if contrat.fichier_contrat else "" - } - for contrat in - Contrat.objects.filter(date_fin__lte=date_limite, date_fin__gte=timezone.now().date(), statut='actif') - ] - - return JsonResponse(contats_expirants, safe=False) - -@login_required -def affecter_employe_projet(request): - """Vue pour affecter un employé à un projet avec vérification des contraintes d'affectation""" - if request.method == 'POST': - employe_id = request.POST.get('affecter_employe_id') - try: - employe = Employe.objects.get(id=employe_id) - except Employe.DoesNotExist: - messages.error(request, "L'employé spécifié n'existe pas.") - return redirect('gestion_employe:index') - - form = AffectationForm(request.POST) - if form.is_valid(): - projet = form.cleaned_data['projet'] - date_fin_affectation = form.cleaned_data['date_fin_daffectation'] - temps_nouveau = form.cleaned_data['pourcentage_temps_affectation'] - date_affectation = form.cleaned_data['date_affectation'] - - if (date_fin_affectation and date_affectation): - total_affectation = ( - Affectation.objects.filter(employe=employe) - .aggregate(total_pourcentage_affectation = Sum('pourcentage_temps_affectation')) - ['total_pourcentage_affectation'] or 0 - ) - if (date_fin_affectation < date_affectation): - messages.warning(request, "La date de fin d'affectation ne peut pas être antérieure à la date de début.") - return redirect('gestion_employe:index') - elif date_fin_affectation > projet.date_fin: - messages.warning(request, f"La date de fin de l'affectation ({date_fin_affectation}) ne peut pas dépasser la date de fin du projet ({projet.date_fin}).") - return redirect('gestion_employe:index') - elif total_affectation + temps_nouveau > 100: - messages.warning( - request, - f"Les pourcentages d'affectation de l'employé {employe.first_name} {employe.last_name} dépasse 100% sur les différents projets ({total_affectation + temps_nouveau}%)." - ) - return redirect('gestion_employe:index') - - Affectation.objects.update_or_create( - employe=employe, - projet=projet, - defaults={ - 'date_affectation': form.cleaned_data['date_affectation'], - 'date_fin_daffectation': date_fin_affectation, - 'role': form.cleaned_data['role'], - 'pourcentage_temps_affectation': temps_nouveau, - } - ) - messages.success(request, f"L'employé {employe.user.first_name} {employe.user.last_name} a été affecté au projet {projet.nom_projet}.") - return redirect('gestion_employe:index') - else: - messages.error(request, "Erreur : Formulaire non valide.") - return redirect('gestion_employe:index') - else: - return redirect('gestion_employe:index') - -@login_required -def mon_profil(request): - """Vue pour afficher et modifier le profil de l'utilisateur connecté""" - try: - employe = Employe.objects.get(user__username=request.user) - except Employe.DoesNotExist: - messages.error(request, "Impossible d'acceder au menu 'Mon profil' car votre profil Utilisateur n'est lié à aucun profil Employé. Veuillez contacter l'Administrateur.") - return redirect("gestion_conges:conge") - - contrats = Contrat.objects.filter(employe=employe, statut='actif').first() - projets = Affectation.objects.filter( - employe = employe, - date_fin_daffectation__gte = timezone.now().date() - ).select_related('projet') - - return render( - request, - 'gestion_employe/monprofil.html', - { - 'employe': employe, - 'contrats': [{ - **model_to_dict(contrats), - "type_contrat": dict(Contrat.TYPE_CONTRAT).get(contrats.type_contrat), - "statut": dict(Contrat.STATUT_CONTRAT).get(contrats.statut), - "fichier_contrat": contrats.fichier_contrat.url if contrats.fichier_contrat else "", - } if contrats else []], - 'projets': [ - { - **model_to_dict(a.projet), - "date_affectation": a.date_affectation, - "date_fin_daffectation": a.date_fin_daffectation, - "role": dict(Affectation.ROLE_CHOICES).get(a.role), - "pourcentage_temps_affectation": a.pourcentage_temps_affectation - } for a in projets - ], - "formation_form": FormationForm(), - "expiration_contrat": contrats.nombre_jours_restant <= fonctions_utilitaire.DUREE_FIN_CONTRAT if contrats else False, - "contrat_nb_jours_restant": contrats.nombre_jours_restant if contrats else None - } - ) - -@login_required -def modifier_mot_passe(request): - """Vue pour permettre à un utilisateur de modifier son mot de passe et ses informations de profil""" - user = User.objects.get(username=request.user) - if request.method == "POST": - ancien_mdp = request.POST["ancien-mdp"] - nouveau_mdp = request.POST["nouveau-mdp"] - confirmation_mdp = request.POST["confirmation-mdp"] - - if authenticate(request, username=request.user, password=ancien_mdp) is None: - messages.error(request, "Ancien mot de passe incorrect.") - elif nouveau_mdp != confirmation_mdp: - messages.error(request, "Les deux nouveaux ne correspondent pas.") - else: - user.set_password(nouveau_mdp) - user.save() - messages.success(request, "Mot de passe modifié avec succès.") - - return redirect("gestion_employe:mon-profil") -def modifier_employer(request): - """Vue pour permettre à un utilisateur de modifier les informations d'un employé""" - try: - employe = Employe.objects.get(user__username=request.user) - except Employe.DoesNotExist: - return JsonResponse({"message": "Employé non trouvé."}) - if request.method == "POST": - data = json.loads(request.body) - user = User.objects.get(username=request.user) - user.last_name = data['nom'] - user.first_name = data['prenom'] - user.email = data['email'] - employe.telephone = data['telephone'] - employe.adresse = data['adresse'] - employe.sexe = data['sexe'] - if request.FILES.get("photo"): - employe.photo = request.FILES["photo"] - if data['date_naissance']: - difference = relativedelta(timezone.now().date(), datetime.strptime(data['date_naissance'], "%Y-%m-%d").date()) - if difference.years >= 18: - employe.date_naissance = data['date_naissance'] - else: - return JsonResponse({"message": "Veuillez entrez une date de naissance correcte."}) - employe.save() - user.save() - return JsonResponse({"message": "Profil mis à jour avec succès."}) - -def enregistrement_document(request): - employe = Employe.objects.get(user=request.user) - if request.method == "POST": - if request.FILES.get("photo"):employe.photo = request.FILES["photo"] - if "cv" in request.FILES:employe.CV = request.FILES["cv"] - if "diplome" in request.FILES: employe.diplome = request.FILES["diplome"] - if "rib" in request.FILES: employe.rib = request.FILES["rib"] - if "casier_judiciaire" in request.FILES:employe.casier_judiciaire = request.FILES["casier_judiciaire"] - employe.save() - messages.success(request, "Documents enregistrés avec succès.") - - return redirect("gestion_employe:mon-profil") - -def suppression_contrat(request): - """Vue pour permettre à un utilisateur de supprimer un contrat""" - id_contrat = json.loads(request.body)['id'] - try: - contrat = Contrat.objects.get(numero_contrat = id_contrat) - except Contrat.DoesNotExist: - messages.error(request, "Contrat non trouvé.") - return JsonResponse({"message": "Contrat non trouvé."}, status=404) - - contrat.delete() - return JsonResponse({"message": "Contrat supprimé avec succès."}) - -def suppression_affectation(request): - """Vue pour permettre à un utilisateur de supprimer une affectation""" - id_affectation = json.loads(request.body)['id'] - try: - affectation = Affectation.objects.get(id=id_affectation) - except Affectation.DoesNotExist: - return JsonResponse({"message": "Affectation non trouvée."}, status=404) - - affectation.delete() - return JsonResponse({"message": "Affectation supprimée avec succès."}) - -def creation_contrat(request): - """Vue pour permettre à un utilisateur de créer un contrat pour un employé""" - try: - employe = Employe.objects.get(id=request.POST.get('employe_id')) - except Employe.DoesNotExist: - messages.error(request, "Employé non trouvé.") - return redirect('employe-index') - - if request.method == "POST": - form = ContratForm(request.POST, request.FILES) - if form.is_valid(): - contrat = form.save(commit=False) - contrat.employe = employe - contrat.save() - messages.success(request, "Contrat créé avec succès.") - return redirect('gestion_employe:index') - messages.error(request, "Formulaire non valide") - else: - form = ContratForm(initial={'employe': employe}) - return render(request, 'gestion_employe/index.html', {'contrat_form': form}) - -@login_required -def enregistrer_detail_employe(request): - """Vue pour permettre à un utilisateur de modifier les détails d'un employé via une requête AJAX""" - if request.method == "POST": - data = json.loads(request.body) - try: - employe = Employe.objects.get(id=data['id']) - except Employe.DoesNotExist: - return JsonResponse({"error": "Employé non trouvé."}, status=404) - - employe.fonction = data['fonction'] - employe.date_embauche = data['date_embauche'] - employe.matricule = data['matricule'] - employe.save() - return JsonResponse({"message": "Détails de l'employé mis à jour avec succès."}) - else: - return JsonResponse({"message": "Méthode non autorisée."}, status=405) - -@login_required -def liste_employe(request): - """ Vue pour retourner la liste de tous les employés """ - employes = Employe.objects.exclude(user__first_name = '', user__last_name = '') - - data = [] - for employe in employes: - if employe.user.first_name != ' ' and employe.user.last_name != ' ': - projets = [ - ", ".join([ - a.projet.nom_projet for a in Affectation.objects.filter( - employe=employe, - date_fin_daffectation__gte=timezone.now().date() - ) - ]) - ] - formations = [ - { - "titre": formation.titre, - "organisme": formation.organisme, - "description": formation.description, - "date_obtention": formation.date_obtention, - "date_fin": formation.date_fin, - "certificat": formation.certificat.url if formation.certificat else "", - } for formation in Formation.objects.filter(employe=employe) - ] - - contrats = [ - { - "numero_contrat": contrat.numero_contrat, - "type_contrat": contrat.type_contrat, - "date_debut": contrat.date_debut, - "date_fin": contrat.date_fin, - "salaire_mensuel": contrat.salaire_mensuel, - "statut": contrat.statut, - "fichier_contrat": contrat.fichier_contrat.url if contrat.fichier_contrat else "", - } for contrat in Contrat.objects.filter(employe=employe, statut='actif') - ] - - affectations = [ - {**model_to_dict(affectation), "projet": affectation.projet.nom_projet} - for affectation in Affectation.objects.filter( - employe=employe, - date_fin_daffectation__gte=timezone.now().date() - ) - ] - - data.append( - { - "id": employe.id, - "employe": f"{employe.user.first_name} {employe.user.last_name}", - "matricule": employe.matricule, - "email": employe.user.email, - "formations": formations, - "affectations": affectations, - "projet": projets, - "contrats": contrats, - "departement": employe.departement.nom if employe.departement else "", - "fonction": employe.fonction, - "date_embauche": employe.date_embauche, - "adresse": employe.adresse, - "telephone": employe.telephone, - "sexe": employe.sexe, - "CV": employe.CV.url if employe.CV else "", - "diplome": employe.diplome.url if employe.diplome else "", - "rib": employe.rib.url if employe.rib else "", - "photo": employe.photo.url if employe.photo else "", - "casier_judiciaire": employe.casier_judiciaire.url if employe.casier_judiciaire else "", - "date_naissance": employe.date_naissance, - } - ) - return JsonResponse({'success': True, 'data': data}, safe=False) - -@login_required -def ajouter_formation(request): - """Vue pour permettre à un employé d'ajouter une formation à son profil""" - employe = Employe.objects.get(user__username=request.user) - if request.method == "POST": - formation = FormationForm(request.POST, request.FILES) - if formation.is_valid(): - ma_formation = formation.save(commit=False) - ma_formation.employe = employe - ma_formation.save() - messages.success(request, "Formation ajoutée avec succès ") - return redirect("gestion_employe:mon-profil") - messages.error(request, "Formulaire non valide. Veuillez vérifier les informations saisies.") - return redirect("gestion_employe:mon-profil") - -def liste_formation(request): - formations = Formation.objects.filter(employe__user__username=request.user).order_by("-date_obtention") - return JsonResponse([ - { - **model_to_dict(formation), - "certificat": formation.certificat.url if formation.certificat else "" - } - for formation in formations - ], safe=False) - -@login_required -def modifier_formation(request, id_formation): - """Vue pour permettre à un employé de modifier une formation de son profil""" - try: - formation = Formation.objects.get(id=id_formation, employes=request.user) - except Formation.DoesNotExist: - messages.error(request, "Formation non trouvée.") - return redirect("mes_formations") - - if request.method == "POST": - formation = FormationForm(request.POST, request.FILES, instance=formation) - if formation.is_valid(): - messages.success(request, "Formation mise à jour ") - - formation.save() - messages.error(request, "Formulaire non valide. Veuillez vérifier les informations saisies.") - return redirect("mes_formations") - -@login_required -def supprimer_formation(request, id_formation): - """Vue pour permettre à un employé de supprimer une formation de son profil""" - try: - formation = Formation.objects.get(id=id_formation, employes=request.user) - except Formation.DoesNotExist: - messages.error(request, "Formation non trouvée.") - return redirect("mes_formations") - - if request.method == "POST": - formation.delete() - messages.success(request, "Formation supprimée ") - return redirect("mes_formations") - -# @login_required -# def creation_departement(request): -# """Gère la création d'un nouveau département via un formulaire.""" -# if request.method == 'POST': -# form_departement = DepartementForm(request.POST) -# if form_departement.is_valid(): -# form_departement.save() -# messages.success(request, "Département ajouté avec succès.") -# else: -# messages.error(request, "Erreur lors de l'ajout du département.") -# return redirect('parametres-rh') - -# @login_required -# def modifier_departement(request, id): -# """Gère la modification d'un département existant via un formulaire pré-rempli.""" -# departement = Departement.objects.get(id=id) -# form = DepartementForm(instance=departement) -# if request.method == 'POST': -# nouveau_nom_departement = request.POST.get('nom') -# if nouveau_nom_departement: -# departement.nom = nouveau_nom_departement -# departement.save() -# messages.success(request, "Département modifié avec succès.") -# return redirect('parametres-rh') -# return render(request, 'gestion_employe/edit_departement.html', { -# 'form': form, -# 'departement': departement -# }) - -# @login_required -# def supprimer_departement(request, id): -# """Gère la suppression d'un département existant.""" -# if request.method == "POST": -# departement = Departement.objects.get(id=id) -# departement.delete() -# messages.success(request, "Département supprimé avec succès !") -# return redirect('parametres-rh') diff --git a/gestion_projet/__init__.py b/gestion_projet/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gestion_projet/__pycache__/__init__.cpython-310.pyc b/gestion_projet/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 466a5f3d15aa313a0953a5be342251ef3d2af19a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmd1j<>g`kf^5HMnIQTxh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2Blzbvsxzr4I$ zKiD(KLq9#WxFj<_FTS8CKP$CFKR!M)FS8^*Uaz3?7Kcr4eoARhsvXFLVkRKL!T_I|p@<2{`wUX^%Sb;XKQ~oBEwLms zH&H(~KP59wzc{lfLq9#WxFj<_FTS8CKP$CFKR!M)FS8^*Uaz3?7l#c{U1?6LT@fqL T2u2_-1~EP|Gcqz3F#}lu!u%u# diff --git a/gestion_projet/__pycache__/__init__.cpython-313.pyc b/gestion_projet/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index 3ef0681bca00578572cd8929aa29b3f2406e9d7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmey&%ge<81Xn*ZW`gL)AOZ#$p^VQgK*m&tbOudEzm*I{OhDdekkl*7s2G>j;_Q#%>2Cgf};Ga)RLI^_{_Y_lK6PN ig34PQHo5sJr8%i~MXW&MK-Lw57$2D#85xV1fh+(j?Izm* diff --git a/gestion_projet/__pycache__/__init__.cpython-314.pyc b/gestion_projet/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 191e40ae6f5d3bb11492c1494aeaaf186ff903c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmdPq_I|p@<2{{|u76W#McU6Iz^F zR2<_G5aW_soL!P%5EJYfuVOSyc>Td}3x~WGrF^vH(~{BX9r! diff --git a/gestion_projet/__pycache__/admin.cpython-310.pyc b/gestion_projet/__pycache__/admin.cpython-310.pyc deleted file mode 100644 index 63d8b4a728bece8dee239b9677ec4a7d5b33074e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmYjNy-ve05cW?}qLL!S#0xNFX;ub=ic|?0=+JIiEK^&>#g2=eQgtp50%Mq!Q254c*|1ip~TTM?2_71r8|}M%6pK&(4O{a8=8p9LwpGbl}rS zJhVt1fcsMbi7G5mMMNA-U@&zFlwmNftr-6 Jjx%zOe*tnUW@!Kb diff --git a/gestion_projet/__pycache__/admin.cpython-312.pyc b/gestion_projet/__pycache__/admin.cpython-312.pyc deleted file mode 100644 index c527bb0f87a918b3ba46a29eff856c0c035cb5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmYLF%}OId5U!d|VhD+f;z3+w*pu_i)31%EP5uG=7 diff --git a/gestion_projet/__pycache__/admin.cpython-313.pyc b/gestion_projet/__pycache__/admin.cpython-313.pyc deleted file mode 100644 index 4673092350f3e7f4414e19072de707a50bae732f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmey&%ge<81Xmt@$Z!JEk3k$5V1hC}3ji5Y8G;#t8NC_27>gJc7}A+EnO}mWH5qTQ zCZ^5NS z1;2uy!7rhB5EcRjPu|4!1NdfkO9%G7_j`YT@9pF6jSk@3-(AVCsDC+d`J%?CG#Y0x z0Y*kJB$jN!gs@-~45_7CFeXRs%aSX-4P)9THSWPSFnR}Ah`D~=Ri3l@w8s6$Z7FN* zKpg#cI3{H)o#nDXV|}3VR2E_&n3%p38oy~%<5e>cs=El!U<{Tpu)!q6j?{*X*cJ=0 zbErd1_yUL6lNKtEqq5C;k>-N)vcq|4aS~=yZwOYPeT46ZX?u?bASMEQ5lDsxTn`C&D41_tcYLUDev0*Ld!dR&a zzR>De*u*crw>b4&y>O(>H54D=;?}(nFLW1eA34Mgy0hc7n5(_1D%^DKj#@^zipY#l zD%)Djk+9HZ=cRK$b7%GZ>P~B}qJ2b=q_s9fB8cRAuD*Wf=3r5`m}kz`R(Sz eA7tlWK*;^iy`LNL_l>v$1Qmr~_pfvNuKxk0u8wyA diff --git a/gestion_projet/__pycache__/apps.cpython-310.pyc b/gestion_projet/__pycache__/apps.cpython-310.pyc deleted file mode 100644 index 11b794a66b91a8ecf938f7096595ca33677b7403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmY*VJ5R$f5I)B#3Vkp@S0vUf$sa&f3y8;3A-ZL;LeB}Qk~qZ404w|z27VBWS0-jQ zCeBGE%1QV6p5L8MO(sJi`S@np8@->_*%g1xg9hGZy?@-&*bnr6^A5?!pgfd?-0SQlIR+>EyWvbD8iN80MY;k`AYnDI{gU(DY*& C2y*rS diff --git a/gestion_projet/__pycache__/apps.cpython-313.pyc b/gestion_projet/__pycache__/apps.cpython-313.pyc deleted file mode 100644 index e5fe7623cd86c05a48cf28168a5d10ec6c84a4b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmY*WOG_L<5bmCt-E7p2iJJuD1Jr{sm%RyLk-(_rp(4S?i!>CY(>t_|(_?kdA-M+f z4}|=I9P)2+2}nauIe80Aa!>cpdPp6rzT&H|s7KT9&k$!n8Y;iK_{%5v)|rB4(}5ep z2%`sNpCVl&i)4eaV2QAh)2*msvD-PTcPLMK! z0izhQ03#M+heg=UJ8{)$AfIb2ZG)hF2;Rg&yw6JgJR( zEk%*pM|mrRYNGr`j^YQl2T-P00>I7yI8|MEJO^-Hr^S?+2N+A#rjVs5m7^CjF;45k zKfd29m=eN~;=RT9$7caj@&u?d!Kkeb;d;Ta6?dMDT&0jY!09by(fpk#pT$li5Nm3-LGj2Q2(I zmJ+bi#!fh~Ho2UIDZcrJneSs}vNAN-N6h=6o_I3x-6nsp(jl#7L+;2KVf291DAENo zK^6(~rU>&->8kJg&||?82`isA4XN(kDvF&vtBb~kYj8+ANo(GaJ90{pGJ@V&fIg!b zFb^xt$1dlk$M(5Gk!MFTZ*p{Yw{uA|&Kh|&Ij>&j2~SmZTQs&x%=ZLO6Ft;$8YtSL zXL1;J>mGnCzTyD755TC()bas<>oQI|m0^IokP1_g@hmsx(S+CIGDV1uxv5$Az&7g% z0EID%3y2Y=I4_Ya0NHJJYS{(#>dty}qPSF1?I_yi>JsxJIzC`E2meQm;-XO1;zrt& zw;?b@4H|eLuhVNU!Q^ZI%>Aw${;MB`zV7dw!HT8*1ShvMxW*B~bkBy{c2ka;)LvhW X8~E}mrEg^MyUU}qkKqq7p{@D_R_2S1 diff --git a/gestion_projet/__pycache__/forms.cpython-310.pyc b/gestion_projet/__pycache__/forms.cpython-310.pyc deleted file mode 100644 index 851629a22e1f5f91cb40346cd23b3412793d3aa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4551 zcmcInTW=&s6`r2y?&;~d*q*SvA>qcntfqH}Kkscea5u2_V zH{E7zxmMhATe0ohTJ5bGGno0S8Z)_e)PB%#JJ2+l1&vi{y3n+k4UJuCdeF342bxZ$ zS%ap_deHPL%{nw|Y#o~QO0&T>?$rkUhp@Ib(4?`Sia0~X{HaKfc>Yi$y(xQd1bKKI z=Dbu(>y{rz5if-7?W92w^CYi&Hg?0rPXa!rTKh?OEd0HQXH?;t?C+$pA0~W<-{rv} z7bpQ4F#T(wv5oTa*C2S!)mY7~GtF&a3w74O78(!guFiCrZ%DiR`Yx<5KEMQ3iTqG- zhjAwm7w3K+risIIYR4%H_rsu6u@{TP8L8dgbo^r;ILCezvZ|A34yurtIpQKqlLWol zWp8lk$D?d>!Tv6+*hb0z3Nf~yH(;^m8r(c;(k?=c>A%%hw5*wtEwqfuJbR{Zw$+~L z>o60rYo67sFV3`?b!NL=*1}oZr)!sIxp{}@{=k;4ka^`1Njpj7Nu7?yV|=g3rKRfo zVInsY;6bEbkS52#1&&>Au+rh482ekc^ZO${UdY@l*a6RFtNicXeOtB}&jJyS)O;g| z{49IaA#}cib#swM=Rm8U=OTO5R_csLJjkU^b`0uLr}f1R9R9!-uAf_S0JpKuIXB@-_xf5*0pub z{)f1U0mE}cP^5{klW-tp)ALvwc%JING@z`#Ov5@5R6aH#=o5WS=@x=v9L%DPfe6>m zm_AgTK7i78@Kde-AZqt261wTA>C1w*49~|#Z{+XsDBD!i7p$gTZKGs&A^xWjo(guR zo$0Q{41}6_x-oqYWw7b8OA(fe13w9~n9C;N-3PJ_4$_RIKJxEp3fKY{P)&RpVmN5c zc~6k>;u#Xpk|0ou=SU1lOyD%-O@hIEY_M3Hqm)S{LDTx+zx94 zL!Hwbiw9OB31LP^8XtxI!mF z7wJhRh*Hi=jrc0{8sb$Nu1NH|RQn!@??Vg+-FaxzNzFs^dD6W|LV@%fsLB4D5%*Q% zup34tC0>o*cQ7j>awqg!TF+Vs-BGdsU6S16@%kOi`Z0?5HVJC2M(S)%q>y@oiBl}5 zKuX!i0!F!mkfw|Z;6z3;M&^G(VbvY6n1Qrl%Qi~(3y5hzPG=xY2fz%KgHWCUI3gEl zR2l*#lFZ47`F1&@JvD4Qeewy$BF*dakP#1A0~BG_BXSeiDmH*;X{#d&FQR#5tJOJz84 z^u_scF)+n8baP3Ec!PAeAclj^e9#!ww~WtK&``XH7f4)5??1zcjP_B{yIt4nn)Ru! z(|^=H(T!=%vL5^4s!;k7)_;#o*&;!$m7#QP;nA=w(ztjFbH6||MchH&Iev7&3lY-u z{Ta?*j1D@_ZIp~W`nc$r8L8im41>raCqP|igdi)mNMxT{@%s6SNi*ks~HJg!?l?O zkGD>rT(Y~dzpaXZxNP7aR+nK(B(vA+>Dn-j9ac=XD&B;J!$EuA^~C2(UH=?)yiVfE z;Qu2=Og#ql%KzhlCp6gqT!nz!SmY1%DTM%P4F`Q`vLin^NXw_swb>`hrg|M^D>e~?J3*gbmU&9+HGBhawbwO_P}xAI V*3lfT-|9cxztO+mf9d-5&jA$CKi2>N diff --git a/gestion_projet/__pycache__/forms.cpython-312.pyc b/gestion_projet/__pycache__/forms.cpython-312.pyc deleted file mode 100644 index f59f146dc7650c3eacd2e2166247a86777e3258e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6561 zcmd5=T}&I<6&{a0<9{0n<~M-Z4Iz_&%_=2ZRT0}{3HjNC{5M-~cCEp42@{Py>>Znw z?MhpzshYk)RS8h3Nc+;DR4tFFPm%JnZC^mLggezrRr{1a!9s<^Q_s2M0c=b|lCIQ| z=J?K>bFc5cbG~!FbN>E5i4XQA6dUW`c5vJjr*Mixi0?Z1?(y(iDu|bDyxpESz^65J!fTA(@2h*p?*D;OOs5tsHq-MGjb+H zcD)K;R>!D3q!9xf#4v06^|Y*JNI$tjQX_=IowD}VlCI*z`VnYMafC}a6fVIlj)apf zi-%=7pYoPf!Zq%a1k-2z{{YNC_bF&tLz7iXq6&$o=<|6wtLm93$>MWbSJYuOWxY~5 zbD8KUTW?oX9wVvfn5?NvQAvy_G(keoQ9=zplL4)^)S6k6;?>Y`@ zR{?$%=Leyn{8B^!x_g!{+ra}_DxO(iA~^1qd|TliUy5BJSy}R#UR6n2E@JvJdV0H! zu8~y8P%dkFSbJE_nAI6T1l5x%Ju?Q#0Jk%%70cz5)b@DOpB*11_CVrLPPs?2rq}vS z-nd};6=I~QI?DPBDNQzvtpMV)8^+C2U7H8I%GoS6w*2h1K{S%enl7A&#G5W0pEkiB zNj{1nomQj3&p;z6aHDBG3fv&thyp)4Jp^J<3Ynf{G9#x+GHLpfNq|gF!*(E<{4^(P zmWCo$O#zfdGsR(*Xo^8GSeo8j*Hzj%vgdt!L9em`e{4Y8iRZ zUZzAgz5TEN>!tgFirZq$bL%iBw-t|%=xGuk2K1%nI74yVQ0Ykg9x-sAirX2-{V-yq z?eo%?3`?Eh`Pv^|x@x-VnPJ>SnaB?=9l)52VMCcH5AWoS8eC*Sbl zTEu_I_cJ$*!TM+qh{1V*w&TNFDBcEPx|2yoPbHH~PrLCwGmm2{Xo~VTa*Sd9KL4C#x)#hzXvVh=AVx5q-jg$`ktU`a zz*! z#yALsVZ$S#P~G=P{QKb()92={&Ri{2)lY|3o&3qr2FJIAS4FP==meS4Cv{uXjhcGY zM2<|Ho4Pu=-RA^qBB-f-d!l#hy~+3NKF3j08(xb9%RoZk!D*FE^;`H31){^inE8-f zI&&>Y1#D$D-$5AlAo`9BF^S(x8M$-pW%}T%fBe@THT!P#93#(5xUp)QJllMmOwd-PzGT^8ExJi z%B4jTgYp9ycvoU$D8^!B4~R(=A~2R%fLl@uQjT4_^ei=^xeP6dBPq1p)<&4DVw{Z1wNd1bezmPAh5mgB`t!0wV`S-_Icz zJj*7F-L~gzL}9|u=dBqVIiz=ISs?-r_0pqKI86%d0`pgi7)sH;Q^ zSiHedLnRdZvILAPAH!`t15u1EtGt`VmfD@H-*B|hdTLE@V%m2?+V^lko;&7ZGqD1w z>Kh8Jr`O!B9?-g)!>hh+md~^;&=FP6ChXYIIgy+CV)Bb^RSZ=PsOtL8liok{&G*@3 zo`EsXIB?J|9JD1ieQxD&_wwOxG-&OHVSBM}OL#5be2@rr0oF)Sd<3_F2tcyI31|6D z{wRhh5LSpnqc;vwkv*p~15{7v&coOTh*BDfLV0VS?tm9*P=^hdkd4x)gT8>*`p-d> z@`P{f7^HG+D9z`NS!cpKE=umLrivS40p4kf#ggA+*BSs#hI8P{_pI8wEPW3`t&LdQ zsk^8bAIkv267YYA!Aa49QRR#g1@}$K3dUVH@T-___wn9e!2iCX z_g3=C*Jij--#HV$agXHPYN)VJw)c99iG`R>pr(u;S_z_*aefva)YDNVx4mg}5Y{^= z`O6&{IYdQAW+ZX|wfhG31ZaN+w=oO?y}50-H#c^`fkt2^VEb$rdUIn*DTm=T4&fDR zIcF`4+C4TewB7k#?A8!ot1dqbsaWTIh!aNfOPrVO&Lf-rA#`UDmOG=xpj2au%6&O= zPqz-YBBkd|F?RlCSchR^@d1OMRU~_`#lisFLO(p3-Ya-yhTd$Qy diff --git a/gestion_projet/__pycache__/forms.cpython-313.pyc b/gestion_projet/__pycache__/forms.cpython-313.pyc deleted file mode 100644 index 26adeae086405f2aa38277019c41b059e3e49ba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8356 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 J14-J${{j?bS+D>A diff --git a/gestion_projet/__pycache__/forms.cpython-314.pyc b/gestion_projet/__pycache__/forms.cpython-314.pyc deleted file mode 100644 index ee43e1d1e106de0b0c5f5a6cea4fb4abb4fd6085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6947 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 Z(izMDJItJk+ooxKdLG}~NUzS``7eSmShoNG diff --git a/gestion_projet/__pycache__/models.cpython-312.pyc b/gestion_projet/__pycache__/models.cpython-312.pyc deleted file mode 100644 index 234597dcb8fd5f3826c425423e2d35ef0db169d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11000 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 Wo8K$zdLR|*dLdEjckvScg8vUZ@5!wI diff --git a/gestion_projet/__pycache__/models.cpython-314.pyc b/gestion_projet/__pycache__/models.cpython-314.pyc deleted file mode 100644 index 09c9670fb535ecb28ace57136bf532c4229ec959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11385 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 a%&I_f`-k?JE%DZ+JGtAr{}xbWyZ?VehpR{c diff --git a/gestion_projet/__pycache__/urls.cpython-310.pyc b/gestion_projet/__pycache__/urls.cpython-310.pyc deleted file mode 100644 index e10f409dc9983e4875a7cbf5fa57a6dacf04e64d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2294 zcmd6o&2HO95P(Vj*s?8ImStPAWVeZv{x~VUNsfULdz^*2Iz ziGTH*?|I;XpLkRM%=bO0K|QHW>t}UbH_jT;ho-DwHem%;|EwdmkXB%gXdP)4Hi+6t zE$9$!BCSD}XbWi_dPLhu8_*}(L2APe(JoR4_J{^Zn=mBWN9w|eXpFQ42SkTRJ@}63 zd!%i+M|2;l4@X1~kapl9(GN(w@FUSrNPF-z(J|5h9uYl88p1C`0n$F45DBCaJTY{! zcQ%HnZ@uGZpG?h<{j!lo#qXc6)CQVYvAkC0=7m&6JWInYpIyqL^vY(Og8ajnr_ogE zN7EU^=dsL#^Ei#tiJZ!`5T|ikJg*4C7+wgybC<2&vaZD>myro2beETbRq1}Xd6DL})dm%<9?_2IayBn+9=7b0FsvL{ z_uLuYMRAhId9IJx$N9OO6!xr(s8((cq6g7Ji4o*9OJ*PV1bUx0n*;)o0n8@zMXmJ~ zC&eOtpNu)Q5~r%jpD*KJjcq}kg+KBa11o+m1=;cFsa zF^>j5%2t$Rp?M+Xs|Lq>+tr!icZeHr7WA$4WHAyfv=hs;T^UA}jqaE`*17Quxx-60 zS|OE#Z3pa!+k+K$Mw|y#E(e26++My=Rt#MQZfgeAbp}BX(;qp~yZ$9)OEVYYiaEmR%Z|ggGV0J?$k` zd4^Q-B1ujxsKTWWLKQ(7}>c|1{cFf;xCb@xn9kHjB_v8ciG`)|+g%Oy?w zJDK29PY0iWENa?Mnxi>|zBVY_6bhO%;}rWdgW^pQ#&*Q+ z{|iJ&9?t2&K`!-i78Gs~xMh{nG^ea^OTew>aE8Jy1Gk>Ttti|oaMc`cP2tvo+sNT6 z3ReYgGl#1x+za5a<`V8~C|nJ=Z3#$+&Zfd`0k@mO)fKJ*Tr-E;R=6GD4sy6%h1&zJ zmBTd^ZXdXI4tJn%hrpfWa4m&90`4@2Yb)F_aOXMPiNbY&yU5{A748hU%N*`p;kv-R z%Hb{)&IImt4tF`>?lx{3PcJ*KJ|SpqXAcNF9Sj}!)+K)T*7aCMKK)M!Z?W^36V-r8=zPsTnwz!-k8^#t>U84#P(AdQ&aPr2L9C~57bx`BqP{@-3#1DHy|biOotS!xrP=q z&6PlDDNte!9GQ3+Qc>5?)xCj3&?u;wE3P$u`8o(VQ)@k?vW@4xw3v zXy$|k%A8CLBcelHX}9k_`u5vCfubc{jD+a3O%Xn0CJX(~0U;xm3QcSWqnZPklCIr_ zTKbTEL_7)y@M1uMz*p_;a%zidgTP*FANyQ6W>yo+&Cs;FXx7h3dW!i)cvi_Ve$&~G z%g%%C-3>3sexLfux7eRgeoF8Y>-K15B`*YDPo@n#ZTU{%J0!c_Xs8If$FBq$#f`<; zx^x-QR?oS2sAbpB!VZtKt7WC-K(>Z)usu)^cO;8IN30NMGKpXW}fjT?r5TkvyFH7*;=-hG@O+-+{97z3l<0>inkGsMNgn# z8mtVR0N)IFAA0m>?K2#__T|F79}b9l3uig7#f!kCu77V%e@M)vi7rM@U-WAz6kPr{ ze)1JhK0fs88BP0CEEEbKwCxXC<*#z%d;NJ%D=kF&Vx$}I%kRpOQT=Crwlw#=$jz_8 z{HNXt^-g3Q%0itBJE6W48N0G@%7y(<-&ceh7wVy2kBo-w(dI%k)SHp9FAFU$oP_#G zWE{vsgA041z84uySvcpyQK%n9Mq3sRC1Fn%&bW}Xj|vxdLwz?graVM)kz-0Y;vVf# zZ!4?%Uym*B(F*leWE_cARe9M(s3}35$5&F0V|gE9gChCVs*btGS*V{yMoad%;zCZX XMA^j&in4#Qia}vz=7+MM{Nwm9YmJV% diff --git a/gestion_projet/__pycache__/urls.cpython-313.pyc b/gestion_projet/__pycache__/urls.cpython-313.pyc deleted file mode 100644 index 5836f2867db4ba403a016bf30c2901e90699f4f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2633 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 diff --git a/gestion_projet/__pycache__/views.cpython-310.pyc b/gestion_projet/__pycache__/views.cpython-310.pyc deleted file mode 100644 index 17b2d31c533983e501f2fecb965c1f630de5ae53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16279 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%0A(dMrFattQk;#7IU+t5xgY6VwXF)Os#;(`rp& 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 diff --git a/gestion_projet/__pycache__/views.cpython-314.pyc b/gestion_projet/__pycache__/views.cpython-314.pyc deleted file mode 100644 index 012a9c3bf2a0f0244e9f34b68fbf9374de138317..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31054 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 diff --git a/gestion_projet/admin.py b/gestion_projet/admin.py deleted file mode 100644 index d0ae965..0000000 --- a/gestion_projet/admin.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.contrib import admin -from .models import DomaineDeRecherche - -@admin.register(DomaineDeRecherche) -class DomaineDeRecherche(admin.ModelAdmin): - list_display = ('nom',) diff --git a/gestion_projet/forms.py b/gestion_projet/forms.py deleted file mode 100644 index 8874d67..0000000 --- a/gestion_projet/forms.py +++ /dev/null @@ -1,176 +0,0 @@ -from django import forms -from gestion_projet.models import Projet -from .models import ( - ActiviteProjet, - Bailleur, - DocumentProjet, - FinancementProjet, - LivrablesLivres, - DomaineDeRecherche -) - -class ProjetForm(forms.ModelForm): - """Formulaire de création et de modification d'un projet, avec validation des dates et personnalisation des champs.""" - class Meta: - model = Projet - fields = ( - 'id_projet', - 'nom_projet', - 'date_debut', - 'date_fin', - 'numero_convention', - 'domaine_recherche', - 'type_projet', - 'budget', - 'budget_RH', - 'description' - ) - # domaine_recherche = forms.ModelMultipleChoiceField( - # queryset=DomaineDeRecherche.objects.all(), - # to_field_name="nom", - # required=False - # ) - widgets = { - 'id_projet': forms.TextInput(attrs={'class': "form-control"}), - 'nom_projet': forms.TextInput(attrs={'class': "form-control"}), - 'numero_convention': forms.TextInput(attrs={'class': "form-control"}), - 'domaine_recherche': forms.SelectMultiple(attrs={'class': "form-control"}), - 'type_projet': forms.Select(attrs={'class': "form-select"}), - 'budget': forms.NumberInput(attrs={'class': "form-control"}), - 'budget_RH': forms.NumberInput(attrs={'class': "form-control"}), - 'description': forms.Textarea(attrs={'class': "form-control"}), - 'date_debut': forms.DateInput(attrs={'type': 'date', 'class': "form-control"}), - 'date_fin': forms.DateInput(attrs={'type': 'date', 'class': "form-control"}), - } - -class BailleurForm(forms.ModelForm): - """ - Formulaire de création et de modification d'un bailleur, - avec validation des champs et personnalisation des labels. - """ - class Meta: - model = Bailleur - fields = ('nom_organisme', 'contact', 'email', 'pays') - widgets = { - 'nom_organisme':forms.TextInput(attrs={ - 'class':'form-control', - }), - 'contact':forms.TextInput(attrs={ - 'class':'form-control', - }), - 'email':forms.TextInput(attrs={ - 'class':'form-control', - }), - 'pays':forms.TextInput(attrs={ - 'class':'form-control', - }), - } - -class DocumentProjetForm(forms.ModelForm): - """ - Formulaire pour ajouter ou modifier un document associé à un projet, - avec validation des champs et personnalisation des labels. - """ - class Meta: - model = DocumentProjet - fields = [ - 'nom_document', - 'numero', - 'date_validite', - 'fichier', - 'description' - ] - widgets = { - 'nom_document': forms.Select(attrs={'class': 'form-select'}), - 'description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}), - 'numero': forms.TextInput(attrs={'class': 'form-control'}), - 'date_validite': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), - 'fichier': forms.ClearableFileInput(attrs={'class': 'form-control'}), - } - -class ActiviteProjetForm(forms.ModelForm): - """Formulaire pour créer ou modifier une activité de projet, avec validation des champs et personnalisation des widgets.""" - class Meta: - model = ActiviteProjet - fields = ( - 'titre', - 'date_debut', - 'date_fin', - 'besoin_ressource_materielle', - 'budget_prevu', - 'description', - ) - - widgets = { - 'titre':forms.TextInput(attrs={ - 'class':'form-control', - 'placeholder':'Titre de l’activité' - }), - 'description':forms.Textarea(attrs={ - 'class':'form-control', - 'rows':3, - 'placeholder':'Description de l’activité' - }), - 'date_debut':forms.DateInput(attrs={ - 'class':'form-control', - 'type':'date' - }), - 'date_fin':forms.DateInput(attrs={ - 'class':'form-control', - 'type':'date' - }), - 'besoin_ressource_materielle': forms.Textarea(attrs={ - 'class':'form-control', - 'rows':3, - 'placeholder':'Besoin de ressources matérielles' - }), - 'budget_prevu': forms.NumberInput(attrs={ - 'class':'form-control', - 'placeholder':'Budget prévu' - }), - } - -class FinancementProjetFrom(forms.ModelForm): - """Formulaire pour créer ou modifier le financement relatif à un projet.""" - class Meta: - model = FinancementProjet - fields = ( - 'projet', - 'bailleur', - 'pourcentage', - ) - - widgets = { - 'projet':forms.Select(attrs={ - 'class':'form-select', - }), - 'bailleur':forms.Select(attrs={ - 'class':'form-select', - }), - 'pourcentage':forms.NumberInput(attrs={ - 'class':'form-control', - }), - } - -class LivrablesLivresForm(forms.ModelForm): - """Formulaire pour créer ou modifier un livrable livré dans le cadre d'une activité de projet.""" - class Meta: - model = LivrablesLivres - fields = ( - 'activite', - 'nom', - 'fichier', - ) - - widgets = { - 'activite': forms.Select(attrs={ - 'class':'form-select', - }), - 'nom': forms.TextInput(attrs={ - 'class':'form-control', - 'placeholder':'Nom du livrable' - }), - 'fichier': forms.ClearableFileInput(attrs={ - 'class':'form-control', - }), - } \ No newline at end of file diff --git a/gestion_projet/migrations/0001_initial.py b/gestion_projet/migrations/0001_initial.py deleted file mode 100644 index c85eb6d..0000000 --- a/gestion_projet/migrations/0001_initial.py +++ /dev/null @@ -1,107 +0,0 @@ -# Generated by Django 5.2.13 on 2026-04-17 12:03 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='ActiviteProjet', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('titre', models.CharField(max_length=200, verbose_name="Titre de l'activité")), - ('description', models.TextField(blank=True, null=True, verbose_name="Description de l'activité")), - ('date_debut', models.DateField(verbose_name='Date de début')), - ('date_fin', models.DateField(verbose_name='Date de fin')), - ('annuler', models.BooleanField(default=False, verbose_name="Annuler l'activité")), - ('motif_annulation', models.TextField(blank=True, null=True, verbose_name="Motif d'annulation")), - ('motif_changement_budget', models.TextField(blank=True, null=True, verbose_name='Motif de changement de budget')), - ('budget_prevu', models.DecimalField(decimal_places=2, default=0, max_digits=15, verbose_name='Budget prévu')), - ('budget_depense', models.DecimalField(decimal_places=2, default=0, max_digits=15, verbose_name='Budget dépensé')), - ('besoin_ressource_materielle', models.TextField(verbose_name='Besoin de ressources matérielles')), - ], - ), - migrations.CreateModel( - name='Bailleur', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('nom_organisme', models.CharField(max_length=200, unique=True)), - ('contact', models.CharField(blank=True, max_length=100, null=True)), - ('email', models.EmailField(blank=True, max_length=254, null=True)), - ('pays', models.CharField(blank=True, max_length=100, null=True)), - ], - ), - migrations.CreateModel( - name='DomaineDeRecherche', - fields=[ - ('nom', models.CharField(choices=[('sciences_sociales', 'Sciences sociales'), ('naturelles', 'Naturelles'), ('humaines', 'Humaines'), ('veterinaires', 'Vétérinaires')], max_length=100, primary_key=True, serialize=False, verbose_name='Domaine de recherche')), - ], - options={ - 'verbose_name': 'Domaine de recherche', - 'verbose_name_plural': 'Domaines de recherche', - }, - ), - migrations.CreateModel( - name='LivrablesLivres', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('nom', models.CharField(max_length=255, verbose_name='Nom du livrable')), - ('fichier', models.FileField(blank=True, null=True, upload_to='fichier_livrables/')), - ('activite', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion_projet.activiteprojet')), - ], - ), - migrations.CreateModel( - name='Projet', - fields=[ - ('id_projet', models.CharField(blank=True, max_length=100, primary_key=True, serialize=False, unique=True, verbose_name='ID du projet')), - ('nom_projet', models.CharField(max_length=200, verbose_name='Nom du projet')), - ('date_debut', models.DateField(verbose_name='Date de début')), - ('date_fin', models.DateField(verbose_name='Date de fin')), - ('numero_convention', models.CharField(max_length=100, verbose_name='Numéro de convention')), - ('description', models.TextField(verbose_name='Description')), - ('type_projet', models.CharField(choices=[('laboratoire', 'Laboratoire'), ('épidémiologie', 'Épidémiologie'), ('sciences sociales', 'Sciences sociales'), ('cliniques', 'Cliniques'), ('autre', 'Autre')], default='épidémiologie', max_length=100, verbose_name='Type de projet')), - ('budget', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Budget')), - ('budget_RH', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Budget RH')), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('bailleur', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='gestion_projet.bailleur', verbose_name='Bailleur de fonds')), - ('domaine_recherche', models.ManyToManyField(to='gestion_projet.domainederecherche')), - ], - ), - migrations.CreateModel( - name='DocumentProjet', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date_ajout', models.DateTimeField(auto_now_add=True, verbose_name="Date d'ajout")), - ('nom_document', models.CharField(choices=[('protocole', 'Protocole d’étude'), ('ethique', "Approbation du comité d'éthique"), ('autorisation', 'Autorisation (DNLP)'), ('rapport_technique', 'Rapport technique'), ('rapport_financier', 'Rapport financier'), ('rapport_avancement', "Rapport d'avancement"), ('convention', 'Convention'), ('rapport_final', 'Rapport final'), ('autre', 'Autre')], max_length=100, verbose_name='Type de document')), - ('description', models.TextField(blank=True, verbose_name='Description')), - ('numero', models.CharField(blank=True, max_length=100, null=True, verbose_name='Numéro du document')), - ('date_validite', models.DateField(blank=True, null=True, verbose_name='Date de validité')), - ('fichier', models.FileField(upload_to='documents_projets/', verbose_name='Fichier à télécharger')), - ('projet', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='gestion_projet.projet', verbose_name='Projet')), - ], - ), - migrations.AddField( - model_name='activiteprojet', - name='projet', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion_projet.projet', verbose_name='Projet'), - ), - migrations.CreateModel( - name='FinancementProjet', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('pourcentage', models.DecimalField(decimal_places=2, max_digits=5)), - ('bailleur', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion_projet.bailleur')), - ('projet', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion_projet.projet')), - ], - options={ - 'unique_together': {('projet', 'bailleur')}, - }, - ), - ] diff --git a/gestion_projet/migrations/__init__.py b/gestion_projet/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gestion_projet/migrations/__pycache__/0001_initial.cpython-310.pyc b/gestion_projet/migrations/__pycache__/0001_initial.cpython-310.pyc deleted file mode 100644 index 7db5fc29bb47f3e43318b656249cddddf5241d1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4306 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 diff --git a/gestion_projet/migrations/__pycache__/0002_alter_domainederecherche_options.cpython-310.pyc b/gestion_projet/migrations/__pycache__/0002_alter_domainederecherche_options.cpython-310.pyc deleted file mode 100644 index 53ae7795d38d6903dca084be7574accbb7d71506..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmZWnJx{|h5Vf784OKyuuNg5QvXH`z5J*VC07!J}VujwRq;le5w@9$U%0J)_u<~;( zF){HM7=TM!)FMv0li&0C`TS%(Ki^;!xcQd8a>m|EFdIIB14_F=1sHI}GT!B!9WxN% zJu>i+55$Al72tPR6ns!0i@0lKY2PHnROhx=QnL{dIH0s!RFHK!Fgniryz8Mq2ufk_ zA$S&0dlJOfpia`En>+i}jD%b0qb=oSVe|lpuGwz4cVwEU!!%KD33QgEIRYB&U8AAA zUpX3c>wxQ1c6GwqKQvv?yhU@REy_H}&@Im*S*Vdo6gBzPW?dK6OV6Xa3uSdcO4pDw z(=bv<>!y@9qePY6B?2rk2h4jZS|i8>*E&=~G-n!6U5v$CLl-!)@P(NcbyelF6JP5L zW2+6SxN~}W692U#o?0K1DZ4T$rR9G|}=MkmP;64Oi9F6+fM9yjmgw7w(OpzE7Wu+42`P#hUj6>Km`K diff --git a/gestion_projet/migrations/__pycache__/0002_alter_domainederecherche_options.cpython-314.pyc b/gestion_projet/migrations/__pycache__/0002_alter_domainederecherche_options.cpython-314.pyc deleted file mode 100644 index 2dc0098fe3348d341f818cb9c222214c94673700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 808 zcmZWnO>fgc5S_JS$96;MM?!^!M60GqQKb+NQY9!zh#pczL$tun>DGyt;MTFt?gojT zazLE<8(jG%flI5EIC0_@DTOoZI8j=$lE?3@-^_U4?)Ks}2h^f>eg@wVz^|0dmN5n6 zT?Gbk2pH`{9SL+BO0WS~TLY}OP%}46n7<$B85SDOZ9>KPoze=DPA}*(PXuwqJ99Na zeoDp-1qRRpfiMW|&=fkht4QQpMze4^A;an?5Z17cbJ)16VRJ{z_Ekn6=Y@qW)!dQx z!K|xX@#CHsMAWB@cHU8@9$EN6Sv%&GL|%`c7WXp6x=+{Vn$^o1l7xNcg{P&dlwZ+S zG?_~)$$XqlCjANxwYS)%Jf$RI@i7&$P^;DMksu00;Dr@iT4d6n5a|%oi~W8`6)q6+ zzVC%;J;kmQ@-|>xgld8)PCxrJp^;CcPCz+JO_$40LqXX=?9=dN)?YetLZ`0F5+Piu z6X+062o|*af^tIGf=V5y=EqcU1TcBNOcHk**cZ!Hbat_Uf5c{$Z8Rm$%MKo5QU~!^e2| z`eaxPFAUvwM!KV^E eQemVcg#MU-HZIHsWPWkZmdf9k%6~zTN%lV#9^7UC diff --git a/gestion_projet/migrations/__pycache__/0002_alter_projet_budget_alter_projet_budget_rh.cpython-314.pyc b/gestion_projet/migrations/__pycache__/0002_alter_projet_budget_alter_projet_budget_rh.cpython-314.pyc deleted file mode 100644 index cfd5cf539514a93462f1291f1d169ef6f1ba4d91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmaJ<&u`N(6t>eeZL)5(Wz#^~*bv*HnyAWzgoF^{$AmfrQ!#K$YtqIGE@@J17Xhao z5C=~D8{GHXwM6AKlD0;D}lV%*rx#%Tozst){Z&Bk=G+C*GU9RJZb8f%x+T>`qEBmF{;0{ zQ|4t<{{*&_;4=Z?T5deHKcb{^?xLa?y8-%|Qao>HsiR!8Oe^J@PM({DF18t_1w_h4iJdu^04X04qEBL~=Lhxx_b{Nn!n(thdue)-(6yt-Rn z{ru?b`u8X9Ub%UgGi~R1;=-{+yjOmfCQeV4t#|j?;^fa;6;s-N*NcL<>bDa)6A9Da xv@B`v1%+h(MtVs%*|Kt>`uKt}qYQ-bj|E`m&?-Ueqcbe7{3x#c2FgjQ{{k?X|3Cl$ diff --git a/gestion_projet/migrations/__pycache__/0002_documentprojet_dernier_alerte_mail.cpython-310.pyc b/gestion_projet/migrations/__pycache__/0002_documentprojet_dernier_alerte_mail.cpython-310.pyc deleted file mode 100644 index e61e26f036e9872b3bd6b721f10cf2688b9a56f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmZuvO=}cE5bckd-Ps|#NQ8LyBFrVTdKQTg{5TlIc$!Po*{WT8?CDwO`Ay#)*l7J2M=vP(Ln^!&Ue4aBpzn;#`PtMryK<=M}$Pq>Vi~tyL%Nkzs zMpS~cw+sZx3kDK-Ex*f3LUPKA^bhs2LioHfn@$g=b-kZ7EuigJp>+RbM2;x>B>}RE z1FHn^4X-37bs7Y4Qcod)lwxuzVR|X4nn6lZnV)_5r$K^?4fa7!ZM(L{!S5}X%je2C zGZ=0C0@~Hspc{78$AFzP*ePwX8&Eac*v}`0^y!(^?yH{yuJvdKpSaOl%IDF8a=Jmv z1x(ilEfh1KshC#E=SorAXp!!FN_`u(4XuFzZqWg{mBGFfsq27r7V>6pEd<^TkMK?InFAk&d{8!{s>+r|G2=2(uRBO@rZ%V)++WFZq3 zwsmB0>#~c39Om{d-xbb_#XQGq2RY$NpJZx2JY?w};i6cp)$U-LP)@^GtVC&dG$08- ziLOS3C6q86#)NT#2O*7L?)thgJ8_uoi$X+t;V9<9NJeoi{cgTAPQn3^K4r}wC2{lx z_~(R;^8m)e#aJeeVj^)7_i`$GAsX#$%e0Bvs*v3`r7^q)SQ0lY&bYjbE)F?ov@_x)!S^`XhGEc)&GhH#?2 zFzKgTQ76|XS7iQ0wdg$eszkzmFjstsU6WM)4IopEraFZ1uLYq0+bTlqlRGX~56jg* IK$5)rA0?ySPXGV_ diff --git a/gestion_projet/migrations/__pycache__/0002_domainederecherche_remove_projet_domaine_recherche_and_more.cpython-314.pyc b/gestion_projet/migrations/__pycache__/0002_domainederecherche_remove_projet_domaine_recherche_and_more.cpython-314.pyc deleted file mode 100644 index a87a34d49ecaa8e334d4c00455c07b61ff6b8fc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1341 zcmZWo&1(}u6rbHqw)twBq^XHi)MCY?l~6yRAR^Y5(u&nE>P3p|>5Aw%mr?3Py4Sj?#)uTSr{Mh^w1A1e&ZUJW`KVQ-N`~LNN+f>toeS zs0$G6Y4AmG6zhu-Uwci(V_=;NY{GR0ZJIcS2PlfIX30aoUDu(-n$oV}~;M zg=(3PR)xC0QjUm}vCAFOVASB$6v+;=+6LPv&*;90yOdc*%Q~PUwMW^O<5FT9Z7MX| zX&>ZAfzO-tJPSg5oikpL7PXsvhmAv#po(~2`nE+|CbYA|oTrqFtm#)qPI}8;duf>L z(ZNiUy7C$j->WimGHK|g2$ef!jY-BmClU2heM0vkdHQ4kky=<-xI!%3;&8U|goqI@ z8zCY=2;8*Y76qIl=(Zq&f?>}?;yZhX#*eiV&B>gJ=+g zb7pPra_SPo3Xtdsek5Kl->5x?j=8n9YHfwO&$!d6JzU3Y{&bRsTKK$bz{gecKdsOf zS>%ZKz#wcEF>Dj~VzkoPXYyrxlLYPunBJnHj^gt}P0j1C?+p_uKG~0*?ZwUxvKN13 zr{3-L3v<1~+}Fsr+3pk4wb^08?PmBOd+NR3FP3`6(&y#wYVELC?`AfKQ7xZ7j_UEm zFdYUeoEv0kkE0rBW1e=p7n>e<+Ci?^&y{+)Qup$M!(8=vECNQSvpN0EU3Mv`^*&tx zxcStun@+{t^1A3X&OeQ0*0(JI60w{9-MGc(K$H*AJpShC3l@T3+yDRo diff --git a/gestion_projet/migrations/__pycache__/0002_projet_volets.cpython-313.pyc b/gestion_projet/migrations/__pycache__/0002_projet_volets.cpython-313.pyc deleted file mode 100644 index f9e500b8afd053288c57a63348a41b7ba4f0e9dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 zcmZuwPfyf96rZ-+?rvFRDH0J5YzUY%5Os?F(rt%jpxZ7pUH@<} z8l#Dxyzn9T7AAZF@v>wRPoB7~uHJoZ*&yH~GxOf>{h#-y+uyGvSa07K=xZ6FA2HKg z>M_y13&bw6kR`1mCc!PQ$}0*}N@xU4AWIoVR>oGUxt`(4eM3oUmZ?jodK5DcO-bkt zT4zo~!+^Ud$_OR70MPve$1bvyXiT;wrdaZ<#4@&8E&OYc(s2%uLAF{vFRL2=!G_Oc zmO6_p?U7_wWM*JtUhQ13GfBEQzl_$Uj;rYtVh36CqlO%`sFNEGJg=B{BH z(1<#|(2h~h`>GPdh2z7^)5z$vUVNAI-0ABa^n$+9hYtYaS>y)I}$5WUo z?+kL6lE5Xr#6uTi5xz5MorNG;-t{4y?H1u8ztkfESDjV_@zurnI=U5CqX@O;JHeL7 zx*H({*U%y7CH6^Bk2XN6H$sp2IB*(7WRg=|r^NU6pqu?7hZ70LLdO_1TRs80fbn+A z@ndb^1~6Wyj7N|M3Bp+HktPW|D1;Ku;xQ4qMbBG~-HKwP_icxwN^wp#%u&4bYUa$Xz8Z?gcHW?#Y&~L7=_R5 zGT~cM*tE-K+j>yFZ=Y_heKM^!H2L~*$8p-)ndU1N|CHp2XM;b5;{)nwD1Wu1$QQLY zm5z?`L+#wyx7^s_rSZeT%ZJ89+n72qrrO5zfic}S77mPsFXdkd{@4qpgHSoMocU@j z05xt>m5Ziw0A3Psu#;t#pv00n(=Bg=_|2u&=YxY(+TP!z{wM*iN;Tny15eT s+Ry?L2>dA0w!_r7ibnMR{#J2 diff --git a/gestion_projet/migrations/__pycache__/0002_remove_activiteprojet_livrables_and_more.cpython-314.pyc b/gestion_projet/migrations/__pycache__/0002_remove_activiteprojet_livrables_and_more.cpython-314.pyc deleted file mode 100644 index a430fe5b87eddab9f2fc3a3f52b2579e90eb7636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2043 zcmb7FPj4GV6rbI-H@l8w$D6-xlEw{V;}ft z#i2pibE40PYc?p4g?su^EC?EK#q}EP^tRW?TCHqf7@C?di9_8QtMlXm^($ULLq|Eq z*C8lhJRlz5v#Dco!}1!Y?NW>Sv|6V={J3mee5Trdy*8>M~MkSvAUb+Y4Jl zlC@~|N+`HUo>O?d;+XC}MBQ>6Uv$Ld_GCUn5qg(6xi}xG);+sQ1Ak0}G}`p-hUp)Y zeR|0Cfcm!S*lim6;A$^RYJ|hp&%<~CFJ;jx*g2%>nBWVZE8O3*Yc>laQ#~>vxX{)k zt1K??^ky&J8;nucYUQLbF-K?{a+s>oKshAS&^2$OJA~xOy;AsN8D(hIuQ7l=vtoenzTPK zrw9oc49_Yt8T0K*i$ThWzX%ZL@I$=*=+ojiQ0$;s*eT{|u+O|^@!1nxh_>s6C|-@? zB9!Dl@xv>S>raXFUqe7l*Mb!JbhUZti;*90f(RbK1N{MYRiv+U6?sy9wb@M|ed0{J zbE4hp%)Hyl%wNP6J<-*|(}fdlp)>PdCo|nKX3vbJ6JzP8>hZ&;rv|(&dH72c{<3A-z7qA2B}){*WyP+a>g>e&bWC%}p^8O+1hRU}D*zjP^g Wp{_{kkBPJKd%uj|`vUhq!=yD594-j0KUb}=*tel z`3nSxuni7bhYFFTqDgHYX5cP3+AKJFgVc;s(bfJ~PqEaU%ssHP-(%O-l-2dy+?9S5 z3T1R7j|HN2RRxd`!oWF4a|jKP!~v;o8+cK^Ok}2!trh+(NHLNjj@HQ4CjOTzgJW)x zZO=h6Plm*t>Hr@9$U}0N!RAHa-W+WI5-7dpJR?>FjsZ1PG*&Uw+-Vsz$ps_X+u{^ZL zqg^J|gXQJrhtv%uO4C{-4v*ls^y zhzpdy>$^eRGJ4~b?)Y5D00j=CIPI|>3q9oRGr{9$Qr643@3mMRo{0nIO2sK>c zNA({KmHu}aD9%E;_kqXrpO_ek4K$x%V1QXA16`Xo4qp!}FsDxQb0_(^v)QGy$y;Z| z+o#2alj6b;fcyK}0ANL5({bC<_w);ZsX)KTWlU?J8%5*eD?UH^L)FeG)7y2!c2xG7 ziAsqwDTlb>^lS-{%0ElBf6f=sCAh>LGy|Ow^2-2XUl;{qe6~&}7Qaj^{seTA>fg;| BB`N>_ diff --git a/gestion_projet/migrations/__pycache__/0003_remove_documentprojet_dernier_alerte_mail_and_more.cpython-310.pyc b/gestion_projet/migrations/__pycache__/0003_remove_documentprojet_dernier_alerte_mail_and_more.cpython-310.pyc deleted file mode 100644 index 0127eb1e2cf2fd2429f5052b7d60ab4cd2b25f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 985 zcma)5&2H2%5Kf$AH=EssR!EhogoNOL!l7Hi5rkS%@gva+bvfeTu! zt{xd{wDkrFY$8t>xS2cg(9Z*4HufPSy#oPsu$zZ@FOQ&`IS_tvp$E~S2mM1YW0O7% zh<9jun`eA6GuJZImYUBhm1Ax0t*)*<;GoiZfo0t~Ibc-^tau`^s*x9okmlNDjJfd- z5XFxQ1t@u$6lnZLc21c(`$}T1-^2mI`ZAd+dITjZH2qiSM$G2dsr2KcnSkS?LMW*+ zfvxZJC11=A7IiAHOi|y~DixHiK3E)IbrD-Hm7)}TbJV8y^h_mxkj!i157zB*@`!k2 z&jeGMly6Np-Bp4@Q$@);F0st&-Po%_0#&w4CfE@uVJjY(kT>;mZX(X9{<%cb2b}NC z6KUVTT7WYwfwC2-D`o@qx3N(B_{@ee;W|L8EfjNE3yl)fx}h)(rl!-V+AM6^+i`Q- z;v+S~({Va-syjA6D}Hn@2v%$rIS-x8I3QSkp plB-)3!So+xuPf;K*5a%LcfnM5^Z%WnPJ4=}m9Q4oyxbw|7!q#*YB^_M`Za*p2qSFVLBarO-Z5`m!dgckqYZ?uHH7WR>Uh|@3wK%<@ zJ7g)Ro5lGfwU9jE3_`<+;-@5|d9Qd7T0+l)(3h>8`;2DkF-%TVd89lsA<8ENIxx&A z;6*|n593UC0kkDT?lU0^$WL>w%_$wwJcR==Duo_NRqxO~KcWXZvhw!RbcR~}VOB6n zGny1-R%NDL<(5#Y)?IDIrFG`-^8q~@Wc3jtvVfsZNL&B*D>*j}KCi)shP#4<0qKOatfR9hK&m*07p$E(-J%b&b=teQXZO7_w_@6ven z%6R$WIM^5k*G__KqhRwS*c=6WC&Aut?Y|KG7@k-YgxdCj{WjPGwDOJpe!+$qbw6-_ zxh+1eN(ddb_F<2=((cx*!(s#cR4siN=RFQ|c~`UgbsJ}4Lha*yHM{(qViQyY9(e_} giDekZ)J4X|?`ZvRw`I7m{88)bN$cuA2$V9wzY(Wp8vpv706_YRqENLLjXRA;z^!(k|olw)UWvCYy1z(t2h# z|4u%XLT>pQ{t~5-FHq;Q%RqbSskbFIJ@-jku{iXQ0loKoZ{ECl@ApQx8}lB5_2I91 zcEv#G@7$=CH3er|0FKcC!rCs98fbl2-!Y`If|k(d2ph`?oBKxFsSeKc*N`(`(!|;q zD6sy?jUNL|d41O7p=4PqqTE-l`V^e~2H+U&!+jV@{h%fdTyJU8+_&0uRq#wh6&lvD zaaS*W5Y?FNRtTa@Z0$R3zw*p<`|=D|sJ&dFnZ|Yt;klo*gKu!{?zB7XRH&uPIqb@L z>_NBl%6(LIsTy$>4f`~e1D+jHsTO0(Q${%n6Urqe{g5Sr4!mSBO-LH{sWJ;`PY>A7 zvxG|VI53peO~UkbE1;KBHLkag=_j46AltT)h2vHs(z}qmP zfaeG~8iq;E9axtLdBV7mkcOsNz8%v6O=GBoQNi;8sye3q>^a@e$x_b!I4)7MKTISO zG@+3!h*WyqRdxY|YCg($_ln&z-pdAb`lQtoAwt6Qjz}maXWgNsf)L(>>(1aqia)s5 z`B_jdIy>#o78TEAHt6i_;+;}l99C!cvvgo=UlCpu{0Y+|VHyK9oVEt9c>X^Zq6R<= zK>Ug(HgdPMiJ@P%j~`AvTmwO^#P$h?S(NxXv^F-|L`}V)5Y)2^O^}c>Yi`^@&mtBl@M6! zvyb_0#oboPE?<;I6$+RMOQ%&DwDr?5=3md7~XmV^I}e+i}rpI8AgF*Hp(vypcF YPqcb&H#PgMH)`HEZQl47fl(y*4^dBHMgRZ+ diff --git a/gestion_projet/migrations/__pycache__/0004_delete_plan.cpython-310.pyc b/gestion_projet/migrations/__pycache__/0004_delete_plan.cpython-310.pyc deleted file mode 100644 index dc6ab2ad25bd4b41541991cb9baa543d377ff14f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmY*X%}T>S5Z+DF+Q$CeJd3wnnu3BCkqUwewiJt(A`G!R#*}0?Zc@RsUcLJYzS3Sj z`3hd@Y+7j@m|=c)X1{NCRlDsolKw|Gx#Ns|*6UZ#u^UZu~5XbyOxw7BidL7MFqnX|YcR*^~=L?L6jF7rlAS4t}>$ zeKpcFhkvsI$8=&W>{!UPnqz5>`~ChQXw1|zf>5(XhO%7MK%kZhYKT(QB|;V@DMV60 zrZgIFe0??|q@Ij290fb30bpGK;{zQLi`4opfTu;2t}88pIZAYymE)TBC(|9OSLWw7d{h~R4>Lv0;rSY75soVoFuA(93@h`WUAWm|NIZ{-k-ZD@ zG?KmiMcYl*Neg>ZgE_9Z^lA?GmW^dq8wIXuig_es)f4v>-YUOAw(`2vZW<>m(x>zh LSYcnjbwNceMOfT}*6k`A^dJL|bo08TCYd-hD|izG z&t3}t1%HlSDs%PJ+sfLzGn-vj=kW5qyziSg@0*#du7<>{*4MR+Q9^#%WWE|RFxfZY zjKn0S&&eSbbcfs^cS!8qB(ckA-321ibQ3+l!FDAkog9a z1M~NcFd}G7gcDQY#?DwscW7oUpe>xN!b8Rnjb&#GW<&f{C$I}_>jqSl}+NMFec~G17SZtZp iJU}9EnJ{)KrI$XTxBvJd^}mGY>$~6AcQ1)ars}^s;j@1L diff --git a/gestion_projet/migrations/__pycache__/0004_remove_activiteprojet_livrables.cpython-314.pyc b/gestion_projet/migrations/__pycache__/0004_remove_activiteprojet_livrables.cpython-314.pyc deleted file mode 100644 index ca7e54220a3af09b4cbaf825cd7f52525a9769db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmY*X&1(}u6o0c{&2DR~AF&=vC0LN4gn$J>N)eQjik2|qZPUj#`;1#RyK!a`@Royk z_TTW&(St2>_2ezk>e<UqmX&Guc~u16-EcH@6e$ zf?^z$b>u0VdrhXCuG?ArKcK{>3C1mMKe0+~JXg4*D%>?iSG50nQB7B)o=V1vqM^u7 zNNGP!#v(dSNj5CgRUT7{Su`N+6!se&n(JzxWYH?lW9qF|>oG>DB7t!}h?0zA64ZN7 z!aSJegNCmwILm{m14NT|l#;<~h#yB$TI4qDI^w%TNR^rlSzdgOX-HX2SuY_e3hneN zr$IiZ{e;q32l zvh|~~b++-~?8fGWYx}{}c5iy0Uy9ly{IFqbKR$`Fe%_3aXJePSi&;vyI|k{>ZmHv* lxNE5SOF?cLGqo9Ge>`CI3vZQqUxU;2?eFW`f5DJh^glb8z#jkr diff --git a/gestion_projet/migrations/__pycache__/0005_alter_livrableslivres_nom_delete_livrableattendu.cpython-314.pyc b/gestion_projet/migrations/__pycache__/0005_alter_livrableslivres_nom_delete_livrableattendu.cpython-314.pyc deleted file mode 100644 index d1a11ac649e36f244c9b3eb7e7a1d7ae385588d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 979 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 LSTPfjU||3NVB{cR diff --git a/gestion_projet/migrations/__pycache__/__init__.cpython-312.pyc b/gestion_projet/migrations/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index cfb6f8cd5a8580b0943782f97db1a42d11a888ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmX@j%ge<81gB1Z%mmSoK?FMZ%mNgd&QQsq$>_I|p@<2{`wUX^%T_-lKQ~oBEwLms zH&H(~KP59wzc{lfLq9#WxFj<_FTS8CKP$CFKQ}YI2&g7MuUJ1mJ~J<~BtBlRpz;@o d4NyyIPO4oIE6_AXAT9*7s2G>j;_Q#%>2Cgf};Ga)RLIo%=Dr}kU()v re0*kJW=VX!UP0w84x8Nkl+v73yCPPg$sn7HL5z>gjEsy$%s>_ZQSvK) diff --git a/gestion_projet/migrations/__pycache__/__init__.cpython-314.pyc b/gestion_projet/migrations/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index a1c65e9253b34ec316c1f34dacff766e73180a76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmdPq_I|p@<2{{|u76v@$@tJv 0: - return round((temps_ecoule / duree_projet) * 100, 2) - - return 0 - - def __str__(self): - return f"{self.nom_projet}" - -class FinancementProjet(models.Model): - """ - Modèle représentant le financement d'un projet par un bailleur, - avec le pourcentage de contribution. - """ - projet = models.ForeignKey( - Projet, - on_delete=models.CASCADE - ) - bailleur = models.ForeignKey( - Bailleur, - on_delete=models.CASCADE - ) - pourcentage = models.DecimalField( - max_digits = 5, - decimal_places=2 - ) - - class Meta: - unique_together = ('projet', 'bailleur') - - def __str__(self): - return f"{self.bailleur.nom} - {self.projet.nom_projet} ({self.pourcentage}%)" - -class DocumentProjet(models.Model): - """Modèle représentant un document associé à un projet, avec des métadonnées et un fichier attaché.""" - NOM_DOCUMENT_CHOICES = [ - ('protocole', 'Protocole d’étude'), - ('ethique', "Approbation du comité d'éthique"), - ('autorisation', 'Autorisation (DNLP)'), - ('rapport_technique', 'Rapport technique'), - ('rapport_financier', 'Rapport financier'), - ('rapport_avancement', "Rapport d'avancement"), - ('convention', 'Convention'), - ('rapport_final', 'Rapport final'), - ('autre', 'Autre'), - ] - - projet = models.ForeignKey( - Projet, - on_delete=models.CASCADE, - related_name='documents', - verbose_name="Projet" - ) - date_ajout = models.DateTimeField( - auto_now_add=True, - verbose_name="Date d'ajout" - ) - nom_document = models.CharField( - max_length = 100, - choices = NOM_DOCUMENT_CHOICES, - verbose_name="Type de document" - ) - description = models.TextField( - blank = True, - verbose_name = "Description" - ) - numero = models.CharField( - max_length = 100, - blank = True, - null = True, - verbose_name = "Numéro du document" - ) - date_validite = models.DateField( - blank = True, - null = True, - verbose_name = "Date de validité" - ) - fichier = models.FileField( - upload_to = 'documents_projets/', - verbose_name = "Fichier à télécharger" - ) - - def __str__(self): - return f"{self.nom_document} ({self.projet})" - -class ActiviteProjet(models.Model): - """Modèle représentant le planning d'un projet, avec des activités associées et un statut.""" - projet = models.ForeignKey( - Projet, - on_delete = models.CASCADE, - verbose_name = "Projet" - ) - titre = models.CharField( - max_length = 200, - verbose_name = "Titre de l'activité" - ) - description = models.TextField( - blank = True, - null = True, - verbose_name = "Description de l'activité" - ) - date_debut = models.DateField(verbose_name="Date de début") - date_fin = models.DateField(verbose_name="Date de fin") - annuler = models.BooleanField( - default = False, - verbose_name = "Annuler l'activité" - ) - motif_annulation = models.TextField( - blank = True, - null = True, - verbose_name = "Motif d'annulation" - ) - - motif_changement_budget = models.TextField( - blank = True, - null = True, - verbose_name = "Motif de changement de budget" - ) - budget_prevu = models.DecimalField( - max_digits = 15, - decimal_places = 2, - default = 0, - verbose_name = "Budget prévu" - ) - budget_depense = models.DecimalField( - max_digits = 15, - decimal_places = 2, - default = 0, - verbose_name = "Budget dépensé" - ) - besoin_ressource_materielle = models.TextField( - verbose_name="Besoin de ressources matérielles" - ) - - @property - def statut(self): - today = timezone.now().date() - if not self.annuler: - if self.date_fin < today: - return 'Terminé' - elif self.date_debut > today: - return 'À venir' - else: - return 'En cours' - else: - return 'Annulé' - - def __str__(self): - return f"{self.titre} ({self.projet.nom_projet})" - -# class LivrableAttendu(models.Model): -# """ -# Modèle représentant un livrable attendu pour une activité de projet, -# avec des critères de validation. -# """ -# activite = models.ForeignKey( -# ActiviteProjet, -# on_delete = models.CASCADE, -# related_name = "livrables_attendus" -# ) -# nom = models.CharField(max_length=255) - -# def __str__(self): -# return f"{self.nom} (Activité: {self.activite.titre})" - -class LivrablesLivres(models.Model): - """Modèle représentant un livrable livré pour une activité de projet.""" - activite = models.ForeignKey( - ActiviteProjet, - on_delete = models.CASCADE - ) - # nom = models.ForeignKey( - # LivrableAttendu, - # on_delete = models.CASCADE - # ) - nom = models.CharField( - max_length=255, - verbose_name="Nom du livrable" - ) - - fichier = models.FileField( - upload_to = 'fichier_livrables/', - blank = True, - null = True - ) - def __str__(self): - return self.nom \ No newline at end of file diff --git a/gestion_projet/static/gestion_projet/js/creation_projet.js b/gestion_projet/static/gestion_projet/js/creation_projet.js deleted file mode 100644 index 36c1a10..0000000 --- a/gestion_projet/static/gestion_projet/js/creation_projet.js +++ /dev/null @@ -1,19 +0,0 @@ -const boutonEnregistrerProjet = $("btnEnregistrerProjet"); - -boutonEnregistrerProjet.addEventListener("click", function() { - const formulaire = $("formCreationProjet"); - const formData = new FormData(formulaire); - fetch(formulaire.action, { - method: "POST", - body: formData, - headers: { - "X-CSRFToken": formData.get("csrfmiddlewaretoken") - } - }) - .then(response => { - if (response.ok) { - window.location.reload(); - alert("Projet enregistré avec succès !"); - } - }); -}); \ No newline at end of file diff --git a/gestion_projet/static/gestion_projet/js/enregistrement_bailleur.js b/gestion_projet/static/gestion_projet/js/enregistrement_bailleur.js deleted file mode 100644 index afe12ea..0000000 --- a/gestion_projet/static/gestion_projet/js/enregistrement_bailleur.js +++ /dev/null @@ -1,23 +0,0 @@ -const btnEnregistrerBailleur = document.getElementById('btnEnregistrerBailleur'); - -btnEnregistrerBailleur.addEventListener('click', function() { - const form = document.getElementById('formBailleur'); - const formData = new FormData(form); - - fetch(form.action, { - method: 'POST', - body: formData, - headers: { - 'X-CSRFToken': formData.get('csrfmiddlewaretoken') - } - }) - .then(response => response.json()) - .then(data => { - if (data.success) { - alert('Bailleur enregistré avec succès !'); - window.location.reload(); - } else { - alert('Ce bailleur existe déjà dans la base de données.'); - } - }); -}); \ No newline at end of file diff --git a/gestion_projet/static/gestion_projet/js/enregistrement_financement.js b/gestion_projet/static/gestion_projet/js/enregistrement_financement.js deleted file mode 100644 index 1e9646c..0000000 --- a/gestion_projet/static/gestion_projet/js/enregistrement_financement.js +++ /dev/null @@ -1,22 +0,0 @@ -const btn_enregistrer_financement = document.getElementById('btn_enregistrer_financement'); - -btn_enregistrer_financement.addEventListener('click', function() { - const form = document.getElementById('form_financement'); - const formData = new FormData(form); - fetch(form.action, { - method: 'POST', - body: formData, - headers: { - 'X-CSRFToken': formData.get('csrfmiddlewaretoken') - } - }) - .then(response => response.json()) - .then(data => { - if (data.success) { - alert(data.message); - window.location.reload(); - }else { - alert(data.message); - } - }); -}); \ No newline at end of file diff --git a/gestion_projet/static/gestion_projet/js/index.js b/gestion_projet/static/gestion_projet/js/index.js deleted file mode 100644 index eb6285e..0000000 --- a/gestion_projet/static/gestion_projet/js/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const $ = (element) => document.getElementById(element) -const url_liste_projet = $("tableau-liste-projet").dataset.url; -const tableau_liste_projet = new Tabulator("#tableau-liste-projet", { - fitColumns: true, - responsiveLayout : true, - columns: [ - {title: "Projet", field: "nom_projet"}, - {title: "Source de financement", field: "source_financement"}, - {title: "Budget Total", field: "budget"}, - {title: "Budget RH", field: "budget_RH"}, - {title: "Avancement", field: "avancement", formatter: "progress"}, - {title: "Statut", field: "statut"}, - ], - ajaxURL: url_liste_projet -}) - -const employes_affectes_projet = new Tabulator("#employes_affectes_projet", { - columns: [ - {title: "Employé", field: "employe"}, - {title: "Pourcentage d'affectation", field: "pourcentage_affectation"}, - ], - placeholder: "Aucun employé affecté pour ce projet", -}) - -const bailleurs_projet = new Tabulator("#bailleurs_projet", { - columns: [ - {title: "Bailleur", field: "bailleur"}, - {title: "Pourcentage de financement", field: "pourcentage_financement"}, - ], - placeholder: "Aucun bailleur attribué pour ce projet", -}) - -tableau_liste_projet.on("rowClick", function (row, rowData) { - const data = rowData.getData(); - const modal = new bootstrap.Modal($("modalDetailProjet")); - - $("detail_id_projet").value = data.id_projet; - $("detail_nom_projet").value = data.nom_projet; - $("detail_date_debut").value = data.date_debut; - $("detail_date_fin").value = data.date_fin; - $("detail_numero_convention").value = data.numero_convention; - $("detail_type_projet").value = data.type_projet; - Array.from($("detail_domaine_recherche").options).forEach(option => { - if (data.domaine_recherche.includes(option.value)) { - option.selected = true; - } else { - option.selected = false; - } - }); - $("detail_budget").value = data.budget; - $("detail_budget_rh").value = data.budget_RH; - $("detail_description").value = data.description; - $("detail_statut").value = data.statut; - - employes_affectes_projet.setData(`projet/liste-employes-par-projet/${$("detail_id_projet").value}`); - bailleurs_projet.setData(`projet/bailleurs/${data.id_projet}/`); - - modal.show(); -}) - -// $('detail-projet-form').addEventListener('submit', (e) => { -// e.preventDefault(); -// new FormData($("detail-projet-form")); -// }) \ No newline at end of file diff --git a/gestion_projet/static/gestion_projet/js/liste_documents_projet.js b/gestion_projet/static/gestion_projet/js/liste_documents_projet.js deleted file mode 100644 index e586ae1..0000000 --- a/gestion_projet/static/gestion_projet/js/liste_documents_projet.js +++ /dev/null @@ -1,20 +0,0 @@ -const urlListeDocument = document.getElementById('listeDocuments').dataset.urllistedocument; - -const table_liste_documents = new Tabulator(document.getElementById('listeDocuments'), { - layout: "fitColumns", - placeholder: "Aucun document trouvé", - columns: [ - { title: "Nom du Document", field: "nom_document" }, - { title: "Numéro", field: "numero" }, - { title: "Date de Validité", field: "date_validite", formatter: "datetime", formatterParams: { - inputFormat: "yyyy-MM-dd", - outputFormat: "dd/MM/yyyy" - } - }, - { title: "Lien vers le Document", field: "lien_document", formatter:"link", formatterParams:{ - target:"_blank", - } - }, - ], - ajaxURL: urlListeDocument, -}); \ No newline at end of file diff --git a/gestion_projet/static/gestion_projet/js/suivi-activites.js b/gestion_projet/static/gestion_projet/js/suivi-activites.js deleted file mode 100644 index d0775d7..0000000 --- a/gestion_projet/static/gestion_projet/js/suivi-activites.js +++ /dev/null @@ -1,59 +0,0 @@ -const $ = (element) => document.getElementById(element) - -const url_liste_activite = $("tableau-liste-activite").dataset.urllisteactivite -const tableau_liste_activite = new Tabulator("#tableau-liste-activite", { - columns: [ - {title: "Activité", field: "titre"}, - {title: "Date début", field: "date_debut"}, - {title: "Date fin", field: "date_fin"}, - {title: "Budget prévu", field: "budget_prevu"}, - {title: "Budget dépensé", field: "budget_depense"}, - {title: "Motif de changement de budget", field: "motif_changement_budget"}, - {title: "Statut", field: "statut"}, - ], - ajaxURL: url_liste_activite, -}) -tableau_liste_activite.on("rowClick", function (row, rowData) { - const data = rowData.getData(); - $("idDetailActivite").value = data.id; - $("titreDetailActivite").value = data.titre; - $("descriptionDetailActivite").value = data.description; - $("date_debutDetailActivite").value = data.date_debut; - $("date_finDetailActivite").value = data.date_fin; - $("statutDetailActivite").value = data.statut; - $("budget_prevuDetailActivite").value = data.budget_prevu; - $("besoin_ressources_materiellesDetailActivite").value = data.besoin_ressource_materielle; - const modal = new bootstrap.Modal($("modalDetailActivite")); - modal.show(); - - fetch(`liste-des-livrables/${data.id}/`) - .then(response => response.json()) - .then(livrables => { - tableau_liste_livrable.setData(livrables); - }) -}) - -const tableau_liste_livrable = new Tabulator("#listeLivrables", { - columns: [ - {title: "Livrable", field: "titre"}, - {title: "Lien du livrable", field: "lien", formatter: "link", formatterParams: {blank: true}}, - ], - placeholder: "Aucun livrable trouvé", -}) - -$("btnMiseAJourDepense").addEventListener("click", function() { - const modal = new bootstrap.Modal($("modalDepenseActivite")); - bootstrap.Modal.getOrCreateInstance($("modalDetailActivite")).hide(); - const idActivite = $("idDetailActivite").value; - const budgetPrevu = $("budget_prevuDetailActivite").value; - - $("id_activite_depense").value = idActivite; - $("budget_prevu").value = budgetPrevu; - modal.show(); -}) - -$("btnAnnulerActivite").addEventListener("click", function(event) { - new bootstrap.Modal($("modalAnnulerActivite")).show(); - $("id_activite_annulation").value = $("idDetailActivite").value; - bootstrap.Modal.getOrCreateInstance($("modalDetailActivite")).hide(); -}) \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/ajout-financement.html b/gestion_projet/templates/gestion_projet/ajout-financement.html deleted file mode 100644 index 642fc29..0000000 --- a/gestion_projet/templates/gestion_projet/ajout-financement.html +++ /dev/null @@ -1,37 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% block 'titre_page' %} Gestion des projets {% endblock %} -{% block 'contenu' %} - - - {% if messages %} - {% for message in messages %} - - {% endfor %} - {% endif %} - -{% endblock %} -{% block 'modal' %} - {% include "gestion_projet/parts/modalAjoutProjet.html" %} -{% endblock %} -{% block 'js' %} - -{% endblock %} \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/creation_projet.html b/gestion_projet/templates/gestion_projet/creation_projet.html deleted file mode 100644 index c04c5d4..0000000 --- a/gestion_projet/templates/gestion_projet/creation_projet.html +++ /dev/null @@ -1,32 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% block 'titre_page' %} Gestion des projets {% endblock %} -{% block 'contenu' %} - {% if messages %} - {% for message in messages %} - - {% endfor %} - {% endif %} - {% comment %}

Enregistrement d'un nouveau projet

{% endcomment %} -
-
-
Enregistrement d'un nouveau projet
-
-
- {% csrf_token %} - {{ formulaire_creation_projet.as_p }} -
- - -
-
-
-
-{% endblock %} -{% block 'modal' %} -{% endblock %} -{% block 'js' %} -{% endblock %} \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/index.html b/gestion_projet/templates/gestion_projet/index.html deleted file mode 100644 index 70ba584..0000000 --- a/gestion_projet/templates/gestion_projet/index.html +++ /dev/null @@ -1,61 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% load tags_personnaliser %} -{% block 'titre_page' %} Gestion des projets {% endblock %} -{% block 'contenu' %} -

Gestion des projets

-{% if messages %} - {% for message in messages %} - - {% endfor %} -{% endif %} -
-
- Projets en cours -

{{projet_en_cours}}

-
-
- Budget Total (GNF) -

{{budget_total}}

-
-
- Personnel sous projet -

{{nombre_personnel}}

-
-
-
-
-
La liste des projets
- {% if user|has_group:"ressource_humaine" %} -
- - -
- {% endif %} -
-
-
-
-
-
-
-{% endblock %} -{% block 'modal' %} - {% include "gestion_projet/parts/modalAjoutProjet.html" %} - {% include "gestion_projet/parts/modalFinancement.html" %} - {% include "gestion_projet/parts/creation_bailleur.html" %} - {% include "gestion_projet/parts/modalDetailProjet.html" %} -{% endblock %} -{% block 'js' %} - - - - -{% endblock %} \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/creation_bailleur.html b/gestion_projet/templates/gestion_projet/parts/creation_bailleur.html deleted file mode 100644 index 6fe4194..0000000 --- a/gestion_projet/templates/gestion_projet/parts/creation_bailleur.html +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/gestion_projet/templates/gestion_projet/parts/liste_document_projet.html b/gestion_projet/templates/gestion_projet/parts/liste_document_projet.html deleted file mode 100644 index eb63ad2..0000000 --- a/gestion_projet/templates/gestion_projet/parts/liste_document_projet.html +++ /dev/null @@ -1,16 +0,0 @@ - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalAjoutActivite.html b/gestion_projet/templates/gestion_projet/parts/modalAjoutActivite.html deleted file mode 100644 index d253eb3..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalAjoutActivite.html +++ /dev/null @@ -1,20 +0,0 @@ - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalAjoutDocument.html b/gestion_projet/templates/gestion_projet/parts/modalAjoutDocument.html deleted file mode 100644 index 6787fad..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalAjoutDocument.html +++ /dev/null @@ -1,20 +0,0 @@ - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalAjoutLivrable.html b/gestion_projet/templates/gestion_projet/parts/modalAjoutLivrable.html deleted file mode 100644 index 6b2bb68..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalAjoutLivrable.html +++ /dev/null @@ -1,20 +0,0 @@ - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalAjoutProjet.html b/gestion_projet/templates/gestion_projet/parts/modalAjoutProjet.html deleted file mode 100644 index 1be46ce..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalAjoutProjet.html +++ /dev/null @@ -1,21 +0,0 @@ - - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalAnnulerActivite.html b/gestion_projet/templates/gestion_projet/parts/modalAnnulerActivite.html deleted file mode 100644 index 7793aaf..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalAnnulerActivite.html +++ /dev/null @@ -1,26 +0,0 @@ - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalDetailActivite.html b/gestion_projet/templates/gestion_projet/parts/modalDetailActivite.html deleted file mode 100644 index fba8cd9..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalDetailActivite.html +++ /dev/null @@ -1,58 +0,0 @@ - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalDetailProjet.html b/gestion_projet/templates/gestion_projet/parts/modalDetailProjet.html deleted file mode 100644 index a7f6087..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalDetailProjet.html +++ /dev/null @@ -1,115 +0,0 @@ -{% load tags_personnaliser %} - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalFinancement.html b/gestion_projet/templates/gestion_projet/parts/modalFinancement.html deleted file mode 100644 index a075b41..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalFinancement.html +++ /dev/null @@ -1,20 +0,0 @@ - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/parts/modalMiseAJourDepense.html b/gestion_projet/templates/gestion_projet/parts/modalMiseAJourDepense.html deleted file mode 100644 index d796bb4..0000000 --- a/gestion_projet/templates/gestion_projet/parts/modalMiseAJourDepense.html +++ /dev/null @@ -1,36 +0,0 @@ - \ No newline at end of file diff --git a/gestion_projet/templates/gestion_projet/suivi_activite.html b/gestion_projet/templates/gestion_projet/suivi_activite.html deleted file mode 100644 index 24d44a6..0000000 --- a/gestion_projet/templates/gestion_projet/suivi_activite.html +++ /dev/null @@ -1,64 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% block 'titre_page' %} Gestion des projets {% endblock %} -{% block 'contenu' %} - {% if messages %} - {% for message in messages %} - - {% endfor %} - {% endif %} -
- Suivi des Activités ({{ nom_projet }} ) -
-
-
- Budget Total (GNF) -

{{ budget_total }}

-
-
- Budget RH (GNF) -

{{ budget_RH }}

-
-
- Budget Dépensé (GNF) -

{{budget_depense}}

-
-
-
-
-
La liste des Activités
-
- - - -
-
-
- -
-
-
-{% endblock %} -{% block 'modal' %} - {% include "gestion_projet/parts/modalAjoutActivite.html" %} - {% include "gestion_projet/parts/modalDetailActivite.html" %} - {% include "gestion_projet/parts/modalAjoutDocument.html" %} - {% include "gestion_projet/parts/modalMiseAJourDepense.html" %} - {% include "gestion_projet/parts/modalAjoutLivrable.html" %} - {% include "gestion_projet/parts/liste_document_projet.html" %} - {% include "gestion_projet/parts/modalAnnulerActivite.html" %} -{% endblock %} -{% block 'js' %} - - -{% endblock %} - \ No newline at end of file diff --git a/gestion_projet/tests.py b/gestion_projet/tests.py deleted file mode 100644 index de8bdc0..0000000 --- a/gestion_projet/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/gestion_projet/urls.py b/gestion_projet/urls.py deleted file mode 100644 index 6e3f087..0000000 --- a/gestion_projet/urls.py +++ /dev/null @@ -1,122 +0,0 @@ -from django.urls import path -from . import views - -app_name = 'gestion_projet' - -urlpatterns = [ - path( - '', - views.index, - name='index' - ), - path( - 'modifier-financement//', - views.modifier_financement_projet, - name='modifier-financement' - ), - path( - 'projet/creation/', - views.creation_projet, - name='creation-projet' - ), - path( - 'projet/modifier//', - views.modification_projet, - name='modifier-projet' - ), - path( - 'liste-projet/', - views.liste_projet, - name='liste-projet' - ), - path( - 'projet/suppression//', - views.suppression_projet, - name='projet-suppression' - ), - path( - 'projet/ajouter-financement', - views.ajouter_financement_projet, - name='ajouter_financement' - ), - path( - 'creation-bailleur', - views.creation_bailleur, - name='creation-bailleur' - ), - path( - 'projet/affectation/', - views.affecter_employe_projet, - name='affecter-employe-projet' - ), - path( - 'projet/ajout-de-document/', - views.ajouter_document_projet, - name='ajouter-document' - ), - path( - 'projet/bailleurs//', - views.liste_bailleurs, - name='liste-bailleurs' - ), - path( - 'activite/', - views.activites_projet, - name='activites-projet' - ), - path( - 'activite/ajouter/', - views.ajouter_activite_projet, - name='ajouter-activite' - ), - path( - 'activite/modifier//', - views.modifier_activite_projet, - name='modifier-activite' - ), - path( - 'activite/annuler/', - views.annuler_activite_projet, - name='annuler-activite' - ), - path( - 'activite/liste/', - views.liste_activites_projet, - name='liste-activites-projet' - ), - # path( - # 'projet/ajout-de-document/', - # views.ajouter_document_projet, - # name='ajouter-document' - # ), - path( - 'projet/liste-des-documents/', - views.liste_documents_projet, - name='liste-documents-projet' - ), - path( - 'activite/liste-des-livrables//', - views.liste_livrables_activite, - name='liste-livrables-activite' - ), - path( - 'projet/ajout-de-livrable/', - views.ajouter_livrables_projet, - name='ajouter-livrable' - ), - path( - 'activite/mise-a-jour-depense/', - views.mises_a_jour_depense_activite, - name='mettre-a-jour-depense' - ), - path( - 'projet/liste-employes-par-projet/', - views.liste_employes_affectes, - name='liste-employes-affectes' - ), - path( - 'projet/mises-a-jour-projet', - views.mises_a_jour_projet, - name='mises-a-jour-projet' - ) -] \ No newline at end of file diff --git a/gestion_projet/views.py b/gestion_projet/views.py deleted file mode 100644 index 69bd619..0000000 --- a/gestion_projet/views.py +++ /dev/null @@ -1,485 +0,0 @@ -from datetime import date -from decimal import Decimal, InvalidOperation -from django.http import JsonResponse -from django.shortcuts import redirect, render -from django.utils import timezone -from django.contrib import messages -from django.contrib.auth.decorators import login_required -from django.db.models import Sum -from django.forms.models import model_to_dict -from gestion_employe.forms import AffectationForm -from gestion_employe.models import Affectation, Employe -from gestion_projet.forms import ProjetForm -from gestion_projet.models import Projet -from .models import ( - DocumentProjet, - Bailleur, - FinancementProjet, - ActiviteProjet, - LivrablesLivres, -) -from .forms import ( - ActiviteProjetForm, - DocumentProjetForm, - FinancementProjetFrom, - BailleurForm, - LivrablesLivresForm -) - -def liste_projet(request): - """ Vue pour retourner la liste de tous les projet """ - projets = Projet.objects.all().order_by('-created_at') - - data = [] - for p in projets: - financement = FinancementProjet.objects.filter(projet=p).select_related('bailleur') - data.append({ - "id_projet": p.id_projet, - "nom_projet": p.nom_projet, - "date_debut": p.date_debut, - "date_fin": p.date_fin, - "numero_convention": p.numero_convention, - "description": p.description, - "type_projet": p.type_projet, - "budget": p.budget, - "budget_RH": p.budget_RH, - "created_at": p.created_at, - "statut": p.statut, - "avancement": p.avancement, - "domaine_recherche": [d.nom for d in p.domaine_recherche.all()], - "source_financement": [f.bailleur.nom_organisme for f in financement], - }) - - return JsonResponse(data, safe=False) - -def liste_employes_affectes(request, projet_id): - """ Vue pour retourner la liste des employés affectés à un projet spécifique """ - employes = Employe.objects.filter(affectation__projet_id=projet_id).distinct() - data = [] - for employe in employes: - data.append({ - "employe": f"{employe.user.first_name} {employe.user.last_name}", - "pourcentage_affectation": Affectation.objects.get(employe=employe, projet__id_projet=projet_id).pourcentage_temps_affectation - }) - return JsonResponse(data, safe=False) - -def liste_bailleurs(request, projet_id): - """ Vue pour retourner la liste des bailleurs associés à un projet spécifique """ - bailleurs = FinancementProjet.objects.filter(projet_id=projet_id).select_related('bailleur') - data = [] - for b in bailleurs: - data.append({ - "bailleur": b.bailleur.nom_organisme, - "pourcentage_financement": b.pourcentage - }) - - return JsonResponse(data, safe=False) - -@login_required -def index(request): - projets = Projet.objects.all().order_by('-created_at') - nombre_personnel = Affectation.objects.values('employe_id').distinct().count() - budget_total = sum([projet.budget for projet in projets if projet.budget or 0]) - context = { - 'form': AffectationForm(), - 'form_ajout_financement': FinancementProjetFrom(), - 'form_ajout_bailleur': BailleurForm(), - 'bailleurs': Bailleur.objects.all(), - 'nombre_personnel': nombre_personnel, - 'budget_total': budget_total, - 'formulaire_creation_projet': ProjetForm(), - 'projet_en_cours': Projet.objects.filter(date_fin__gte=date.today()).count(), - } - - return render(request, 'gestion_projet/index.html', context) - -@login_required -def creation_projet(request): - """Vue pour créer un nouveau projet via un formulaire""" - formulaire_creation_projet = ProjetForm() - if request.method == "POST": - form = ProjetForm(request.POST) - - if form.is_valid(): - form.save() - messages.success(request, "Projet créé avec succès.") - else: - messages.error(request, "Le formulaire transmis est invalide.") - else: - form = ProjetForm() - return render( - request, - "gestion_projet/creation_projet.html", - { - "formulaire_creation_projet": formulaire_creation_projet - } - ) - -@login_required -def mises_a_jour_projet(request): - """ Vue de mises à jour des informations du projet """ - if request.method == "POST": - try: - projet = Projet.objects.get(id_projet = request.POST["id_projet"]) - except Projet.DoesNotExist: - messages.error(request, "Ce projet n'existe pas.") - else: - projet_form = ProjetForm(request.POST, instance=projet) - if projet_form.is_valid(): - projet_form.save() - messages.success(request, f"Le projet d'identifiant {request.POST['id_projet']} a été mis à jour avec succès.") - else: - messages.error(request, f"Les informations de modification transmises pour la modification du projet {request.POST['id_projet']} ne sont pas valides.") - else: - messages.error(request, "La méthode de transmission des données n'est pas valide.") - return redirect('gestion_projet:index') - -@login_required -def creation_bailleur(request): - form = BailleurForm(request.POST) - if request.method == 'POST': - if form.is_valid(): - form.save() - return JsonResponse({'success': True}) - return JsonResponse({'success': False}) - -@login_required -def ajouter_financement_projet(request): - """Ajoute un financement à un projet en vérifiant que le total ne dépasse pas 100%""" - - if request.method == 'POST': - pourcentage_recuperer = request.POST.get('pourcentage') - bailleur_id = request.POST.get('bailleur') - projet_id = request.POST.get('projet') - try: - projet = Projet.objects.get(id_projet=projet_id) - except Projet.DoesNotExist: - return JsonResponse({'success': False, 'message': "Le projet spécifié n’existe pas."}) - - try: - pourcentage_nouveau = Decimal(pourcentage_recuperer) if pourcentage_recuperer else Decimal(0) - except (InvalidOperation, TypeError): - return JsonResponse({'success': False, 'message': "Le pourcentage saisi n’est pas valide."}) - - financement_total_actuel = sum(financement.pourcentage for financement in FinancementProjet.objects.filter(projet=projet)) - if financement_total_actuel + pourcentage_nouveau > 100: - return JsonResponse({'success': False, 'message': "Le total des financements dépasse 100%."}) - - if bailleur_id: - FinancementProjet.objects.create( - projet=projet, - bailleur_id=bailleur_id, - pourcentage=pourcentage_nouveau - ) - return JsonResponse({'success': True, 'message': "Financement ajouté avec succès."}) - else: - return JsonResponse({'success': False, 'message': "Aucun bailleur sélectionné."}) - return JsonResponse({'success': False, 'message': "Requête invalide."}) - -@login_required -def modification_projet(request, projet_id): - """Vue pour éditer un projet existant via un formulaire pré-rempli""" - try: - projet = Projet.objects.get(id=projet_id) - except Projet.DoesNotExist: - messages.error(request, "Le projet spécifié n’existe pas.") - return redirect('projet-index') - - if request.method == "POST": - form = ProjetForm(request.POST) - if form.is_valid(): - form.save() - messages.success(request, "Le projet a été modifié avec succès.") - return redirect('projet-index') - messages.error(request, "Erreur lors de la modification du projet.") - form = ProjetForm(instance=projet) - return render(request, 'gestion_projet/projet-edit.html', {'form': form, 'projets': projet}) - -@login_required -def suppression_projet(request, id): - """Vue pour supprimer un projet spécifique après confirmation de l'utilisateur""" - try: - projet = Projet.objects.get(id=id) - except Projet.DoesNotExist: - messages.error(request, "Le projet spécifié n’existe pas.") - return redirect('projet-index') - - if request.method == "POST": - projet.delete() - messages.success(request, "Le projet a été supprimé avec succès.") - return redirect('projet-index') - -@login_required -def affecter_employe_projet(request, projet_id): - """Vue pour affecter un employé à un projet avec vérification des contraintes d'affectation""" - try: - projet = Projet.objects.get(id=projet_id) - except Projet.DoesNotExist: - messages.error(request, "Le projet spécifié n’existe pas.") - return redirect('projet-index') - - if request.method == 'POST': - form = AffectationForm(request.POST) - if form.is_valid(): - employe = Employe.objects.get(id=form.cleaned_data['employe'].id) - date_fin_affectation = form.cleaned_data['date_fin_daffectation'] - temps_nouveau = form.cleaned_data['temps_affectation'] - date_affectation = form.cleaned_data['date_affectation'] - - if (date_fin_affectation and date_affectation): - total_affectation = ( - Affectation.objects.filter(employe=employe) - .aggregate(total_pourcentage_affectation=Sum('temps_affectation')) - ['total_pourcentage_affectation'] or 0 - ) - if (date_fin_affectation < date_affectation): - messages.warning(request, "La date de fin d'affectation ne peut pas être antérieure à la date de début.") - return redirect('projet-index') - elif date_fin_affectation > projet.date_fin: - messages.warning(request, f"La date de fin de l'affectation ({date_fin_affectation}) ne peut pas dépasser la date de fin du projet ({projet.date_fin}).") - return redirect('projet-index') - elif total_affectation + temps_nouveau > 100: - messages.warning( - request, - f"Les pourcentages d'affectation de l'employé {employe.first_name} {employe.last_name} dépasse 100% sur les différents projets ({total_affectation + temps_nouveau}%)." - ) - return redirect('projet-index') - - Affectation.objects.update_or_create( - projet=projet, - employe=employe, - defaults={ - 'date_affectation': form.cleaned_data['date_affectation'], - 'date_fin_daffectation': date_fin_affectation, - 'role': form.cleaned_data['role'], - 'temps_affectation': temps_nouveau - } - ) - form = AffectationForm(initial={'projet': projet}) - messages.error(request, "Erreur : Formulaire non valide.") - return redirect('projet-index') - -def modifier_financement_projet(request, financement_id): - try: - financement = FinancementProjet.objects.get(id=financement_id) - except FinancementProjet.DoesNotExist: - messages.error(request, "Le financement spécifié n’existe pas.") - return redirect('projet-index') - projet = financement.projet - if request.method == 'POST': - try: - nouveau_pourcentage = Decimal(request.POST.get('pourcentage', '0')) - except InvalidOperation: - messages.error(request, "Le pourcentage saisi est invalide.") - return redirect('projet-index') - pourcentage_total_financement = ( - FinancementProjet.objects.filter(projet=projet) - .exclude(id=financement.id) - .aggregate(total_financement=Sum('pourcentage'))['pourcentage_total_financement'] or 0 - ) - if pourcentage_total_financement + nouveau_pourcentage > 100: - messages.error(request, f"Le total des financements dépasse 100% ({pourcentage_total_financement + nouveau_pourcentage}%).") - return redirect('projet-index') - financement.pourcentage = nouveau_pourcentage - financement.save() - messages.success(request, "Financement modifié avec succès.") - return redirect('projet-index') - -@login_required -def activites_projet(request): - try: - employe = Employe.objects.get(user=request.user) - except Employe.DoesNotExist: - messages.error(request, "Impossible d'accéder au menu 'Suivi des activités' car votre profil Utilisateur n'est lié à aucun profil Employe. Veuillez contacter l'administrateur.") - return redirect("gestion_conges:conge") - - try: - Affectation.objects.get(employe=employe, date_fin_daffectation__gte = timezone.now().date(), role='chef_projet') - except Affectation.DoesNotExist : - messages.error(request, "Seuls les chefs de projet ont accès à l'onglet 'Suivi des Activités'") - return redirect("gestion_conges:conge") - - projet = Affectation.objects.filter(employe=employe, role='chef_projet', date_fin_daffectation__gte=timezone.now().date()).select_related('projet').first() - if projet : - context = { - **model_to_dict(projet), - "nom_projet": projet.projet.nom_projet, - "budget_total": projet.projet.budget, - "budget_RH": projet.projet.budget_RH, - "form_ajout_activite": ActiviteProjetForm(), - "form_ajout_document": DocumentProjetForm(), - "form_ajout_livrable": LivrablesLivresForm(), - } - else : - context = { - "form_ajout_activite": ActiviteProjetForm(), - "form_ajout_document": DocumentProjetForm(), - "form_ajout_livrable": LivrablesLivresForm(), - } - return render(request, 'gestion_projet/suivi_activite.html', context) - -@login_required -def ajouter_activite_projet(request): - """Vue pour ajouter une activité à un projet spécifique via un formulaire""" - employe = Employe.objects.get(user=request.user) - projet = Affectation.objects.filter(employe=employe, role='chef_projet', date_fin_daffectation__gte=timezone.now().date()).select_related('projet').first() - - if request.method == "POST": - form = ActiviteProjetForm(request.POST) - if form.is_valid(): - activite = form.save(commit=False) - activite.projet = projet.projet - activite.budget_depense = request.POST["budget_prevu"] - activite.save() - messages.success(request, "Activité ajoutée avec succès !") - else: - messages.error(request, "Erreur : vérifiez les informations saisies.") - return redirect('gestion_projet:activites-projet') - -@login_required -def liste_activites_projet(request): - """Vue pour retourner la liste des activités d'un projet spécifique""" - employe = Employe.objects.get(user=request.user) - projet = Affectation.objects.filter(employe=employe, role='chef_projet', date_fin_daffectation__gte=timezone.now().date()).select_related('projet').first() - if projet: - activites = ActiviteProjet.objects.filter(projet_id=projet.projet.id_projet).order_by('-date_debut') - else: - activites = [] - data = [] - for a in activites: - data.append({ - "id": a.id, - "titre": a.titre, - "date_debut": a.date_debut, - "date_fin": a.date_fin, - "statut": a.statut, - "budget_prevu": a.budget_prevu, - "budget_depense": a.budget_depense, - "motif_changement_budget": a.motif_changement_budget, - "besoin_ressource_materielle": a.besoin_ressource_materielle, - "description": a.description, - }) - return JsonResponse(data, safe=False) - -@login_required -def liste_livrables_activite(request, activite_id): - """Vue pour retourner la liste des livrables attendus d'une activité spécifique""" - livrables = LivrablesLivres.objects.filter(activite__id=activite_id) - data = [] - for livrable in livrables: - print(livrable.fichier.url) - data.append({ - "titre": livrable.nom, - "lien": livrable.fichier.url if livrable.fichier else "", - }) - return JsonResponse(data, safe=False) - -@login_required -def mises_a_jour_depense_activite(request): - """Vue pour retourner la liste des activités d'un projet spécifique avec leurs dépenses mises à jour""" - if request.method == "POST": - activite_id = request.POST.get("id_activite") - budget_depense = request.POST.get("budget_depense") - motif = request.POST.get("motif", "").strip() - try: - activite = ActiviteProjet.objects.get(id=activite_id) - activite.budget_depense = Decimal(budget_depense) - if Decimal(budget_depense) != activite.budget_prevu: - activite.motif_changement_budget = motif - else: - activite.motif_changement_budget = "" - activite.save() - messages.success(request, f"Dépenses mises à jour pour l’activité '{activite.titre}'.") - except (ActiviteProjet.DoesNotExist, InvalidOperation): - messages.error(request, "Erreur lors de la mise à jour des dépenses.") - return redirect("gestion_projet:activites-projet") - -@login_required -def ajouter_livrables_projet(request): - """Vue pour ajouter un livrable à une activité de projet spécifique via un formulaire""" - - if request.method == "POST": - form = LivrablesLivresForm(request.POST, request.FILES) - if form.is_valid(): - form.save() - messages.success(request, "Livrable ajouté avec succès !") - else: - messages.error(request, "Erreur : vérifiez les informations saisies.") - return redirect('gestion_projet:activites-projet') - -@login_required -def ajouter_document_projet(request): - """Ajoute un document à un projet""" - employe = Employe.objects.get(user=request.user) - projet = Affectation.objects.filter(employe=employe, role='chef_projet', date_fin_daffectation__gte=timezone.now().date()).select_related('projet').first() - if request.method == "POST": - form = DocumentProjetForm(request.POST, request.FILES) - if form.is_valid(): - document = form.save(commit=False) - document.projet = projet.projet - document.save() - messages.success(request, "Document ajouté avec succès !") - else: - messages.error(request, "Erreur : le document n’a pas pu être enregistré.") - return redirect('gestion_projet:activites-projet') - -def liste_documents_projet(request): - employe = Employe.objects.get(user=request.user) - projet = Affectation.objects.filter(employe=employe, role='chef_projet', date_fin_daffectation__gte=timezone.now().date()).select_related('projet').first() - if projet: - documents = DocumentProjet.objects.filter(projet__id_projet=projet.projet.id_projet) - else: - documents = [] - data = [] - for d in documents: - data.append({ - "nom_document": d.nom_document, - "numero": d.numero, - "date_validite": d.date_validite, - "lien_document": d.fichier.url if d.fichier else "", - }) - return JsonResponse(data, safe=False) - -def modifier_activite_projet(request, id): - """Vue pour modifier une activité de projet spécifique via un formulaire pré-rempli""" - try: - activite = ActiviteProjet.objects.get(id=id) - except ActiviteProjet.DoesNotExist: - messages.error(request, "L'activité spécifiée n’existe pas.") - return redirect('activites-projet') - if request.method == 'POST': - form = ActiviteProjetForm(request.POST, instance=activite) - if form.is_valid(): - activite.besoin_ressource_materielle = bool(request.POST.get("besoin_ressource_materielle")) - form.save() - messages.success(request, f"Activité « {activite.titre} » modifiée avec succès.") - else: - messages.error(request, "Erreur lors de la modification de l'activité.") - return redirect('activites-projet') - - form = ActiviteProjetForm(instance=activite) - return render( - request, - 'gestion_projet/activite.html', { - 'form': form, - 'activite': activite, - } - ) - -def annuler_activite_projet(request): - """Vue pour annuler une activité de projet spécifique après confirmation de l'utilisateur""" - print(request.POST) - if request.method != "POST": - messages.error(request, "Requête invalide.") - return redirect('gestion_projet:activites-projet') - try: - activite = ActiviteProjet.objects.get(id=request.POST.get('id_activite')) - except ActiviteProjet.DoesNotExist: - messages.error(request, "L'activité spécifiée n’existe pas.") - return redirect('gestion_projet:activites-projet') - if request.method == "POST": - activite.annuler = True - activite.motif_annulation = request.POST.get("motif_annulation", "").strip() - activite.save() - messages.success(request, f"L'activité '{activite.titre}' a été annulée avec succès.") - return redirect('gestion_projet:activites-projet') \ No newline at end of file diff --git a/gestion_salle/__init__.py b/gestion_salle/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gestion_salle/__pycache__/__init__.cpython-310.pyc b/gestion_salle/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index a040c2e6bbb13240577fd83e47ef8c537633d44a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmd1j<>g`kf=b_KnIQTxh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2B_I|p@<2{`wUX^%TPZfKQ~oBEwLms zH&H(~KP59wzc{lfLq9#WxFj<_FTOZ2Cnr@uK0Y%qvm`!Vub}c5hYe6!X-=wL5i8IH SMj$Q*F+MUgGBOr116cr(vLk{3 diff --git a/gestion_salle/__pycache__/__init__.cpython-314.pyc b/gestion_salle/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 7dd37dd4ec3ba7870e4b429adaa9f1c797daa635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmdPq diff --git a/gestion_salle/__pycache__/admin.cpython-310.pyc b/gestion_salle/__pycache__/admin.cpython-310.pyc deleted file mode 100644 index a7419b44b3a77a2f32ad6505dc39abb3b1d0c3c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmd1j<>g`kf=b_KnNC3ZF^Gc(44TX@fuanW zjJH@5Q*tx&{4|+v@ug%X=B4NBCFkdr6lEqAfecv5P{abHz{D>V{j$U&{qpj1{b0`^ s5B>Di;*!k#y!hh8oSamBurYcCmA5!-a`RJ4b5iXXff|cJh6peK05QoYOaK4? diff --git a/gestion_salle/__pycache__/admin.cpython-312.pyc b/gestion_salle/__pycache__/admin.cpython-312.pyc deleted file mode 100644 index d6e08056e82a86fbdadbd294e4fd86df4d9166c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmX@j%ge<81gB1Z%ya_Mk3k$5V1hC}3ji6@8B!Qh7;_kM8KW2(87i4HnO}mWH5qTQ zCZ^JQIdTMb=W`16LabiwRsy^5(y@JYL95z5Tr8%i~MI1owj6hrrVtim`WMsU@ KpismHGO4`K6wd`46##hQ!5PSts z&a{H-z)5rTn=X~5g8;yOVE9*@^1JU6Z@m9=Klhc`+Jg7e20F94~_7BCSFu8hG7up&E2*5rz({9 yVd-~0M>?$?2r|gn*xBG{hx$=xD zip0dk1_~^lu;X;V!*}0zcb|Q}SI--OIxnklAyoX(Vsm;OX-*Yc0tb!>q!=KA1!LgW z0=OOGvu*kUt8)C_rxrfeJC{Xqm1mKNZ%x@CcB0u+WCH_-ijVIVyE>;yZPp(u}1crS*W)H0Sd~^C6}8bCz@!N5>~<^n>d&GR@PFL~JHf zMwCNDM2d1s{#{L2QOHqImHOu`IEu(^1q*m{j~=ee;ifWC!@B&AWpO^zwo-4w7+uZU lMo+PI|J+P?QSK_K7a$K5eA$Tj4ktfbh{unIzo0_v`UB)^Vc-A& diff --git a/gestion_salle/__pycache__/apps.cpython-314.pyc b/gestion_salle/__pycache__/apps.cpython-314.pyc deleted file mode 100644 index b4cf1157b385f4e5a78d2664abe94b6435f18d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmY*Vu}%U(5S_g{5J4asi4hA!Y`mDzXl0CvfkbGCSz>oEIpH9u$KAQR6m}HGZ}1mv z{1CsuY+_|)XM(ZST^9xff)Y<}S_sEfLe8Qs69=MqgEnOm4&(gG!#G`OLFb0EUA?8&@X3zscC!p#<2>LZOyaH|MS+TGwej}39 z>$Yjjz`t!gKTUZ(y<_@tf8Z#>^{@wcEmZHDthB6jTw4}~*M2-s>bi~TBbr9-H^#DJ iGIwIWbjsG1)Ys#i3O;Q@$Q#tYvV`nBZhwOce_g*EtaOtA diff --git a/gestion_salle/__pycache__/forms.cpython-310.pyc b/gestion_salle/__pycache__/forms.cpython-310.pyc deleted file mode 100644 index c3cd6571d5454a9ff1685183c0469962a2872825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1553 zcmZux%Wm676rJHqq(sTG>qpx>pacO@7PYl+i^NC@Ct28w*eh-bT6bjAr8v$E8O7YD z+x&r7-Q^$hC9@3>z`tN1K<_1EM|DDhM{^%KckWBF-|sSf&UQa#zj};)Bw_J!P}s&- z695CAvl)*$XJCPyTQfVhIeW&y0rwvUuHYxmTRV19<3R^C9n^TJ>43k_qTm8qSj3Gx zm1?Fhcq{c@3N6&@w9I5NA&3h$&tiGg!&f%}esNA@wXMf*)T08AAE^y!{sQ5ude^dQVQ zNzgy{;vVvbFn}fe?!yq4VWo`+KfJT!!58c57wg*ptV^(t$!^rEHe+hhv@2% zI=DHJMX6*SS;i^PPK9wNd8+k$Y;anZN~1QLi3@7s#V-h#A%@6m@p~Z)@dvidQF4x6 z6Patgd3lx#HAKG#>RuBI2_M3v3PJ1nF!Y5MZA}w}^#Ppw1qKEQL^E(w%f%*vVnfi^+ z1eXuSuTwRi&*$U)7cZZWkA$YxOPbLcQ@Qlk>6vk8q+ImZ)H|O!+~-4U$mz4n2i&`K ze2ZHsd7mA(J#{~;Ep* z{SOHH!~u@zwrdOSxeXq!87?8Nk_Q1UOV{ACOe=k3W9q>!P5lU}ks`BNMPju^u#OPf zYJ<){68uE4jBtSJJ0#pCxQ(zEb#A8G_VMX)s+yjthv;T{S35?bu3NEChcSBH!dHg~ zRBel|;ENR{%O38w2PbK9B-=Uhn%U9qAO*WLNITfMrg+9_j`X|lg);u1?NmOZKVVHe M6|#`8SnC`A0iMr>k^lez diff --git a/gestion_salle/__pycache__/forms.cpython-312.pyc b/gestion_salle/__pycache__/forms.cpython-312.pyc deleted file mode 100644 index 9377c4242b0f74180b167a5ff6b8de9daf42ee99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2209 zcmb7FPfQe77@wJ)nf(VWuq+@{S&Sm1fz>v)i8a!yp)rjlw%F>{bUN&N3u9+z@XfBe zo7AR>2Rs!|Kte+6r5ZSR@x-@Fz}cLwPN1O@lBe5P^u6kQ39QC=iJREGZXA2Sh;RBM}cn)tfD^^%_1{8X_-BE6Osa4C8-lw)$3$NYs6O{&&sxMsL1Mf+R%3;5V`; z@5!}eAMGe+Ojm~g=Ol##KUAK)K)pZ`x^_)Wr z7RpV!eyd>%E@NM@FqmS-?k2!}q1xIzqr8%Y_KVVt`bUp8e{?CekXr3r8!n%` zUg=3!yN}H)OR4IkpGsGHzp5S>oKGzEE%dFb zYlq6IYn21ntNp2;62Bb!`OxaEwZrRQkag#~^85EH{ohv;{j*o+Zalp4xa;ZA`rt>E z#K$k2gYn2raI;nD(q`%N&cSl$U^UTGZ9h?s56qr^9v>*j2i8Bhw0^}X4^33!neCw5 z6`6@{M)n$LZ!>rhWvAfK>^*=nO=d@Maui{pw#-hVI@f=K;mi00N1@%lYvZyfdcogJ zXeV?Q?BFS%V`srD{s~N3!!gYPKc3NI_ErewgnKkhZRwUu0OMI<}U$6 HFQkOO+!h}G?VPQz*VoI10iEr39M%275WPk(?37Oz;IFS(@dCFolHaHPNZOU$I zT(`_zEehY#=3xC8I1hwzfr~`oz6pu@-9<%M)Ys?pP+TH@E)xlskeyf^?2|sC^=q54JU1LZp=>NZXFAB~R7rDE1o8_W$AB^B=*FsKvG zYn-ZiI$7XO(DkQu(}~=m1y=hU@&@?5dB)=Ul*+ct){*$VS?Wj_>c}}mv+ZIO>$@js znVeb1GpKisb7lilp8+JZ?tq`O3>)^q?-}&(DDde;+HYDWJzb2r(Ka<`jt>@-A5z=W z&2;`~!Au)EHPhEEYbHHVZ1NVlL31~IbaNKA@6+>6qn=kM-3YY^xQyQkGJ30^Gn#i~ zLz|?AqukN+)07tzTg(>A>n7~Kz|sTt4EX(-a3K?9Avjis%EBUO@UF84G>u@KNZpEC z0}RfzI6+l4wHd0aPFPiEtbD;hKdP#?3YxJw6I0bGo!Q*bO=?=I%JBL-GN5t0Q#v*B zHp6OhLg!$c!|uNgjY2j(H#kb~a*a{VQ7*Y@a{}Ifw4LaOmSs@Q97GbQ;Vh9g2b4u#XhXt;0`n`p))`T?VbP$A(76&Qbd&w`RvK4U-|y zOj8>*Om%B&3{S@HoxSHsSZNG36t&k5fnq!qs!g49^6x&O<(zL$`8nD?e`GPckX>$D zXGG9)d1|I? zeNlere&xWI)oA?D~BAD~S)*8Upd~Twtw9NbY^n*8RM#yPD{zwj8g< z+h4@Hp2xeErpu>>OMT^wTDfPk63=Y}q-1z5vKHPMka>N;HxYIMQo`OsgK55yQP@Eo z971y#%@H&%Ad4QNyr7flL3i^E7K@D)`B3=F*D8nq5Wsjq#O!DQSiShHn_%ktN+&je z5w~@^^IHa_Q-qmanj6gcKvex8suGd2exhtO1ZWal;uatw9wcE9q6iAnRKb2ljf#!u zQB%_SLYm<;OTgj`^_V5mw4=d>F`Dr+lvlP7O(z;JaiLuk=iQgHH#FwfKEqDxL~8nl z3+U|W(;vX8UXSgIOp{r3LX_n%%_x(KD_Tlr{pqI`I?61!Y&PCy;R zm9IYb5|0d^8;+9yTr;OF@A4|{g|@xh9XgMDtG^tocPzd?~cQ6jB>fLJU8mPpt2(4FTMZURhM&qV#{?|EB=1yQhBu)@LCW diff --git a/gestion_salle/__pycache__/models.cpython-310.pyc b/gestion_salle/__pycache__/models.cpython-310.pyc deleted file mode 100644 index c0900756ec4d8bc8b4fc37aaf9558283002ea133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1531 zcmYjR&2HO95ax=cC`z;~|HkPrTc9lzp!N$CO&!Htk zlyC6nI}qI9EHP3RFs5-MX{2UgGUHo=o7{S1aEsW~`ppb%ZV!xJ^9C_SkEv!VI3+od zv!9+O;)2H7viM-{dY^v)$OsrWf(B=Sd5nGjVu6L##A;J>>QD>P<Q2Aobic>$CMA@=|yEB!c3fp5$Eu;M@f|ZtSqET z4rULYP%h%k=U;xviMq)^@&$&tt@%%YTL+lvuG@;HkMDy9Ee>XLe< zT*D&Qwb<0cg}8YL0aI5K8(OSDj2Xn;qp^dxk2ik=@vAX4-r^cyWz)vg1a8c+1#AM_ zZ;js_41#qyGyO09TjtL!AC2ram7VLBDu?P@pe!7&RP9MD^P;K)-HYyEm!pJGzMCZ+ zo0U^CxiaL(_>|kvcF!WYdwzbtJ9vKdZ1q}2j>M%~J;*?ia z&MA#DPRiBB+R&aGMrEN|6`sVIa^FREPSAA13~CRzRsij55T4<&E%Seu7`74s diff --git a/gestion_salle/__pycache__/models.cpython-312.pyc b/gestion_salle/__pycache__/models.cpython-312.pyc deleted file mode 100644 index 41919b61ca84d1f01148bb96ae0ae03afd18b835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2361 zcmb7FOKcNI7@oD)&-m>SLUEdPcmzi@L8#?Wm5>K9P(licL8?i$Y%=3y)AcUhU5D7} z!3PdGnp2QarL>oVl0$lG4?R$E=T9+(^j&sqATToMwJv}y7LMqk_M7zB7a*_ie$bm2DSEP9dvJkvJ6I92WGO) z1=#y5Cdt1N(8uW}vlK*Bfxb zHrzoAcj`5KaCRKp47cw2kcE7AKeCmF!xrK-c_%I$!O_iFiz|WScTu*d*qJ(Dc1#nE zsLO&bDstgC&|gvTlZO)FFyZFaCyy)#C>jS!3#p}?DTnFHDQeyVlwvc2WCyiu0Pv`! zAXDNf5VsIOWLYVLBodh~DN26VHwhw_1u?~f#}9Tv*NLo?l7B+xnldF_79d zgUU}H5qq;-L2KHl3CK;mAj<`*X&AR6~s-3W?2k3N=P8~2kI|LKBXz!`?l2w}1 z`DUAdh>!<<^jX;X9;P+)Ia-4CpW^{MIN)hEYrA)eZP#ph$-UnO437W7@S4X97@WXh zJ(92TKR{o2W>AWqDml4#xLt-Tu^g0D%5AzdT41J!*zcOj!d0uLKPRf1ZeFDn}^k=2Nl(`df9-JzjHB~ONOP`i0y2p&x_H>8Q`;?M%oXe02}X4C<%>EP|6 z>EU@zS9!h^Z)=yqrjY|qZ3?C`YQ(zM2JQ`168C4;JHJkRnW!gE8_Co40<4EzwNk6bfGuGL3w8Y4HW=Vq(3x2giE3(JPET)lOt8eXY-S9X9AO{Ly8y}b2- zJa77W9?k^C403?yKPw0lEhy07fLNKQ=FG=eC;0J;A6*)sm@(ZmnbFMkj7rPG^rsb- zhzs&%QdH?(o1XE}neox{6KaBLzVSstO^Zar>S3w}&qES3VxCwwGhpQule{2fV*04l zcKDl)xq@zbEjcI3rtf8B$08IrfnK8spRG_xU`$aYBFHvP$DGwh)?;AqDYQ9E@Ac_P z`&>TjoEfsB+cD9+qKmoqi#FYwF6aeaJp#~2NIeRR+D9i^$<{>w1vLj0!d>(md+LRQ z?R1wXU-(@icRBq$gu>ivt{&<&LcQyrtux;ae=}SQjg>Dn0*TdhJ&-U0iHFXu*;-(% zJkf~vSI*Sq{YJchD^rWVU!H74la;P|G-*VW+tDNC4;$g$)#ZA)*9iBn<1Mxpey@D7 z5$mfQugCg~Sl@Q+X!&v@!d2Y$2xmmN?MPqwQX_VZ`i~j0V-HDn>}D-C3!qnxv$fbK zG_tqiUJKs~19#`+%eBZ=i0(dd-(BxMVRWC^?jESJ2O7bi)f@F-j}h!y&uvLRskPvA zIlaR&t|DWnhh}C9TFi%+1bIOj#B+ANbnSIRv*!lwez0rDb%i#Eoz=56wXIC=dOxs> pbXXk)2kkhm2d3vvhGCwf#8Wizr#rzEnac6CllM;kg{W+W{|$8wN&Wx; diff --git a/gestion_salle/__pycache__/models.cpython-314.pyc b/gestion_salle/__pycache__/models.cpython-314.pyc deleted file mode 100644 index b030a0dd2af9a2669884883dac5c6c4cdcdf6c4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2431 zcmb7FOKclO7@oD)&-m>;OmUiZOCJd(LQx-5MbjisLPA69Zrn;xr`wHpoGe}Mmfdlh zXV-Qu2t|yP+5hqV-%S4bX8dL( z97Hg(t3Rr;2ce&s(;48~<6r?kRdgGP+#*`w2sgrP*P?5|P23}B0A-Nq9zr6&!sYz! znx4;Dx8o3x=sAu?y+1Q|l%w9Vpq!%%12K@$Hr1n_u8e|NnE;7-1hssBF_1AsVl7>5`T zgJNHIt)W-oLOr+?;3f{`V|#ar;R~HJKLW_}hatOtNCV=~zOQ&iw;1W}ZCH#BA#zlV zk&&B-2x1(x)KB|FY+-XlCaR%VSexEAl&6n0EGSqgnol3w32-a{oG#M(Gq9v$UHH&2 z$~1^|NhSpA1cMd>hAx3DF*q(7EX$jchV?bFPJP97LoH$}51^1-A%>(I_a#|T0OwiN zWc@DX^@^s=Zx792%TRSeIaSdGt+S4B8Gt?om*k2@XlMhQtA>RoT`uG8RBwf0Dyl9M zTrr`}oh#Ur0tW7XFdXt60D}t{>}RKk7|alw@WG+Fx81^90_B8lUVwuf^-_-|YZ|6L z>^u{cufR#tU`aJCVmFWmG`VBO6zH8~zLW)=7jI#$WU+Rgr02313pb$NDlFs*v)H;z zjC+OUMRCEI*09C2B-u+AoF{7h-WK&ql0{5OqRAe`jkkjWFk4q)s-jk6@Zs2}V-M1w zFYok!nf@Z(%uMWMCYqT`dzni$Ve%XK3IBcQyHIoL`rg#_=G3jdsav(ng<9cGO~y@m zV^7|w-ML?jZr1#p2f&CPqpPECkWQdvm}Ohe+lgh?4<_+$jA_fn6`fs!I8=2JAbUH? z7?>8NZP2{Q)H2G0nAibr2j_I5a|3{9L)KIU;|j~&WcJg?>@om<2^#OjMP|3-vJSd$ z$ETUi;u-3f?6ZNE1tkd@2^g?LlJs#!)|l+Ui%ODxikhlp-GBhJSuu(Xm;WF)CuJ9| zEoSGIsdqU)oxhPc*|S1}^M;AlHT??SGMQ|tFFU=Qot~XD*$Ynt*>%~RSFxs;N#=)V zK@fShjO`c=+4@j$S=JRy11#wzg6+g=g;2k3msFhwURL(4!=1$NIxs}QaTp{tV;CBi zb%&;J)xQ09pJ~TocbfWdh)d4CGWI_6c#}9a@v=eGQm<&K*CH~h5c72g9bh_xvoErT z%2Z)}Y(bCWl2ioYTZ&pFMXYI(1X>UG1fh(He#$%ov&pWrJ+U8l>lc{*_yiRD1ON65 z7vJx#F1-kPBHrr!^9YI#G$SMR$jFXw_x#tBUrjb5Gu3xnp+qy3u7}c(+`ENFXr?;X zO1{=io~kEL?dBWFi`Au8e5e`E)Z>}``0?s{Enta`)T1Li$}ZoCo~tgj5~*h5SUquU zKk-KON-H+lj0yFaupc{CU9@v2>WLGNaBb#RBT)bVgLguOMqx6>BW@zvIYz(wqgCb=+df=WdSUo}u(J YH1?}E&24cHPCh*I>6zaUv+eS~0D)~%(*OVf diff --git a/gestion_salle/__pycache__/urls.cpython-310.pyc b/gestion_salle/__pycache__/urls.cpython-310.pyc deleted file mode 100644 index 76fe8bafe5e3bbe7399003b7dbe98d4312be3670..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcma))&yLeD5XSBN>1Nwxp$#0kaN$A^+1$};#c?^nfxVy}h%AjMt`euR)0E9SaN{L- zCGQalXeiE-*KiO@5VuaVY^f%mq04+&H zSCkU)z%RYZU-=jZtAJAoxxWcv0w-U6qzGvOr;esbCoppqBSnxnIzu{zM~)sNO=0e6 zfi#1KqZBEI)Y3XyCGg~$ET7(CWn@WBuw~8XJ9>by6@0HvvgW!GwJbC%OWwtbw_LT% zN_jU|Tpuax6YMFHRlIvSOa$IAQR@6c$mZ4Hn?k^4w>Z4b26~qcAZJqUO0K%p1rKMo ztQ24~UGQ+G;-7X{y1l3mMw!n?w{PlQlL604!DZIfb=A$8)wt@V;vkhmH+*!;vwx(F zH4T>yf44j{GuSY>uFrR>)XKw_8=`Q0h>6&CTi6zwP)OikjO$M^D9RjLF&3TcvFHqr z#G`@2dg=|Bd0*`)>tJ9g70!T}Vc9q=*aNA*6P04&{r2lc-ZGW%_xt?%&HJl-G(5TW rdcM6e(M44Q{?bc3YWf3iF^Os5dA>&jitD!*-ba)B=&$ylQFQwUoJb^} diff --git a/gestion_salle/__pycache__/urls.cpython-312.pyc b/gestion_salle/__pycache__/urls.cpython-312.pyc deleted file mode 100644 index ba22adf4bed4a69cbaa91c262d1a6a9695bdd690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1279 zcmb7?&2G~`5XaYXl5XR;ZIZTp(*zDpkX%a~QPmef;sJ8NT4^`QM*fJ_PM|))krPLr z0l|v^r<|}X6(Moztx-Ak#O~S_wn+}`!8`k(-_FjA=bNrK0AF9ftmw-s0Kdc`Tg}wC z#tHx*00vmGfujr+1>g!+?TVugRc=>@)e0aAt`T)Aqh$e-9oIi^eNq!!a*%Ub>>P@> zOI(9Io@@EYwn^AzWI@;h3CRpwjQH8fkbsEd zB8P zv3D|Ow$H?z#(>qt2GMM0i5A8+>SFRbPWxl!l8Uod6vedaqL>y~5VHa-QIjknZpmy5 zR8l}*veE)#ji=3rh4;YqKZ0wXH@Gp(iRTb=#Am}nrsH8cGJVP>W?_O%QSiy^{05$K zg#Xtwc8lK@L+AhCpDR^SlnZeG0(5?Aci+HO9n`iXco;$bz4lIv^zQGiYOTI%Nckz3 zzr*elb|bx)IGWP&KstI$*o*W>`5XW5=*v(?OL$az{N5(VW9c|v!sAHq%g3*tD^GSS KZ#8znOZ)?SkYlX? diff --git a/gestion_salle/__pycache__/urls.cpython-314.pyc b/gestion_salle/__pycache__/urls.cpython-314.pyc deleted file mode 100644 index 3ea239f763f26041de973553bc44b6c8ed6ae6e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1282 zcmb7@&u`N(6vv&W?YySxmUf!>-F7>y1*MhXfHY0Jz@Zfqnu54>jUvSx8EH}_Zh@R8 zZk+f#_)|FcL}Y0Qi4(U?p>t_&p?5x!&ykNU*U^2$woy>^&>VSlgGv2B@sPh-sT^Pd z9AkolP7*W`HZ0rkA6X7QOzhDu^EjwSUNxZyjl`mFIL^#QUeJh*_2k^JEt8S4v7YqM z*^FMD9mI_k`5<-rg*(HliB#J{jvBb`Bv1^dA&*OXB-xgaQ7X#qe2ii#3QN_w0Ck?6H)pU@gO{ui)htwWwXI~={HHT6e>lhJeJzs2r!^lGRLq9N5s zBbIh=`hmcsiEGlod+f1>rq3Pt-|28I3W9J2?p=Y#59!V&yeWgyW(apfD1VkdNuk{O zy-_TcZz^1VOyzH|wScWqZbyzPciiWW_5!v;c`v!+{~aA3s=0v8%;9&}Irh2ZU;z(8 Txx){?ejz;EDtweY_Q?MLjY3;% diff --git a/gestion_salle/__pycache__/views.cpython-310.pyc b/gestion_salle/__pycache__/views.cpython-310.pyc deleted file mode 100644 index 08067b62f50db3134d7b9f9daada0ed74154648f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6126 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 diff --git a/gestion_salle/__pycache__/views.cpython-312.pyc b/gestion_salle/__pycache__/views.cpython-312.pyc deleted file mode 100644 index 657bbc9792f71437f42eaf4baf073da81d72a0a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11139 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 diff --git a/gestion_salle/migrations/__pycache__/0001_initial.cpython-312.pyc b/gestion_salle/migrations/__pycache__/0001_initial.cpython-312.pyc deleted file mode 100644 index 2e6dc3e7ab9a030374928d3526c2f0bc44f80bc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2418 zcma)8O-vg{6y6`(*v1eqAsDc+mzL0&6q|&As8ppT{Dibg)Q~h)EH$fz8QW{tyL5I< z0;g2Up~v)8_tHi^HNuA;>8X`+>Ca_XAlceWBlVOUZPH6leY0y5x6r72n0Y_nym|BH zo0!TwUDeTXL`9#LOMDSCvDMJ)28K&@lj=XvuS3cBc?!{`EoLf^0` zTLDz=b7CWv9+#k)-wRE+r{;@0h;1=vj@zv|H43)Y%SV0tKcI0Um30E ze_)Qgn8Cwwpent!6Kym0y#g8g2eRKqCXR?nt36N~Y%u^<9CxwF!`QZ}BwWnV`!NLj zkwmGQ*cNlx#fyhyVxcs0*jnm7!Zvz@?bKl#dad^Q%NiBBY9lQT7Bt=t9MOK~8Wo%%w;T{8rQ_!NrU7An(oQPa8b!nAg z*~G}{TqjCdCY#b4-gH7R0EQ}C5NiXI72Uv+CYQ0}H)K`CX&z<`<#keagKqU)r&bYR z@xTUv4uUHhq*W1MjRy$w_>pU+5mW_h(w455UxY4$DCR(XiU3VVuNHM>6&rAd<-3xK zwSrl6A_#Jo5H8Ca!fCd-1Wmsq$p|^&rgx=cIzd;?D;k9Iuc)%N=J>RV3e_m$3ZXG5 zDub2?YBp(|cGTd@nSBBD1cnn<&BQxo5zc_EyaE2>G3L7oSrbb^$v{`OJSqCvJ5 zBECb81D4R^oaPDTFd3qa8$l@RrjnOP+a3iBQ#LDR+6U8xp+d50V$H-`;RQ`>$~2J; z*dT;)B?z%@Qu*;COzi~cD@N14Oy#Cs)}R1Q`z)2gPENw$rvuPHX7nB*!?cM(<8(CX zv=#dozcNh+Ocnyx!L5o->~N+I2A@llKwiNrGOnikoS@_~N0OYdB*7I7DS#Z2q)#fc zO2MFYw5S?EcpbymYO4x12))yt&N-K$SLo$U=zZ!$E+~arpzb1_!wJn5W#Wll^HA>_ zN*OmjRBehct&t15u3}m99KjElFSj80uIY*4MV(-!puG<#A%IGbxHU9hy;&a` zw}-~Ro8K|_hUTs40%T%|6AuG*al#fScEz(+bh05NtYoH|uO~BhGP9eUu%c&N+$6z&C_JD=}VOtS83p z#Q09&htT(-`pl9&vs9nCX3t!!&)l+SZdteQ>?Q76(arsMcW?J|zYq%V^T&GvpT0-t zTN{=RI0GJGGH4~^{cvPjtRd$C=7bLXF27w$dpkZyqqw0KKzb2;+dD1i$r7ma%{Nle i?DH(kJ_|7H@Ndki=YcpIco42fN9^dxUkoU2fWHA~?0rZ8 diff --git a/gestion_salle/migrations/__pycache__/0001_initial.cpython-314.pyc b/gestion_salle/migrations/__pycache__/0001_initial.cpython-314.pyc deleted file mode 100644 index c50a1ed88ef5aab0ce7df681935bab4ca54aee41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2493 zcma)8O;FoL6qe+FV?ZW=2^b?Ml*FVsB#=Nmon{h#V%nr3%1T`T)8G(DnR0qdP)eR!mH=o(XWRfa_@h_+pkB_a(rzeFy`-Sh2k!Di6rs z|L~UlAD9lnq?`GHT{$LpHbm_D7i9N8kWoNpn);+w#KhEu&jYBq2e3jjY{RY`{}ATA zUFiknhfeOJ8?4wTrW-2i2lR<%u@^h$hu*i(^G$50o7jfmw}}~X;BDl5n<&&ZU~adV z#VPRwbi@#eU9We-ZPFql3z?g4Ul2}JW(hYpoePqLT*ij9Vj>wMg|uv#YDqS?q;<4K zVz5A!HFX=2#3nMA4GT%STtXyd$(n{pOjD6AZ5u}Euh=yZh5H~v14dTX40Q!r(24RR zNkjT7ULy$w0!Ruf$-07atRGi59!j#Jkhnj)T*f5o%0*QNSD|H1*4If;FKZfUSwm%$ z`k<(orvQw!EF;TMy-c=KS6oF3Z55B!WsC znz4npQ>)0Lx0K`?^8On#je!;JErb!_umOgkyYJzmiZsP~?p|~4?<^;Y(b3U!lB%m1 z4lNg;ZiJiWD^LYAXJXR++8ZadJgqc&#)Q3U8J&amvuNx-+r0O)ZRm)l1nW~B5_HAOB*mC zCnV{cvaHeKL2H+!qH0=LQ+1>pV2Jp|0=duz0$%AWDzZ#^A&{0Sm(thi{cqCim?W;K ztCxZ7vvdhi6r%hNL?Zfv0XH>yjLC}q?YN*7ZFawAKU%u|r_ zA^aFJJN47It!pHPfEXy8-88-V1bNWp<&4!=G9e!|+AN-R6#dYvE+jLLC;v5?m3NUVS{?~w)M8shDD)DpBq(7cJ%c~7@1#1! z^V)siC6Bs*#OMlCGP)h!Bzx48?HeU1;tYv8Ox!jSkkLj#clKO)h~2g!c~1bh&|gB)2z&OS3J~Y>-v_~IyyoC8=kKfU*O*pkF3<1~S=!b|2z)wq-%ew*>dkAK5 z43r!|muPYy8n6S@*#_$NNw2ajSnp5V5^IN69zf*%vNR$l9E*`mv?y{lSZ4#QTJ7WM z4Emr61??RB+NFM*=t|$~)&DIhF%ChfL*1uN$uV<-R& z#)TF`Ci!rxA_s>mQl7Cq8FN#y@hcqR@#cstJ1J91mT^<>bUKfi$b}Y376qot78Q({ zkTJYrnsLN+#y(7w%-(|RI%7j2mCi)Y^TK{k`Gn^w&j*4lX-zUU%E!ei-xoYfO;}9$ zl|QDzn9?}#fF)W>aWd6hF(&PMU0AuM|KeHv7FDUZ+lyav^>#W-RUTvOlx6W@g zFFiL1=dO3t|MW^Wmeog*Yl8G$l8=gZda}@5UTuYxX?GBr>RxH$b9omj{)?dQVVJvw akl#L#olCz){4e3zR_ohV>klAVRR0AfjkXB@ diff --git a/gestion_salle/migrations/__pycache__/0003_alter_reservation_statut.cpython-310.pyc b/gestion_salle/migrations/__pycache__/0003_alter_reservation_statut.cpython-310.pyc deleted file mode 100644 index 32a50e8fa882ba480dfc789338e8c41674906126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 747 zcmY*XO>fgc5Z(1U@drdgJs=@CRH}sJOC146gjyj!C3dtny$2ynfEsHX5YGU$vjjre{%L13yRoN+9wT*G(x&_o`=BeEkQ*lJw zJfncD;J}Iic*zTa;d0~!aJ-C42H_75BN#(;At1gGbRvd?_^(5vlM;=WltyWd z?qE8dK9L>P?HcLFV7DG7l67mVIU)1jxH~(98yl-^Z?n+f02`^S#m3^-^i{LJ&54QD zN>_l``wM*Z`Oi!A_|S2SpZe}wTs2LvxA?Ko3GWj6^VI_inQ+l;(N;4wE&`mZUR&}{ zeU=)V(k_Tk2M1-NYINZcNAn6boMefM<$z1+Qb{)hQlk8>l;^$D{;aP6SJ(hHvkFZ| zkIh_qtSxr0eV0ynAbGh^o7$!A3b&7U$-0Nc4&l%He9_jJo3=xppS?SMo8K}#zj^bV ztbZz%m$>Ep#^1x$m(G7(W7=kqLd*gYUWcQA2Yio*f8*h@8uxg`kf-2u=l? diff --git a/gestion_salle/migrations/__pycache__/__init__.cpython-312.pyc b/gestion_salle/migrations/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 1378976b15b34e5e66413db5665e8fa489a16cbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmX@j%ge<81gB1Z%mmSoK?FMZ%mNgd&QQsq$>_I|p@<2{`wUX^%SJyVKQ~oBEwLms zH&H(~KP59wzc{lfLq9#WxFj<_FTOZ2Cnr@uH#5Bms3bqHSU)~KGcU6wK3=b&@)w5< cP)BJ_s$CH)&@e_IE(S3^GBYwV7BK@^0Eyox`2YX_ diff --git a/gestion_salle/migrations/__pycache__/__init__.cpython-314.pyc b/gestion_salle/migrations/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 91220290c1e4c1110ddec5a4e291c8e5b1e7bcf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmdPqXQi(}&BGxIV_;^XxS hDsOSvy?*Sy~KYd}3x~WGrF^vH%u9DIfp< diff --git a/gestion_salle/models.py b/gestion_salle/models.py deleted file mode 100644 index 5d1d4e2..0000000 --- a/gestion_salle/models.py +++ /dev/null @@ -1,33 +0,0 @@ -from django.db import models -from gestion_employe.models import Employe - - -class Reservation(models.Model): - """Modèle de création des réservations""" - TYPE_CHOICES = [ - ('formation', 'Salle de formation'), - ('reunion', 'Salle de réunion'), - ('lien_zoom', 'Lien Zoom'), - ] - STATUT = [ - ('en_attente', 'En attente'), - ('validee', 'Validée'), - ('refusee', 'Refusée'), - ('annulee', 'Annulée'), - ] - - employe = models.ForeignKey(Employe, on_delete=models.CASCADE) - salle = models.CharField(max_length=100, choices=TYPE_CHOICES) - date_demande = models.DateTimeField(auto_now_add=True) - date_debut = models.DateField() - date_fin = models.DateField(blank=True,null=True) - heure_debut = models.TimeField() - heure_fin = models.TimeField() - besoin_zoom = models.BooleanField(default=False, verbose_name="Besoin d'un lien Zoom ?") - besoin_ordi = models.BooleanField(default=False, verbose_name="Besoin d'un ordinateur ?") - lien_zoom = models.URLField(blank=True, null=True, verbose_name="Lien Zoom") - motif_reservation = models.TextField() - statut = models.CharField(choices=STATUT, default='en_attente', max_length=25) - - def __str__(self): - return f"{self.salle} - {self.employe.user.first_name} {self.employe.user.last_name} le {self.date_reservation}" \ No newline at end of file diff --git a/gestion_salle/static/gestion_salle/js/index.js b/gestion_salle/static/gestion_salle/js/index.js deleted file mode 100644 index 8b5bff8..0000000 --- a/gestion_salle/static/gestion_salle/js/index.js +++ /dev/null @@ -1,193 +0,0 @@ -const $ = (element) => document.getElementById(element); -const { Schedule } = calendarjs; - -let dateAUtiliser = new Date().toISOString().split('T')[0]; -let currentReservationId = null; - -const calendrier = Schedule(document.getElementById('planning-reservation'), { - type: 'weekdays', - value: dateAUtiliser, - validRange: ['08:00', '18:00'], - ondblclick: function(self, event) { - const modal = new bootstrap.Modal($("modalDetailReservation")); - modal.show(); - fetch (`/gestion-salle/revervation/details/${event.guid}`) - .then(response => response.json()) - .then(data => { - currentReservationId = data.id_reservation; - console.log(data); - $("id_reservation_detail").value = data.id_reservation; - $("id_reservation_refus").value = data.id_reservation; - $("id_reservation_zoom").value = data.id_reservation; - $("employe").value=data.employe; - $("salle").value=data.salle; - $("statut-reservation").innerHTML=data.statut; - $("date_evenement").value=data.date_evenement; - $("heure_debut").value=data.heure_debut; - $("heure_fin").value=data.heure_fin; - $("motif_reservation").value=data.motif_reservation; - $("besoin_zoom").checked=data.besoin_zoom; - $("besoin_ordinateur").checked=data.besoin_ordinateur; - $("lien_zoom").value=data.lien_zoom; - - if(data.statut !== "annulee"){ - $("motif_refus_container").className = "d-none"; - }else{ - $("motif_refus").value=data.motif_refus; - } - }) - } -}); - -$("modalReservation").addEventListener('shown.bs.modal', (e) => { - $("id_salle").value = $("liste-salle").value; -}) - -$('semaineDate').addEventListener('change', () => { - calendrier.value = $('semaineDate').value; - calendrier.render(); -}) - -evenement_defini = null - -$("liste-salle").addEventListener("change", (e) => { - if(evenement_defini === null){ - evenement_defini = calendrier.getData(); - } - evenements = evenement_defini; - evenement_filtrer = evenements.filter((evenement) => { - if(evenement.title == $("liste-salle").value){ - return evenement - } - }) - calendrier.setData(evenement_filtrer); -}) - -function chargement_evenement(){ - const url = $("planning-reservation").dataset.url; - fetch (url) - .then(response => response.json()) - .then(data => { - calendrier.setData(data); - }) -} - -document.addEventListener("DOMContentLoaded", function () { - chargement_evenement() -}) - -$("bouton-annuler").addEventListener("click", (e) => { - const csrf = document.querySelector("[name=csrfmiddlewaretoken]").value; - const url_annuler = $("formulaire-details").dataset.urlannuler; - - fetch( - url_annuler, - { - method: "POST", - headers: { - "X-Requested-With": "XMTHttpRequest", - "X-CSRFToken": csrf - }, - body: new FormData($("formulaire-details")) - } - ) - .then(response => response.json()) - .then(data => console.log(data)) -}) - -if($("bouton-valider")){ - $("bouton-valider").addEventListener("click", (e) => { - const csrf = document.querySelector("[name=csrfmiddlewaretoken]").value; - const urlvalider = $("formulaire-details").dataset.urlvalider; - - fetch( - urlvalider, - { - method: "POST", - headers: { - "X-Requested-With": "XMTHttpRequest", - "X-CSRFToken": csrf - }, - body: new FormData($("formulaire-details")) - } - ) - .then(response => response.json()) - .then(data => console.log(data)) - }) -} - -if($("ajoutZoom")){ - $("ajoutZoom").addEventListener("click", (e) => { - e.preventDefault(); - bootstrap.Modal.getOrCreateInstance($("modalDetailReservation")).hide(); - new bootstrap.Modal($("modalZoom")).show(); - }) -} - -if($("refuserReservation")){ - $("refuserReservation").addEventListener("click", (e) => { - const csrf = document.querySelector("[name=csrfmiddlewaretoken]").value; - const url = e.currentTarget.dataset.lienrefus; - const idRes = $("id_reservation_detail").value; - - fetch(url, { - method: "POST", - headers: { - "Content-Type": "application/json", - "X-Requested-With": "XMLHttpRequest", - "X-CSRFToken": csrf - }, - body: JSON.stringify({ "id_reservation": idRes }) - }) - .then(response => response.json()) - .then(data => alert(data.message)) - .catch(error => console.error("Erreur:", error)); - }); -} - -const tableau_reservation_attente = new Tabulator("#tableau-reservation-attente", { - columns: [ - {title: "Employé", field: "employe"}, - {title: "Salle", field: "salle"}, - {title: "Date de l'evenement", field: "date_debut"}, - {title: "Heure de début", field: "heure_debut"}, - {title: "Heure de fin", field: "heure_fin"}, - {title: "Motif de reservation", field: "motif_reservation"}, - ], - placeholder: "Aucune reservation en attente.", - ajaxURL : $("tableau-reservation-attente").dataset.reservationattentes -}) - -tableau_reservation_attente.on("rowClick", (row, rowData) => { - const data = rowData.getData(); - - console.log(data); - - if(data.besoin_zoom === false){ - $("lien_zoom_container").className = 'd-none'; - } - - if(data.statut !== "refusee"){ - $("motif_refus_container").className = 'd-none'; - } - - $("id_reservation_detail").value = data.id; - $("id_reservation_refus").value = data.id; - $("id_reservation_zoom").value = data.id; - - $("employe").value=data.employe; - $("salle").value=data.salle; - $("statut-reservation").innerHTML=data.statut; - $("date_evenement").value=data.date_debut; - $("heure_debut").value=data.heure_debut; - $("heure_fin").value=data.heure_fin; - $("motif_reservation").value=data.motif_reservation; - $("besoin_zoom").checked=data.besoin_zoom; - $("besoin_ordinateur").checked=data.besoin_ordi; - $("lien_zoom").value=data.lien_zoom; - $("motif_refus").value=data.motif_refus; - - const modal = new bootstrap.Modal($("modalDetailReservation")); - bootstrap.Modal.getOrCreateInstance($("modalReservationAttente")).hide(); - modal.show(); -}) \ No newline at end of file diff --git a/gestion_salle/templates/gestion_salle/index.html b/gestion_salle/templates/gestion_salle/index.html deleted file mode 100644 index b0fa88e..0000000 --- a/gestion_salle/templates/gestion_salle/index.html +++ /dev/null @@ -1,59 +0,0 @@ -{% extends "BASE.html" %} -{% load static %} -{% block 'titre_page' %} Gestion des projets {% endblock %} -{% block 'css' %} - - -{% endblock %} -{% block 'contenu' %} - {% if messages %} - {% for message in messages %} - - {% endfor %} - {% endif %} -
-
-

Reservation de salle

-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
-
-{% endblock %} -{% block 'modal' %} - {% include 'gestion_salle/parts/modalCreationReservation.html' %} - {% include 'gestion_salle/parts/ModaleAjoutLienZoom.html' %} - {% include 'gestion_salle/parts/ModalRefusReservation.html' %} - {% include 'gestion_salle/parts/modalDetailResevation.html' %} - {% include 'gestion_salle/parts/modalListeValidation.html' %} -{% endblock %} -{% block 'js' %} - - - -{% endblock %} \ No newline at end of file diff --git a/gestion_salle/templates/gestion_salle/parts/ModalRefusReservation.html b/gestion_salle/templates/gestion_salle/parts/ModalRefusReservation.html deleted file mode 100644 index 96d358d..0000000 --- a/gestion_salle/templates/gestion_salle/parts/ModalRefusReservation.html +++ /dev/null @@ -1,22 +0,0 @@ - \ No newline at end of file diff --git a/gestion_salle/templates/gestion_salle/parts/ModaleAjoutLienZoom.html b/gestion_salle/templates/gestion_salle/parts/ModaleAjoutLienZoom.html deleted file mode 100644 index 0c7c534..0000000 --- a/gestion_salle/templates/gestion_salle/parts/ModaleAjoutLienZoom.html +++ /dev/null @@ -1,26 +0,0 @@ - - \ No newline at end of file diff --git a/gestion_salle/templates/gestion_salle/parts/modalCreationReservation.html b/gestion_salle/templates/gestion_salle/parts/modalCreationReservation.html deleted file mode 100644 index 0db15f8..0000000 --- a/gestion_salle/templates/gestion_salle/parts/modalCreationReservation.html +++ /dev/null @@ -1,23 +0,0 @@ - - \ No newline at end of file diff --git a/gestion_salle/templates/gestion_salle/parts/modalDetailResevation.html b/gestion_salle/templates/gestion_salle/parts/modalDetailResevation.html deleted file mode 100644 index fb84ee8..0000000 --- a/gestion_salle/templates/gestion_salle/parts/modalDetailResevation.html +++ /dev/null @@ -1,71 +0,0 @@ - - \ No newline at end of file diff --git a/gestion_salle/templates/gestion_salle/parts/modalListeValidation.html b/gestion_salle/templates/gestion_salle/parts/modalListeValidation.html deleted file mode 100644 index 0f50e01..0000000 --- a/gestion_salle/templates/gestion_salle/parts/modalListeValidation.html +++ /dev/null @@ -1,16 +0,0 @@ - - \ No newline at end of file diff --git a/gestion_salle/tests.py b/gestion_salle/tests.py deleted file mode 100644 index de8bdc0..0000000 --- a/gestion_salle/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/gestion_salle/urls.py b/gestion_salle/urls.py deleted file mode 100644 index d13ee3e..0000000 --- a/gestion_salle/urls.py +++ /dev/null @@ -1,48 +0,0 @@ -from django.urls import path -from . import views - -app_name = "gestion_salle" - -urlpatterns = [ - path( - 'revervation/', - views.index, - name='reservation-salle' - ), - path( - 'revervation/details/', - views.detail_reservation, - name='detail-reservation' - ), - - path( - 'reservation/annuler', - views.annuler_reservation, - name='annuler-reservation' - ), - path( - 'reservation/valider', - views.valider_reservation, - name='valider-reservation' - ), - path( - 'reservation/refuser', - views.refuser_reservation, - name='refuser-reservation' - ), - path( - 'reservation/ajout-de-lien-zoom', - views.ajouter_lien_zoom, - name='ajouter-lien_zoom' - ), - path( - 'liste-reservation', - views.liste_reservation, - name='liste-reservation' - ), - path( - 'liste-reservation-attente', - views.liste_reservation_attente, - name="liste-reservation-attente" - ) -] \ No newline at end of file diff --git a/gestion_salle/views.py b/gestion_salle/views.py deleted file mode 100644 index de589cf..0000000 --- a/gestion_salle/views.py +++ /dev/null @@ -1,195 +0,0 @@ -import json -from datetime import timedelta -from django.contrib import messages -from django.contrib.auth.decorators import login_required -from django.shortcuts import redirect, render -from django.http import JsonResponse, HttpRequest -from django.forms import model_to_dict -from gestion_employe.models import Employe -from gestion_salle.forms import ReservationForm -from .models import Reservation - -@login_required -def index(request:HttpRequest): - """Vue de gestion de la reservation de la salle""" - try: - employe = Employe.objects.get(user=request.user) - except Employe.DoesNotExist: - messages.error(request, "Impossible d'accéder au menu 'Reservation de salle' car votre profil Utilisateur n'est lié à aucun profil Employe. Veuillez contacter l'administrateur.") - return redirect('gestion_conges:conge') - - if request.method == "POST": - form = ReservationForm(request.POST) - if form.is_valid(): - date_debut = form.cleaned_data.get('date_debut') - date_fin = form.cleaned_data.get('date_fin') - salle = form.cleaned_data.get('salle') - heure_debut = form.cleaned_data.get('heure_debut') - heure_fin = form.cleaned_data.get('heure_fin') - motif_reservation = form.cleaned_data.get('motif_reservation') - besoin_zoom = form.cleaned_data.get('besoin_zoom') - besoin_ordi = form.cleaned_data.get('besoin_ordi') - - while date_debut <= date_fin : - reservation = Reservation( - employe = employe, - date_debut = date_debut, - date_fin = date_debut, - salle = salle, - heure_debut = heure_debut, - heure_fin = heure_fin, - besoin_zoom = besoin_zoom, - besoin_ordi = besoin_ordi, - motif_reservation=motif_reservation, - ) - reservation.save() - date_debut = date_debut + timedelta(days=1) - - messages.success(request, "Réservation(s) créées avec succès.") - return redirect('gestion_salle:reservation-salle') - - formulaire_reservation = ReservationForm() - departement = Employe.objects.get(user__username=request.user).departement - appartient_direction = 'direction' in request.user.groups.values_list('name', flat=True) - liste_demande_reservation = [ - reservation.id for reservation in - Reservation.objects.filter(employe=employe, statut='en_attente') - ] - - context = { - 'formulaire_reservation': formulaire_reservation, - 'nb_reservation_attente': Reservation.objects.filter(statut='en_attente').count(), - 'appartient_au_departement_informatique': 'Informatique' == departement.nom if departement else False, - 'appartient_direction': appartient_direction, - 'liste_demande_reservation': liste_demande_reservation - } - return render(request, "gestion_salle/index.html", context) - -def liste_reservation(request:HttpRequest): - """Vue d'affichage des creneaux disponibles""" - reservations = Reservation.objects.filter(statut = "validee") - liste_reservation = [] - for reservation in reservations: - color = None - if reservation.statut == "en_attente": - color = "#ffc107" - elif reservation.statut == "validee": - color = "#198754" - else: - color = "#dc3545" - - liste_reservation.append({ - "guid": reservation.pk, - "title": dict(Reservation.TYPE_CHOICES).get(reservation.salle), - "date": reservation.date_debut, - "start": reservation.heure_debut, - "end": reservation.heure_fin, - "color": color, - }) - - return JsonResponse(liste_reservation, safe=False) - -@login_required -def liste_reservation_attente(request): - reservations = Reservation.objects.filter(statut="en_attente") - liste_reservation = [ - { - **model_to_dict(reservation), - "employe": f"{reservation.employe.user.first_name} {reservation.employe.user.last_name}", - "salle": dict(Reservation.TYPE_CHOICES).get(reservation.salle) - } for reservation in reservations - ] - - return JsonResponse(liste_reservation, safe=False) - -def detail_reservation(request:HttpRequest, reservation_id:int): - reservation = Reservation.objects.get(id=reservation_id) - employe = reservation.employe.user - reservation_json = { - 'id_reservation': reservation_id, - 'employe': f"{employe.first_name} {employe.last_name}", - 'salle': reservation.salle, - 'statut': reservation.statut, - 'date_evenement': reservation.date_debut.strftime('%Y-%m-%d'), - 'heure_debut': reservation.heure_debut.strftime('%H:%M'), - 'heure_fin': reservation.heure_fin.strftime('%H:%M'), - 'motif_reservation': reservation.motif_reservation, - 'besoin_zoom': reservation.besoin_zoom, - 'besoin_ordinateur': reservation.besoin_ordi, - 'lien_zoom': reservation.lien_zoom or '', - 'motif_refus': reservation.motif_refus or '', - } - - return JsonResponse(reservation_json, safe=True) - -@login_required -def ajouter_lien_zoom(request:HttpRequest): - """Vue de gestion de l'ajout du lien zoom""" - if request.method == 'POST': - reservation_id= request.POST['id_reservation'] - try: - reservation = Reservation.objects.get(id=reservation_id) - except reservation.DoesNotExist: - messages.error(request, "La resevertion selectionné n'existe pas.") - return redirect("salle") - - if not (reservation.besoin_zoom or reservation.salle == "lien_zoom"): - messages.error(request, "Cette réservation ne nécessite pas de lien Zoom.") - return redirect('gestion_salle:reservation-salle') - elif reservation.statut in ["annulee", "refusee"]: - messages.error(request, "Le lien Zoom ne peut être ajouté pour les réservations annulée ou refusée.") - return redirect('gestion_salle:reservation-salle') - - if request.method == "POST": - lien = request.POST.get("lien_zoom") - reservation.lien_zoom = lien - reservation.statut = "validee" - reservation.save() - messages.success(request, "Le lien Zoom a été ajouté et la réservation a été validée. ") - return redirect('gestion_salle:reservation-salle') - -@login_required -def annuler_reservation(request:HttpRequest): - """Vue de gestion de l'annulation de la reservation""" - if request.method == 'POST': - reservation_id= request.POST['id_reservation'] - try: - reservation = Reservation.objects.get(id=reservation_id) - except Reservation.DoesNotExist: - messages.error(request, "La resevertion selectionné n'existe pas.") - return redirect("salle") - - reservation.statut = 'annulee' - reservation.save() - messages.success(request, "Votre réservation a été annulée.") - return redirect('gestion_salle:reservation-salle') - -@login_required -def valider_reservation(request:HttpRequest): - """Vue de gestion de l'annulation de la reservation""" - if request.method == 'POST': - reservation_id= request.POST['id_reservation'] - try: - reservation = Reservation.objects.get(id=reservation_id) - except reservation.DoesNotExist: - messages.error(request, "La resevertion selectionné n'existe pas.") - return redirect("salle") - - reservation.statut = 'validee' - reservation.save() - messages.success(request, f"Réservation de {reservation.employe.get_full_name()} validée avec succès.") - return redirect('gestion_salle:reservation-salle') - -@login_required -def refuser_reservation(request:HttpRequest): - """Vue de gestion de refus de la reservation""" - data = json.loads(request.body) - reservation_id = data.get("id_reservation") - try: - reservation = Reservation.objects.get(id=reservation_id) - except Reservation.DoesNotExist and ValueError: - return JsonResponse({"message": "La resevertion selectionné n'existe pas."}) - else: - reservation.statut = "refusee" - reservation.save() - return JsonResponse({"message": "Réservation refusée avec succès."}) \ No newline at end of file diff --git a/manage.py b/manage.py deleted file mode 100644 index 98b1355..0000000 --- a/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -def main(): - """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SIRH.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() diff --git a/static/css/bootstrap.min.css b/static/css/bootstrap.min.css deleted file mode 100644 index 955575a..0000000 --- a/static/css/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -@charset "UTF-8";/*! - * Bootstrap v5.3.7 (https://getbootstrap.com/) - * Copyright 2011-2025 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;line-height:inherit;font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-weight:300;line-height:1.2;font-size:calc(1.625rem + 4.5vw)}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-weight:300;line-height:1.2;font-size:calc(1.575rem + 3.9vw)}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-weight:300;line-height:1.2;font-size:calc(1.525rem + 3.3vw)}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-weight:300;line-height:1.2;font-size:calc(1.475rem + 2.7vw)}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-weight:300;line-height:1.2;font-size:calc(1.425rem + 2.1vw)}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-weight:300;line-height:1.2;font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;max-width:100%;height:100%;padding:1rem .75rem;overflow:hidden;color:rgba(var(--bs-body-color-rgb),.65);text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem;padding-left:.75rem}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>textarea:focus~label::after,.form-floating>textarea:not(:placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>textarea:disabled~label::after{background-color:var(--bs-secondary-bg)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(-1 * var(--bs-border-width));border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(-1 * var(--bs-border-width))}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(-1 * var(--bs-border-width))}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:nth-child(n+3),.btn-group-vertical>:not(.btn-check)+.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-grow:1;flex-basis:0;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child)>.card-header,.card-group>.card:not(:last-child)>.card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child)>.card-footer,.card-group>.card:not(:last-child)>.card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child)>.card-header,.card-group>.card:not(:first-child)>.card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child)>.card-footer,.card-group>.card:not(:first-child)>.card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-collapse,.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(-1 * var(--bs-border-width))}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:var(--bs-progress-height)}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:not(.active):focus,.list-group-item-action:not(.active):hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:not(.active):active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;filter:var(--bs-btn-close-filter);border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{--bs-btn-close-filter:invert(1) grayscale(100%) brightness(200%)}:root,[data-bs-theme=light]{--bs-btn-close-filter: }[data-bs-theme=dark]{--bs-btn-close-filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color:var(--bs-body-color);--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transform:translate(0,-50px);transition:transform .3s ease-out}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin-top:calc(-.5 * var(--bs-modal-header-padding-y));margin-right:calc(-.5 * var(--bs-modal-header-padding-x));margin-bottom:calc(-.5 * var(--bs-modal-header-padding-y));margin-left:auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;filter:var(--bs-carousel-control-icon-filter);border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:var(--bs-carousel-indicator-active-bg);background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:var(--bs-carousel-caption-color);text-align:center}.carousel-dark{--bs-carousel-indicator-active-bg:#000;--bs-carousel-caption-color:#000;--bs-carousel-control-icon-filter:invert(1) grayscale(100)}:root,[data-bs-theme=light]{--bs-carousel-indicator-active-bg:#fff;--bs-carousel-caption-color:#fff;--bs-carousel-control-icon-filter: }[data-bs-theme=dark]{--bs-carousel-indicator-active-bg:#000;--bs-carousel-caption-color:#000;--bs-carousel-control-icon-filter:invert(1) grayscale(100)}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y));margin-left:auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/static/css/styles.css b/static/css/styles.css deleted file mode 100644 index 3b4d9ff..0000000 --- a/static/css/styles.css +++ /dev/null @@ -1,278 +0,0 @@ -/* === Print === */ -@media print { - nav, .btn, .sidebar, .form-select, .form-control { - display: none !important; - } - body { - font-size: 12pt; - color: black; - } - table { - border-collapse: collapse; - } -} - - -@media (max-width: 768px) { - main { - margin-left: 0; - } -} - -/* === Body & Container === */ -body { - background-color: #e4dccc; - background-attachment: fixed; -} - -.dashboard-container { - background-color: #ffffff; - box-shadow: 0 0 10px rgba(0,0,0,0.05); - border-radius: 8px; - padding: 20px; - margin: 30px auto; - max-width: 1200px; -} - - - - -.sidebar { - position: fixed; - width: 220px; -} -main { - margin-left: 220px; -} - - - - - -/* === Sidebar === */ -.sidebar { - background: linear-gradient(180deg, #b35400, #993d00); /* dégradé orange foncé */ - color: white; - min-height: 100vh; /* prend toute la hauteur */ - top: 0; - z-index: 1000; - overflow-y: auto; - padding: 1rem; -} - -.sidebar .nav-link { - color: white; - font-weight: 700; -} - -.sidebar .nav-link:hover { - background-color: rgba(255, 255, 255, 0.1); - border-radius: 5px; - color: white; -} - -.sidebar .dropdown-menu { - display: none; - position: relative; - left: 10px; - top: -5px; - border: none; - padding-left: 1rem; - box-shadow: none; -} - -.sidebar .dropdown:hover .dropdown-menu { - display: block; -} - -.sidebar a { - color: white; -} - -.sidebar a:hover { - color: white; -} - -/* === Navbar / Logo / Profil === */ -.logo { - max-width: 80px; -} - -.img-profil { - width: 80px !important; - height: 80px !important; - object-fit: cover; - border-radius: 50%; -} - -/* === Cards === */ -.card { - border: 1px solid #dee2e6; - box-shadow: 0 2px 4px rgba(0,0,0,0.05); - border-radius: 8px; - transition: transform 0.3s ease; -} - -.card:hover { - transform: scale(1.02); -} - -.card-header { - background-color: #f8f9fa; - font-weight: bold !important; - color: black !important; - font-size: 1rem; - border-bottom: none; -} - -.card-body h5 { - color: black !important; - font-weight: bold; - font-size: 2.2rem; -} - -/* === Stat cards === */ -.stat-card { - background: #fff; - padding: 20px; - border-radius: 8px; - box-shadow: 0 2px 5px rgba(113, 11, 11, 0.1); -} - -/* === Employé / Projet details === */ -.employe-detail { - background-color: #f9f9f9; - border-radius: 8px; - box-shadow: 0 2px 6px rgba(0,0,0,0.1); -} - -.employe-detail .card-title { - font-size: 1.8rem; - margin-bottom: 0.5rem; -} - -.employe-detail p { - margin-bottom: 0.4rem; - font-size: 1rem; -} - -.employe-detail a.btn { - font-weight: 500; -} - -.employe-card, .projet-card { - background-color: #fff; - border-radius: 10px; - box-shadow: 0 4px 12px rgba(0,0,0,0.1); - padding: 2.5rem; - max-width: 1400px; - margin: 0 auto; - font-size: 1.1rem; -} - -/* === Forms === */ -.form-wrapper { - max-width: 1000px; - margin: auto; - background-color: rgba(255, 255, 255, 0.95); -} - -form label { - font-weight: 600; - margin-top: 1rem; - display: block; -} - -form input, form select, form textarea { - width: 100%; - padding: 0.5rem; - margin-top: 0.3rem; - border-radius: 5px; - border: 1px solid #ccc; -} - -/* === Formation badges === */ -.formation-badge { - position: relative; - display: inline-block; -} - -.formation-actions { - position: absolute; - top: -5px; - right: -5px; - display: none; -} - -.formation-badge:hover .formation-actions { - display: inline-block; -} - -.formation-actions button { - background: none; - border: none; - color: #fff; - margin-left: 5px; - font-size: 0.9rem; -} - -/* === Context menu === */ -#contextMenu { - width: 150px; -} - -/* === Transitions / Animations === */ -.fade-out { - opacity: 0; - transition: opacity 0.5s ease; -} - -#main-content { - transition: opacity 0.3s ease; -} - - -.login-box { - background: linear-gradient(to right, #f5f7fa, #c3cfe2); - border-radius: 10px; - box-shadow: 0 0 10px rgba(0,0,0,0.3); - width: 100%; - max-width: 400px; -} - -/* === Responsive === */ -@media (max-width: 576px) { - .modal-dialog { - max-width: 100%; - margin: 0; - height: 100%; - } - - .modal-content { - height: 100%; - border-radius: 0; - } - - .modal-body { - overflow-y: auto; - } - - .modal-footer button { - width: 100%; - } - - .img-profil { - width: 50px; - height: 50px; - } - - .sidebar { - width: 100%; - padding: 0.5rem 1rem; - } - - .sidebar .nav-link { - font-size: 0.9rem; - padding: 0.5rem 1rem; - } -} diff --git a/static/css/tabulator_bootstrap5.min.css b/static/css/tabulator_bootstrap5.min.css deleted file mode 100644 index c5cdfdb..0000000 --- a/static/css/tabulator_bootstrap5.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{border:1px solid #dee2e6;font-size:16px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#fff;border-bottom:1px solid #dee2e6;box-sizing:border-box;color:#555;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#fff;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#e6e6e6;border:1px solid #dee2e6;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#e6e6e6;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #aaa;border-top:1px solid #dee2e6;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block;padding-top:1em}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#dadfe4!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#e6e6e6;border-top:1px solid #dee2e6;color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs{margin-top:-5px;overflow-x:auto}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab{border:1px solid #dee2e6;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:none;display:inline-block;font-size:.9em;padding:5px}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab:hover{cursor:pointer;opacity:.7}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab.tabulator-spreadsheet-tab-active{background:#fff}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f3f3f3!important;border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #dee2e6;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #dee2e6;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-col-resize-guide{background-color:#999;height:100%;margin-left:-.5px;opacity:.5;position:absolute;top:0;width:4px}.tabulator .tabulator-row-resize-guide{background-color:#999;height:4px;left:0;margin-top:-.5px;opacity:.5;position:absolute;width:100%}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:24px;position:relative}.tabulator-row.tabulator-row-even{background-color:#e9ecef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#ced4da;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #dee2e6;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-row-header{border-bottom:1px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #dee2e6;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-toggle{background:#dcdcdc;border:1px solid #ccc;box-sizing:border-box;display:flex;flex-direction:row}.tabulator-toggle.tabulator-toggle-on{background:#1c6cc2}.tabulator-toggle .tabulator-toggle-switch{background:#fff;border:1px solid #ccc;box-sizing:border-box}.tabulator-popup-container{-webkit-overflow-scrolling:touch;border:1px solid #dee2e6;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:16px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#e9ecef;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#dee2e6;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #dee2e6}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:16px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #dee2e6;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;left:-3px;position:absolute;right:auto;width:6px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #dee2e6;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #dee2e6;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #dee2e6;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{background-color:#fff;border:none}.tabulator .tabulator-header{border-bottom:2px solid #dee2e6;border-top:1px solid #dee2e6;color:inherit}.tabulator .tabulator-header .tabulator-col{background-color:#fff;border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:12px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #dee2e6}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{background-clip:padding-box;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;color:#495057;font-size:1rem;line-height:1.5;padding:.375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus{background-color:#fff;border:1px solid #1d68cd;color:#495057;outline:0}.tabulator .tabulator-header .tabulator-calcs-holder{border-bottom:1px solid #dee2e6;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer,.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab{background-color:#fff;font-weight:400}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab.tabulator-spreadsheet-tab-active{background-color:#0d6efd;color:#fff}.tabulator .tabulator-footer .tabulator-paginator{color:inherit}.tabulator .tabulator-footer .tabulator-pages{margin:0}.tabulator .tabulator-footer .tabulator-page{margin:5px 0 0;padding:8px 12px}.tabulator .tabulator-footer .tabulator-page[data-page=first]{border-bottom-left-radius:4px;border-top-left-radius:4px}.tabulator .tabulator-footer .tabulator-page[data-page=last]{border:1px solid #dee2e6;border-bottom-right-radius:4px;border-top-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{background-color:#0d6efd;border-color:#0d6efd;color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{background:#fff;border-color:#dee2e6;color:#6c757d}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{background:#e9ecef;border-color:#dee2e6;color:#0a58ca}}.tabulator.table{background-color:#fff}.tabulator.table:not(.thead-light) .tabulator-header,.tabulator.table:not(.thead-light) .tabulator-header .tabulator-col{background-color:#fff;border-color:#dee2e6;color:#212529}.tabulator.table .tabulator-tableholder{color:#212529}.tabulator.table .tabulator-row{background-color:#fff;border-color:#dee2e6;color:#212529}@media (hover:hover) and (pointer:fine){.tabulator.table .tabulator-row:hover{background-color:#dee2e6}.tabulator.table .tabulator-row:hover .tabulator-cell{background-color:#ced4da}}.tabulator.table .tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator.table .tabulator-footer{border-color:#dee2e6!important}.tabulator.table .tabulator-footer .tabulator-calcs-holder{background:#fff!important;border-color:#dee2e6!important}.tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row{background-color:#fff!important;border-color:#dee2e6!important;color:#212529!important}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even{background-color:#e9ecef}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover{background-color:#ced4da;cursor:pointer}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator.table-striped.table .tabulator-row:nth-child(2n) .tabulator-cell{background-color:transparent}.tabulator.table-bordered{border:1px solid #dee2e6}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dee2e6}.tabulator.table-borderless .tabulator-header,.tabulator.table-borderless .tabulator-row{border:none}.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content{padding:5px!important}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row{min-height:26px}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px!important}.tabulator.table-sm .tabulator-row{padding-bottom:0;padding-top:0}.tabulator.table-sm .tabulator-col-resize-handle{padding:0}.tabulator.thead-dark .tabulator-header,.tabulator.thead-dark .tabulator-header .tabulator-col{background-color:#212529;border-color:#4d5154;color:#fff}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even,html:not([data-bs-theme=dark]) .tabulator.table-striped .tabulator-row.tabulator-row-even{background-color:#e9ecef}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected,html:not([data-bs-theme=dark]) .tabulator.table-striped .tabulator-row.tabulator-row-even.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover,html:not([data-bs-theme=dark]) .tabulator.table-striped .tabulator-row.tabulator-row-even.tabulator-selectable:hover{background-color:#ced4da;cursor:pointer}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover,html:not([data-bs-theme=dark]) .tabulator.table-striped .tabulator-row.tabulator-row-even.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator.table-striped.table-dark .tabulator-row:nth-child(2n),html[data-bs-theme=dark] .tabulator.table-striped .tabulator-row:nth-child(2n){background-color:#2c3034!important}.tabulator.table-striped.table-dark .tabulator-row:nth-child(2n) .tabulator-cell,html[data-bs-theme=dark] .tabulator.table-striped .tabulator-row:nth-child(2n) .tabulator-cell{background-color:inherit}.tabulator.table-dark,html[data-bs-theme=dark] .tabulator{background-color:#212529}.tabulator.table-dark:not(.thead-light) .tabulator-header,.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col,html[data-bs-theme=dark] .tabulator:not(.thead-light) .tabulator-header,html[data-bs-theme=dark] .tabulator:not(.thead-light) .tabulator-header .tabulator-col{background-color:#212529;border-color:#4d5154;color:#fff}.tabulator.table-dark .tabulator-tableholder,html[data-bs-theme=dark] .tabulator .tabulator-tableholder{color:#fff}.tabulator.table-dark .tabulator-cell,.tabulator.table-dark .tabulator-row,html[data-bs-theme=dark] .tabulator .tabulator-cell,html[data-bs-theme=dark] .tabulator .tabulator-row{background-color:#212529;border-color:#4d5154;color:#fff}@media (hover:hover) and (pointer:fine){.tabulator.table-dark .tabulator-row:hover,html[data-bs-theme=dark] .tabulator .tabulator-row:hover{background-color:#4d5154}.tabulator.table-dark .tabulator-row:hover .tabulator-cell,html[data-bs-theme=dark] .tabulator .tabulator-row:hover .tabulator-cell{background-color:#323539}}.tabulator.table-dark .tabulator-row.tabulator-selected,html[data-bs-theme=dark] .tabulator .tabulator-row.tabulator-selected{background-color:#373b3e}.tabulator.table-dark .tabulator-footer,html[data-bs-theme=dark] .tabulator .tabulator-footer{border-color:#4d5154!important;color:#212529!important}.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder,html[data-bs-theme=dark] .tabulator .tabulator-footer .tabulator-calcs-holder{background:#212529!important;border-color:#4d5154!important}.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row,html[data-bs-theme=dark] .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background-color:#212529!important;border-color:#4d5154!important;color:#fff!important}.tabulator.table-dark input,html[data-bs-theme=dark] .tabulator input{background-color:#6c757d!important;color:#fff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active{background:#6c757d!important}.tabulator-row{border-bottom:1px solid #dee2e6;min-height:40px}.tabulator-row .tabulator-cell{border-right:none;padding:12px}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-row-header{background:#fff;border-bottom:none;border-right:1px solid #dee2e6}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:initial;text-align:initial}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{color:inherit}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-popup-container{background:#fff}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{color:#fff}} -/*# sourceMappingURL=tabulator_bootstrap5.min.css.map */ \ No newline at end of file diff --git a/static/css/tabulator_bootstrap5.min.css:Zone.Identifier b/static/css/tabulator_bootstrap5.min.css:Zone.Identifier deleted file mode 100644 index d6c1ec682968c796b9f5e9e080cc6f674b57c766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25 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≦jiZgHHd0;wqxyimP?PQ#>eV?;)nk$W2jY31K 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 diff --git a/static/js/monprofil.js b/static/js/monprofil.js deleted file mode 100644 index dc53e6c..0000000 --- a/static/js/monprofil.js +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/static/js/rapport.js b/static/js/rapport.js deleted file mode 100644 index b0f0e6d..0000000 --- a/static/js/rapport.js +++ /dev/null @@ -1,102 +0,0 @@ -if ('serviceWorker' in navigator) { - window.addEventListener('load', function() { - navigator.serviceWorker.register('{% static "sw.js" %}').then(function(reg) { - console.log('Service worker registered.', reg); - }).catch(function(err) { - console.warn('Service worker registration failed:', err); - }); - }); -} - -const couleursOrange = ['#b35400', '#ff9f1c', '#ffc107', '#ffb84d', '#ffcc80']; -const departementLabels = {{ departement_labels|safe }}; -const departementCounts = {{ departement_counts|safe }}; -const sexeLabels = {{ sexe_labels|safe }}; -const sexeCounts = {{ sexe_counts|safe }}; -const projetLabels = {{ projet_labels|safe }}; -const projetCounts = {{ projet_counts|safe }}; -const ticketsLabels = ["Traités", "Non traités"]; -const ticketsCounts = [{{ tickets_traite }}, {{ tickets_non_traite }}]; -const domaineLabels = {{ domaine_labels|safe }}; -const domaineCounts = {{ domaine_counts|safe }}; - -new Chart(document.getElementById("chartDepartement"), { - type: 'pie', - plugins: [ChartDataLabels], - data: { - labels: departementLabels, - datasets: [{ data: departementCounts, backgroundColor: couleursOrange }] - }, - options: { - plugins: { - legend: { position: 'bottom' }, - datalabels: { color: '#fff', font: { weight: 'bold', size: 14 }, formatter: v => v } - } - } -}); - -new Chart(document.getElementById("chartSexe"), { - type: 'doughnut', - plugins: [ChartDataLabels], - data: { - labels: sexeLabels, - datasets: [{ data: sexeCounts, backgroundColor: couleursOrange }] - }, - options: { - plugins: { - legend: { position: 'bottom' }, - datalabels: { color: '#fff', font: { weight: 'bold', size: 14 }, formatter: v => v } - } - } -}); - -new Chart(document.getElementById("chartProjets"), { - type: 'bar', - plugins: [ChartDataLabels], - data: { - labels: projetLabels, - datasets: [{ label:'Nombre de projets', data: projetCounts, backgroundColor: couleursOrange }] - }, - options: { - responsive: true, - plugins: { - legend: { display: false }, - datalabels: { anchor:'end', align:'top', color:'#000', font:{ weight:'bold', size:16 }, formatter:v => v } - }, - scales: { - y: { beginAtZero:true, ticks:{ stepSize:1, precision:0 }, title:{ display:true, text:'Nombre de projets' } }, - x: { title:{ display:true, text:'' } } - } - } -}); - -new Chart(document.getElementById("chartDomaine"), { - type: 'bar', - plugins: [ChartDataLabels], - data: { - labels: domaineLabels, - datasets: [{ label:'Nombre de projets', data: domaineCounts, backgroundColor: couleursOrange }] - }, - options: { - responsive: true, - plugins: { - legend: { display: false }, - datalabels: { anchor:'end', align:'top', color:'#000', font:{ weight:'bold', size:14 }, formatter:v => v } - }, - scales: { - y: { beginAtZero:true, title:{ display:true, text:'Nombre de projets' }, ticks:{ precision:0, stepSize:1 } }, - x: { - ticks:{ autoSkip:false, maxRotation:100, minRotation:30, callback: function(value){ return this.getLabelForValue(value); } } - } - } - } -}); - -document.getElementById('btnVoirRapport').addEventListener('click', function() { - const projetId = document.getElementById('projetId').value; - if(!projetId) return alert("Veuillez sélectionner un projet."); - fetch(`/rapports/projet/${projetId}/`) - .then(resp => { if(!resp.ok) throw new Error("Projet non trouvé"); return resp.text(); }) - .then(html => { document.getElementById('contenuRapportProjet').innerHTML = html; }) - .catch(err => { document.getElementById('contenuRapportProjet').innerHTML = "

    Erreur lors du chargement.

    "; console.error(err); }); -}); \ No newline at end of file diff --git a/static/js/sirh-index.js b/static/js/sirh-index.js deleted file mode 100644 index 242fed3..0000000 --- a/static/js/sirh-index.js +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - -> - - -{% endif %} - - - - - - \ No newline at end of file diff --git a/staticfiles/admin/css/autocomplete.css b/staticfiles/admin/css/autocomplete.css deleted file mode 100644 index 7478c2c..0000000 --- a/staticfiles/admin/css/autocomplete.css +++ /dev/null @@ -1,279 +0,0 @@ -select.admin-autocomplete { - width: 20em; -} - -.select2-container--admin-autocomplete.select2-container { - min-height: 30px; -} - -.select2-container--admin-autocomplete .select2-selection--single, -.select2-container--admin-autocomplete .select2-selection--multiple { - min-height: 30px; - padding: 0; -} - -.select2-container--admin-autocomplete.select2-container--focus .select2-selection, -.select2-container--admin-autocomplete.select2-container--open .select2-selection { - border-color: var(--body-quiet-color); - min-height: 30px; -} - -.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, -.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { - padding: 0; -} - -.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, -.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { - padding: 0; -} - -.select2-container--admin-autocomplete .select2-selection--single { - background-color: var(--body-bg); - border: 1px solid var(--border-color); - border-radius: 4px; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { - color: var(--body-fg); - line-height: 30px; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { - color: var(--body-quiet-color); -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { - left: 1px; - right: auto; -} - -.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { - background-color: var(--darkened-bg); - cursor: default; -} - -.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { - display: none; -} - -.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; -} - -.select2-container--admin-autocomplete .select2-selection--multiple { - background-color: var(--body-bg); - border: 1px solid var(--border-color); - border-radius: 4px; - cursor: text; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { - box-sizing: border-box; - list-style: none; - margin: 0; - padding: 0 10px 5px 5px; - width: 100%; - display: flex; - flex-wrap: wrap; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { - list-style: none; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { - color: var(--body-quiet-color); - margin-top: 5px; - float: left; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - margin: 5px; - position: absolute; - right: 0; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { - background-color: var(--darkened-bg); - border: 1px solid var(--border-color); - border-radius: 4px; - cursor: default; - float: left; - margin-right: 5px; - margin-top: 5px; - padding: 0 5px; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { - color: var(--body-quiet-color); - cursor: pointer; - display: inline-block; - font-weight: bold; - margin-right: 2px; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { - color: var(--body-fg); -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { - float: right; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - margin-left: 5px; - margin-right: auto; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - margin-left: 2px; - margin-right: auto; -} - -.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { - border: solid var(--body-quiet-color) 1px; - outline: 0; -} - -.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { - background-color: var(--darkened-bg); - cursor: default; -} - -.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { - display: none; -} - -.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -.select2-container--admin-autocomplete .select2-search--dropdown { - background: var(--darkened-bg); -} - -.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { - background: var(--body-bg); - color: var(--body-fg); - border: 1px solid var(--border-color); - border-radius: 4px; -} - -.select2-container--admin-autocomplete .select2-search--inline .select2-search__field { - background: transparent; - color: var(--body-fg); - border: none; - outline: 0; - box-shadow: none; - -webkit-appearance: textfield; -} - -.select2-container--admin-autocomplete .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; - color: var(--body-fg); - background: var(--body-bg); -} - -.select2-container--admin-autocomplete .select2-results__option[role=group] { - padding: 0; -} - -.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { - color: var(--body-quiet-color); -} - -.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { - background-color: var(--selected-bg); - color: var(--body-fg); -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option { - padding-left: 1em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { - padding-left: 0; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { - margin-left: -1em; - padding-left: 2em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -2em; - padding-left: 3em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -3em; - padding-left: 4em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -4em; - padding-left: 5em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -5em; - padding-left: 6em; -} - -.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { - background-color: var(--primary); - color: var(--primary-fg); -} - -.select2-container--admin-autocomplete .select2-results__group { - cursor: default; - display: block; - padding: 6px; -} - -.errors .select2-selection { - border: 1px solid var(--error-fg); -} diff --git a/staticfiles/admin/css/base.css b/staticfiles/admin/css/base.css deleted file mode 100644 index 3791043..0000000 --- a/staticfiles/admin/css/base.css +++ /dev/null @@ -1,1180 +0,0 @@ -/* - DJANGO Admin styles -*/ - -/* VARIABLE DEFINITIONS */ -html[data-theme="light"], -:root { - --primary: #79aec8; - --secondary: #417690; - --accent: #f5dd5d; - --primary-fg: #fff; - - --body-fg: #333; - --body-bg: #fff; - --body-quiet-color: #666; - --body-medium-color: #444; - --body-loud-color: #000; - - --header-color: #ffc; - --header-branding-color: var(--accent); - --header-bg: var(--secondary); - --header-link-color: var(--primary-fg); - - --breadcrumbs-fg: #c4dce8; - --breadcrumbs-link-fg: var(--body-bg); - --breadcrumbs-bg: #264b5d; - - --link-fg: #417893; - --link-hover-color: #036; - --link-selected-fg: var(--secondary); - - --hairline-color: #e8e8e8; - --border-color: #ccc; - - --error-fg: #ba2121; - - --message-success-bg: #dfd; - --message-warning-bg: #ffc; - --message-error-bg: #ffefef; - - --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */ - --selected-bg: #e4e4e4; /* E.g. selected table cells */ - --selected-row: #ffc; - - --button-fg: #fff; - --button-bg: var(--secondary); - --button-hover-bg: #205067; - --default-button-bg: #205067; - --default-button-hover-bg: var(--secondary); - --close-button-bg: #747474; - --close-button-hover-bg: #333; - --delete-button-bg: #ba2121; - --delete-button-hover-bg: #a41515; - - --object-tools-fg: var(--button-fg); - --object-tools-bg: var(--close-button-bg); - --object-tools-hover-bg: var(--close-button-hover-bg); - - --font-family-primary: - "Segoe UI", - system-ui, - Roboto, - "Helvetica Neue", - Arial, - sans-serif, - "Apple Color Emoji", - "Segoe UI Emoji", - "Segoe UI Symbol", - "Noto Color Emoji"; - --font-family-monospace: - ui-monospace, - Menlo, - Monaco, - "Cascadia Mono", - "Segoe UI Mono", - "Roboto Mono", - "Oxygen Mono", - "Ubuntu Monospace", - "Source Code Pro", - "Fira Mono", - "Droid Sans Mono", - "Courier New", - monospace, - "Apple Color Emoji", - "Segoe UI Emoji", - "Segoe UI Symbol", - "Noto Color Emoji"; - - color-scheme: light; -} - -html, body { - height: 100%; -} - -body { - margin: 0; - padding: 0; - font-size: 0.875rem; - font-family: var(--font-family-primary); - color: var(--body-fg); - background: var(--body-bg); -} - -/* LINKS */ - -a:link, a:visited { - color: var(--link-fg); - text-decoration: none; - transition: color 0.15s, background 0.15s; -} - -a:focus, a:hover { - color: var(--link-hover-color); -} - -a:focus { - text-decoration: underline; -} - -a img { - border: none; -} - -a.section:link, a.section:visited { - color: var(--header-link-color); - text-decoration: none; -} - -a.section:focus, a.section:hover { - text-decoration: underline; -} - -/* GLOBAL DEFAULTS */ - -p, ol, ul, dl { - margin: .2em 0 .8em 0; -} - -p { - padding: 0; - line-height: 140%; -} - -h1,h2,h3,h4,h5 { - font-weight: bold; -} - -h1 { - margin: 0 0 20px; - font-weight: 300; - font-size: 1.25rem; -} - -h2 { - font-size: 1rem; - margin: 1em 0 .5em 0; -} - -h2.subhead { - font-weight: normal; - margin-top: 0; -} - -h3 { - font-size: 0.875rem; - margin: .8em 0 .3em 0; - color: var(--body-medium-color); - font-weight: bold; -} - -h4 { - font-size: 0.75rem; - margin: 1em 0 .8em 0; - padding-bottom: 3px; - color: var(--body-medium-color); -} - -h5 { - font-size: 0.625rem; - margin: 1.5em 0 .5em 0; - color: var(--body-quiet-color); - text-transform: uppercase; - letter-spacing: 1px; -} - -ul > li { - list-style-type: square; - padding: 1px 0; -} - -li ul { - margin-bottom: 0; -} - -li, dt, dd { - font-size: 0.8125rem; - line-height: 1.25rem; -} - -dt { - font-weight: bold; - margin-top: 4px; -} - -dd { - margin-left: 0; -} - -form { - margin: 0; - padding: 0; -} - -fieldset { - margin: 0; - min-width: 0; - padding: 0; - border: none; - border-top: 1px solid var(--hairline-color); -} - -details summary { - cursor: pointer; -} - -blockquote { - font-size: 0.6875rem; - color: #777; - margin-left: 2px; - padding-left: 10px; - border-left: 5px solid #ddd; -} - -code, pre { - font-family: var(--font-family-monospace); - color: var(--body-quiet-color); - font-size: 0.75rem; - overflow-x: auto; -} - -pre.literal-block { - margin: 10px; - background: var(--darkened-bg); - padding: 6px 8px; -} - -code strong { - color: #930; -} - -hr { - clear: both; - color: var(--hairline-color); - background-color: var(--hairline-color); - height: 1px; - border: none; - margin: 0; - padding: 0; - line-height: 1px; -} - -/* TEXT STYLES & MODIFIERS */ - -.small { - font-size: 0.6875rem; -} - -.mini { - font-size: 0.625rem; -} - -.help, p.help, form p.help, div.help, form div.help, div.help li { - font-size: 0.6875rem; - color: var(--body-quiet-color); -} - -div.help ul { - margin-bottom: 0; -} - -.help-tooltip { - cursor: help; -} - -p img, h1 img, h2 img, h3 img, h4 img, td img { - vertical-align: middle; -} - -.quiet, a.quiet:link, a.quiet:visited { - color: var(--body-quiet-color); - font-weight: normal; -} - -.clear { - clear: both; -} - -.nowrap { - white-space: nowrap; -} - -.hidden { - display: none !important; -} - -/* TABLES */ - -table { - border-collapse: collapse; - border-color: var(--border-color); -} - -td, th { - font-size: 0.8125rem; - line-height: 1rem; - border-bottom: 1px solid var(--hairline-color); - vertical-align: top; - padding: 8px; -} - -th { - font-weight: 500; - text-align: left; -} - -thead th, -tfoot td { - color: var(--body-quiet-color); - padding: 5px 10px; - font-size: 0.6875rem; - background: var(--body-bg); - border: none; - border-top: 1px solid var(--hairline-color); - border-bottom: 1px solid var(--hairline-color); -} - -tfoot td { - border-bottom: none; - border-top: 1px solid var(--hairline-color); -} - -thead th.required { - font-weight: bold; -} - -tr.alt { - background: var(--darkened-bg); -} - -tr:nth-child(odd), .row-form-errors { - background: var(--body-bg); -} - -tr:nth-child(even), -tr:nth-child(even) .errorlist, -tr:nth-child(odd) + .row-form-errors, -tr:nth-child(odd) + .row-form-errors .errorlist { - background: var(--darkened-bg); -} - -/* SORTABLE TABLES */ - -thead th { - padding: 5px 10px; - line-height: normal; - text-transform: uppercase; - background: var(--darkened-bg); -} - -thead th a:link, thead th a:visited { - color: var(--body-quiet-color); -} - -thead th.sorted { - background: var(--selected-bg); -} - -thead th.sorted .text { - padding-right: 42px; -} - -table thead th .text span { - padding: 8px 10px; - display: block; -} - -table thead th .text a { - display: block; - cursor: pointer; - padding: 8px 10px; -} - -table thead th .text a:focus, table thead th .text a:hover { - background: var(--selected-bg); -} - -thead th.sorted a.sortremove { - visibility: hidden; -} - -table thead th.sorted:hover a.sortremove { - visibility: visible; -} - -table thead th.sorted .sortoptions { - display: block; - padding: 9px 5px 0 5px; - float: right; - text-align: right; -} - -table thead th.sorted .sortpriority { - font-size: .8em; - min-width: 12px; - text-align: center; - vertical-align: 3px; - margin-left: 2px; - margin-right: 2px; -} - -table thead th.sorted .sortoptions a { - position: relative; - width: 14px; - height: 14px; - display: inline-block; - background: url(../img/sorting-icons.svg) 0 0 no-repeat; - background-size: 14px auto; -} - -table thead th.sorted .sortoptions a.sortremove { - background-position: 0 0; -} - -table thead th.sorted .sortoptions a.sortremove:after { - content: '\\'; - position: absolute; - top: -6px; - left: 3px; - font-weight: 200; - font-size: 1.125rem; - color: var(--body-quiet-color); -} - -table thead th.sorted .sortoptions a.sortremove:focus:after, -table thead th.sorted .sortoptions a.sortremove:hover:after { - color: var(--link-fg); -} - -table thead th.sorted .sortoptions a.sortremove:focus, -table thead th.sorted .sortoptions a.sortremove:hover { - background-position: 0 -14px; -} - -table thead th.sorted .sortoptions a.ascending { - background-position: 0 -28px; -} - -table thead th.sorted .sortoptions a.ascending:focus, -table thead th.sorted .sortoptions a.ascending:hover { - background-position: 0 -42px; -} - -table thead th.sorted .sortoptions a.descending { - top: 1px; - background-position: 0 -56px; -} - -table thead th.sorted .sortoptions a.descending:focus, -table thead th.sorted .sortoptions a.descending:hover { - background-position: 0 -70px; -} - -/* FORM DEFAULTS */ - -input, textarea, select, .form-row p, form .button { - margin: 2px 0; - padding: 2px 3px; - vertical-align: middle; - font-family: var(--font-family-primary); - font-weight: normal; - font-size: 0.8125rem; -} -.form-row div.help { - padding: 2px 3px; -} - -textarea { - vertical-align: top; -} - -/* -Minifiers remove the default (text) "type" attribute from "input" HTML tags. -Add input:not([type]) to make the CSS stylesheet work the same. -*/ -input:not([type]), input[type=text], input[type=password], input[type=email], -input[type=url], input[type=number], input[type=tel], textarea, select, -.vTextField { - border: 1px solid var(--border-color); - border-radius: 4px; - padding: 5px 6px; - margin-top: 0; - color: var(--body-fg); - background-color: var(--body-bg); -} - -/* -Minifiers remove the default (text) "type" attribute from "input" HTML tags. -Add input:not([type]) to make the CSS stylesheet work the same. -*/ -input:not([type]):focus, input[type=text]:focus, input[type=password]:focus, -input[type=email]:focus, input[type=url]:focus, input[type=number]:focus, -input[type=tel]:focus, textarea:focus, select:focus, .vTextField:focus { - border-color: var(--body-quiet-color); -} - -select { - height: 1.875rem; -} - -select[multiple] { - /* Allow HTML size attribute to override the height in the rule above. */ - height: auto; - min-height: 150px; -} - -/* FORM BUTTONS */ - -.button, input[type=submit], input[type=button], .submit-row input, a.button { - background: var(--button-bg); - padding: 10px 15px; - border: none; - border-radius: 4px; - color: var(--button-fg); - cursor: pointer; - transition: background 0.15s; -} - -a.button { - padding: 4px 5px; -} - -.button:active, input[type=submit]:active, input[type=button]:active, -.button:focus, input[type=submit]:focus, input[type=button]:focus, -.button:hover, input[type=submit]:hover, input[type=button]:hover { - background: var(--button-hover-bg); -} - -.button[disabled], input[type=submit][disabled], input[type=button][disabled] { - opacity: 0.4; -} - -.button.default, input[type=submit].default, .submit-row input.default { - border: none; - font-weight: 400; - background: var(--default-button-bg); -} - -.button.default:active, input[type=submit].default:active, -.button.default:focus, input[type=submit].default:focus, -.button.default:hover, input[type=submit].default:hover { - background: var(--default-button-hover-bg); -} - -.button[disabled].default, -input[type=submit][disabled].default, -input[type=button][disabled].default { - opacity: 0.4; -} - - -/* MODULES */ - -.module { - border: none; - margin-bottom: 30px; - background: var(--body-bg); -} - -.module p, .module ul, .module h3, .module h4, .module dl, .module pre { - padding-left: 10px; - padding-right: 10px; -} - -.module blockquote { - margin-left: 12px; -} - -.module ul, .module ol { - margin-left: 1.5em; -} - -.module h3 { - margin-top: .6em; -} - -.module h2, .module caption, .inline-group h2 { - margin: 0; - padding: 8px; - font-weight: 400; - font-size: 0.8125rem; - text-align: left; - background: var(--header-bg); - color: var(--header-link-color); -} - -.module caption, -.inline-group h2 { - font-size: 0.75rem; - letter-spacing: 0.5px; - text-transform: uppercase; -} - -.module table { - border-collapse: collapse; -} - -/* MESSAGES & ERRORS */ - -ul.messagelist { - padding: 0; - margin: 0; -} - -ul.messagelist li { - display: block; - font-weight: 400; - font-size: 0.8125rem; - padding: 10px 10px 10px 65px; - margin: 0 0 10px 0; - background: var(--message-success-bg) url(../img/icon-yes.svg) 40px 12px no-repeat; - background-size: 16px auto; - color: var(--body-fg); - word-break: break-word; -} - -ul.messagelist li.warning { - background: var(--message-warning-bg) url(../img/icon-alert.svg) 40px 14px no-repeat; - background-size: 14px auto; -} - -ul.messagelist li.error { - background: var(--message-error-bg) url(../img/icon-no.svg) 40px 12px no-repeat; - background-size: 16px auto; -} - -.errornote { - font-size: 0.875rem; - font-weight: 700; - display: block; - padding: 10px 12px; - margin: 0 0 10px 0; - color: var(--error-fg); - border: 1px solid var(--error-fg); - border-radius: 4px; - background-color: var(--body-bg); - background-position: 5px 12px; - overflow-wrap: break-word; -} - -ul.errorlist { - margin: 0 0 4px; - padding: 0; - color: var(--error-fg); - background: var(--body-bg); -} - -ul.errorlist li { - font-size: 0.8125rem; - display: block; - margin-bottom: 4px; - overflow-wrap: break-word; -} - -ul.errorlist li:first-child { - margin-top: 0; -} - -ul.errorlist li a { - color: inherit; - text-decoration: underline; -} - -td ul.errorlist { - margin: 0; - padding: 0; -} - -td ul.errorlist li { - margin: 0; -} - -.form-row.errors { - margin: 0; - border: none; - border-bottom: 1px solid var(--hairline-color); - background: none; -} - -.form-row.errors ul.errorlist li { - padding-left: 0; -} - -.errors input, .errors select, .errors textarea, -td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea { - border: 1px solid var(--error-fg); -} - -.description { - font-size: 0.75rem; - padding: 5px 0 0 12px; -} - -/* BREADCRUMBS */ - -div.breadcrumbs { - background: var(--breadcrumbs-bg); - padding: 10px 40px; - border: none; - color: var(--breadcrumbs-fg); - text-align: left; -} - -div.breadcrumbs a { - color: var(--breadcrumbs-link-fg); -} - -div.breadcrumbs a:focus, div.breadcrumbs a:hover { - color: var(--breadcrumbs-fg); -} - -/* ACTION ICONS */ - -.viewlink, .inlineviewlink { - padding-left: 16px; - background: url(../img/icon-viewlink.svg) 0 1px no-repeat; -} - -.hidelink { - padding-left: 16px; - background: url(../img/icon-hidelink.svg) 0 1px no-repeat; -} - -.addlink { - padding-left: 16px; - background: url(../img/icon-addlink.svg) 0 1px no-repeat; -} - -.changelink, .inlinechangelink { - padding-left: 16px; - background: url(../img/icon-changelink.svg) 0 1px no-repeat; -} - -.deletelink { - padding-left: 16px; - background: url(../img/icon-deletelink.svg) 0 1px no-repeat; -} - -a.deletelink:link, a.deletelink:visited { - color: #CC3434; /* XXX Probably unused? */ -} - -a.deletelink:focus, a.deletelink:hover { - color: #993333; /* XXX Probably unused? */ - text-decoration: none; -} - -/* OBJECT TOOLS */ - -.object-tools { - font-size: 0.625rem; - font-weight: bold; - padding-left: 0; - float: right; - position: relative; - margin-top: -48px; -} - -.object-tools li { - display: block; - float: left; - margin-left: 5px; - height: 1rem; -} - -.object-tools a { - border-radius: 15px; -} - -.object-tools a:link, .object-tools a:visited { - display: block; - float: left; - padding: 3px 12px; - background: var(--object-tools-bg); - color: var(--object-tools-fg); - font-weight: 400; - font-size: 0.6875rem; - text-transform: uppercase; - letter-spacing: 0.5px; -} - -.object-tools a:focus, .object-tools a:hover { - background-color: var(--object-tools-hover-bg); -} - -.object-tools a:focus{ - text-decoration: none; -} - -.object-tools a.viewsitelink, .object-tools a.addlink { - background-repeat: no-repeat; - background-position: right 7px center; - padding-right: 26px; -} - -.object-tools a.viewsitelink { - background-image: url(../img/tooltag-arrowright.svg); -} - -.object-tools a.addlink { - background-image: url(../img/tooltag-add.svg); -} - -/* OBJECT HISTORY */ - -#change-history table { - width: 100%; -} - -#change-history table tbody th { - width: 16em; -} - -#change-history .paginator { - color: var(--body-quiet-color); - border-bottom: 1px solid var(--hairline-color); - background: var(--body-bg); - overflow: hidden; -} - -/* PAGE STRUCTURE */ - -#container { - position: relative; - width: 100%; - min-width: 980px; - padding: 0; - display: flex; - flex-direction: column; - height: 100%; -} - -#container > .main { - display: flex; - flex: 1 0 auto; -} - -.main > .content { - flex: 1 0; - max-width: 100%; -} - -.skip-to-content-link { - position: absolute; - top: -999px; - margin: 5px; - padding: 5px; - background: var(--body-bg); - z-index: 1; -} - -.skip-to-content-link:focus { - left: 0px; - top: 0px; -} - -#content { - padding: 20px 40px; -} - -.dashboard #content { - width: 600px; -} - -#content-main { - float: left; - width: 100%; -} - -#content-related { - float: right; - width: 260px; - position: relative; - margin-right: -300px; -} - -@media (forced-colors: active) { - #content-related { - border: 1px solid; - } -} - -/* COLUMN TYPES */ - -.colMS { - margin-right: 300px; -} - -.colSM { - margin-left: 300px; -} - -.colSM #content-related { - float: left; - margin-right: 0; - margin-left: -300px; -} - -.colSM #content-main { - float: right; -} - -.popup .colM { - width: auto; -} - -/* HEADER */ - -#header { - width: auto; - height: auto; - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px 40px; - background: var(--header-bg); - color: var(--header-color); -} - -#header a:link, #header a:visited, #logout-form button { - color: var(--header-link-color); -} - -#header a:focus , #header a:hover { - text-decoration: underline; -} - -@media (forced-colors: active) { - #header { - border-bottom: 1px solid; - } -} - -#branding { - display: flex; -} - -#site-name { - padding: 0; - margin: 0; - margin-inline-end: 20px; - font-weight: 300; - font-size: 1.5rem; - color: var(--header-branding-color); -} - -#site-name a:link, #site-name a:visited { - color: var(--accent); -} - -#branding h2 { - padding: 0 10px; - font-size: 0.875rem; - margin: -8px 0 8px 0; - font-weight: normal; - color: var(--header-color); -} - -#branding a:hover { - text-decoration: none; -} - -#logout-form { - display: inline; -} - -#logout-form button { - background: none; - border: 0; - cursor: pointer; - font-family: var(--font-family-primary); -} - -#user-tools { - float: right; - margin: 0 0 0 20px; - text-align: right; -} - -#user-tools, #logout-form button{ - padding: 0; - font-weight: 300; - font-size: 0.6875rem; - letter-spacing: 0.5px; - text-transform: uppercase; -} - -#user-tools a, #logout-form button { - border-bottom: 1px solid rgba(255, 255, 255, 0.25); -} - -#user-tools a:focus, #user-tools a:hover, -#logout-form button:active, #logout-form button:hover { - text-decoration: none; - border-bottom: 0; -} - -#logout-form button:active, #logout-form button:hover { - margin-bottom: 1px; -} - -/* SIDEBAR */ - -#content-related { - background: var(--darkened-bg); -} - -#content-related .module { - background: none; -} - -#content-related h3 { - color: var(--body-quiet-color); - padding: 0 16px; - margin: 0 0 16px; -} - -#content-related h4 { - font-size: 0.8125rem; -} - -#content-related p { - padding-left: 16px; - padding-right: 16px; -} - -#content-related .actionlist { - padding: 0; - margin: 16px; -} - -#content-related .actionlist li { - line-height: 1.2; - margin-bottom: 10px; - padding-left: 18px; -} - -#content-related .module h2 { - background: none; - padding: 16px; - margin-bottom: 16px; - border-bottom: 1px solid var(--hairline-color); - font-size: 1.125rem; - color: var(--body-fg); -} - -.delete-confirmation form input[type="submit"] { - background: var(--delete-button-bg); - border-radius: 4px; - padding: 10px 15px; - color: var(--button-fg); -} - -.delete-confirmation form input[type="submit"]:active, -.delete-confirmation form input[type="submit"]:focus, -.delete-confirmation form input[type="submit"]:hover { - background: var(--delete-button-hover-bg); -} - -.delete-confirmation form .cancel-link { - display: inline-block; - vertical-align: middle; - height: 0.9375rem; - line-height: 0.9375rem; - border-radius: 4px; - padding: 10px 15px; - color: var(--button-fg); - background: var(--close-button-bg); - margin: 0 0 0 10px; -} - -.delete-confirmation form .cancel-link:active, -.delete-confirmation form .cancel-link:focus, -.delete-confirmation form .cancel-link:hover { - background: var(--close-button-hover-bg); -} - -/* POPUP */ -.popup #content { - padding: 20px; -} - -.popup #container { - min-width: 0; -} - -.popup #header { - padding: 10px 20px; -} - -/* PAGINATOR */ - -.paginator { - display: flex; - align-items: center; - gap: 4px; - font-size: 0.8125rem; - padding-top: 10px; - padding-bottom: 10px; - line-height: 22px; - margin: 0; - border-top: 1px solid var(--hairline-color); - width: 100%; - box-sizing: border-box; -} - -.paginator a:link, .paginator a:visited { - padding: 2px 6px; - background: var(--button-bg); - text-decoration: none; - color: var(--button-fg); -} - -.paginator a.showall { - border: none; - background: none; - color: var(--link-fg); -} - -.paginator a.showall:focus, .paginator a.showall:hover { - background: none; - color: var(--link-hover-color); -} - -.paginator .end { - margin-right: 6px; -} - -.paginator .this-page { - padding: 2px 6px; - font-weight: bold; - font-size: 0.8125rem; - vertical-align: top; -} - -.paginator a:focus, .paginator a:hover { - color: white; - background: var(--link-hover-color); -} - -.paginator input { - margin-left: auto; -} - -.base-svgs { - display: none; -} - -.visually-hidden { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0,0,0,0); - white-space: nowrap; - border: 0; - color: var(--body-fg); - background-color: var(--body-bg); -} diff --git a/staticfiles/admin/css/changelists.css b/staticfiles/admin/css/changelists.css deleted file mode 100644 index 005b776..0000000 --- a/staticfiles/admin/css/changelists.css +++ /dev/null @@ -1,343 +0,0 @@ -/* CHANGELISTS */ - -#changelist { - display: flex; - align-items: flex-start; - justify-content: space-between; -} - -#changelist .changelist-form-container { - flex: 1 1 auto; - min-width: 0; -} - -#changelist table { - width: 100%; -} - -.change-list .hiddenfields { display:none; } - -.change-list .filtered table { - border-right: none; -} - -.change-list .filtered { - min-height: 400px; -} - -.change-list .filtered .results, .change-list .filtered .paginator, -.filtered #toolbar, .filtered div.xfull { - width: auto; -} - -.change-list .filtered table tbody th { - padding-right: 1em; -} - -#changelist-form .results { - overflow-x: auto; - width: 100%; -} - -#changelist .toplinks { - border-bottom: 1px solid var(--hairline-color); -} - -#changelist .paginator { - color: var(--body-quiet-color); - border-bottom: 1px solid var(--hairline-color); - background: var(--body-bg); - overflow: hidden; -} - -/* CHANGELIST TABLES */ - -#changelist table thead th { - padding: 0; - white-space: nowrap; - vertical-align: middle; -} - -#changelist table thead th.action-checkbox-column { - width: 1.5em; - text-align: center; -} - -#changelist table tbody td.action-checkbox { - text-align: center; -} - -#changelist table tfoot { - color: var(--body-quiet-color); -} - -/* TOOLBAR */ - -#toolbar { - padding: 8px 10px; - margin-bottom: 15px; - border-top: 1px solid var(--hairline-color); - border-bottom: 1px solid var(--hairline-color); - background: var(--darkened-bg); - color: var(--body-quiet-color); -} - -#toolbar form input { - border-radius: 4px; - font-size: 0.875rem; - padding: 5px; - color: var(--body-fg); -} - -#toolbar #searchbar { - height: 1.1875rem; - border: 1px solid var(--border-color); - padding: 2px 5px; - margin: 0; - vertical-align: top; - font-size: 0.8125rem; - max-width: 100%; -} - -#toolbar #searchbar:focus { - border-color: var(--body-quiet-color); -} - -#toolbar form input[type="submit"] { - border: 1px solid var(--border-color); - font-size: 0.8125rem; - padding: 4px 8px; - margin: 0; - vertical-align: middle; - background: var(--body-bg); - box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; - cursor: pointer; - color: var(--body-fg); -} - -#toolbar form input[type="submit"]:focus, -#toolbar form input[type="submit"]:hover { - border-color: var(--body-quiet-color); -} - -#changelist-search img { - vertical-align: middle; - margin-right: 4px; -} - -#changelist-search .help { - word-break: break-word; -} - -/* FILTER COLUMN */ - -#changelist-filter { - flex: 0 0 240px; - order: 1; - background: var(--darkened-bg); - border-left: none; - margin: 0 0 0 30px; -} - -@media (forced-colors: active) { - #changelist-filter { - border: 1px solid; - } -} - -#changelist-filter h2 { - font-size: 0.875rem; - text-transform: uppercase; - letter-spacing: 0.5px; - padding: 5px 15px; - margin-bottom: 12px; - border-bottom: none; -} - -#changelist-filter h3, -#changelist-filter details summary { - font-weight: 400; - padding: 0 15px; - margin-bottom: 10px; -} - -#changelist-filter details summary > * { - display: inline; -} - -#changelist-filter details > summary { - list-style-type: none; -} - -#changelist-filter details > summary::-webkit-details-marker { - display: none; -} - -#changelist-filter details > summary::before { - content: '→'; - font-weight: bold; - color: var(--link-hover-color); -} - -#changelist-filter details[open] > summary::before { - content: '↓'; -} - -#changelist-filter ul { - margin: 5px 0; - padding: 0 15px 15px; - border-bottom: 1px solid var(--hairline-color); -} - -#changelist-filter ul:last-child { - border-bottom: none; -} - -#changelist-filter li { - list-style-type: none; - margin-left: 0; - padding-left: 0; -} - -#changelist-filter a { - display: block; - color: var(--body-quiet-color); - word-break: break-word; -} - -#changelist-filter li.selected { - border-left: 5px solid var(--hairline-color); - padding-left: 10px; - margin-left: -15px; -} - -#changelist-filter li.selected a { - color: var(--link-selected-fg); -} - -#changelist-filter a:focus, #changelist-filter a:hover, -#changelist-filter li.selected a:focus, -#changelist-filter li.selected a:hover { - color: var(--link-hover-color); -} - -#changelist-filter #changelist-filter-extra-actions { - font-size: 0.8125rem; - margin-bottom: 10px; - border-bottom: 1px solid var(--hairline-color); -} - -/* DATE DRILLDOWN */ - -.change-list .toplinks { - display: flex; - padding-bottom: 5px; - flex-wrap: wrap; - gap: 3px 17px; - font-weight: bold; -} - -.change-list .toplinks a { - font-size: 0.8125rem; -} - -.change-list .toplinks .date-back { - color: var(--body-quiet-color); -} - -.change-list .toplinks .date-back:focus, -.change-list .toplinks .date-back:hover { - color: var(--link-hover-color); -} - -/* ACTIONS */ - -.filtered .actions { - border-right: none; -} - -#changelist table input { - margin: 0; - vertical-align: baseline; -} - -/* Once the :has() pseudo-class is supported by all browsers, the tr.selected - selector and the JS adding the class can be removed. */ -#changelist tbody tr.selected { - background-color: var(--selected-row); -} - -#changelist tbody tr:has(.action-select:checked) { - background-color: var(--selected-row); -} - -@media (forced-colors: active) { - #changelist tbody tr.selected { - background-color: SelectedItem; - } - #changelist tbody tr:has(.action-select:checked) { - background-color: SelectedItem; - } -} - -#changelist .actions { - padding: 10px; - background: var(--body-bg); - border-top: none; - border-bottom: none; - line-height: 1.5rem; - color: var(--body-quiet-color); - width: 100%; -} - -#changelist .actions span.all, -#changelist .actions span.action-counter, -#changelist .actions span.clear, -#changelist .actions span.question { - font-size: 0.8125rem; - margin: 0 0.5em; -} - -#changelist .actions:last-child { - border-bottom: none; -} - -#changelist .actions select { - vertical-align: top; - height: 1.5rem; - color: var(--body-fg); - border: 1px solid var(--border-color); - border-radius: 4px; - font-size: 0.875rem; - padding: 0 0 0 4px; - margin: 0; - margin-left: 10px; -} - -#changelist .actions select:focus { - border-color: var(--body-quiet-color); -} - -#changelist .actions label { - display: inline-block; - vertical-align: middle; - font-size: 0.8125rem; -} - -#changelist .actions .button { - font-size: 0.8125rem; - border: 1px solid var(--border-color); - border-radius: 4px; - background: var(--body-bg); - box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; - cursor: pointer; - height: 1.5rem; - line-height: 1; - padding: 4px 8px; - margin: 0; - color: var(--body-fg); -} - -#changelist .actions .button:focus, #changelist .actions .button:hover { - border-color: var(--body-quiet-color); -} diff --git a/staticfiles/admin/css/dark_mode.css b/staticfiles/admin/css/dark_mode.css deleted file mode 100644 index 65b58d0..0000000 --- a/staticfiles/admin/css/dark_mode.css +++ /dev/null @@ -1,130 +0,0 @@ -@media (prefers-color-scheme: dark) { - :root { - --primary: #264b5d; - --primary-fg: #f7f7f7; - - --body-fg: #eeeeee; - --body-bg: #121212; - --body-quiet-color: #d0d0d0; - --body-medium-color: #e0e0e0; - --body-loud-color: #ffffff; - - --breadcrumbs-link-fg: #e0e0e0; - --breadcrumbs-bg: var(--primary); - - --link-fg: #81d4fa; - --link-hover-color: #4ac1f7; - --link-selected-fg: #6f94c6; - - --hairline-color: #272727; - --border-color: #353535; - - --error-fg: #e35f5f; - --message-success-bg: #006b1b; - --message-warning-bg: #583305; - --message-error-bg: #570808; - - --darkened-bg: #212121; - --selected-bg: #1b1b1b; - --selected-row: #00363a; - - --close-button-bg: #333333; - --close-button-hover-bg: #666666; - - color-scheme: dark; - } - } - - -html[data-theme="dark"] { - --primary: #264b5d; - --primary-fg: #f7f7f7; - - --body-fg: #eeeeee; - --body-bg: #121212; - --body-quiet-color: #d0d0d0; - --body-medium-color: #e0e0e0; - --body-loud-color: #ffffff; - - --breadcrumbs-link-fg: #e0e0e0; - --breadcrumbs-bg: var(--primary); - - --link-fg: #81d4fa; - --link-hover-color: #4ac1f7; - --link-selected-fg: #6f94c6; - - --hairline-color: #272727; - --border-color: #353535; - - --error-fg: #e35f5f; - --message-success-bg: #006b1b; - --message-warning-bg: #583305; - --message-error-bg: #570808; - - --darkened-bg: #212121; - --selected-bg: #1b1b1b; - --selected-row: #00363a; - - --close-button-bg: #333333; - --close-button-hover-bg: #666666; - - color-scheme: dark; -} - -/* THEME SWITCH */ -.theme-toggle { - cursor: pointer; - border: none; - padding: 0; - background: transparent; - vertical-align: middle; - margin-inline-start: 5px; - margin-top: -1px; -} - -.theme-toggle svg { - vertical-align: middle; - height: 1.5rem; - width: 1.5rem; - display: none; -} - -/* -Fully hide screen reader text so we only show the one matching the current -theme. -*/ -.theme-toggle .visually-hidden { - display: none; -} - -html[data-theme="auto"] .theme-toggle .theme-label-when-auto { - display: block; -} - -html[data-theme="dark"] .theme-toggle .theme-label-when-dark { - display: block; -} - -html[data-theme="light"] .theme-toggle .theme-label-when-light { - display: block; -} - -/* ICONS */ -.theme-toggle svg.theme-icon-when-auto, -.theme-toggle svg.theme-icon-when-dark, -.theme-toggle svg.theme-icon-when-light { - fill: var(--header-link-color); - color: var(--header-bg); -} - -html[data-theme="auto"] .theme-toggle svg.theme-icon-when-auto { - display: block; -} - -html[data-theme="dark"] .theme-toggle svg.theme-icon-when-dark { - display: block; -} - -html[data-theme="light"] .theme-toggle svg.theme-icon-when-light { - display: block; -} diff --git a/staticfiles/admin/css/dashboard.css b/staticfiles/admin/css/dashboard.css deleted file mode 100644 index 242b81a..0000000 --- a/staticfiles/admin/css/dashboard.css +++ /dev/null @@ -1,29 +0,0 @@ -/* DASHBOARD */ -.dashboard td, .dashboard th { - word-break: break-word; -} - -.dashboard .module table th { - width: 100%; -} - -.dashboard .module table td { - white-space: nowrap; -} - -.dashboard .module table td a { - display: block; - padding-right: .6em; -} - -/* RECENT ACTIONS MODULE */ - -.module ul.actionlist { - margin-left: 0; -} - -ul.actionlist li { - list-style-type: none; - overflow: hidden; - text-overflow: ellipsis; -} diff --git a/staticfiles/admin/css/forms.css b/staticfiles/admin/css/forms.css deleted file mode 100644 index c6ce788..0000000 --- a/staticfiles/admin/css/forms.css +++ /dev/null @@ -1,498 +0,0 @@ -@import url('widgets.css'); - -/* FORM ROWS */ - -.form-row { - overflow: hidden; - padding: 10px; - font-size: 0.8125rem; - border-bottom: 1px solid var(--hairline-color); -} - -.form-row img, .form-row input { - vertical-align: middle; -} - -.form-row label input[type="checkbox"] { - margin-top: 0; - vertical-align: 0; -} - -form .form-row p { - padding-left: 0; -} - -.flex-container { - display: flex; -} - -.form-multiline { - flex-wrap: wrap; -} - -.form-multiline > div { - padding-bottom: 10px; -} - -/* FORM LABELS */ - -label { - font-weight: normal; - color: var(--body-quiet-color); - font-size: 0.8125rem; -} - -.required label, label.required { - font-weight: bold; -} - -/* RADIO BUTTONS */ - -form div.radiolist div { - padding-right: 7px; -} - -form div.radiolist.inline div { - display: inline-block; -} - -form div.radiolist label { - width: auto; -} - -form div.radiolist input[type="radio"] { - margin: -2px 4px 0 0; - padding: 0; -} - -form ul.inline { - margin-left: 0; - padding: 0; -} - -form ul.inline li { - float: left; - padding-right: 7px; -} - -/* FIELDSETS */ - -fieldset .fieldset-heading, -fieldset .inline-heading, -:not(.inline-related) .collapse summary { - border: 1px solid var(--header-bg); - margin: 0; - padding: 8px; - font-weight: 400; - font-size: 0.8125rem; - background: var(--header-bg); - color: var(--header-link-color); -} - -/* ALIGNED FIELDSETS */ - -.aligned label { - display: block; - padding: 4px 10px 0 0; - min-width: 160px; - width: 160px; - word-wrap: break-word; -} - -.aligned label:not(.vCheckboxLabel):after { - content: ''; - display: inline-block; - vertical-align: middle; -} - -.aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly { - padding: 6px 0; - margin-top: 0; - margin-bottom: 0; - margin-left: 0; - overflow-wrap: break-word; -} - -.aligned ul label { - display: inline; - float: none; - width: auto; -} - -.aligned .form-row input { - margin-bottom: 0; -} - -.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { - width: 350px; -} - -form .aligned ul { - margin-left: 160px; - padding-left: 10px; -} - -form .aligned div.radiolist { - display: inline-block; - margin: 0; - padding: 0; -} - -form .aligned p.help, -form .aligned div.help { - margin-top: 0; - margin-left: 160px; - padding-left: 10px; -} - -form .aligned p.date div.help.timezonewarning, -form .aligned p.datetime div.help.timezonewarning, -form .aligned p.time div.help.timezonewarning { - margin-left: 0; - padding-left: 0; - font-weight: normal; -} - -form .aligned p.help:last-child, -form .aligned div.help:last-child { - margin-bottom: 0; - padding-bottom: 0; -} - -form .aligned input + p.help, -form .aligned textarea + p.help, -form .aligned select + p.help, -form .aligned input + div.help, -form .aligned textarea + div.help, -form .aligned select + div.help { - margin-left: 160px; - padding-left: 10px; -} - -form .aligned select option:checked { - background-color: var(--selected-row); -} - -form .aligned ul li { - list-style: none; -} - -form .aligned table p { - margin-left: 0; - padding-left: 0; -} - -.aligned .vCheckboxLabel { - padding: 1px 0 0 5px; -} - -.aligned .vCheckboxLabel + p.help, -.aligned .vCheckboxLabel + div.help { - margin-top: -4px; -} - -.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { - width: 610px; -} - -fieldset .fieldBox { - margin-right: 20px; -} - -/* WIDE FIELDSETS */ - -.wide label { - width: 200px; -} - -form .wide p.help, -form .wide ul.errorlist, -form .wide div.help { - padding-left: 50px; -} - -form div.help ul { - padding-left: 0; - margin-left: 0; -} - -.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { - width: 450px; -} - -/* COLLAPSIBLE FIELDSETS */ - -.collapse summary .fieldset-heading, -.collapse summary .inline-heading { - background: transparent; - border: none; - color: currentColor; - display: inline; - margin: 0; - padding: 0; -} - -/* MONOSPACE TEXTAREAS */ - -fieldset.monospace textarea { - font-family: var(--font-family-monospace); -} - -/* SUBMIT ROW */ - -.submit-row { - padding: 12px 14px 12px; - margin: 0 0 20px; - background: var(--darkened-bg); - border: 1px solid var(--hairline-color); - border-radius: 4px; - overflow: hidden; - display: flex; - gap: 10px; - flex-wrap: wrap; -} - -body.popup .submit-row { - overflow: auto; -} - -.submit-row input { - height: 2.1875rem; - line-height: 0.9375rem; -} - -.submit-row input, .submit-row a { - margin: 0; -} - -.submit-row input.default { - text-transform: uppercase; -} - -.submit-row a.deletelink { - margin-left: auto; -} - -.submit-row a.deletelink { - display: block; - background: var(--delete-button-bg); - border-radius: 4px; - padding: 0.625rem 0.9375rem; - height: 0.9375rem; - line-height: 0.9375rem; - color: var(--button-fg); -} - -.submit-row a.closelink { - display: inline-block; - background: var(--close-button-bg); - border-radius: 4px; - padding: 10px 15px; - height: 0.9375rem; - line-height: 0.9375rem; - color: var(--button-fg); -} - -.submit-row a.deletelink:focus, -.submit-row a.deletelink:hover, -.submit-row a.deletelink:active { - background: var(--delete-button-hover-bg); - text-decoration: none; -} - -.submit-row a.closelink:focus, -.submit-row a.closelink:hover, -.submit-row a.closelink:active { - background: var(--close-button-hover-bg); - text-decoration: none; -} - -/* CUSTOM FORM FIELDS */ - -.vSelectMultipleField { - vertical-align: top; -} - -.vCheckboxField { - border: none; -} - -.vDateField, .vTimeField { - margin-right: 2px; - margin-bottom: 4px; -} - -.vDateField { - min-width: 6.85em; -} - -.vTimeField { - min-width: 4.7em; -} - -.vURLField { - width: 30em; -} - -.vLargeTextField, .vXMLLargeTextField { - width: 48em; -} - -.flatpages-flatpage #id_content { - height: 40.2em; -} - -.module table .vPositiveSmallIntegerField { - width: 2.2em; -} - -.vIntegerField { - width: 5em; -} - -.vBigIntegerField { - width: 10em; -} - -.vForeignKeyRawIdAdminField { - width: 5em; -} - -.vTextField, .vUUIDField { - width: 20em; -} - -/* INLINES */ - -.inline-group { - padding: 0; - margin: 0 0 30px; -} - -.inline-group thead th { - padding: 8px 10px; -} - -.inline-group .aligned label { - width: 160px; -} - -.inline-related { - position: relative; -} - -.inline-related h4, -.inline-related:not(.tabular) .collapse summary { - margin: 0; - color: var(--body-medium-color); - padding: 5px; - font-size: 0.8125rem; - background: var(--darkened-bg); - border: 1px solid var(--hairline-color); - border-left-color: var(--darkened-bg); - border-right-color: var(--darkened-bg); -} - -.inline-related h3 span.delete { - float: right; -} - -.inline-related h3 span.delete label { - margin-left: 2px; - font-size: 0.6875rem; -} - -.inline-related fieldset { - margin: 0; - background: var(--body-bg); - border: none; - width: 100%; -} - -.inline-group .tabular fieldset.module { - border: none; -} - -.inline-related.tabular fieldset.module table { - width: 100%; - overflow-x: scroll; -} - -.last-related fieldset { - border: none; -} - -.inline-group .tabular tr.has_original td { - padding-top: 2em; -} - -.inline-group .tabular tr td.original { - padding: 2px 0 0 0; - width: 0; - _position: relative; -} - -.inline-group .tabular th.original { - width: 0px; - padding: 0; -} - -.inline-group .tabular td.original p { - position: absolute; - left: 0; - height: 1.1em; - padding: 2px 9px; - overflow: hidden; - font-size: 0.5625rem; - font-weight: bold; - color: var(--body-quiet-color); - _width: 700px; -} - -.inline-group div.add-row, -.inline-group .tabular tr.add-row td { - color: var(--body-quiet-color); - background: var(--darkened-bg); - padding: 8px 10px; - border-bottom: 1px solid var(--hairline-color); -} - -.inline-group .tabular tr.add-row td { - padding: 8px 10px; - border-bottom: 1px solid var(--hairline-color); -} - -.inline-group div.add-row a, -.inline-group .tabular tr.add-row td a { - font-size: 0.75rem; -} - -.empty-form { - display: none; -} - -/* RELATED FIELD ADD ONE / LOOKUP */ - -.related-lookup { - margin-left: 5px; - display: inline-block; - vertical-align: middle; - background-repeat: no-repeat; - background-size: 14px; -} - -.related-lookup { - width: 1rem; - height: 1rem; - background-image: url(../img/search.svg); -} - -form .related-widget-wrapper ul { - display: inline-block; - margin-left: 0; - padding-left: 0; -} - -.clearable-file-input input { - margin-top: 0; -} diff --git a/staticfiles/admin/css/login.css b/staticfiles/admin/css/login.css deleted file mode 100644 index 805a34b..0000000 --- a/staticfiles/admin/css/login.css +++ /dev/null @@ -1,61 +0,0 @@ -/* LOGIN FORM */ - -.login { - background: var(--darkened-bg); - height: auto; -} - -.login #header { - height: auto; - padding: 15px 16px; - justify-content: center; -} - -.login #header h1 { - font-size: 1.125rem; - margin: 0; -} - -.login #header h1 a { - color: var(--header-link-color); -} - -.login #content { - padding: 20px; -} - -.login #container { - background: var(--body-bg); - border: 1px solid var(--hairline-color); - border-radius: 4px; - overflow: hidden; - width: 28em; - min-width: 300px; - margin: 100px auto; - height: auto; -} - -.login .form-row { - padding: 4px 0; -} - -.login .form-row label { - display: block; - line-height: 2em; -} - -.login .form-row #id_username, .login .form-row #id_password { - padding: 8px; - width: 100%; - box-sizing: border-box; -} - -.login .submit-row { - padding: 1em 0 0 0; - margin: 0; - text-align: center; -} - -.login .password-reset-link { - text-align: center; -} diff --git a/staticfiles/admin/css/nav_sidebar.css b/staticfiles/admin/css/nav_sidebar.css deleted file mode 100644 index 7eb0de9..0000000 --- a/staticfiles/admin/css/nav_sidebar.css +++ /dev/null @@ -1,150 +0,0 @@ -.sticky { - position: sticky; - top: 0; - max-height: 100vh; -} - -.toggle-nav-sidebar { - z-index: 20; - left: 0; - display: flex; - align-items: center; - justify-content: center; - flex: 0 0 23px; - width: 23px; - border: 0; - border-right: 1px solid var(--hairline-color); - background-color: var(--body-bg); - cursor: pointer; - font-size: 1.25rem; - color: var(--link-fg); - padding: 0; -} - -[dir="rtl"] .toggle-nav-sidebar { - border-left: 1px solid var(--hairline-color); - border-right: 0; -} - -.toggle-nav-sidebar:hover, -.toggle-nav-sidebar:focus { - background-color: var(--darkened-bg); -} - -#nav-sidebar { - z-index: 15; - flex: 0 0 275px; - left: -276px; - margin-left: -276px; - border-top: 1px solid transparent; - border-right: 1px solid var(--hairline-color); - background-color: var(--body-bg); - overflow: auto; -} - -[dir="rtl"] #nav-sidebar { - border-left: 1px solid var(--hairline-color); - border-right: 0; - left: 0; - margin-left: 0; - right: -276px; - margin-right: -276px; -} - -.toggle-nav-sidebar::before { - content: '\00BB'; -} - -.main.shifted .toggle-nav-sidebar::before { - content: '\00AB'; -} - -.main > #nav-sidebar { - visibility: hidden; -} - -.main.shifted > #nav-sidebar { - margin-left: 0; - visibility: visible; -} - -[dir="rtl"] .main.shifted > #nav-sidebar { - margin-right: 0; -} - -#nav-sidebar .module th { - width: 100%; - overflow-wrap: anywhere; -} - -#nav-sidebar .module th, -#nav-sidebar .module caption { - padding-left: 16px; -} - -#nav-sidebar .module td { - white-space: nowrap; -} - -[dir="rtl"] #nav-sidebar .module th, -[dir="rtl"] #nav-sidebar .module caption { - padding-left: 8px; - padding-right: 16px; -} - -#nav-sidebar .current-app .section:link, -#nav-sidebar .current-app .section:visited { - color: var(--header-color); - font-weight: bold; -} - -#nav-sidebar .current-model { - background: var(--selected-row); -} - -@media (forced-colors: active) { - #nav-sidebar .current-model { - background-color: SelectedItem; - } -} - -.main > #nav-sidebar + .content { - max-width: calc(100% - 23px); -} - -.main.shifted > #nav-sidebar + .content { - max-width: calc(100% - 299px); -} - -@media (max-width: 767px) { - #nav-sidebar, #toggle-nav-sidebar { - display: none; - } - - .main > #nav-sidebar + .content, - .main.shifted > #nav-sidebar + .content { - max-width: 100%; - } -} - -#nav-filter { - width: 100%; - box-sizing: border-box; - padding: 2px 5px; - margin: 5px 0; - border: 1px solid var(--border-color); - background-color: var(--darkened-bg); - color: var(--body-fg); -} - -#nav-filter:focus { - border-color: var(--body-quiet-color); -} - -#nav-filter.no-results { - background: var(--message-error-bg); -} - -#nav-sidebar table { - width: 100%; -} diff --git a/staticfiles/admin/css/responsive.css b/staticfiles/admin/css/responsive.css deleted file mode 100644 index f0fcade..0000000 --- a/staticfiles/admin/css/responsive.css +++ /dev/null @@ -1,904 +0,0 @@ -/* Tablets */ - -input[type="submit"], button { - -webkit-appearance: none; - appearance: none; -} - -@media (max-width: 1024px) { - /* Basic */ - - html { - -webkit-text-size-adjust: 100%; - } - - td, th { - padding: 10px; - font-size: 0.875rem; - } - - .small { - font-size: 0.75rem; - } - - /* Layout */ - - #container { - min-width: 0; - } - - #content { - padding: 15px 20px 20px; - } - - div.breadcrumbs { - padding: 10px 30px; - } - - /* Header */ - - #header { - flex-direction: column; - padding: 15px 30px; - justify-content: flex-start; - } - - #site-name { - margin: 0 0 8px; - line-height: 1.2; - } - - #user-tools { - margin: 0; - font-weight: 400; - line-height: 1.85; - text-align: left; - } - - #user-tools a { - display: inline-block; - line-height: 1.4; - } - - /* Dashboard */ - - .dashboard #content { - width: auto; - } - - #content-related { - margin-right: -290px; - } - - .colSM #content-related { - margin-left: -290px; - } - - .colMS { - margin-right: 290px; - } - - .colSM { - margin-left: 290px; - } - - .dashboard .module table td a { - padding-right: 0; - } - - td .changelink, td .addlink { - font-size: 0.8125rem; - } - - /* Changelist */ - - #toolbar { - border: none; - padding: 15px; - } - - #changelist-search > div { - display: flex; - flex-wrap: nowrap; - max-width: 480px; - } - - #changelist-search label { - line-height: 1.375rem; - } - - #toolbar form #searchbar { - flex: 1 0 auto; - width: 0; - height: 1.375rem; - margin: 0 10px 0 6px; - } - - #toolbar form input[type=submit] { - flex: 0 1 auto; - } - - #changelist-search .quiet { - width: 0; - flex: 1 0 auto; - margin: 5px 0 0 25px; - } - - #changelist .actions { - display: flex; - flex-wrap: wrap; - padding: 15px 0; - } - - #changelist .actions label { - display: flex; - } - - #changelist .actions select { - background: var(--body-bg); - } - - #changelist .actions .button { - min-width: 48px; - margin: 0 10px; - } - - #changelist .actions span.all, - #changelist .actions span.clear, - #changelist .actions span.question, - #changelist .actions span.action-counter { - font-size: 0.6875rem; - margin: 0 10px 0 0; - } - - #changelist-filter { - flex-basis: 200px; - } - - .change-list .filtered .results, - .change-list .filtered .paginator, - .filtered #toolbar, - .filtered .actions, - - #changelist .paginator { - border-top-color: var(--hairline-color); /* XXX Is this used at all? */ - } - - #changelist .results + .paginator { - border-top: none; - } - - /* Forms */ - - label { - font-size: 1rem; - } - - /* - Minifiers remove the default (text) "type" attribute from "input" HTML - tags. Add input:not([type]) to make the CSS stylesheet work the same. - */ - .form-row input:not([type]), - .form-row input[type=text], - .form-row input[type=password], - .form-row input[type=email], - .form-row input[type=url], - .form-row input[type=tel], - .form-row input[type=number], - .form-row textarea, - .form-row select, - .form-row .vTextField { - box-sizing: border-box; - margin: 0; - padding: 6px 8px; - min-height: 2.25rem; - font-size: 1rem; - } - - .form-row select { - height: 2.25rem; - } - - .form-row select[multiple] { - height: auto; - min-height: 0; - } - - fieldset .fieldBox + .fieldBox { - margin-top: 10px; - padding-top: 10px; - border-top: 1px solid var(--hairline-color); - } - - textarea { - max-width: 100%; - max-height: 120px; - } - - .aligned label { - padding-top: 6px; - } - - .aligned .related-lookup, - .aligned .datetimeshortcuts, - .aligned .related-lookup + strong { - align-self: center; - margin-left: 15px; - } - - form .aligned div.radiolist { - margin-left: 2px; - } - - .submit-row { - padding: 8px; - } - - .submit-row a.deletelink { - padding: 10px 7px; - } - - .button, input[type=submit], input[type=button], .submit-row input, a.button { - padding: 7px; - } - - /* Selector */ - - .selector { - display: flex; - width: 100%; - } - - .selector .selector-filter { - display: flex; - align-items: center; - } - - .selector .selector-filter input { - width: 100%; - min-height: 0; - flex: 1 1; - } - - .selector-available, .selector-chosen { - width: auto; - flex: 1 1; - display: flex; - flex-direction: column; - } - - .selector select { - width: 100%; - flex: 1 0 auto; - margin-bottom: 5px; - } - - .selector-chooseall, .selector-clearall { - align-self: center; - } - - .stacked { - flex-direction: column; - max-width: 480px; - } - - .stacked > * { - flex: 0 1 auto; - } - - .stacked select { - margin-bottom: 0; - } - - .stacked .selector-available, .stacked .selector-chosen { - width: auto; - } - - .stacked ul.selector-chooser { - padding: 0 2px; - transform: none; - } - - .stacked .selector-chooser li { - padding: 3px; - } - - .help-tooltip, .selector .help-icon { - display: none; - } - - .datetime input { - width: 50%; - max-width: 120px; - } - - .datetime span { - font-size: 0.8125rem; - } - - .datetime .timezonewarning { - display: block; - font-size: 0.6875rem; - color: var(--body-quiet-color); - } - - .datetimeshortcuts { - color: var(--border-color); /* XXX Redundant, .datetime span also sets #ccc */ - } - - .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { - width: 75%; - } - - .inline-group { - overflow: auto; - } - - /* Messages */ - - ul.messagelist li { - padding-left: 55px; - background-position: 30px 12px; - } - - ul.messagelist li.error { - background-position: 30px 12px; - } - - ul.messagelist li.warning { - background-position: 30px 14px; - } - - /* Login */ - - .login #header { - padding: 15px 20px; - } - - .login #site-name { - margin: 0; - } - - /* GIS */ - - div.olMap { - max-width: calc(100vw - 30px); - max-height: 300px; - } - - .olMap + .clear_features { - display: block; - margin-top: 10px; - } - - /* Docs */ - - .module table.xfull { - width: 100%; - } - - pre.literal-block { - overflow: auto; - } -} - -/* Mobile */ - -@media (max-width: 767px) { - /* Layout */ - - #header, #content { - padding: 15px; - } - - div.breadcrumbs { - padding: 10px 15px; - } - - /* Dashboard */ - - .colMS, .colSM { - margin: 0; - } - - #content-related, .colSM #content-related { - width: 100%; - margin: 0; - } - - #content-related .module { - margin-bottom: 0; - } - - #content-related .module h2 { - padding: 10px 15px; - font-size: 1rem; - } - - /* Changelist */ - - #changelist { - align-items: stretch; - flex-direction: column; - } - - #toolbar { - padding: 10px; - } - - #changelist-filter { - margin-left: 0; - } - - #changelist .actions label { - flex: 1 1; - } - - #changelist .actions select { - flex: 1 0; - width: 100%; - } - - #changelist .actions span { - flex: 1 0 100%; - } - - #changelist-filter { - position: static; - width: auto; - margin-top: 30px; - } - - .object-tools { - float: none; - margin: 0 0 15px; - padding: 0; - overflow: hidden; - } - - .object-tools li { - height: auto; - margin-left: 0; - } - - .object-tools li + li { - margin-left: 15px; - } - - /* Forms */ - - .form-row { - padding: 15px 0; - } - - .aligned .form-row, - .aligned .form-row > div { - max-width: 100vw; - } - - .aligned .form-row > div { - width: calc(100vw - 30px); - } - - .flex-container { - flex-flow: column; - } - - .flex-container.checkbox-row { - flex-flow: row; - } - - textarea { - max-width: none; - } - - .vURLField { - width: auto; - } - - fieldset .fieldBox + .fieldBox { - margin-top: 15px; - padding-top: 15px; - } - - .aligned label { - width: 100%; - min-width: auto; - padding: 0 0 10px; - } - - .aligned label:after { - max-height: 0; - } - - .aligned .form-row input, - .aligned .form-row select, - .aligned .form-row textarea { - flex: 1 1 auto; - max-width: 100%; - } - - .aligned .checkbox-row input { - flex: 0 1 auto; - margin: 0; - } - - .aligned .vCheckboxLabel { - flex: 1 0; - padding: 1px 0 0 5px; - } - - .aligned label + p, - .aligned label + div.help, - .aligned label + div.readonly { - padding: 0; - margin-left: 0; - } - - .aligned p.file-upload { - font-size: 0.8125rem; - } - - span.clearable-file-input { - margin-left: 15px; - } - - span.clearable-file-input label { - font-size: 0.8125rem; - padding-bottom: 0; - } - - .aligned .timezonewarning { - flex: 1 0 100%; - margin-top: 5px; - } - - form .aligned .form-row div.help { - width: 100%; - margin: 5px 0 0; - padding: 0; - } - - form .aligned ul, - form .aligned ul.errorlist { - margin-left: 0; - padding-left: 0; - } - - form .aligned div.radiolist { - margin-top: 5px; - margin-right: 15px; - margin-bottom: -3px; - } - - form .aligned div.radiolist:not(.inline) div + div { - margin-top: 5px; - } - - /* Related widget */ - - .related-widget-wrapper { - width: 100%; - display: flex; - align-items: flex-start; - } - - .related-widget-wrapper .selector { - order: 1; - flex: 1 0 auto; - } - - .related-widget-wrapper > a { - order: 2; - } - - .related-widget-wrapper .radiolist ~ a { - align-self: flex-end; - } - - .related-widget-wrapper > select ~ a { - align-self: center; - } - - /* Selector */ - - .selector { - flex-direction: column; - gap: 10px 0; - } - - .selector-available, .selector-chosen { - flex: 1 1 auto; - } - - .selector select { - max-height: 96px; - } - - .selector ul.selector-chooser { - display: flex; - width: 60px; - height: 30px; - padding: 0 2px; - transform: none; - } - - .selector ul.selector-chooser li { - float: left; - } - - .selector-remove { - background-position: 0 0; - } - - :enabled.selector-remove:focus, :enabled.selector-remove:hover { - background-position: 0 -24px; - } - - .selector-add { - background-position: 0 -48px; - } - - :enabled.selector-add:focus, :enabled.selector-add:hover { - background-position: 0 -72px; - } - - /* Inlines */ - - .inline-group[data-inline-type="stacked"] .inline-related { - border: 1px solid var(--hairline-color); - border-radius: 4px; - margin-top: 15px; - overflow: auto; - } - - .inline-group[data-inline-type="stacked"] .inline-related > * { - box-sizing: border-box; - } - - .inline-group[data-inline-type="stacked"] .inline-related .module { - padding: 0 10px; - } - - .inline-group[data-inline-type="stacked"] .inline-related .module .form-row { - border-top: 1px solid var(--hairline-color); - border-bottom: none; - } - - .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:first-child { - border-top: none; - } - - .inline-group[data-inline-type="stacked"] .inline-related h3 { - padding: 10px; - border-top-width: 0; - border-bottom-width: 2px; - display: flex; - flex-wrap: wrap; - align-items: center; - } - - .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { - margin-right: auto; - } - - .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { - float: none; - flex: 1 1 100%; - margin-top: 5px; - } - - .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { - width: 100%; - } - - .inline-group[data-inline-type="stacked"] .aligned label { - width: 100%; - } - - .inline-group[data-inline-type="stacked"] div.add-row { - margin-top: 15px; - border: 1px solid var(--hairline-color); - border-radius: 4px; - } - - .inline-group div.add-row, - .inline-group .tabular tr.add-row td { - padding: 0; - } - - .inline-group div.add-row a, - .inline-group .tabular tr.add-row td a { - display: block; - padding: 8px 10px 8px 26px; - background-position: 8px 9px; - } - - /* Submit row */ - - .submit-row { - padding: 10px; - margin: 0 0 15px; - flex-direction: column; - gap: 8px; - } - - .submit-row input, .submit-row input.default, .submit-row a { - text-align: center; - } - - .submit-row a.closelink { - padding: 10px 0; - text-align: center; - } - - .submit-row a.deletelink { - margin: 0; - } - - /* Messages */ - - ul.messagelist li { - padding-left: 40px; - background-position: 15px 12px; - } - - ul.messagelist li.error { - background-position: 15px 12px; - } - - ul.messagelist li.warning { - background-position: 15px 14px; - } - - /* Paginator */ - - .paginator .this-page, .paginator a:link, .paginator a:visited { - padding: 4px 10px; - } - - /* Login */ - - body.login { - padding: 0 15px; - } - - .login #container { - width: auto; - max-width: 480px; - margin: 50px auto; - } - - .login #header, - .login #content { - padding: 15px; - } - - .login #content-main { - float: none; - } - - .login .form-row { - padding: 0; - } - - .login .form-row + .form-row { - margin-top: 15px; - } - - .login .form-row label { - margin: 0 0 5px; - line-height: 1.2; - } - - .login .submit-row { - padding: 15px 0 0; - } - - .login br { - display: none; - } - - .login .submit-row input { - margin: 0; - text-transform: uppercase; - } - - .errornote { - margin: 0 0 20px; - padding: 8px 12px; - font-size: 0.8125rem; - } - - /* Calendar and clock */ - - .calendarbox, .clockbox { - position: fixed !important; - top: 50% !important; - left: 50% !important; - transform: translate(-50%, -50%); - margin: 0; - border: none; - overflow: visible; - } - - .calendarbox:before, .clockbox:before { - content: ''; - position: fixed; - top: 50%; - left: 50%; - width: 100vw; - height: 100vh; - background: rgba(0, 0, 0, 0.75); - transform: translate(-50%, -50%); - } - - .calendarbox > *, .clockbox > * { - position: relative; - z-index: 1; - } - - .calendarbox > div:first-child { - z-index: 2; - } - - .calendarbox .calendar, .clockbox h2 { - border-radius: 4px 4px 0 0; - overflow: hidden; - } - - .calendarbox .calendar-cancel, .clockbox .calendar-cancel { - border-radius: 0 0 4px 4px; - overflow: hidden; - } - - .calendar-shortcuts { - padding: 10px 0; - font-size: 0.75rem; - line-height: 0.75rem; - } - - .calendar-shortcuts a { - margin: 0 4px; - } - - .timelist a { - background: var(--body-bg); - padding: 4px; - } - - .calendar-cancel { - padding: 8px 10px; - } - - .clockbox h2 { - padding: 8px 15px; - } - - .calendar caption { - padding: 10px; - } - - .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { - z-index: 1; - top: 10px; - } - - /* History */ - - table#change-history tbody th, table#change-history tbody td { - font-size: 0.8125rem; - word-break: break-word; - } - - table#change-history tbody th { - width: auto; - } - - /* Docs */ - - table.model tbody th, table.model tbody td { - font-size: 0.8125rem; - word-break: break-word; - } -} diff --git a/staticfiles/admin/css/responsive_rtl.css b/staticfiles/admin/css/responsive_rtl.css deleted file mode 100644 index 5e8f5c5..0000000 --- a/staticfiles/admin/css/responsive_rtl.css +++ /dev/null @@ -1,89 +0,0 @@ -/* TABLETS */ - -@media (max-width: 1024px) { - [dir="rtl"] .colMS { - margin-right: 0; - } - - [dir="rtl"] #user-tools { - text-align: right; - } - - [dir="rtl"] #changelist .actions label { - padding-left: 10px; - padding-right: 0; - } - - [dir="rtl"] #changelist .actions select { - margin-left: 0; - margin-right: 15px; - } - - [dir="rtl"] .change-list .filtered .results, - [dir="rtl"] .change-list .filtered .paginator, - [dir="rtl"] .filtered #toolbar, - [dir="rtl"] .filtered div.xfull, - [dir="rtl"] .filtered .actions, - [dir="rtl"] #changelist-filter { - margin-left: 0; - } - - [dir="rtl"] .inline-group div.add-row a, - [dir="rtl"] .inline-group .tabular tr.add-row td a { - padding: 8px 26px 8px 10px; - background-position: calc(100% - 8px) 9px; - } - - [dir="rtl"] .object-tools li { - float: right; - } - - [dir="rtl"] .object-tools li + li { - margin-left: 0; - margin-right: 15px; - } - - [dir="rtl"] .dashboard .module table td a { - padding-left: 0; - padding-right: 16px; - } -} - -/* MOBILE */ - -@media (max-width: 767px) { - [dir="rtl"] .aligned .related-lookup, - [dir="rtl"] .aligned .datetimeshortcuts { - margin-left: 0; - margin-right: 15px; - } - - [dir="rtl"] .aligned ul, - [dir="rtl"] form .aligned ul.errorlist { - margin-right: 0; - } - - [dir="rtl"] #changelist-filter { - margin-left: 0; - margin-right: 0; - } - [dir="rtl"] .aligned .vCheckboxLabel { - padding: 1px 5px 0 0; - } - - [dir="rtl"] .selector-remove { - background-position: 0 0; - } - - [dir="rtl"] :enabled.selector-remove:focus, :enabled.selector-remove:hover { - background-position: 0 -24px; - } - - [dir="rtl"] .selector-add { - background-position: 0 -48px; - } - - [dir="rtl"] :enabled.selector-add:focus, :enabled.selector-add:hover { - background-position: 0 -72px; - } -} diff --git a/staticfiles/admin/css/rtl.css b/staticfiles/admin/css/rtl.css deleted file mode 100644 index a2556d0..0000000 --- a/staticfiles/admin/css/rtl.css +++ /dev/null @@ -1,293 +0,0 @@ -/* GLOBAL */ - -th { - text-align: right; -} - -.module h2, .module caption { - text-align: right; -} - -.module ul, .module ol { - margin-left: 0; - margin-right: 1.5em; -} - -.viewlink, .addlink, .changelink, .hidelink { - padding-left: 0; - padding-right: 16px; - background-position: 100% 1px; -} - -.deletelink { - padding-left: 0; - padding-right: 16px; - background-position: 100% 1px; -} - -.object-tools { - float: left; -} - -thead th:first-child, -tfoot td:first-child { - border-left: none; -} - -/* LAYOUT */ - -#user-tools { - right: auto; - left: 0; - text-align: left; -} - -div.breadcrumbs { - text-align: right; -} - -#content-main { - float: right; -} - -#content-related { - float: left; - margin-left: -300px; - margin-right: auto; -} - -.colMS { - margin-left: 300px; - margin-right: 0; -} - -/* SORTABLE TABLES */ - -table thead th.sorted .sortoptions { - float: left; -} - -thead th.sorted .text { - padding-right: 0; - padding-left: 42px; -} - -/* dashboard styles */ - -.dashboard .module table td a { - padding-left: .6em; - padding-right: 16px; -} - -/* changelists styles */ - -.change-list .filtered table { - border-left: none; - border-right: 0px none; -} - -#changelist-filter { - border-left: none; - border-right: none; - margin-left: 0; - margin-right: 30px; -} - -#changelist-filter li.selected { - border-left: none; - padding-left: 10px; - margin-left: 0; - border-right: 5px solid var(--hairline-color); - padding-right: 10px; - margin-right: -15px; -} - -#changelist table tbody td:first-child, #changelist table tbody th:first-child { - border-right: none; - border-left: none; -} - -.paginator .end { - margin-left: 6px; - margin-right: 0; -} - -.paginator input { - margin-left: 0; - margin-right: auto; -} - -/* FORMS */ - -.aligned label { - padding: 0 0 3px 1em; -} - -.submit-row a.deletelink { - margin-left: 0; - margin-right: auto; -} - -.vDateField, .vTimeField { - margin-left: 2px; -} - -.aligned .form-row input { - margin-left: 5px; -} - -form .aligned ul { - margin-right: 163px; - padding-right: 10px; - margin-left: 0; - padding-left: 0; -} - -form ul.inline li { - float: right; - padding-right: 0; - padding-left: 7px; -} - -form .aligned p.help, -form .aligned div.help { - margin-left: 0; - margin-right: 160px; - padding-right: 10px; -} - -form div.help ul, -form .aligned .checkbox-row + .help, -form .aligned p.date div.help.timezonewarning, -form .aligned p.datetime div.help.timezonewarning, -form .aligned p.time div.help.timezonewarning { - margin-right: 0; - padding-right: 0; -} - -form .wide p.help, -form .wide ul.errorlist, -form .wide div.help { - padding-left: 0; - padding-right: 50px; -} - -.submit-row { - text-align: right; -} - -fieldset .fieldBox { - margin-left: 20px; - margin-right: 0; -} - -.errorlist li { - background-position: 100% 12px; - padding: 0; -} - -.errornote { - background-position: 100% 12px; - padding: 10px 12px; -} - -/* WIDGETS */ - -.calendarnav-previous { - top: 0; - left: auto; - right: 10px; - background: url(../img/calendar-icons.svg) 0 -15px no-repeat; -} - -.calendarnav-next { - top: 0; - right: auto; - left: 10px; - background: url(../img/calendar-icons.svg) 0 0 no-repeat; -} - -.calendar caption, .calendarbox h2 { - text-align: center; -} - -.selector { - float: right; -} - -.selector .selector-filter { - text-align: right; -} - -.selector-add { - background: url(../img/selector-icons.svg) 0 -96px no-repeat; - background-size: 24px auto; -} - -:enabled.selector-add:focus, :enabled.selector-add:hover { - background-position: 0 -120px; -} - -.selector-remove { - background: url(../img/selector-icons.svg) 0 -144px no-repeat; - background-size: 24px auto; -} - -:enabled.selector-remove:focus, :enabled.selector-remove:hover { - background-position: 0 -168px; -} - -.selector-chooseall { - background: url(../img/selector-icons.svg) right -128px no-repeat; -} - -:enabled.selector-chooseall:focus, :enabled.selector-chooseall:hover { - background-position: 100% -144px; -} - -.selector-clearall { - background: url(../img/selector-icons.svg) 0 -160px no-repeat; -} - -:enabled.selector-clearall:focus, :enabled.selector-clearall:hover { - background-position: 0 -176px; -} - -.inline-deletelink { - float: left; -} - -form .form-row p.datetime { - overflow: hidden; -} - -.related-widget-wrapper { - float: right; -} - -/* MISC */ - -.inline-related h2, .inline-group h2 { - text-align: right -} - -.inline-related h3 span.delete { - padding-right: 20px; - padding-left: inherit; - left: 10px; - right: inherit; - float:left; -} - -.inline-related h3 span.delete label { - margin-left: inherit; - margin-right: 2px; -} - -.inline-group .tabular td.original p { - right: 0; -} - -.selector .selector-chooser { - margin: 0; -} diff --git a/staticfiles/admin/css/unusable_password_field.css b/staticfiles/admin/css/unusable_password_field.css deleted file mode 100644 index d46eb03..0000000 --- a/staticfiles/admin/css/unusable_password_field.css +++ /dev/null @@ -1,19 +0,0 @@ -/* Hide warnings fields if usable password is selected */ -form:has(#id_usable_password input[value="true"]:checked) .messagelist { - display: none; -} - -/* Hide password fields if unusable password is selected */ -form:has(#id_usable_password input[value="false"]:checked) .field-password1, -form:has(#id_usable_password input[value="false"]:checked) .field-password2 { - display: none; -} - -/* Select appropriate submit button */ -form:has(#id_usable_password input[value="true"]:checked) input[type="submit"].unset-password { - display: none; -} - -form:has(#id_usable_password input[value="false"]:checked) input[type="submit"].set-password { - display: none; -} diff --git a/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md b/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md deleted file mode 100644 index 8cb8a2b..0000000 --- a/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/staticfiles/admin/css/vendor/select2/select2.css b/staticfiles/admin/css/vendor/select2/select2.css deleted file mode 100644 index 750b320..0000000 --- a/staticfiles/admin/css/vendor/select2/select2.css +++ /dev/null @@ -1,481 +0,0 @@ -.select2-container { - box-sizing: border-box; - display: inline-block; - margin: 0; - position: relative; - vertical-align: middle; } - .select2-container .select2-selection--single { - box-sizing: border-box; - cursor: pointer; - display: block; - height: 28px; - user-select: none; - -webkit-user-select: none; } - .select2-container .select2-selection--single .select2-selection__rendered { - display: block; - padding-left: 8px; - padding-right: 20px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - .select2-container .select2-selection--single .select2-selection__clear { - position: relative; } - .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { - padding-right: 8px; - padding-left: 20px; } - .select2-container .select2-selection--multiple { - box-sizing: border-box; - cursor: pointer; - display: block; - min-height: 32px; - user-select: none; - -webkit-user-select: none; } - .select2-container .select2-selection--multiple .select2-selection__rendered { - display: inline-block; - overflow: hidden; - padding-left: 8px; - text-overflow: ellipsis; - white-space: nowrap; } - .select2-container .select2-search--inline { - float: left; } - .select2-container .select2-search--inline .select2-search__field { - box-sizing: border-box; - border: none; - font-size: 100%; - margin-top: 5px; - padding: 0; } - .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { - -webkit-appearance: none; } - -.select2-dropdown { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - box-sizing: border-box; - display: block; - position: absolute; - left: -100000px; - width: 100%; - z-index: 1051; } - -.select2-results { - display: block; } - -.select2-results__options { - list-style: none; - margin: 0; - padding: 0; } - -.select2-results__option { - padding: 6px; - user-select: none; - -webkit-user-select: none; } - .select2-results__option[aria-selected] { - cursor: pointer; } - -.select2-container--open .select2-dropdown { - left: 0; } - -.select2-container--open .select2-dropdown--above { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--open .select2-dropdown--below { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-search--dropdown { - display: block; - padding: 4px; } - .select2-search--dropdown .select2-search__field { - padding: 4px; - width: 100%; - box-sizing: border-box; } - .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { - -webkit-appearance: none; } - .select2-search--dropdown.select2-search--hide { - display: none; } - -.select2-close-mask { - border: 0; - margin: 0; - padding: 0; - display: block; - position: fixed; - left: 0; - top: 0; - min-height: 100%; - min-width: 100%; - height: auto; - width: auto; - opacity: 0; - z-index: 99; - background-color: #fff; - filter: alpha(opacity=0); } - -.select2-hidden-accessible { - border: 0 !important; - clip: rect(0 0 0 0) !important; - -webkit-clip-path: inset(50%) !important; - clip-path: inset(50%) !important; - height: 1px !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - width: 1px !important; - white-space: nowrap !important; } - -.select2-container--default .select2-selection--single { - background-color: #fff; - border: 1px solid #aaa; - border-radius: 4px; } - .select2-container--default .select2-selection--single .select2-selection__rendered { - color: #444; - line-height: 28px; } - .select2-container--default .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; } - .select2-container--default .select2-selection--single .select2-selection__placeholder { - color: #999; } - .select2-container--default .select2-selection--single .select2-selection__arrow { - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; } - .select2-container--default .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; } - -.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; } - -.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { - left: 1px; - right: auto; } - -.select2-container--default.select2-container--disabled .select2-selection--single { - background-color: #eee; - cursor: default; } - .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { - display: none; } - -.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; } - -.select2-container--default .select2-selection--multiple { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - cursor: text; } - .select2-container--default .select2-selection--multiple .select2-selection__rendered { - box-sizing: border-box; - list-style: none; - margin: 0; - padding: 0 5px; - width: 100%; } - .select2-container--default .select2-selection--multiple .select2-selection__rendered li { - list-style: none; } - .select2-container--default .select2-selection--multiple .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - margin-top: 5px; - margin-right: 10px; - padding: 1px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice { - background-color: #e4e4e4; - border: 1px solid #aaa; - border-radius: 4px; - cursor: default; - float: left; - margin-right: 5px; - margin-top: 5px; - padding: 0 5px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - color: #999; - cursor: pointer; - display: inline-block; - font-weight: bold; - margin-right: 2px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #333; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { - float: right; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - margin-left: 5px; - margin-right: auto; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - margin-left: 2px; - margin-right: auto; } - -.select2-container--default.select2-container--focus .select2-selection--multiple { - border: solid black 1px; - outline: 0; } - -.select2-container--default.select2-container--disabled .select2-selection--multiple { - background-color: #eee; - cursor: default; } - -.select2-container--default.select2-container--disabled .select2-selection__choice__remove { - display: none; } - -.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--default .select2-search--dropdown .select2-search__field { - border: 1px solid #aaa; } - -.select2-container--default .select2-search--inline .select2-search__field { - background: transparent; - border: none; - outline: 0; - box-shadow: none; - -webkit-appearance: textfield; } - -.select2-container--default .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; } - -.select2-container--default .select2-results__option[role=group] { - padding: 0; } - -.select2-container--default .select2-results__option[aria-disabled=true] { - color: #999; } - -.select2-container--default .select2-results__option[aria-selected=true] { - background-color: #ddd; } - -.select2-container--default .select2-results__option .select2-results__option { - padding-left: 1em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__group { - padding-left: 0; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option { - margin-left: -1em; - padding-left: 2em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -2em; - padding-left: 3em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -3em; - padding-left: 4em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -4em; - padding-left: 5em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -5em; - padding-left: 6em; } - -.select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: #5897fb; - color: white; } - -.select2-container--default .select2-results__group { - cursor: default; - display: block; - padding: 6px; } - -.select2-container--classic .select2-selection--single { - background-color: #f7f7f7; - border: 1px solid #aaa; - border-radius: 4px; - outline: 0; - background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); - background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); - background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } - .select2-container--classic .select2-selection--single:focus { - border: 1px solid #5897fb; } - .select2-container--classic .select2-selection--single .select2-selection__rendered { - color: #444; - line-height: 28px; } - .select2-container--classic .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - margin-right: 10px; } - .select2-container--classic .select2-selection--single .select2-selection__placeholder { - color: #999; } - .select2-container--classic .select2-selection--single .select2-selection__arrow { - background-color: #ddd; - border: none; - border-left: 1px solid #aaa; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; - background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } - .select2-container--classic .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; } - -.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; } - -.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { - border: none; - border-right: 1px solid #aaa; - border-radius: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - left: 1px; - right: auto; } - -.select2-container--classic.select2-container--open .select2-selection--single { - border: 1px solid #5897fb; } - .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { - background: transparent; - border: none; } - .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; } - -.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; - background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); - background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); - background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } - -.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } - -.select2-container--classic .select2-selection--multiple { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - cursor: text; - outline: 0; } - .select2-container--classic .select2-selection--multiple:focus { - border: 1px solid #5897fb; } - .select2-container--classic .select2-selection--multiple .select2-selection__rendered { - list-style: none; - margin: 0; - padding: 0 5px; } - .select2-container--classic .select2-selection--multiple .select2-selection__clear { - display: none; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice { - background-color: #e4e4e4; - border: 1px solid #aaa; - border-radius: 4px; - cursor: default; - float: left; - margin-right: 5px; - margin-top: 5px; - padding: 0 5px; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { - color: #888; - cursor: pointer; - display: inline-block; - font-weight: bold; - margin-right: 2px; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #555; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - float: right; - margin-left: 5px; - margin-right: auto; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - margin-left: 2px; - margin-right: auto; } - -.select2-container--classic.select2-container--open .select2-selection--multiple { - border: 1px solid #5897fb; } - -.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--classic .select2-search--dropdown .select2-search__field { - border: 1px solid #aaa; - outline: 0; } - -.select2-container--classic .select2-search--inline .select2-search__field { - outline: 0; - box-shadow: none; } - -.select2-container--classic .select2-dropdown { - background-color: white; - border: 1px solid transparent; } - -.select2-container--classic .select2-dropdown--above { - border-bottom: none; } - -.select2-container--classic .select2-dropdown--below { - border-top: none; } - -.select2-container--classic .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; } - -.select2-container--classic .select2-results__option[role=group] { - padding: 0; } - -.select2-container--classic .select2-results__option[aria-disabled=true] { - color: grey; } - -.select2-container--classic .select2-results__option--highlighted[aria-selected] { - background-color: #3875d7; - color: white; } - -.select2-container--classic .select2-results__group { - cursor: default; - display: block; - padding: 6px; } - -.select2-container--classic.select2-container--open .select2-dropdown { - border-color: #5897fb; } diff --git a/staticfiles/admin/css/vendor/select2/select2.min.css b/staticfiles/admin/css/vendor/select2/select2.min.css deleted file mode 100644 index 7c18ad5..0000000 --- a/staticfiles/admin/css/vendor/select2/select2.min.css +++ /dev/null @@ -1 +0,0 @@ -.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/staticfiles/admin/css/widgets.css b/staticfiles/admin/css/widgets.css deleted file mode 100644 index a5f615a..0000000 --- a/staticfiles/admin/css/widgets.css +++ /dev/null @@ -1,613 +0,0 @@ -/* SELECTOR (FILTER INTERFACE) */ - -.selector { - display: flex; - flex: 1; - gap: 0 10px; -} - -.selector select { - height: 17.2em; - flex: 1 0 auto; - overflow: scroll; - width: 100%; -} - -.selector-available, .selector-chosen { - display: flex; - flex-direction: column; - flex: 1 1; -} - -.selector-available-title, .selector-chosen-title { - border: 1px solid var(--border-color); - border-radius: 4px 4px 0 0; -} - -.selector .helptext { - font-size: 0.6875rem; -} - -.selector-chosen .list-footer-display { - border: 1px solid var(--border-color); - border-top: none; - border-radius: 0 0 4px 4px; - margin: 0 0 10px; - padding: 8px; - text-align: center; - background: var(--primary); - color: var(--header-link-color); - cursor: pointer; -} -.selector-chosen .list-footer-display__clear { - color: var(--breadcrumbs-fg); -} - -.selector-chosen-title { - background: var(--secondary); - color: var(--header-link-color); - padding: 8px; -} - -.selector-chosen-title label { - color: var(--header-link-color); - width: 100%; -} - -.selector-available-title { - background: var(--darkened-bg); - color: var(--body-quiet-color); - padding: 8px; -} - -.selector-available-title label { - width: 100%; -} - -.selector .selector-filter { - border: 1px solid var(--border-color); - border-width: 0 1px; - padding: 8px; - color: var(--body-quiet-color); - font-size: 0.625rem; - margin: 0; - text-align: left; - display: flex; - gap: 8px; -} - -.selector .selector-filter label, -.inline-group .aligned .selector .selector-filter label { - float: left; - margin: 7px 0 0; - width: 18px; - height: 18px; - padding: 0; - overflow: hidden; - line-height: 1; - min-width: auto; -} - -.selector-filter input { - flex-grow: 1; -} - -.selector ul.selector-chooser { - align-self: center; - width: 30px; - background-color: var(--selected-bg); - border-radius: 10px; - margin: 0; - padding: 0; - transform: translateY(-17px); -} - -.selector-chooser li { - margin: 0; - padding: 3px; - list-style-type: none; -} - -.selector select { - padding: 0 10px; - margin: 0 0 10px; - border-radius: 0 0 4px 4px; -} -.selector .selector-chosen--with-filtered select { - margin: 0; - border-radius: 0; - height: 14em; -} - -.selector .selector-chosen:not(.selector-chosen--with-filtered) .list-footer-display { - display: none; -} - -.selector-add, .selector-remove { - width: 24px; - height: 24px; - display: block; - text-indent: -3000px; - overflow: hidden; - cursor: default; - opacity: 0.55; - border: none; -} - -:enabled.selector-add, :enabled.selector-remove { - opacity: 1; -} - -:enabled.selector-add:hover, :enabled.selector-remove:hover { - cursor: pointer; -} - -.selector-add { - background: url(../img/selector-icons.svg) 0 -144px no-repeat; - background-size: 24px auto; -} - -:enabled.selector-add:focus, :enabled.selector-add:hover { - background-position: 0 -168px; -} - -.selector-remove { - background: url(../img/selector-icons.svg) 0 -96px no-repeat; - background-size: 24px auto; -} - -:enabled.selector-remove:focus, :enabled.selector-remove:hover { - background-position: 0 -120px; -} - -.selector-chooseall, .selector-clearall { - display: inline-block; - height: 16px; - text-align: left; - margin: 0 auto; - overflow: hidden; - font-weight: bold; - line-height: 16px; - color: var(--body-quiet-color); - text-decoration: none; - opacity: 0.55; - border: none; -} - -:enabled.selector-chooseall:focus, :enabled.selector-clearall:focus, -:enabled.selector-chooseall:hover, :enabled.selector-clearall:hover { - color: var(--link-fg); -} - -:enabled.selector-chooseall, :enabled.selector-clearall { - opacity: 1; -} - -:enabled.selector-chooseall:hover, :enabled.selector-clearall:hover { - cursor: pointer; -} - -.selector-chooseall { - padding: 0 18px 0 0; - background: url(../img/selector-icons.svg) right -160px no-repeat; - cursor: default; -} - -:enabled.selector-chooseall:focus, :enabled.selector-chooseall:hover { - background-position: 100% -176px; -} - -.selector-clearall { - padding: 0 0 0 18px; - background: url(../img/selector-icons.svg) 0 -128px no-repeat; - cursor: default; -} - -:enabled.selector-clearall:focus, :enabled.selector-clearall:hover { - background-position: 0 -144px; -} - -/* STACKED SELECTORS */ - -.stacked { - float: left; - width: 490px; - display: block; -} - -.stacked select { - width: 480px; - height: 10.1em; -} - -.stacked .selector-available, .stacked .selector-chosen { - width: 480px; -} - -.stacked .selector-available { - margin-bottom: 0; -} - -.stacked .selector-available input { - width: 422px; -} - -.stacked ul.selector-chooser { - display: flex; - height: 30px; - width: 64px; - margin: 0 0 10px 40%; - background-color: #eee; - border-radius: 10px; - transform: none; -} - -.stacked .selector-chooser li { - float: left; - padding: 3px 3px 3px 5px; -} - -.stacked .selector-chooseall, .stacked .selector-clearall { - display: none; -} - -.stacked .selector-add { - background: url(../img/selector-icons.svg) 0 -48px no-repeat; - background-size: 24px auto; - cursor: default; -} - -.stacked :enabled.selector-add { - background-position: 0 -48px; - cursor: pointer; -} - -.stacked :enabled.selector-add:focus, .stacked :enabled.selector-add:hover { - background-position: 0 -72px; - cursor: pointer; -} - -.stacked .selector-remove { - background: url(../img/selector-icons.svg) 0 0 no-repeat; - background-size: 24px auto; - cursor: default; -} - -.stacked :enabled.selector-remove { - background-position: 0 0px; - cursor: pointer; -} - -.stacked :enabled.selector-remove:focus, .stacked :enabled.selector-remove:hover { - background-position: 0 -24px; - cursor: pointer; -} - -.selector .help-icon { - background: url(../img/icon-unknown.svg) 0 0 no-repeat; - display: inline-block; - vertical-align: middle; - margin: -2px 0 0 2px; - width: 13px; - height: 13px; -} - -.selector .selector-chosen .help-icon { - background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat; -} - -.selector .search-label-icon { - background: url(../img/search.svg) 0 0 no-repeat; - display: inline-block; - height: 1.125rem; - width: 1.125rem; -} - -/* DATE AND TIME */ - -p.datetime { - line-height: 20px; - margin: 0; - padding: 0; - color: var(--body-quiet-color); - font-weight: bold; -} - -.datetime span { - white-space: nowrap; - font-weight: normal; - font-size: 0.6875rem; - color: var(--body-quiet-color); -} - -.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { - margin-left: 5px; - margin-bottom: 4px; -} - -table p.datetime { - font-size: 0.6875rem; - margin-left: 0; - padding-left: 0; -} - -.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon { - position: relative; - display: inline-block; - vertical-align: middle; - height: 24px; - width: 24px; - overflow: hidden; -} - -.datetimeshortcuts .clock-icon { - background: url(../img/icon-clock.svg) 0 0 no-repeat; - background-size: 24px auto; -} - -.datetimeshortcuts a:focus .clock-icon, -.datetimeshortcuts a:hover .clock-icon { - background-position: 0 -24px; -} - -.datetimeshortcuts .date-icon { - background: url(../img/icon-calendar.svg) 0 0 no-repeat; - background-size: 24px auto; - top: -1px; -} - -.datetimeshortcuts a:focus .date-icon, -.datetimeshortcuts a:hover .date-icon { - background-position: 0 -24px; -} - -.timezonewarning { - font-size: 0.6875rem; - color: var(--body-quiet-color); -} - -/* URL */ - -p.url { - line-height: 20px; - margin: 0; - padding: 0; - color: var(--body-quiet-color); - font-size: 0.6875rem; - font-weight: bold; -} - -.url a { - font-weight: normal; -} - -/* FILE UPLOADS */ - -p.file-upload { - line-height: 20px; - margin: 0; - padding: 0; - color: var(--body-quiet-color); - font-size: 0.6875rem; - font-weight: bold; -} - -.file-upload a { - font-weight: normal; -} - -.file-upload .deletelink { - margin-left: 5px; -} - -span.clearable-file-input label { - color: var(--body-fg); - font-size: 0.6875rem; - display: inline; - float: none; -} - -/* CALENDARS & CLOCKS */ - -.calendarbox, .clockbox { - margin: 5px auto; - font-size: 0.75rem; - width: 19em; - text-align: center; - background: var(--body-bg); - color: var(--body-fg); - border: 1px solid var(--hairline-color); - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); - overflow: hidden; - position: relative; -} - -.clockbox { - width: auto; -} - -.calendar { - margin: 0; - padding: 0; -} - -.calendar table { - margin: 0; - padding: 0; - border-collapse: collapse; - background: white; - width: 100%; -} - -.calendar caption, .calendarbox h2 { - margin: 0; - text-align: center; - border-top: none; - font-weight: 700; - font-size: 0.75rem; - color: #333; - background: var(--accent); -} - -.calendar th { - padding: 8px 5px; - background: var(--darkened-bg); - border-bottom: 1px solid var(--border-color); - font-weight: 400; - font-size: 0.75rem; - text-align: center; - color: var(--body-quiet-color); -} - -.calendar td { - font-weight: 400; - font-size: 0.75rem; - text-align: center; - padding: 0; - border-top: 1px solid var(--hairline-color); - border-bottom: none; -} - -.calendar td.selected a { - background: var(--secondary); - color: var(--button-fg); -} - -.calendar td.nonday { - background: var(--darkened-bg); -} - -.calendar td.today a { - font-weight: 700; -} - -.calendar td a, .timelist a { - display: block; - font-weight: 400; - padding: 6px; - text-decoration: none; - color: var(--body-quiet-color); -} - -.calendar td a:focus, .timelist a:focus, -.calendar td a:hover, .timelist a:hover { - background: var(--primary); - color: white; -} - -.calendar td a:active, .timelist a:active { - background: var(--header-bg); - color: white; -} - -.calendarnav { - font-size: 0.625rem; - text-align: center; - color: #ccc; - margin: 0; - padding: 1px 3px; -} - -.calendarnav a:link, #calendarnav a:visited, -#calendarnav a:focus, #calendarnav a:hover { - color: var(--body-quiet-color); -} - -.calendar-shortcuts { - background: var(--body-bg); - color: var(--body-quiet-color); - font-size: 0.6875rem; - line-height: 0.6875rem; - border-top: 1px solid var(--hairline-color); - padding: 8px 0; -} - -.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { - display: block; - position: absolute; - top: 8px; - width: 15px; - height: 15px; - text-indent: -9999px; - padding: 0; -} - -.calendarnav-previous { - left: 10px; - background: url(../img/calendar-icons.svg) 0 0 no-repeat; -} - -.calendarnav-next { - right: 10px; - background: url(../img/calendar-icons.svg) 0 -15px no-repeat; -} - -.calendar-cancel { - margin: 0; - padding: 4px 0; - font-size: 0.75rem; - background: var(--close-button-bg); - border-top: 1px solid var(--border-color); - color: var(--button-fg); -} - -.calendar-cancel:focus, .calendar-cancel:hover { - background: var(--close-button-hover-bg); -} - -.calendar-cancel a { - color: var(--button-fg); - display: block; -} - -ul.timelist, .timelist li { - list-style-type: none; - margin: 0; - padding: 0; -} - -.timelist a { - padding: 2px; -} - -/* EDIT INLINE */ - -.inline-deletelink { - float: right; - text-indent: -9999px; - background: url(../img/inline-delete.svg) 0 0 no-repeat; - width: 1.5rem; - height: 1.5rem; - border: 0px none; - margin-bottom: .25rem; -} - -.inline-deletelink:focus, .inline-deletelink:hover { - cursor: pointer; -} - -/* RELATED WIDGET WRAPPER */ -.related-widget-wrapper { - display: flex; - gap: 0 10px; - flex-grow: 1; - flex-wrap: wrap; - margin-bottom: 5px; -} - -.related-widget-wrapper-link { - opacity: .6; - filter: grayscale(1); -} - -.related-widget-wrapper-link:link { - opacity: 1; - filter: grayscale(0); -} - -/* GIS MAPS */ -.dj_map { - width: 600px; - height: 400px; -} diff --git a/staticfiles/admin/img/LICENSE b/staticfiles/admin/img/LICENSE deleted file mode 100644 index a4faaa1..0000000 --- a/staticfiles/admin/img/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Code Charm Ltd - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/staticfiles/admin/img/README.txt b/staticfiles/admin/img/README.txt deleted file mode 100644 index bf81f35..0000000 --- a/staticfiles/admin/img/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -All icons are taken from Font Awesome (https://fontawesome.com/) project. -The Font Awesome font is licensed under the SIL OFL 1.1: -- https://scripts.sil.org/OFL - -SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG -Font-Awesome-SVG-PNG is licensed under the MIT license (see file license -in current folder). diff --git a/staticfiles/admin/img/calendar-icons.svg b/staticfiles/admin/img/calendar-icons.svg deleted file mode 100644 index 04c0274..0000000 --- a/staticfiles/admin/img/calendar-icons.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - diff --git a/staticfiles/admin/img/gis/move_vertex_off.svg b/staticfiles/admin/img/gis/move_vertex_off.svg deleted file mode 100644 index 228854f..0000000 --- a/staticfiles/admin/img/gis/move_vertex_off.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/staticfiles/admin/img/gis/move_vertex_on.svg b/staticfiles/admin/img/gis/move_vertex_on.svg deleted file mode 100644 index 96b87fd..0000000 --- a/staticfiles/admin/img/gis/move_vertex_on.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/staticfiles/admin/img/icon-addlink.svg b/staticfiles/admin/img/icon-addlink.svg deleted file mode 100644 index 8d5c6a3..0000000 --- a/staticfiles/admin/img/icon-addlink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-alert.svg b/staticfiles/admin/img/icon-alert.svg deleted file mode 100644 index e51ea83..0000000 --- a/staticfiles/admin/img/icon-alert.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-calendar.svg b/staticfiles/admin/img/icon-calendar.svg deleted file mode 100644 index 97910a9..0000000 --- a/staticfiles/admin/img/icon-calendar.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/staticfiles/admin/img/icon-changelink.svg b/staticfiles/admin/img/icon-changelink.svg deleted file mode 100644 index 592b093..0000000 --- a/staticfiles/admin/img/icon-changelink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-clock.svg b/staticfiles/admin/img/icon-clock.svg deleted file mode 100644 index bf9985d..0000000 --- a/staticfiles/admin/img/icon-clock.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/staticfiles/admin/img/icon-deletelink.svg b/staticfiles/admin/img/icon-deletelink.svg deleted file mode 100644 index 4059b15..0000000 --- a/staticfiles/admin/img/icon-deletelink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-hidelink.svg b/staticfiles/admin/img/icon-hidelink.svg deleted file mode 100644 index 2a8b404..0000000 --- a/staticfiles/admin/img/icon-hidelink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-no.svg b/staticfiles/admin/img/icon-no.svg deleted file mode 100644 index 2e0d383..0000000 --- a/staticfiles/admin/img/icon-no.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-unknown-alt.svg b/staticfiles/admin/img/icon-unknown-alt.svg deleted file mode 100644 index 1c6b99f..0000000 --- a/staticfiles/admin/img/icon-unknown-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-unknown.svg b/staticfiles/admin/img/icon-unknown.svg deleted file mode 100644 index 50b4f97..0000000 --- a/staticfiles/admin/img/icon-unknown.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-viewlink.svg b/staticfiles/admin/img/icon-viewlink.svg deleted file mode 100644 index a1ca1d3..0000000 --- a/staticfiles/admin/img/icon-viewlink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/icon-yes.svg b/staticfiles/admin/img/icon-yes.svg deleted file mode 100644 index 5883d87..0000000 --- a/staticfiles/admin/img/icon-yes.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/inline-delete.svg b/staticfiles/admin/img/inline-delete.svg deleted file mode 100644 index 8751150..0000000 --- a/staticfiles/admin/img/inline-delete.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/search.svg b/staticfiles/admin/img/search.svg deleted file mode 100644 index c8c69b2..0000000 --- a/staticfiles/admin/img/search.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/selector-icons.svg b/staticfiles/admin/img/selector-icons.svg deleted file mode 100644 index 926b8e2..0000000 --- a/staticfiles/admin/img/selector-icons.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/staticfiles/admin/img/sorting-icons.svg b/staticfiles/admin/img/sorting-icons.svg deleted file mode 100644 index 7c31ec9..0000000 --- a/staticfiles/admin/img/sorting-icons.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/staticfiles/admin/img/tooltag-add.svg b/staticfiles/admin/img/tooltag-add.svg deleted file mode 100644 index 1ca64ae..0000000 --- a/staticfiles/admin/img/tooltag-add.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/img/tooltag-arrowright.svg b/staticfiles/admin/img/tooltag-arrowright.svg deleted file mode 100644 index b664d61..0000000 --- a/staticfiles/admin/img/tooltag-arrowright.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/staticfiles/admin/js/SelectBox.js b/staticfiles/admin/js/SelectBox.js deleted file mode 100644 index 3db4ec7..0000000 --- a/staticfiles/admin/js/SelectBox.js +++ /dev/null @@ -1,116 +0,0 @@ -'use strict'; -{ - const SelectBox = { - cache: {}, - init: function(id) { - const box = document.getElementById(id); - SelectBox.cache[id] = []; - const cache = SelectBox.cache[id]; - for (const node of box.options) { - cache.push({value: node.value, text: node.text, displayed: 1}); - } - }, - redisplay: function(id) { - // Repopulate HTML select box from cache - const box = document.getElementById(id); - const scroll_value_from_top = box.scrollTop; - box.innerHTML = ''; - for (const node of SelectBox.cache[id]) { - if (node.displayed) { - const new_option = new Option(node.text, node.value, false, false); - // Shows a tooltip when hovering over the option - new_option.title = node.text; - box.appendChild(new_option); - } - } - box.scrollTop = scroll_value_from_top; - }, - filter: function(id, text) { - // Redisplay the HTML select box, displaying only the choices containing ALL - // the words in text. (It's an AND search.) - const tokens = text.toLowerCase().split(/\s+/); - for (const node of SelectBox.cache[id]) { - node.displayed = 1; - const node_text = node.text.toLowerCase(); - for (const token of tokens) { - if (!node_text.includes(token)) { - node.displayed = 0; - break; // Once the first token isn't found we're done - } - } - } - SelectBox.redisplay(id); - }, - get_hidden_node_count(id) { - const cache = SelectBox.cache[id] || []; - return cache.filter(node => node.displayed === 0).length; - }, - delete_from_cache: function(id, value) { - let delete_index = null; - const cache = SelectBox.cache[id]; - for (const [i, node] of cache.entries()) { - if (node.value === value) { - delete_index = i; - break; - } - } - cache.splice(delete_index, 1); - }, - add_to_cache: function(id, option) { - SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); - }, - cache_contains: function(id, value) { - // Check if an item is contained in the cache - for (const node of SelectBox.cache[id]) { - if (node.value === value) { - return true; - } - } - return false; - }, - move: function(from, to) { - const from_box = document.getElementById(from); - for (const option of from_box.options) { - const option_value = option.value; - if (option.selected && SelectBox.cache_contains(from, option_value)) { - SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); - SelectBox.delete_from_cache(from, option_value); - } - } - SelectBox.redisplay(from); - SelectBox.redisplay(to); - }, - move_all: function(from, to) { - const from_box = document.getElementById(from); - for (const option of from_box.options) { - const option_value = option.value; - if (SelectBox.cache_contains(from, option_value)) { - SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); - SelectBox.delete_from_cache(from, option_value); - } - } - SelectBox.redisplay(from); - SelectBox.redisplay(to); - }, - sort: function(id) { - SelectBox.cache[id].sort(function(a, b) { - a = a.text.toLowerCase(); - b = b.text.toLowerCase(); - if (a > b) { - return 1; - } - if (a < b) { - return -1; - } - return 0; - } ); - }, - select_all: function(id) { - const box = document.getElementById(id); - for (const option of box.options) { - option.selected = true; - } - } - }; - window.SelectBox = SelectBox; -} diff --git a/staticfiles/admin/js/SelectFilter2.js b/staticfiles/admin/js/SelectFilter2.js deleted file mode 100644 index 970b511..0000000 --- a/staticfiles/admin/js/SelectFilter2.js +++ /dev/null @@ -1,311 +0,0 @@ -/*global SelectBox, gettext, ngettext, interpolate, quickElement, SelectFilter*/ -/* -SelectFilter2 - Turns a multiple-select box into a filter interface. - -Requires core.js and SelectBox.js. -*/ -'use strict'; -{ - window.SelectFilter = { - init: function(field_id, field_name, is_stacked) { - if (field_id.match(/__prefix__/)) { - // Don't initialize on empty forms. - return; - } - const from_box = document.getElementById(field_id); - from_box.id += '_from'; // change its ID - from_box.className = 'filtered'; - from_box.setAttribute('aria-labelledby', field_id + '_from_title'); - - for (const p of from_box.parentNode.getElementsByTagName('p')) { - if (p.classList.contains("info")) { - // Remove

    , because it just gets in the way. - from_box.parentNode.removeChild(p); - } else if (p.classList.contains("help")) { - // Move help text up to the top so it isn't below the select - // boxes or wrapped off on the side to the right of the add - // button: - from_box.parentNode.insertBefore(p, from_box.parentNode.firstChild); - } - } - - //

    or
    - const selector_div = quickElement('div', from_box.parentNode); - // Make sure the selector div is at the beginning so that the - // add link would be displayed to the right of the widget. - from_box.parentNode.prepend(selector_div); - selector_div.className = is_stacked ? 'selector stacked' : 'selector'; - - //
    - const selector_available = quickElement('div', selector_div); - selector_available.className = 'selector-available'; - const selector_available_title = quickElement('div', selector_available); - selector_available_title.id = field_id + '_from_title'; - selector_available_title.className = 'selector-available-title'; - quickElement('label', selector_available_title, interpolate(gettext('Available %s') + ' ', [field_name]), 'for', field_id + '_from'); - quickElement( - 'p', - selector_available_title, - interpolate(gettext('Choose %s by selecting them and then select the "Choose" arrow button.'), [field_name]), - 'class', 'helptext' - ); - - const filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); - filter_p.className = 'selector-filter'; - - const search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input'); - - quickElement( - 'span', search_filter_label, '', - 'class', 'help-tooltip search-label-icon', - 'aria-label', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]) - ); - - filter_p.appendChild(document.createTextNode(' ')); - - const filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); - filter_input.id = field_id + '_input'; - - selector_available.appendChild(from_box); - const choose_all = quickElement( - 'button', - selector_available, - interpolate(gettext('Choose all %s'), [field_name]), - 'id', field_id + '_add_all', - 'class', 'selector-chooseall', - 'type', 'button' - ); - - //
      - const selector_chooser = quickElement('ul', selector_div); - selector_chooser.className = 'selector-chooser'; - const add_button = quickElement( - 'button', - quickElement('li', selector_chooser), - interpolate(gettext('Choose selected %s'), [field_name]), - 'id', field_id + '_add', - 'class', 'selector-add', - 'type', 'button' - ); - const remove_button = quickElement( - 'button', - quickElement('li', selector_chooser), - interpolate(gettext('Remove selected %s'), [field_name]), - 'id', field_id + '_remove', - 'class', 'selector-remove', - 'type', 'button' - ); - - //
      - const selector_chosen = quickElement('div', selector_div, '', 'id', field_id + '_selector_chosen'); - selector_chosen.className = 'selector-chosen'; - const selector_chosen_title = quickElement('div', selector_chosen); - selector_chosen_title.className = 'selector-chosen-title'; - selector_chosen_title.id = field_id + '_to_title'; - quickElement('label', selector_chosen_title, interpolate(gettext('Chosen %s') + ' ', [field_name]), 'for', field_id + '_to'); - quickElement( - 'p', - selector_chosen_title, - interpolate(gettext('Remove %s by selecting them and then select the "Remove" arrow button.'), [field_name]), - 'class', 'helptext' - ); - - const filter_selected_p = quickElement('p', selector_chosen, '', 'id', field_id + '_filter_selected'); - filter_selected_p.className = 'selector-filter'; - - const search_filter_selected_label = quickElement('label', filter_selected_p, '', 'for', field_id + '_selected_input'); - - quickElement( - 'span', search_filter_selected_label, '', - 'class', 'help-tooltip search-label-icon', - 'aria-label', interpolate(gettext("Type into this box to filter down the list of selected %s."), [field_name]) - ); - - filter_selected_p.appendChild(document.createTextNode(' ')); - - const filter_selected_input = quickElement('input', filter_selected_p, '', 'type', 'text', 'placeholder', gettext("Filter")); - filter_selected_input.id = field_id + '_selected_input'; - - quickElement( - 'select', - selector_chosen, - '', - 'id', field_id + '_to', - 'multiple', '', - 'size', from_box.size, - 'name', from_box.name, - 'aria-labelledby', field_id + '_to_title', - 'class', 'filtered' - ); - const warning_footer = quickElement('div', selector_chosen, '', 'class', 'list-footer-display'); - quickElement('span', warning_footer, '', 'id', field_id + '_list-footer-display-text'); - quickElement('span', warning_footer, ' ' + gettext('(click to clear)'), 'class', 'list-footer-display__clear'); - const clear_all = quickElement( - 'button', - selector_chosen, - interpolate(gettext('Remove all %s'), [field_name]), - 'id', field_id + '_remove_all', - 'class', 'selector-clearall', - 'type', 'button' - ); - - from_box.name = from_box.name + '_old'; - - // Set up the JavaScript event handlers for the select box filter interface - const move_selection = function(e, elem, move_func, from, to) { - if (!elem.hasAttribute('disabled')) { - move_func(from, to); - SelectFilter.refresh_icons(field_id); - SelectFilter.refresh_filtered_selects(field_id); - SelectFilter.refresh_filtered_warning(field_id); - } - e.preventDefault(); - }; - choose_all.addEventListener('click', function(e) { - move_selection(e, this, SelectBox.move_all, field_id + '_from', field_id + '_to'); - }); - add_button.addEventListener('click', function(e) { - move_selection(e, this, SelectBox.move, field_id + '_from', field_id + '_to'); - }); - remove_button.addEventListener('click', function(e) { - move_selection(e, this, SelectBox.move, field_id + '_to', field_id + '_from'); - }); - clear_all.addEventListener('click', function(e) { - move_selection(e, this, SelectBox.move_all, field_id + '_to', field_id + '_from'); - }); - warning_footer.addEventListener('click', function(e) { - filter_selected_input.value = ''; - SelectBox.filter(field_id + '_to', ''); - SelectFilter.refresh_filtered_warning(field_id); - SelectFilter.refresh_icons(field_id); - }); - filter_input.addEventListener('keypress', function(e) { - SelectFilter.filter_key_press(e, field_id, '_from', '_to'); - }); - filter_input.addEventListener('keyup', function(e) { - SelectFilter.filter_key_up(e, field_id, '_from'); - }); - filter_input.addEventListener('keydown', function(e) { - SelectFilter.filter_key_down(e, field_id, '_from', '_to'); - }); - filter_selected_input.addEventListener('keypress', function(e) { - SelectFilter.filter_key_press(e, field_id, '_to', '_from'); - }); - filter_selected_input.addEventListener('keyup', function(e) { - SelectFilter.filter_key_up(e, field_id, '_to', '_selected_input'); - }); - filter_selected_input.addEventListener('keydown', function(e) { - SelectFilter.filter_key_down(e, field_id, '_to', '_from'); - }); - selector_div.addEventListener('change', function(e) { - if (e.target.tagName === 'SELECT') { - SelectFilter.refresh_icons(field_id); - } - }); - selector_div.addEventListener('dblclick', function(e) { - if (e.target.tagName === 'OPTION') { - if (e.target.closest('select').id === field_id + '_to') { - SelectBox.move(field_id + '_to', field_id + '_from'); - } else { - SelectBox.move(field_id + '_from', field_id + '_to'); - } - SelectFilter.refresh_icons(field_id); - } - }); - from_box.closest('form').addEventListener('submit', function() { - SelectBox.filter(field_id + '_to', ''); - SelectBox.select_all(field_id + '_to'); - }); - SelectBox.init(field_id + '_from'); - SelectBox.init(field_id + '_to'); - // Move selected from_box options to to_box - SelectBox.move(field_id + '_from', field_id + '_to'); - - // Initial icon refresh - SelectFilter.refresh_icons(field_id); - }, - any_selected: function(field) { - // Temporarily add the required attribute and check validity. - field.required = true; - const any_selected = field.checkValidity(); - field.required = false; - return any_selected; - }, - refresh_filtered_warning: function(field_id) { - const count = SelectBox.get_hidden_node_count(field_id + '_to'); - const selector = document.getElementById(field_id + '_selector_chosen'); - const warning = document.getElementById(field_id + '_list-footer-display-text'); - selector.className = selector.className.replace('selector-chosen--with-filtered', ''); - warning.textContent = interpolate(ngettext( - '%s selected option not visible', - '%s selected options not visible', - count - ), [count]); - if(count > 0) { - selector.className += ' selector-chosen--with-filtered'; - } - }, - refresh_filtered_selects: function(field_id) { - SelectBox.filter(field_id + '_from', document.getElementById(field_id + "_input").value); - SelectBox.filter(field_id + '_to', document.getElementById(field_id + "_selected_input").value); - }, - refresh_icons: function(field_id) { - const from = document.getElementById(field_id + '_from'); - const to = document.getElementById(field_id + '_to'); - // Disabled if no items are selected. - document.getElementById(field_id + '_add').disabled = !SelectFilter.any_selected(from); - document.getElementById(field_id + '_remove').disabled = !SelectFilter.any_selected(to); - // Disabled if the corresponding box is empty. - document.getElementById(field_id + '_add_all').disabled = !from.querySelector('option'); - document.getElementById(field_id + '_remove_all').disabled = !to.querySelector('option'); - }, - filter_key_press: function(event, field_id, source, target) { - const source_box = document.getElementById(field_id + source); - // don't submit form if user pressed Enter - if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) { - source_box.selectedIndex = 0; - SelectBox.move(field_id + source, field_id + target); - source_box.selectedIndex = 0; - event.preventDefault(); - } - }, - filter_key_up: function(event, field_id, source, filter_input) { - const input = filter_input || '_input'; - const source_box = document.getElementById(field_id + source); - const temp = source_box.selectedIndex; - SelectBox.filter(field_id + source, document.getElementById(field_id + input).value); - source_box.selectedIndex = temp; - SelectFilter.refresh_filtered_warning(field_id); - SelectFilter.refresh_icons(field_id); - }, - filter_key_down: function(event, field_id, source, target) { - const source_box = document.getElementById(field_id + source); - // right key (39) or left key (37) - const direction = source === '_from' ? 39 : 37; - // right arrow -- move across - if ((event.which && event.which === direction) || (event.keyCode && event.keyCode === direction)) { - const old_index = source_box.selectedIndex; - SelectBox.move(field_id + source, field_id + target); - SelectFilter.refresh_filtered_selects(field_id); - SelectFilter.refresh_filtered_warning(field_id); - source_box.selectedIndex = (old_index === source_box.length) ? source_box.length - 1 : old_index; - return; - } - // down arrow -- wrap around - if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) { - source_box.selectedIndex = (source_box.length === source_box.selectedIndex + 1) ? 0 : source_box.selectedIndex + 1; - } - // up arrow -- wrap around - if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) { - source_box.selectedIndex = (source_box.selectedIndex === 0) ? source_box.length - 1 : source_box.selectedIndex - 1; - } - } - }; - - window.addEventListener('load', function(e) { - document.querySelectorAll('select.selectfilter, select.selectfilterstacked').forEach(function(el) { - const data = el.dataset; - SelectFilter.init(el.id, data.fieldName, parseInt(data.isStacked, 10)); - }); - }); -} diff --git a/staticfiles/admin/js/actions.js b/staticfiles/admin/js/actions.js deleted file mode 100644 index 04b25e9..0000000 --- a/staticfiles/admin/js/actions.js +++ /dev/null @@ -1,204 +0,0 @@ -/*global gettext, interpolate, ngettext, Actions*/ -'use strict'; -{ - function show(selector) { - document.querySelectorAll(selector).forEach(function(el) { - el.classList.remove('hidden'); - }); - } - - function hide(selector) { - document.querySelectorAll(selector).forEach(function(el) { - el.classList.add('hidden'); - }); - } - - function showQuestion(options) { - hide(options.acrossClears); - show(options.acrossQuestions); - hide(options.allContainer); - } - - function showClear(options) { - show(options.acrossClears); - hide(options.acrossQuestions); - document.querySelector(options.actionContainer).classList.remove(options.selectedClass); - show(options.allContainer); - hide(options.counterContainer); - } - - function reset(options) { - hide(options.acrossClears); - hide(options.acrossQuestions); - hide(options.allContainer); - show(options.counterContainer); - } - - function clearAcross(options) { - reset(options); - const acrossInputs = document.querySelectorAll(options.acrossInput); - acrossInputs.forEach(function(acrossInput) { - acrossInput.value = 0; - }); - document.querySelector(options.actionContainer).classList.remove(options.selectedClass); - } - - function checker(actionCheckboxes, options, checked) { - if (checked) { - showQuestion(options); - } else { - reset(options); - } - actionCheckboxes.forEach(function(el) { - el.checked = checked; - el.closest('tr').classList.toggle(options.selectedClass, checked); - }); - } - - function updateCounter(actionCheckboxes, options) { - const sel = Array.from(actionCheckboxes).filter(function(el) { - return el.checked; - }).length; - const counter = document.querySelector(options.counterContainer); - // data-actions-icnt is defined in the generated HTML - // and contains the total amount of objects in the queryset - const actions_icnt = Number(counter.dataset.actionsIcnt); - counter.textContent = interpolate( - ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { - sel: sel, - cnt: actions_icnt - }, true); - const allToggle = document.getElementById(options.allToggleId); - allToggle.checked = sel === actionCheckboxes.length; - if (allToggle.checked) { - showQuestion(options); - } else { - clearAcross(options); - } - } - - const defaults = { - actionContainer: "div.actions", - counterContainer: "span.action-counter", - allContainer: "div.actions span.all", - acrossInput: "div.actions input.select-across", - acrossQuestions: "div.actions span.question", - acrossClears: "div.actions span.clear", - allToggleId: "action-toggle", - selectedClass: "selected" - }; - - window.Actions = function(actionCheckboxes, options) { - options = Object.assign({}, defaults, options); - let list_editable_changed = false; - let lastChecked = null; - let shiftPressed = false; - - document.addEventListener('keydown', (event) => { - shiftPressed = event.shiftKey; - }); - - document.addEventListener('keyup', (event) => { - shiftPressed = event.shiftKey; - }); - - document.getElementById(options.allToggleId).addEventListener('click', function(event) { - checker(actionCheckboxes, options, this.checked); - updateCounter(actionCheckboxes, options); - }); - - document.querySelectorAll(options.acrossQuestions + " a").forEach(function(el) { - el.addEventListener('click', function(event) { - event.preventDefault(); - const acrossInputs = document.querySelectorAll(options.acrossInput); - acrossInputs.forEach(function(acrossInput) { - acrossInput.value = 1; - }); - showClear(options); - }); - }); - - document.querySelectorAll(options.acrossClears + " a").forEach(function(el) { - el.addEventListener('click', function(event) { - event.preventDefault(); - document.getElementById(options.allToggleId).checked = false; - clearAcross(options); - checker(actionCheckboxes, options, false); - updateCounter(actionCheckboxes, options); - }); - }); - - function affectedCheckboxes(target, withModifier) { - const multiSelect = (lastChecked && withModifier && lastChecked !== target); - if (!multiSelect) { - return [target]; - } - const checkboxes = Array.from(actionCheckboxes); - const targetIndex = checkboxes.findIndex(el => el === target); - const lastCheckedIndex = checkboxes.findIndex(el => el === lastChecked); - const startIndex = Math.min(targetIndex, lastCheckedIndex); - const endIndex = Math.max(targetIndex, lastCheckedIndex); - const filtered = checkboxes.filter((el, index) => (startIndex <= index) && (index <= endIndex)); - return filtered; - }; - - Array.from(document.getElementById('result_list').tBodies).forEach(function(el) { - el.addEventListener('change', function(event) { - const target = event.target; - if (target.classList.contains('action-select')) { - const checkboxes = affectedCheckboxes(target, shiftPressed); - checker(checkboxes, options, target.checked); - updateCounter(actionCheckboxes, options); - lastChecked = target; - } else { - list_editable_changed = true; - } - }); - }); - - document.querySelector('#changelist-form button[name=index]').addEventListener('click', function(event) { - if (list_editable_changed) { - const confirmed = confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); - if (!confirmed) { - event.preventDefault(); - } - } - }); - - const el = document.querySelector('#changelist-form input[name=_save]'); - // The button does not exist if no fields are editable. - if (el) { - el.addEventListener('click', function(event) { - if (document.querySelector('[name=action]').value) { - const text = list_editable_changed - ? gettext("You have selected an action, but you haven’t saved your changes to individual fields yet. Please click OK to save. You’ll need to re-run the action.") - : gettext("You have selected an action, and you haven’t made any changes on individual fields. You’re probably looking for the Go button rather than the Save button."); - if (!confirm(text)) { - event.preventDefault(); - } - } - }); - } - // Sync counter when navigating to the page, such as through the back - // button. - window.addEventListener('pageshow', (event) => updateCounter(actionCheckboxes, options)); - }; - - // Call function fn when the DOM is loaded and ready. If it is already - // loaded, call the function now. - // http://youmightnotneedjquery.com/#ready - function ready(fn) { - if (document.readyState !== 'loading') { - fn(); - } else { - document.addEventListener('DOMContentLoaded', fn); - } - } - - ready(function() { - const actionsEls = document.querySelectorAll('tr input.action-select'); - if (actionsEls.length > 0) { - Actions(actionsEls); - } - }); -} diff --git a/staticfiles/admin/js/admin/DateTimeShortcuts.js b/staticfiles/admin/js/admin/DateTimeShortcuts.js deleted file mode 100644 index aa1cae9..0000000 --- a/staticfiles/admin/js/admin/DateTimeShortcuts.js +++ /dev/null @@ -1,408 +0,0 @@ -/*global Calendar, findPosX, findPosY, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/ -// Inserts shortcut buttons after all of the following: -// -// -'use strict'; -{ - const DateTimeShortcuts = { - calendars: [], - calendarInputs: [], - clockInputs: [], - clockHours: { - default_: [ - [gettext_noop('Now'), -1], - [gettext_noop('Midnight'), 0], - [gettext_noop('6 a.m.'), 6], - [gettext_noop('Noon'), 12], - [gettext_noop('6 p.m.'), 18] - ] - }, - dismissClockFunc: [], - dismissCalendarFunc: [], - calendarDivName1: 'calendarbox', // name of calendar
      that gets toggled - calendarDivName2: 'calendarin', // name of
      that contains calendar - calendarLinkName: 'calendarlink', // name of the link that is used to toggle - clockDivName: 'clockbox', // name of clock
      that gets toggled - clockLinkName: 'clocklink', // name of the link that is used to toggle - shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts - timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch - timezoneOffset: 0, - init: function() { - const serverOffset = document.body.dataset.adminUtcOffset; - if (serverOffset) { - const localOffset = new Date().getTimezoneOffset() * -60; - DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; - } - - for (const inp of document.getElementsByTagName('input')) { - if (inp.type === 'text' && inp.classList.contains('vTimeField')) { - DateTimeShortcuts.addClock(inp); - DateTimeShortcuts.addTimezoneWarning(inp); - } - else if (inp.type === 'text' && inp.classList.contains('vDateField')) { - DateTimeShortcuts.addCalendar(inp); - DateTimeShortcuts.addTimezoneWarning(inp); - } - } - }, - // Return the current time while accounting for the server timezone. - now: function() { - const serverOffset = document.body.dataset.adminUtcOffset; - if (serverOffset) { - const localNow = new Date(); - const localOffset = localNow.getTimezoneOffset() * -60; - localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); - return localNow; - } else { - return new Date(); - } - }, - // Add a warning when the time zone in the browser and backend do not match. - addTimezoneWarning: function(inp) { - const warningClass = DateTimeShortcuts.timezoneWarningClass; - let timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; - - // Only warn if there is a time zone mismatch. - if (!timezoneOffset) { - return; - } - - // Check if warning is already there. - if (inp.parentNode.querySelectorAll('.' + warningClass).length) { - return; - } - - let message; - if (timezoneOffset > 0) { - message = ngettext( - 'Note: You are %s hour ahead of server time.', - 'Note: You are %s hours ahead of server time.', - timezoneOffset - ); - } - else { - timezoneOffset *= -1; - message = ngettext( - 'Note: You are %s hour behind server time.', - 'Note: You are %s hours behind server time.', - timezoneOffset - ); - } - message = interpolate(message, [timezoneOffset]); - - const warning = document.createElement('div'); - warning.classList.add('help', warningClass); - warning.textContent = message; - inp.parentNode.appendChild(warning); - }, - // Add clock widget to a given field - addClock: function(inp) { - const num = DateTimeShortcuts.clockInputs.length; - DateTimeShortcuts.clockInputs[num] = inp; - DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; - - // Shortcut links (clock icon and "Now" link) - const shortcuts_span = document.createElement('span'); - shortcuts_span.className = DateTimeShortcuts.shortCutsClass; - inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); - const now_link = document.createElement('a'); - now_link.href = "#"; - now_link.textContent = gettext('Now'); - now_link.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.handleClockQuicklink(num, -1); - }); - const clock_link = document.createElement('a'); - clock_link.href = '#'; - clock_link.id = DateTimeShortcuts.clockLinkName + num; - clock_link.addEventListener('click', function(e) { - e.preventDefault(); - // avoid triggering the document click handler to dismiss the clock - e.stopPropagation(); - DateTimeShortcuts.openClock(num); - }); - - quickElement( - 'span', clock_link, '', - 'class', 'clock-icon', - 'title', gettext('Choose a Time') - ); - shortcuts_span.appendChild(document.createTextNode('\u00A0')); - shortcuts_span.appendChild(now_link); - shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); - shortcuts_span.appendChild(clock_link); - - // Create clock link div - // - // Markup looks like: - // - - const clock_box = document.createElement('div'); - clock_box.style.display = 'none'; - clock_box.style.position = 'absolute'; - clock_box.className = 'clockbox module'; - clock_box.id = DateTimeShortcuts.clockDivName + num; - document.body.appendChild(clock_box); - clock_box.addEventListener('click', function(e) { e.stopPropagation(); }); - - quickElement('h2', clock_box, gettext('Choose a time')); - const time_list = quickElement('ul', clock_box); - time_list.className = 'timelist'; - // The list of choices can be overridden in JavaScript like this: - // DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]]; - // where name is the name attribute of the . - const name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name; - DateTimeShortcuts.clockHours[name].forEach(function(element) { - const time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#'); - time_link.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.handleClockQuicklink(num, element[1]); - }); - }); - - const cancel_p = quickElement('p', clock_box); - cancel_p.className = 'calendar-cancel'; - const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); - cancel_link.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.dismissClock(num); - }); - - document.addEventListener('keyup', function(event) { - if (event.which === 27) { - // ESC key closes popup - DateTimeShortcuts.dismissClock(num); - event.preventDefault(); - } - }); - }, - openClock: function(num) { - const clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num); - const clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num); - - // Recalculate the clockbox position - // is it left-to-right or right-to-left layout ? - if (window.getComputedStyle(document.body).direction !== 'rtl') { - clock_box.style.left = findPosX(clock_link) + 17 + 'px'; - } - else { - // since style's width is in em, it'd be tough to calculate - // px value of it. let's use an estimated px for now - clock_box.style.left = findPosX(clock_link) - 110 + 'px'; - } - clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; - - // Show the clock box - clock_box.style.display = 'block'; - document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); - }, - dismissClock: function(num) { - document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; - document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); - }, - handleClockQuicklink: function(num, val) { - let d; - if (val === -1) { - d = DateTimeShortcuts.now(); - } - else { - d = new Date(1970, 1, 1, val, 0, 0, 0); - } - DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); - DateTimeShortcuts.clockInputs[num].focus(); - DateTimeShortcuts.dismissClock(num); - }, - // Add calendar widget to a given field. - addCalendar: function(inp) { - const num = DateTimeShortcuts.calendars.length; - - DateTimeShortcuts.calendarInputs[num] = inp; - DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; - - // Shortcut links (calendar icon and "Today" link) - const shortcuts_span = document.createElement('span'); - shortcuts_span.className = DateTimeShortcuts.shortCutsClass; - inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); - const today_link = document.createElement('a'); - today_link.href = '#'; - today_link.appendChild(document.createTextNode(gettext('Today'))); - today_link.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.handleCalendarQuickLink(num, 0); - }); - const cal_link = document.createElement('a'); - cal_link.href = '#'; - cal_link.id = DateTimeShortcuts.calendarLinkName + num; - cal_link.addEventListener('click', function(e) { - e.preventDefault(); - // avoid triggering the document click handler to dismiss the calendar - e.stopPropagation(); - DateTimeShortcuts.openCalendar(num); - }); - quickElement( - 'span', cal_link, '', - 'class', 'date-icon', - 'title', gettext('Choose a Date') - ); - shortcuts_span.appendChild(document.createTextNode('\u00A0')); - shortcuts_span.appendChild(today_link); - shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); - shortcuts_span.appendChild(cal_link); - - // Create calendarbox div. - // - // Markup looks like: - // - //
      - //

      - // - // February 2003 - //

      - //
      - // - //
      - //
      - // Yesterday | Today | Tomorrow - //
      - //

      Cancel

      - //
      - const cal_box = document.createElement('div'); - cal_box.style.display = 'none'; - cal_box.style.position = 'absolute'; - cal_box.className = 'calendarbox module'; - cal_box.id = DateTimeShortcuts.calendarDivName1 + num; - document.body.appendChild(cal_box); - cal_box.addEventListener('click', function(e) { e.stopPropagation(); }); - - // next-prev links - const cal_nav = quickElement('div', cal_box); - const cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#'); - cal_nav_prev.className = 'calendarnav-previous'; - cal_nav_prev.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.drawPrev(num); - }); - - const cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#'); - cal_nav_next.className = 'calendarnav-next'; - cal_nav_next.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.drawNext(num); - }); - - // main box - const cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); - cal_main.className = 'calendar'; - DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); - DateTimeShortcuts.calendars[num].drawCurrent(); - - // calendar shortcuts - const shortcuts = quickElement('div', cal_box); - shortcuts.className = 'calendar-shortcuts'; - let day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#'); - day_link.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.handleCalendarQuickLink(num, -1); - }); - shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); - day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#'); - day_link.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.handleCalendarQuickLink(num, 0); - }); - shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); - day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#'); - day_link.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.handleCalendarQuickLink(num, +1); - }); - - // cancel bar - const cancel_p = quickElement('p', cal_box); - cancel_p.className = 'calendar-cancel'; - const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); - cancel_link.addEventListener('click', function(e) { - e.preventDefault(); - DateTimeShortcuts.dismissCalendar(num); - }); - document.addEventListener('keyup', function(event) { - if (event.which === 27) { - // ESC key closes popup - DateTimeShortcuts.dismissCalendar(num); - event.preventDefault(); - } - }); - }, - openCalendar: function(num) { - const cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num); - const cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num); - const inp = DateTimeShortcuts.calendarInputs[num]; - - // Determine if the current value in the input has a valid date. - // If so, draw the calendar with that date's year and month. - if (inp.value) { - const format = get_format('DATE_INPUT_FORMATS')[0]; - const selected = inp.value.strptime(format); - const year = selected.getUTCFullYear(); - const month = selected.getUTCMonth() + 1; - const re = /\d{4}/; - if (re.test(year.toString()) && month >= 1 && month <= 12) { - DateTimeShortcuts.calendars[num].drawDate(month, year, selected); - } - } - - // Recalculate the clockbox position - // is it left-to-right or right-to-left layout ? - if (window.getComputedStyle(document.body).direction !== 'rtl') { - cal_box.style.left = findPosX(cal_link) + 17 + 'px'; - } - else { - // since style's width is in em, it'd be tough to calculate - // px value of it. let's use an estimated px for now - cal_box.style.left = findPosX(cal_link) - 180 + 'px'; - } - cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; - - cal_box.style.display = 'block'; - document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); - }, - dismissCalendar: function(num) { - document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; - document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); - }, - drawPrev: function(num) { - DateTimeShortcuts.calendars[num].drawPreviousMonth(); - }, - drawNext: function(num) { - DateTimeShortcuts.calendars[num].drawNextMonth(); - }, - handleCalendarCallback: function(num) { - const format = get_format('DATE_INPUT_FORMATS')[0]; - return function(y, m, d) { - DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format); - DateTimeShortcuts.calendarInputs[num].focus(); - document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; - }; - }, - handleCalendarQuickLink: function(num, offset) { - const d = DateTimeShortcuts.now(); - d.setDate(d.getDate() + offset); - DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); - DateTimeShortcuts.calendarInputs[num].focus(); - DateTimeShortcuts.dismissCalendar(num); - } - }; - - window.addEventListener('load', DateTimeShortcuts.init); - window.DateTimeShortcuts = DateTimeShortcuts; -} diff --git a/staticfiles/admin/js/admin/RelatedObjectLookups.js b/staticfiles/admin/js/admin/RelatedObjectLookups.js deleted file mode 100644 index 1fc03c6..0000000 --- a/staticfiles/admin/js/admin/RelatedObjectLookups.js +++ /dev/null @@ -1,252 +0,0 @@ -/*global SelectBox, interpolate*/ -// Handles related-objects functionality: lookup link for raw_id_fields -// and Add Another links. -'use strict'; -{ - const $ = django.jQuery; - let popupIndex = 0; - const relatedWindows = []; - - function dismissChildPopups() { - relatedWindows.forEach(function(win) { - if(!win.closed) { - win.dismissChildPopups(); - win.close(); - } - }); - } - - function setPopupIndex() { - if(document.getElementsByName("_popup").length > 0) { - const index = window.name.lastIndexOf("__") + 2; - popupIndex = parseInt(window.name.substring(index)); - } else { - popupIndex = 0; - } - } - - function addPopupIndex(name) { - return name + "__" + (popupIndex + 1); - } - - function removePopupIndex(name) { - return name.replace(new RegExp("__" + (popupIndex + 1) + "$"), ''); - } - - function showAdminPopup(triggeringLink, name_regexp, add_popup) { - const name = addPopupIndex(triggeringLink.id.replace(name_regexp, '')); - const href = new URL(triggeringLink.href); - if (add_popup) { - href.searchParams.set('_popup', 1); - } - const win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); - relatedWindows.push(win); - win.focus(); - return false; - } - - function showRelatedObjectLookupPopup(triggeringLink) { - return showAdminPopup(triggeringLink, /^lookup_/, true); - } - - function dismissRelatedLookupPopup(win, chosenId) { - const name = removePopupIndex(win.name); - const elem = document.getElementById(name); - if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) { - elem.value += ',' + chosenId; - } else { - elem.value = chosenId; - } - $(elem).trigger('change'); - const index = relatedWindows.indexOf(win); - if (index > -1) { - relatedWindows.splice(index, 1); - } - win.close(); - } - - function showRelatedObjectPopup(triggeringLink) { - return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false); - } - - function updateRelatedObjectLinks(triggeringLink) { - const $this = $(triggeringLink); - const siblings = $this.nextAll('.view-related, .change-related, .delete-related'); - if (!siblings.length) { - return; - } - const value = $this.val(); - if (value) { - siblings.each(function() { - const elm = $(this); - elm.attr('href', elm.attr('data-href-template').replace('__fk__', value)); - elm.removeAttr('aria-disabled'); - }); - } else { - siblings.removeAttr('href'); - siblings.attr('aria-disabled', true); - } - } - - function updateRelatedSelectsOptions(currentSelect, win, objId, newRepr, newId, skipIds = []) { - // After create/edit a model from the options next to the current - // select (+ or :pencil:) update ForeignKey PK of the rest of selects - // in the page. - - const path = win.location.pathname; - // Extract the model from the popup url '...//add/' or - // '...///change/' depending the action (add or change). - const modelName = path.split('/')[path.split('/').length - (objId ? 4 : 3)]; - // Select elements with a specific model reference and context of "available-source". - const selectsRelated = document.querySelectorAll(`[data-model-ref="${modelName}"] [data-context="available-source"]`); - - selectsRelated.forEach(function(select) { - if (currentSelect === select || skipIds && skipIds.includes(select.id)) { - return; - } - - let option = select.querySelector(`option[value="${objId}"]`); - - if (!option) { - option = new Option(newRepr, newId); - select.options.add(option); - // Update SelectBox cache for related fields. - if (window.SelectBox !== undefined && !SelectBox.cache[currentSelect.id]) { - SelectBox.add_to_cache(select.id, option); - SelectBox.redisplay(select.id); - } - return; - } - - option.textContent = newRepr; - option.value = newId; - }); - } - - function dismissAddRelatedObjectPopup(win, newId, newRepr) { - const name = removePopupIndex(win.name); - const elem = document.getElementById(name); - if (elem) { - const elemName = elem.nodeName.toUpperCase(); - if (elemName === 'SELECT') { - elem.options[elem.options.length] = new Option(newRepr, newId, true, true); - updateRelatedSelectsOptions(elem, win, null, newRepr, newId); - } else if (elemName === 'INPUT') { - if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) { - elem.value += ',' + newId; - } else { - elem.value = newId; - } - } - // Trigger a change event to update related links if required. - $(elem).trigger('change'); - } else { - const toId = name + "_to"; - const toElem = document.getElementById(toId); - const o = new Option(newRepr, newId); - SelectBox.add_to_cache(toId, o); - SelectBox.redisplay(toId); - if (toElem && toElem.nodeName.toUpperCase() === 'SELECT') { - const skipIds = [name + "_from"]; - updateRelatedSelectsOptions(toElem, win, null, newRepr, newId, skipIds); - } - } - const index = relatedWindows.indexOf(win); - if (index > -1) { - relatedWindows.splice(index, 1); - } - win.close(); - } - - function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) { - const id = removePopupIndex(win.name.replace(/^edit_/, '')); - const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); - const selects = $(selectsSelector); - selects.find('option').each(function() { - if (this.value === objId) { - this.textContent = newRepr; - this.value = newId; - } - }).trigger('change'); - updateRelatedSelectsOptions(selects[0], win, objId, newRepr, newId); - selects.next().find('.select2-selection__rendered').each(function() { - // The element can have a clear button as a child. - // Use the lastChild to modify only the displayed value. - this.lastChild.textContent = newRepr; - this.title = newRepr; - }); - const index = relatedWindows.indexOf(win); - if (index > -1) { - relatedWindows.splice(index, 1); - } - win.close(); - } - - function dismissDeleteRelatedObjectPopup(win, objId) { - const id = removePopupIndex(win.name.replace(/^delete_/, '')); - const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); - const selects = $(selectsSelector); - selects.find('option').each(function() { - if (this.value === objId) { - $(this).remove(); - } - }).trigger('change'); - const index = relatedWindows.indexOf(win); - if (index > -1) { - relatedWindows.splice(index, 1); - } - win.close(); - } - - window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup; - window.dismissRelatedLookupPopup = dismissRelatedLookupPopup; - window.showRelatedObjectPopup = showRelatedObjectPopup; - window.updateRelatedObjectLinks = updateRelatedObjectLinks; - window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup; - window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup; - window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup; - window.dismissChildPopups = dismissChildPopups; - window.relatedWindows = relatedWindows; - - // Kept for backward compatibility - window.showAddAnotherPopup = showRelatedObjectPopup; - window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup; - - window.addEventListener('unload', function(evt) { - window.dismissChildPopups(); - }); - - $(document).ready(function() { - setPopupIndex(); - $("a[data-popup-opener]").on('click', function(event) { - event.preventDefault(); - opener.dismissRelatedLookupPopup(window, $(this).data("popup-opener")); - }); - $('body').on('click', '.related-widget-wrapper-link[data-popup="yes"]', function(e) { - e.preventDefault(); - if (this.href) { - const event = $.Event('django:show-related', {href: this.href}); - $(this).trigger(event); - if (!event.isDefaultPrevented()) { - showRelatedObjectPopup(this); - } - } - }); - $('body').on('change', '.related-widget-wrapper select', function(e) { - const event = $.Event('django:update-related'); - $(this).trigger(event); - if (!event.isDefaultPrevented()) { - updateRelatedObjectLinks(this); - } - }); - $('.related-widget-wrapper select').trigger('change'); - $('body').on('click', '.related-lookup', function(e) { - e.preventDefault(); - const event = $.Event('django:lookup-related'); - $(this).trigger(event); - if (!event.isDefaultPrevented()) { - showRelatedObjectLookupPopup(this); - } - }); - }); -} diff --git a/staticfiles/admin/js/autocomplete.js b/staticfiles/admin/js/autocomplete.js deleted file mode 100644 index d3daeab..0000000 --- a/staticfiles/admin/js/autocomplete.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; -{ - const $ = django.jQuery; - - $.fn.djangoAdminSelect2 = function() { - $.each(this, function(i, element) { - $(element).select2({ - ajax: { - data: (params) => { - return { - term: params.term, - page: params.page, - app_label: element.dataset.appLabel, - model_name: element.dataset.modelName, - field_name: element.dataset.fieldName - }; - } - } - }); - }); - return this; - }; - - $(function() { - // Initialize all autocomplete widgets except the one in the template - // form used when a new formset is added. - $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2(); - }); - - document.addEventListener('formset:added', (event) => { - $(event.target).find('.admin-autocomplete').djangoAdminSelect2(); - }); -} diff --git a/staticfiles/admin/js/calendar.js b/staticfiles/admin/js/calendar.js deleted file mode 100644 index 776310f..0000000 --- a/staticfiles/admin/js/calendar.js +++ /dev/null @@ -1,239 +0,0 @@ -/*global gettext, pgettext, get_format, quickElement, removeChildren*/ -/* -calendar.js - Calendar functions by Adrian Holovaty -depends on core.js for utility functions like removeChildren or quickElement -*/ -'use strict'; -{ - // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions - const CalendarNamespace = { - monthsOfYear: [ - gettext('January'), - gettext('February'), - gettext('March'), - gettext('April'), - gettext('May'), - gettext('June'), - gettext('July'), - gettext('August'), - gettext('September'), - gettext('October'), - gettext('November'), - gettext('December') - ], - monthsOfYearAbbrev: [ - pgettext('abbrev. month January', 'Jan'), - pgettext('abbrev. month February', 'Feb'), - pgettext('abbrev. month March', 'Mar'), - pgettext('abbrev. month April', 'Apr'), - pgettext('abbrev. month May', 'May'), - pgettext('abbrev. month June', 'Jun'), - pgettext('abbrev. month July', 'Jul'), - pgettext('abbrev. month August', 'Aug'), - pgettext('abbrev. month September', 'Sep'), - pgettext('abbrev. month October', 'Oct'), - pgettext('abbrev. month November', 'Nov'), - pgettext('abbrev. month December', 'Dec') - ], - daysOfWeek: [ - gettext('Sunday'), - gettext('Monday'), - gettext('Tuesday'), - gettext('Wednesday'), - gettext('Thursday'), - gettext('Friday'), - gettext('Saturday') - ], - daysOfWeekAbbrev: [ - pgettext('abbrev. day Sunday', 'Sun'), - pgettext('abbrev. day Monday', 'Mon'), - pgettext('abbrev. day Tuesday', 'Tue'), - pgettext('abbrev. day Wednesday', 'Wed'), - pgettext('abbrev. day Thursday', 'Thur'), - pgettext('abbrev. day Friday', 'Fri'), - pgettext('abbrev. day Saturday', 'Sat') - ], - daysOfWeekInitial: [ - pgettext('one letter Sunday', 'S'), - pgettext('one letter Monday', 'M'), - pgettext('one letter Tuesday', 'T'), - pgettext('one letter Wednesday', 'W'), - pgettext('one letter Thursday', 'T'), - pgettext('one letter Friday', 'F'), - pgettext('one letter Saturday', 'S') - ], - firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')), - isLeapYear: function(year) { - return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0)); - }, - getDaysInMonth: function(month, year) { - let days; - if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) { - days = 31; - } - else if (month === 4 || month === 6 || month === 9 || month === 11) { - days = 30; - } - else if (month === 2 && CalendarNamespace.isLeapYear(year)) { - days = 29; - } - else { - days = 28; - } - return days; - }, - draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999 - const today = new Date(); - const todayDay = today.getDate(); - const todayMonth = today.getMonth() + 1; - const todayYear = today.getFullYear(); - let todayClass = ''; - - // Use UTC functions here because the date field does not contain time - // and using the UTC function variants prevent the local time offset - // from altering the date, specifically the day field. For example: - // - // ``` - // var x = new Date('2013-10-02'); - // var day = x.getDate(); - // ``` - // - // The day variable above will be 1 instead of 2 in, say, US Pacific time - // zone. - let isSelectedMonth = false; - if (typeof selected !== 'undefined') { - isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month); - } - - month = parseInt(month); - year = parseInt(year); - const calDiv = document.getElementById(div_id); - removeChildren(calDiv); - const calTable = document.createElement('table'); - quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year); - const tableBody = quickElement('tbody', calTable); - - // Draw days-of-week header - let tableRow = quickElement('tr', tableBody); - for (let i = 0; i < 7; i++) { - quickElement('th', tableRow, CalendarNamespace.daysOfWeekInitial[(i + CalendarNamespace.firstDayOfWeek) % 7]); - } - - const startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay(); - const days = CalendarNamespace.getDaysInMonth(month, year); - - let nonDayCell; - - // Draw blanks before first of month - tableRow = quickElement('tr', tableBody); - for (let i = 0; i < startingPos; i++) { - nonDayCell = quickElement('td', tableRow, ' '); - nonDayCell.className = "nonday"; - } - - function calendarMonth(y, m) { - function onClick(e) { - e.preventDefault(); - callback(y, m, this.textContent); - } - return onClick; - } - - // Draw days of month - let currentDay = 1; - for (let i = startingPos; currentDay <= days; i++) { - if (i % 7 === 0 && currentDay !== 1) { - tableRow = quickElement('tr', tableBody); - } - if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) { - todayClass = 'today'; - } else { - todayClass = ''; - } - - // use UTC function; see above for explanation. - if (isSelectedMonth && currentDay === selected.getUTCDate()) { - if (todayClass !== '') { - todayClass += " "; - } - todayClass += "selected"; - } - - const cell = quickElement('td', tableRow, '', 'class', todayClass); - const link = quickElement('a', cell, currentDay, 'href', '#'); - link.addEventListener('click', calendarMonth(year, month)); - currentDay++; - } - - // Draw blanks after end of month (optional, but makes for valid code) - while (tableRow.childNodes.length < 7) { - nonDayCell = quickElement('td', tableRow, ' '); - nonDayCell.className = "nonday"; - } - - calDiv.appendChild(calTable); - } - }; - - // Calendar -- A calendar instance - function Calendar(div_id, callback, selected) { - // div_id (string) is the ID of the element in which the calendar will - // be displayed - // callback (string) is the name of a JavaScript function that will be - // called with the parameters (year, month, day) when a day in the - // calendar is clicked - this.div_id = div_id; - this.callback = callback; - this.today = new Date(); - this.currentMonth = this.today.getMonth() + 1; - this.currentYear = this.today.getFullYear(); - if (typeof selected !== 'undefined') { - this.selected = selected; - } - } - Calendar.prototype = { - drawCurrent: function() { - CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected); - }, - drawDate: function(month, year, selected) { - this.currentMonth = month; - this.currentYear = year; - - if(selected) { - this.selected = selected; - } - - this.drawCurrent(); - }, - drawPreviousMonth: function() { - if (this.currentMonth === 1) { - this.currentMonth = 12; - this.currentYear--; - } - else { - this.currentMonth--; - } - this.drawCurrent(); - }, - drawNextMonth: function() { - if (this.currentMonth === 12) { - this.currentMonth = 1; - this.currentYear++; - } - else { - this.currentMonth++; - } - this.drawCurrent(); - }, - drawPreviousYear: function() { - this.currentYear--; - this.drawCurrent(); - }, - drawNextYear: function() { - this.currentYear++; - this.drawCurrent(); - } - }; - window.Calendar = Calendar; - window.CalendarNamespace = CalendarNamespace; -} diff --git a/staticfiles/admin/js/cancel.js b/staticfiles/admin/js/cancel.js deleted file mode 100644 index 3069c6f..0000000 --- a/staticfiles/admin/js/cancel.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; -{ - // Call function fn when the DOM is loaded and ready. If it is already - // loaded, call the function now. - // http://youmightnotneedjquery.com/#ready - function ready(fn) { - if (document.readyState !== 'loading') { - fn(); - } else { - document.addEventListener('DOMContentLoaded', fn); - } - } - - ready(function() { - function handleClick(event) { - event.preventDefault(); - const params = new URLSearchParams(window.location.search); - if (params.has('_popup')) { - window.close(); // Close the popup. - } else { - window.history.back(); // Otherwise, go back. - } - } - - document.querySelectorAll('.cancel-link').forEach(function(el) { - el.addEventListener('click', handleClick); - }); - }); -} diff --git a/staticfiles/admin/js/change_form.js b/staticfiles/admin/js/change_form.js deleted file mode 100644 index 96a4c62..0000000 --- a/staticfiles/admin/js/change_form.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; -{ - const inputTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']; - const modelName = document.getElementById('django-admin-form-add-constants').dataset.modelName; - if (modelName) { - const form = document.getElementById(modelName + '_form'); - for (const element of form.elements) { - // HTMLElement.offsetParent returns null when the element is not - // rendered. - if (inputTags.includes(element.tagName) && !element.disabled && element.offsetParent) { - element.focus(); - break; - } - } - } -} diff --git a/staticfiles/admin/js/core.js b/staticfiles/admin/js/core.js deleted file mode 100644 index 10504d4..0000000 --- a/staticfiles/admin/js/core.js +++ /dev/null @@ -1,184 +0,0 @@ -// Core JavaScript helper functions -'use strict'; - -// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]); -function quickElement() { - const obj = document.createElement(arguments[0]); - if (arguments[2]) { - const textNode = document.createTextNode(arguments[2]); - obj.appendChild(textNode); - } - const len = arguments.length; - for (let i = 3; i < len; i += 2) { - obj.setAttribute(arguments[i], arguments[i + 1]); - } - arguments[1].appendChild(obj); - return obj; -} - -// "a" is reference to an object -function removeChildren(a) { - while (a.hasChildNodes()) { - a.removeChild(a.lastChild); - } -} - -// ---------------------------------------------------------------------------- -// Find-position functions by PPK -// See https://www.quirksmode.org/js/findpos.html -// ---------------------------------------------------------------------------- -function findPosX(obj) { - let curleft = 0; - if (obj.offsetParent) { - while (obj.offsetParent) { - curleft += obj.offsetLeft - obj.scrollLeft; - obj = obj.offsetParent; - } - } else if (obj.x) { - curleft += obj.x; - } - return curleft; -} - -function findPosY(obj) { - let curtop = 0; - if (obj.offsetParent) { - while (obj.offsetParent) { - curtop += obj.offsetTop - obj.scrollTop; - obj = obj.offsetParent; - } - } else if (obj.y) { - curtop += obj.y; - } - return curtop; -} - -//----------------------------------------------------------------------------- -// Date object extensions -// ---------------------------------------------------------------------------- -{ - Date.prototype.getTwelveHours = function() { - return this.getHours() % 12 || 12; - }; - - Date.prototype.getTwoDigitMonth = function() { - return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1); - }; - - Date.prototype.getTwoDigitDate = function() { - return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); - }; - - Date.prototype.getTwoDigitTwelveHour = function() { - return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); - }; - - Date.prototype.getTwoDigitHour = function() { - return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); - }; - - Date.prototype.getTwoDigitMinute = function() { - return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); - }; - - Date.prototype.getTwoDigitSecond = function() { - return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); - }; - - Date.prototype.getAbbrevDayName = function() { - return typeof window.CalendarNamespace === "undefined" - ? '0' + this.getDay() - : window.CalendarNamespace.daysOfWeekAbbrev[this.getDay()]; - }; - - Date.prototype.getFullDayName = function() { - return typeof window.CalendarNamespace === "undefined" - ? '0' + this.getDay() - : window.CalendarNamespace.daysOfWeek[this.getDay()]; - }; - - Date.prototype.getAbbrevMonthName = function() { - return typeof window.CalendarNamespace === "undefined" - ? this.getTwoDigitMonth() - : window.CalendarNamespace.monthsOfYearAbbrev[this.getMonth()]; - }; - - Date.prototype.getFullMonthName = function() { - return typeof window.CalendarNamespace === "undefined" - ? this.getTwoDigitMonth() - : window.CalendarNamespace.monthsOfYear[this.getMonth()]; - }; - - Date.prototype.strftime = function(format) { - const fields = { - a: this.getAbbrevDayName(), - A: this.getFullDayName(), - b: this.getAbbrevMonthName(), - B: this.getFullMonthName(), - c: this.toString(), - d: this.getTwoDigitDate(), - H: this.getTwoDigitHour(), - I: this.getTwoDigitTwelveHour(), - m: this.getTwoDigitMonth(), - M: this.getTwoDigitMinute(), - p: (this.getHours() >= 12) ? 'PM' : 'AM', - S: this.getTwoDigitSecond(), - w: '0' + this.getDay(), - x: this.toLocaleDateString(), - X: this.toLocaleTimeString(), - y: ('' + this.getFullYear()).substr(2, 4), - Y: '' + this.getFullYear(), - '%': '%' - }; - let result = '', i = 0; - while (i < format.length) { - if (format.charAt(i) === '%') { - result += fields[format.charAt(i + 1)]; - ++i; - } - else { - result += format.charAt(i); - } - ++i; - } - return result; - }; - - // ---------------------------------------------------------------------------- - // String object extensions - // ---------------------------------------------------------------------------- - String.prototype.strptime = function(format) { - const split_format = format.split(/[.\-/]/); - const date = this.split(/[.\-/]/); - let i = 0; - let day, month, year; - while (i < split_format.length) { - switch (split_format[i]) { - case "%d": - day = date[i]; - break; - case "%m": - month = date[i] - 1; - break; - case "%Y": - year = date[i]; - break; - case "%y": - // A %y value in the range of [00, 68] is in the current - // century, while [69, 99] is in the previous century, - // according to the Open Group Specification. - if (parseInt(date[i], 10) >= 69) { - year = date[i]; - } else { - year = (new Date(Date.UTC(date[i], 0))).getUTCFullYear() + 100; - } - break; - } - ++i; - } - // Create Date object from UTC since the parsed value is supposed to be - // in UTC, not local time. Also, the calendar uses UTC functions for - // date extraction. - return new Date(Date.UTC(year, month, day)); - }; -} diff --git a/staticfiles/admin/js/filters.js b/staticfiles/admin/js/filters.js deleted file mode 100644 index f5536eb..0000000 --- a/staticfiles/admin/js/filters.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Persist changelist filters state (collapsed/expanded). - */ -'use strict'; -{ - // Init filters. - let filters = JSON.parse(sessionStorage.getItem('django.admin.filtersState')); - - if (!filters) { - filters = {}; - } - - Object.entries(filters).forEach(([key, value]) => { - const detailElement = document.querySelector(`[data-filter-title='${CSS.escape(key)}']`); - - // Check if the filter is present, it could be from other view. - if (detailElement) { - value ? detailElement.setAttribute('open', '') : detailElement.removeAttribute('open'); - } - }); - - // Save filter state when clicks. - const details = document.querySelectorAll('details'); - details.forEach(detail => { - detail.addEventListener('toggle', event => { - filters[`${event.target.dataset.filterTitle}`] = detail.open; - sessionStorage.setItem('django.admin.filtersState', JSON.stringify(filters)); - }); - }); -} diff --git a/staticfiles/admin/js/inlines.js b/staticfiles/admin/js/inlines.js deleted file mode 100644 index cd3726c..0000000 --- a/staticfiles/admin/js/inlines.js +++ /dev/null @@ -1,359 +0,0 @@ -/*global DateTimeShortcuts, SelectFilter*/ -/** - * Django admin inlines - * - * Based on jQuery Formset 1.1 - * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com) - * @requires jQuery 1.2.6 or later - * - * Copyright (c) 2009, Stanislaus Madueke - * All rights reserved. - * - * Spiced up with Code from Zain Memon's GSoC project 2009 - * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip. - * - * Licensed under the New BSD License - * See: https://opensource.org/licenses/bsd-license.php - */ -'use strict'; -{ - const $ = django.jQuery; - $.fn.formset = function(opts) { - const options = $.extend({}, $.fn.formset.defaults, opts); - const $this = $(this); - const $parent = $this.parent(); - const updateElementIndex = function(el, prefix, ndx) { - const id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))"); - const replacement = prefix + "-" + ndx; - if ($(el).prop("for")) { - $(el).prop("for", $(el).prop("for").replace(id_regex, replacement)); - } - if (el.id) { - el.id = el.id.replace(id_regex, replacement); - } - if (el.name) { - el.name = el.name.replace(id_regex, replacement); - } - }; - const totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"); - let nextIndex = parseInt(totalForms.val(), 10); - const maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"); - const minForms = $("#id_" + options.prefix + "-MIN_NUM_FORMS").prop("autocomplete", "off"); - let addButton; - - /** - * The "Add another MyModel" button below the inline forms. - */ - const addInlineAddButton = function() { - if (addButton === null) { - if ($this.prop("tagName") === "TR") { - // If forms are laid out as table rows, insert the - // "add" button in a new table row: - const numCols = $this.eq(-1).children().length; - $parent.append('' + options.addText + ""); - addButton = $parent.find("tr:last a"); - } else { - // Otherwise, insert it immediately after the last form: - $this.filter(":last").after('"); - addButton = $this.filter(":last").next().find("a"); - } - } - addButton.on('click', addInlineClickHandler); - }; - - const addInlineClickHandler = function(e) { - e.preventDefault(); - const template = $("#" + options.prefix + "-empty"); - const row = template.clone(true); - row.removeClass(options.emptyCssClass) - .addClass(options.formCssClass) - .attr("id", options.prefix + "-" + nextIndex); - addInlineDeleteButton(row); - row.find("*").each(function() { - updateElementIndex(this, options.prefix, totalForms.val()); - }); - // Insert the new form when it has been fully edited. - row.insertBefore($(template)); - // Update number of total forms. - $(totalForms).val(parseInt(totalForms.val(), 10) + 1); - nextIndex += 1; - // Hide the add button if there's a limit and it's been reached. - if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) { - addButton.parent().hide(); - } - // Show the remove buttons if there are more than min_num. - toggleDeleteButtonVisibility(row.closest('.inline-group')); - - // Pass the new form to the post-add callback, if provided. - if (options.added) { - options.added(row); - } - row.get(0).dispatchEvent(new CustomEvent("formset:added", { - bubbles: true, - detail: { - formsetName: options.prefix - } - })); - }; - - /** - * The "X" button that is part of every unsaved inline. - * (When saved, it is replaced with a "Delete" checkbox.) - */ - const addInlineDeleteButton = function(row) { - if (row.is("tr")) { - // If the forms are laid out in table rows, insert - // the remove button into the last table cell: - row.children(":last").append('"); - } else if (row.is("ul") || row.is("ol")) { - // If they're laid out as an ordered/unordered list, - // insert an
    • after the last list item: - row.append('
    • ' + options.deleteText + "
    • "); - } else { - // Otherwise, just insert the remove button as the - // last child element of the form's container: - row.children(":first").append('' + options.deleteText + ""); - } - // Add delete handler for each row. - row.find("a." + options.deleteCssClass).on('click', inlineDeleteHandler.bind(this)); - }; - - const inlineDeleteHandler = function(e1) { - e1.preventDefault(); - const deleteButton = $(e1.target); - const row = deleteButton.closest('.' + options.formCssClass); - const inlineGroup = row.closest('.inline-group'); - // Remove the parent form containing this button, - // and also remove the relevant row with non-field errors: - const prevRow = row.prev(); - if (prevRow.length && prevRow.hasClass('row-form-errors')) { - prevRow.remove(); - } - row.remove(); - nextIndex -= 1; - // Pass the deleted form to the post-delete callback, if provided. - if (options.removed) { - options.removed(row); - } - document.dispatchEvent(new CustomEvent("formset:removed", { - detail: { - formsetName: options.prefix - } - })); - // Update the TOTAL_FORMS form count. - const forms = $("." + options.formCssClass); - $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length); - // Show add button again once below maximum number. - if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) { - addButton.parent().show(); - } - // Hide the remove buttons if at min_num. - toggleDeleteButtonVisibility(inlineGroup); - // Also, update names and ids for all remaining form controls so - // they remain in sequence: - let i, formCount; - const updateElementCallback = function() { - updateElementIndex(this, options.prefix, i); - }; - for (i = 0, formCount = forms.length; i < formCount; i++) { - updateElementIndex($(forms).get(i), options.prefix, i); - $(forms.get(i)).find("*").each(updateElementCallback); - } - }; - - const toggleDeleteButtonVisibility = function(inlineGroup) { - if ((minForms.val() !== '') && (minForms.val() - totalForms.val()) >= 0) { - inlineGroup.find('.inline-deletelink').hide(); - } else { - inlineGroup.find('.inline-deletelink').show(); - } - }; - - $this.each(function(i) { - $(this).not("." + options.emptyCssClass).addClass(options.formCssClass); - }); - - // Create the delete buttons for all unsaved inlines: - $this.filter('.' + options.formCssClass + ':not(.has_original):not(.' + options.emptyCssClass + ')').each(function() { - addInlineDeleteButton($(this)); - }); - toggleDeleteButtonVisibility($this); - - // Create the add button, initially hidden. - addButton = options.addButton; - addInlineAddButton(); - - // Show the add button if allowed to add more items. - // Note that max_num = None translates to a blank string. - const showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0; - if ($this.length && showAddButton) { - addButton.parent().show(); - } else { - addButton.parent().hide(); - } - - return this; - }; - - /* Setup plugin defaults */ - $.fn.formset.defaults = { - prefix: "form", // The form prefix for your django formset - addText: "add another", // Text for the add link - deleteText: "remove", // Text for the delete link - addCssClass: "add-row", // CSS class applied to the add link - deleteCssClass: "delete-row", // CSS class applied to the delete link - emptyCssClass: "empty-row", // CSS class applied to the empty row - formCssClass: "dynamic-form", // CSS class applied to each form in a formset - added: null, // Function called each time a new form is added - removed: null, // Function called each time a form is deleted - addButton: null // Existing add button to use - }; - - - // Tabular inlines --------------------------------------------------------- - $.fn.tabularFormset = function(selector, options) { - const $rows = $(this); - - const reinitDateTimeShortCuts = function() { - // Reinitialize the calendar and clock widgets by force - if (typeof DateTimeShortcuts !== "undefined") { - $(".datetimeshortcuts").remove(); - DateTimeShortcuts.init(); - } - }; - - const updateSelectFilter = function() { - // If any SelectFilter widgets are a part of the new form, - // instantiate a new SelectFilter instance for it. - if (typeof SelectFilter !== 'undefined') { - $('.selectfilter').each(function(index, value) { - SelectFilter.init(value.id, this.dataset.fieldName, false); - }); - $('.selectfilterstacked').each(function(index, value) { - SelectFilter.init(value.id, this.dataset.fieldName, true); - }); - } - }; - - const initPrepopulatedFields = function(row) { - row.find('.prepopulated_field').each(function() { - const field = $(this), - input = field.find('input, select, textarea'), - dependency_list = input.data('dependency_list') || [], - dependencies = []; - $.each(dependency_list, function(i, field_name) { - dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id')); - }); - if (dependencies.length) { - input.prepopulate(dependencies, input.attr('maxlength')); - } - }); - }; - - $rows.formset({ - prefix: options.prefix, - addText: options.addText, - formCssClass: "dynamic-" + options.prefix, - deleteCssClass: "inline-deletelink", - deleteText: options.deleteText, - emptyCssClass: "empty-form", - added: function(row) { - initPrepopulatedFields(row); - reinitDateTimeShortCuts(); - updateSelectFilter(); - }, - addButton: options.addButton - }); - - return $rows; - }; - - // Stacked inlines --------------------------------------------------------- - $.fn.stackedFormset = function(selector, options) { - const $rows = $(this); - const updateInlineLabel = function(row) { - $(selector).find(".inline_label").each(function(i) { - const count = i + 1; - $(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); - }); - }; - - const reinitDateTimeShortCuts = function() { - // Reinitialize the calendar and clock widgets by force, yuck. - if (typeof DateTimeShortcuts !== "undefined") { - $(".datetimeshortcuts").remove(); - DateTimeShortcuts.init(); - } - }; - - const updateSelectFilter = function() { - // If any SelectFilter widgets were added, instantiate a new instance. - if (typeof SelectFilter !== "undefined") { - $(".selectfilter").each(function(index, value) { - SelectFilter.init(value.id, this.dataset.fieldName, false); - }); - $(".selectfilterstacked").each(function(index, value) { - SelectFilter.init(value.id, this.dataset.fieldName, true); - }); - } - }; - - const initPrepopulatedFields = function(row) { - row.find('.prepopulated_field').each(function() { - const field = $(this), - input = field.find('input, select, textarea'), - dependency_list = input.data('dependency_list') || [], - dependencies = []; - $.each(dependency_list, function(i, field_name) { - // Dependency in a fieldset. - let field_element = row.find('.form-row .field-' + field_name); - // Dependency without a fieldset. - if (!field_element.length) { - field_element = row.find('.form-row.field-' + field_name); - } - dependencies.push('#' + field_element.find('input, select, textarea').attr('id')); - }); - if (dependencies.length) { - input.prepopulate(dependencies, input.attr('maxlength')); - } - }); - }; - - $rows.formset({ - prefix: options.prefix, - addText: options.addText, - formCssClass: "dynamic-" + options.prefix, - deleteCssClass: "inline-deletelink", - deleteText: options.deleteText, - emptyCssClass: "empty-form", - removed: updateInlineLabel, - added: function(row) { - initPrepopulatedFields(row); - reinitDateTimeShortCuts(); - updateSelectFilter(); - updateInlineLabel(row); - }, - addButton: options.addButton - }); - - return $rows; - }; - - $(document).ready(function() { - $(".js-inline-admin-formset").each(function() { - const data = $(this).data(), - inlineOptions = data.inlineFormset; - let selector; - switch(data.inlineType) { - case "stacked": - selector = inlineOptions.name + "-group .inline-related"; - $(selector).stackedFormset(selector, inlineOptions.options); - break; - case "tabular": - selector = inlineOptions.name + "-group .tabular.inline-related tbody:first > tr.form-row"; - $(selector).tabularFormset(selector, inlineOptions.options); - break; - } - }); - }); -} diff --git a/staticfiles/admin/js/jquery.init.js b/staticfiles/admin/js/jquery.init.js deleted file mode 100644 index f40b27f..0000000 --- a/staticfiles/admin/js/jquery.init.js +++ /dev/null @@ -1,8 +0,0 @@ -/*global jQuery:false*/ -'use strict'; -/* Puts the included jQuery into our own namespace using noConflict and passing - * it 'true'. This ensures that the included jQuery doesn't pollute the global - * namespace (i.e. this preserves pre-existing values for both window.$ and - * window.jQuery). - */ -window.django = {jQuery: jQuery.noConflict(true)}; diff --git a/staticfiles/admin/js/nav_sidebar.js b/staticfiles/admin/js/nav_sidebar.js deleted file mode 100644 index 7e735db..0000000 --- a/staticfiles/admin/js/nav_sidebar.js +++ /dev/null @@ -1,79 +0,0 @@ -'use strict'; -{ - const toggleNavSidebar = document.getElementById('toggle-nav-sidebar'); - if (toggleNavSidebar !== null) { - const navSidebar = document.getElementById('nav-sidebar'); - const main = document.getElementById('main'); - let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen'); - if (navSidebarIsOpen === null) { - navSidebarIsOpen = 'true'; - } - main.classList.toggle('shifted', navSidebarIsOpen === 'true'); - navSidebar.setAttribute('aria-expanded', navSidebarIsOpen); - - toggleNavSidebar.addEventListener('click', function() { - if (navSidebarIsOpen === 'true') { - navSidebarIsOpen = 'false'; - } else { - navSidebarIsOpen = 'true'; - } - localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen); - main.classList.toggle('shifted'); - navSidebar.setAttribute('aria-expanded', navSidebarIsOpen); - }); - } - - function initSidebarQuickFilter() { - const options = []; - const navSidebar = document.getElementById('nav-sidebar'); - if (!navSidebar) { - return; - } - navSidebar.querySelectorAll('th[scope=row] a').forEach((container) => { - options.push({title: container.innerHTML, node: container}); - }); - - function checkValue(event) { - let filterValue = event.target.value; - if (filterValue) { - filterValue = filterValue.toLowerCase(); - } - if (event.key === 'Escape') { - filterValue = ''; - event.target.value = ''; // clear input - } - let matches = false; - for (const o of options) { - let displayValue = ''; - if (filterValue) { - if (o.title.toLowerCase().indexOf(filterValue) === -1) { - displayValue = 'none'; - } else { - matches = true; - } - } - // show/hide parent - o.node.parentNode.parentNode.style.display = displayValue; - } - if (!filterValue || matches) { - event.target.classList.remove('no-results'); - } else { - event.target.classList.add('no-results'); - } - sessionStorage.setItem('django.admin.navSidebarFilterValue', filterValue); - } - - const nav = document.getElementById('nav-filter'); - nav.addEventListener('change', checkValue, false); - nav.addEventListener('input', checkValue, false); - nav.addEventListener('keyup', checkValue, false); - - const storedValue = sessionStorage.getItem('django.admin.navSidebarFilterValue'); - if (storedValue) { - nav.value = storedValue; - checkValue({target: nav, key: ''}); - } - } - window.initSidebarQuickFilter = initSidebarQuickFilter; - initSidebarQuickFilter(); -} diff --git a/staticfiles/admin/js/popup_response.js b/staticfiles/admin/js/popup_response.js deleted file mode 100644 index fecf0f4..0000000 --- a/staticfiles/admin/js/popup_response.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; -{ - const initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); - switch(initData.action) { - case 'change': - opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); - break; - case 'delete': - opener.dismissDeleteRelatedObjectPopup(window, initData.value); - break; - default: - opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); - break; - } -} diff --git a/staticfiles/admin/js/prepopulate.js b/staticfiles/admin/js/prepopulate.js deleted file mode 100644 index 89e95ab..0000000 --- a/staticfiles/admin/js/prepopulate.js +++ /dev/null @@ -1,43 +0,0 @@ -/*global URLify*/ -'use strict'; -{ - const $ = django.jQuery; - $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { - /* - Depends on urlify.js - Populates a selected field with the values of the dependent fields, - URLifies and shortens the string. - dependencies - array of dependent fields ids - maxLength - maximum length of the URLify'd string - allowUnicode - Unicode support of the URLify'd string - */ - return this.each(function() { - const prepopulatedField = $(this); - - const populate = function() { - // Bail if the field's value has been changed by the user - if (prepopulatedField.data('_changed')) { - return; - } - - const values = []; - $.each(dependencies, function(i, field) { - field = $(field); - if (field.val().length > 0) { - values.push(field.val()); - } - }); - prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); - }; - - prepopulatedField.data('_changed', false); - prepopulatedField.on('change', function() { - prepopulatedField.data('_changed', true); - }); - - if (!prepopulatedField.val()) { - $(dependencies.join(',')).on('keyup change focus', populate); - } - }); - }; -} diff --git a/staticfiles/admin/js/prepopulate_init.js b/staticfiles/admin/js/prepopulate_init.js deleted file mode 100644 index a58841f..0000000 --- a/staticfiles/admin/js/prepopulate_init.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; -{ - const $ = django.jQuery; - const fields = $('#django-admin-prepopulated-fields-constants').data('prepopulatedFields'); - $.each(fields, function(index, field) { - $( - '.empty-form .form-row .field-' + field.name + - ', .empty-form.form-row .field-' + field.name + - ', .empty-form .form-row.field-' + field.name - ).addClass('prepopulated_field'); - $(field.id).data('dependency_list', field.dependency_list).prepopulate( - field.dependency_ids, field.maxLength, field.allowUnicode - ); - }); -} diff --git a/staticfiles/admin/js/theme.js b/staticfiles/admin/js/theme.js deleted file mode 100644 index e79d375..0000000 --- a/staticfiles/admin/js/theme.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; -{ - function setTheme(mode) { - if (mode !== "light" && mode !== "dark" && mode !== "auto") { - console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`); - mode = "auto"; - } - document.documentElement.dataset.theme = mode; - localStorage.setItem("theme", mode); - } - - function cycleTheme() { - const currentTheme = localStorage.getItem("theme") || "auto"; - const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; - - if (prefersDark) { - // Auto (dark) -> Light -> Dark - if (currentTheme === "auto") { - setTheme("light"); - } else if (currentTheme === "light") { - setTheme("dark"); - } else { - setTheme("auto"); - } - } else { - // Auto (light) -> Dark -> Light - if (currentTheme === "auto") { - setTheme("dark"); - } else if (currentTheme === "dark") { - setTheme("light"); - } else { - setTheme("auto"); - } - } - } - - function initTheme() { - // set theme defined in localStorage if there is one, or fallback to auto mode - const currentTheme = localStorage.getItem("theme"); - currentTheme ? setTheme(currentTheme) : setTheme("auto"); - } - - window.addEventListener('load', function(_) { - const buttons = document.getElementsByClassName("theme-toggle"); - Array.from(buttons).forEach((btn) => { - btn.addEventListener("click", cycleTheme); - }); - }); - - initTheme(); -} diff --git a/staticfiles/admin/js/unusable_password_field.js b/staticfiles/admin/js/unusable_password_field.js deleted file mode 100644 index ec26238..0000000 --- a/staticfiles/admin/js/unusable_password_field.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -// Fallback JS for browsers which do not support :has selector used in -// admin/css/unusable_password_fields.css -// Remove file once all supported browsers support :has selector -try { - // If browser does not support :has selector this will raise an error - document.querySelector("form:has(input)"); -} catch (error) { - console.log("Defaulting to javascript for usable password form management: " + error); - // JS replacement for unsupported :has selector - document.querySelectorAll('input[name="usable_password"]').forEach(option => { - option.addEventListener('change', function() { - const usablePassword = (this.value === "true" ? this.checked : !this.checked); - const submit1 = document.querySelector('input[type="submit"].set-password'); - const submit2 = document.querySelector('input[type="submit"].unset-password'); - const messages = document.querySelector('#id_unusable_warning'); - document.getElementById('id_password1').closest('.form-row').hidden = !usablePassword; - document.getElementById('id_password2').closest('.form-row').hidden = !usablePassword; - if (messages) { - messages.hidden = usablePassword; - } - if (submit1 && submit2) { - submit1.hidden = !usablePassword; - submit2.hidden = usablePassword; - } - }); - option.dispatchEvent(new Event('change')); - }); -} diff --git a/staticfiles/admin/js/urlify.js b/staticfiles/admin/js/urlify.js deleted file mode 100644 index 9fc0409..0000000 --- a/staticfiles/admin/js/urlify.js +++ /dev/null @@ -1,169 +0,0 @@ -/*global XRegExp*/ -'use strict'; -{ - const LATIN_MAP = { - 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', - 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', - 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', - 'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', - 'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à': 'a', - 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', - 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', - 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', - 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', - 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y' - }; - const LATIN_SYMBOLS_MAP = { - '©': '(c)' - }; - const GREEK_MAP = { - 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', - 'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', - 'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', - 'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o', - 'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y', - 'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', - 'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', - 'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', - 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I', - 'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y' - }; - const TURKISH_MAP = { - 'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ç': 'c', 'Ç': 'C', 'ü': 'u', - 'Ü': 'U', 'ö': 'o', 'Ö': 'O', 'ğ': 'g', 'Ğ': 'G' - }; - const ROMANIAN_MAP = { - 'ă': 'a', 'î': 'i', 'ș': 's', 'ț': 't', 'â': 'a', - 'Ă': 'A', 'Î': 'I', 'Ș': 'S', 'Ț': 'T', 'Â': 'A' - }; - const RUSSIAN_MAP = { - 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', - 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', - 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', - 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '', - 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya', - 'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo', - 'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', - 'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', - 'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '', - 'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya' - }; - const UKRAINIAN_MAP = { - 'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', 'є': 'ye', 'і': 'i', - 'ї': 'yi', 'ґ': 'g' - }; - const CZECH_MAP = { - 'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't', - 'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R', - 'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z' - }; - const SLOVAK_MAP = { - 'á': 'a', 'ä': 'a', 'č': 'c', 'ď': 'd', 'é': 'e', 'í': 'i', 'ľ': 'l', - 'ĺ': 'l', 'ň': 'n', 'ó': 'o', 'ô': 'o', 'ŕ': 'r', 'š': 's', 'ť': 't', - 'ú': 'u', 'ý': 'y', 'ž': 'z', - 'Á': 'a', 'Ä': 'A', 'Č': 'C', 'Ď': 'D', 'É': 'E', 'Í': 'I', 'Ľ': 'L', - 'Ĺ': 'L', 'Ň': 'N', 'Ó': 'O', 'Ô': 'O', 'Ŕ': 'R', 'Š': 'S', 'Ť': 'T', - 'Ú': 'U', 'Ý': 'Y', 'Ž': 'Z' - }; - const POLISH_MAP = { - 'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's', - 'ź': 'z', 'ż': 'z', - 'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ó': 'O', 'Ś': 'S', - 'Ź': 'Z', 'Ż': 'Z' - }; - const LATVIAN_MAP = { - 'ā': 'a', 'č': 'c', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l', - 'ņ': 'n', 'š': 's', 'ū': 'u', 'ž': 'z', - 'Ā': 'A', 'Č': 'C', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ļ': 'L', - 'Ņ': 'N', 'Š': 'S', 'Ū': 'U', 'Ž': 'Z' - }; - const ARABIC_MAP = { - 'أ': 'a', 'ب': 'b', 'ت': 't', 'ث': 'th', 'ج': 'g', 'ح': 'h', 'خ': 'kh', 'د': 'd', - 'ذ': 'th', 'ر': 'r', 'ز': 'z', 'س': 's', 'ش': 'sh', 'ص': 's', 'ض': 'd', 'ط': 't', - 'ظ': 'th', 'ع': 'aa', 'غ': 'gh', 'ف': 'f', 'ق': 'k', 'ك': 'k', 'ل': 'l', 'م': 'm', - 'ن': 'n', 'ه': 'h', 'و': 'o', 'ي': 'y' - }; - const LITHUANIAN_MAP = { - 'ą': 'a', 'č': 'c', 'ę': 'e', 'ė': 'e', 'į': 'i', 'š': 's', 'ų': 'u', - 'ū': 'u', 'ž': 'z', - 'Ą': 'A', 'Č': 'C', 'Ę': 'E', 'Ė': 'E', 'Į': 'I', 'Š': 'S', 'Ų': 'U', - 'Ū': 'U', 'Ž': 'Z' - }; - const SERBIAN_MAP = { - 'ђ': 'dj', 'ј': 'j', 'љ': 'lj', 'њ': 'nj', 'ћ': 'c', 'џ': 'dz', - 'đ': 'dj', 'Ђ': 'Dj', 'Ј': 'j', 'Љ': 'Lj', 'Њ': 'Nj', 'Ћ': 'C', - 'Џ': 'Dz', 'Đ': 'Dj' - }; - const AZERBAIJANI_MAP = { - 'ç': 'c', 'ə': 'e', 'ğ': 'g', 'ı': 'i', 'ö': 'o', 'ş': 's', 'ü': 'u', - 'Ç': 'C', 'Ə': 'E', 'Ğ': 'G', 'İ': 'I', 'Ö': 'O', 'Ş': 'S', 'Ü': 'U' - }; - const GEORGIAN_MAP = { - 'ა': 'a', 'ბ': 'b', 'გ': 'g', 'დ': 'd', 'ე': 'e', 'ვ': 'v', 'ზ': 'z', - 'თ': 't', 'ი': 'i', 'კ': 'k', 'ლ': 'l', 'მ': 'm', 'ნ': 'n', 'ო': 'o', - 'პ': 'p', 'ჟ': 'j', 'რ': 'r', 'ს': 's', 'ტ': 't', 'უ': 'u', 'ფ': 'f', - 'ქ': 'q', 'ღ': 'g', 'ყ': 'y', 'შ': 'sh', 'ჩ': 'ch', 'ც': 'c', 'ძ': 'dz', - 'წ': 'w', 'ჭ': 'ch', 'ხ': 'x', 'ჯ': 'j', 'ჰ': 'h' - }; - - const ALL_DOWNCODE_MAPS = [ - LATIN_MAP, - LATIN_SYMBOLS_MAP, - GREEK_MAP, - TURKISH_MAP, - ROMANIAN_MAP, - RUSSIAN_MAP, - UKRAINIAN_MAP, - CZECH_MAP, - SLOVAK_MAP, - POLISH_MAP, - LATVIAN_MAP, - ARABIC_MAP, - LITHUANIAN_MAP, - SERBIAN_MAP, - AZERBAIJANI_MAP, - GEORGIAN_MAP - ]; - - const Downcoder = { - 'Initialize': function() { - if (Downcoder.map) { // already made - return; - } - Downcoder.map = {}; - for (const lookup of ALL_DOWNCODE_MAPS) { - Object.assign(Downcoder.map, lookup); - } - Downcoder.regex = new RegExp(Object.keys(Downcoder.map).join('|'), 'g'); - } - }; - - function downcode(slug) { - Downcoder.Initialize(); - return slug.replace(Downcoder.regex, function(m) { - return Downcoder.map[m]; - }); - } - - - function URLify(s, num_chars, allowUnicode) { - // changes, e.g., "Petty theft" to "petty-theft" - if (!allowUnicode) { - s = downcode(s); - } - s = s.toLowerCase(); // convert to lowercase - // if downcode doesn't hit, the char will be stripped here - if (allowUnicode) { - // Keep Unicode letters including both lowercase and uppercase - // characters, whitespace, and dash; remove other characters. - s = XRegExp.replace(s, XRegExp('[^-_\\p{L}\\p{N}\\s]', 'g'), ''); - } else { - s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars - } - s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces - s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens - s = s.substring(0, num_chars); // trim to first num_chars chars - return s.replace(/-+$/g, ''); // trim any trailing hyphens - } - window.URLify = URLify; -} diff --git a/staticfiles/admin/js/vendor/jquery/LICENSE.txt b/staticfiles/admin/js/vendor/jquery/LICENSE.txt deleted file mode 100644 index f642c3f..0000000 --- a/staticfiles/admin/js/vendor/jquery/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright OpenJS Foundation and other contributors, https://openjsf.org/ - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/staticfiles/admin/js/vendor/jquery/jquery.js b/staticfiles/admin/js/vendor/jquery/jquery.js deleted file mode 100644 index 1a86433..0000000 --- a/staticfiles/admin/js/vendor/jquery/jquery.js +++ /dev/null @@ -1,10716 +0,0 @@ -/*! - * jQuery JavaScript Library v3.7.1 - * https://jquery.com/ - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2023-08-28T13:37Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket trac-14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 - // Plus for old WebKit, typeof returns "function" for HTML collections - // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) - return typeof obj === "function" && typeof obj.nodeType !== "number" && - typeof obj.item !== "function"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var version = "3.7.1", - - rhtmlSuffix = /HTML$/i, - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - - // Retrieve the text value of an array of DOM nodes - text: function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += jQuery.text( node ); - } - } - if ( nodeType === 1 || nodeType === 11 ) { - return elem.textContent; - } - if ( nodeType === 9 ) { - return elem.documentElement.textContent; - } - if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - isXMLDoc: function( elem ) { - var namespace = elem && elem.namespaceURI, - docElem = elem && ( elem.ownerDocument || elem ).documentElement; - - // Assume HTML when documentElement doesn't yet exist, such as inside - // document fragments. - return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), - function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); - } ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -} -var pop = arr.pop; - - -var sort = arr.sort; - - -var splice = arr.splice; - - -var whitespace = "[\\x20\\t\\r\\n\\f]"; - - -var rtrimCSS = new RegExp( - "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", - "g" -); - - - - -// Note: an element does not contain itself -jQuery.contains = function( a, b ) { - var bup = b && b.parentNode; - - return a === bup || !!( bup && bup.nodeType === 1 && ( - - // Support: IE 9 - 11+ - // IE doesn't have `contains` on SVG. - a.contains ? - a.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); -}; - - - - -// CSS string/identifier serialization -// https://drafts.csswg.org/cssom/#common-serializing-idioms -var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; - -function fcssescape( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; -} - -jQuery.escapeSelector = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - - - - -var preferredDoc = document, - pushNative = push; - -( function() { - -var i, - Expr, - outermostContext, - sortInput, - hasDuplicate, - push = pushNative, - - // Local document vars - document, - documentElement, - documentIsHTML, - rbuggyQSA, - matches, - - // Instance-specific data - expando = jQuery.expando, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + - "loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + - whitespace + "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - ID: new RegExp( "^#(" + identifier + ")" ), - CLASS: new RegExp( "^\\.(" + identifier + ")" ), - TAG: new RegExp( "^(" + identifier + "|[*])" ), - ATTR: new RegExp( "^" + attributes ), - PSEUDO: new RegExp( "^" + pseudos ), - CHILD: new RegExp( - "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - bool: new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - needsContext: new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - if ( nonHex ) { - - // Strip the backslash prefix from a non-hex escape sequence - return nonHex; - } - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - return high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes; see `setDocument`. - // Support: IE 9 - 11+, Edge 12 - 18+ - // Removing the function wrapper causes a "Permission Denied" - // error in IE/Edge. - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && nodeName( elem, "fieldset" ); - }, - { dir: "parentNode", next: "legend" } - ); - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android <=4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { - apply: function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - }, - call: function( target ) { - pushNative.apply( target, slice.call( arguments, 1 ) ); - } - }; -} - -function find( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE 9 only - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - push.call( results, elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE 9 only - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - find.contains( context, elem ) && - elem.id === m ) { - - push.call( results, elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when - // strict-comparing two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( newContext != context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = jQuery.escapeSelector( nid ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrimCSS, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties - // (see https://github.com/jquery/sizzle/issues/157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by jQuery selector module - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - return nodeName( elem, "input" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) && - elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11+ - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a jQuery selector context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [node] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -function setDocument( node ) { - var subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - documentElement = document.documentElement; - documentIsHTML = !jQuery.isXMLDoc( document ); - - // Support: iOS 7 only, IE 9 - 11+ - // Older browsers didn't support unprefixed `matches`. - matches = documentElement.matches || - documentElement.webkitMatchesSelector || - documentElement.msMatchesSelector; - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors - // (see trac-13936). - // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`, - // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well. - if ( documentElement.msMatchesSelector && - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 9 - 11+, Edge 12 - 18+ - subWindow.addEventListener( "unload", unloadHandler ); - } - - // Support: IE <10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - documentElement.appendChild( el ).id = jQuery.expando; - return !document.getElementsByName || - !document.getElementsByName( jQuery.expando ).length; - } ); - - // Support: IE 9 only - // Check to see if it's possible to do matchesSelector - // on a disconnected node. - support.disconnectedMatch = assert( function( el ) { - return matches.call( el, "*" ); - } ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // IE/Edge don't support the :scope pseudo-class. - support.scope = assert( function() { - return document.querySelectorAll( ":scope" ); - } ); - - // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only - // Make sure the `:has()` argument is parsed unforgivingly. - // We include `*` in the test to detect buggy implementations that are - // _selectively_ forgiving (specifically when the list includes at least - // one valid selector). - // Note that we treat complete lack of support for `:has()` as if it were - // spec-compliant support, which is fine because use of `:has()` in such - // environments will fail in the qSA path and fall back to jQuery traversal - // anyway. - support.cssHas = assert( function() { - try { - document.querySelector( ":has(*,:jqfake)" ); - return false; - } catch ( e ) { - return true; - } - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter.ID = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find.ID = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter.ID = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find.ID = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find.TAG = function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else { - return context.querySelectorAll( tag ); - } - }; - - // Class - Expr.find.CLASS = function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - rbuggyQSA = []; - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - documentElement.appendChild( el ).innerHTML = - "" + - ""; - - // Support: iOS <=7 - 8 only - // Boolean attributes and "value" are not treated correctly in some XML documents - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: iOS <=7 - 8 only - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: iOS 8 only - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ - // In some of the document kinds, these selectors wouldn't work natively. - // This is probably OK but for backwards compatibility we want to maintain - // handling them through jQuery traversal in jQuery 3.x. - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE 9 - 11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ - // In some of the document kinds, these selectors wouldn't work natively. - // This is probably OK but for backwards compatibility we want to maintain - // handling them through jQuery traversal in jQuery 3.x. - documentElement.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - } ); - - if ( !support.cssHas ) { - - // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ - // Our regular `try-catch` mechanism fails to detect natively-unsupported - // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) - // in browsers that parse the `:has()` argument as a forgiving selector list. - // https://drafts.csswg.org/selectors/#relational now requires the argument - // to be parsed unforgivingly, but browsers have not yet fully adjusted. - rbuggyQSA.push( ":has" ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a === document || a.ownerDocument == preferredDoc && - find.contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b === document || b.ownerDocument == preferredDoc && - find.contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - }; - - return document; -} - -find.matches = function( expr, elements ) { - return find( expr, null, null, elements ); -}; - -find.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return find( expr, document, null, [ elem ] ).length > 0; -}; - -find.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return jQuery.contains( context, elem ); -}; - - -find.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (see trac-13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - if ( val !== undefined ) { - return val; - } - - return elem.getAttribute( name ); -}; - -find.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -jQuery.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - // - // Support: Android <=4.0+ - // Testing for detecting duplicates is unpredictable so instead assume we can't - // depend on duplicate detection in all browsers without a stable sort. - hasDuplicate = !support.sortStable; - sortInput = !support.sortStable && slice.call( results, 0 ); - sort.call( results, sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - splice.call( results, duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -jQuery.fn.uniqueSort = function() { - return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) ); -}; - -Expr = jQuery.expr = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - ATTR: function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" ) - .replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - CHILD: function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - find.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) - ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - find.error( match[ 0 ] ); - } - - return match; - }, - - PSEUDO: function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr.CHILD.test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - TAG: function( nodeNameSelector ) { - var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return nodeName( elem, expectedNodeName ); - }; - }, - - CLASS: function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + ")" + className + - "(" + whitespace + "|$)" ) ) && - classCache( className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - ATTR: function( name, operator, check ) { - return function( elem ) { - var result = find.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - if ( operator === "=" ) { - return result === check; - } - if ( operator === "!=" ) { - return result !== check; - } - if ( operator === "^=" ) { - return check && result.indexOf( check ) === 0; - } - if ( operator === "*=" ) { - return check && result.indexOf( check ) > -1; - } - if ( operator === "$=" ) { - return check && result.slice( -check.length ) === check; - } - if ( operator === "~=" ) { - return ( " " + result.replace( rwhitespace, " " ) + " " ) - .indexOf( check ) > -1; - } - if ( operator === "|=" ) { - return result === check || result.slice( 0, check.length + 1 ) === check + "-"; - } - - return false; - }; - }, - - CHILD: function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - nodeName( node, name ) : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || ( parent[ expando ] = {} ); - cache = outerCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - cache = outerCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - nodeName( node, name ) : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - outerCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - PSEUDO: function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // https://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - find.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as jQuery does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - not: markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrimCSS, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element - // (see https://github.com/jquery/sizzle/issues/299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - has: markFunction( function( selector ) { - return function( elem ) { - return find( selector, elem ).length > 0; - }; - } ), - - contains: markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // https://www.w3.org/TR/selectors/#lang-pseudo - lang: markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - find.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - target: function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - root: function( elem ) { - return elem === documentElement; - }, - - focus: function( elem ) { - return elem === safeActiveElement() && - document.hasFocus() && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - enabled: createDisabledPseudo( false ), - disabled: createDisabledPseudo( true ), - - checked: function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - return ( nodeName( elem, "input" ) && !!elem.checked ) || - ( nodeName( elem, "option" ) && !!elem.selected ); - }, - - selected: function( elem ) { - - // Support: IE <=11+ - // Accessing the selectedIndex property - // forces the browser to treat the default option as - // selected when in an optgroup. - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - empty: function( elem ) { - - // https://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - parent: function( elem ) { - return !Expr.pseudos.empty( elem ); - }, - - // Element/input types - header: function( elem ) { - return rheader.test( elem.nodeName ); - }, - - input: function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - button: function( elem ) { - return nodeName( elem, "input" ) && elem.type === "button" || - nodeName( elem, "button" ); - }, - - text: function( elem ) { - var attr; - return nodeName( elem, "input" ) && elem.type === "text" && - - // Support: IE <10 only - // New HTML5 attribute values (e.g., "search") appear - // with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - first: createPositionalPseudo( function() { - return [ 0 ]; - } ), - - last: createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - eq: createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - even: createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - odd: createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - lt: createPositionalPseudo( function( matchIndexes, length, argument ) { - var i; - - if ( argument < 0 ) { - i = argument + length; - } else if ( argument > length ) { - i = length; - } else { - i = argument; - } - - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - gt: createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos.nth = Expr.pseudos.eq; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -function tokenize( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rleadingCombinator.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrimCSS, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - if ( parseOnly ) { - return soFar.length; - } - - return soFar ? - find.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -} - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - if ( skip && nodeName( elem, skip ) ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = outerCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - outerCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - find( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, matcherOut, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || - multipleContexts( selector || "*", - context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems; - - if ( matcher ) { - - // If we have a postFinder, or filtered seed, or non-seed postFilter - // or preexisting results, - matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results; - - // Find primary matches - matcher( matcherIn, matcherOut, context, xml ); - } else { - matcherOut = matcherIn; - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element - // (see https://github.com/jquery/sizzle/issues/299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrimCSS, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find.TAG( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: iOS <=7 - 9 only - // Tolerate NodeList properties (IE: "length"; Safari: ) matching - // elements by id. (see trac-14142) - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - push.call( results, elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - jQuery.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -function compile( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -} - -/** - * A low-level selection function that works with jQuery's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with jQuery selector compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -function select( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find.ID( - token.matches[ 0 ].replace( runescape, funescape ), - context - ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && - testContext( context.parentNode ) || context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -} - -// One-time assignments - -// Support: Android <=4.0 - 4.1+ -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Initialize against the default document -setDocument(); - -// Support: Android <=4.0 - 4.1+ -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -jQuery.find = find; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.unique = jQuery.uniqueSort; - -// These have always been private, but they used to be documented as part of -// Sizzle so let's maintain them for now for backwards compatibility purposes. -find.compile = compile; -find.select = select; -find.setDocument = setDocument; -find.tokenize = tokenize; - -find.escape = jQuery.escapeSelector; -find.getText = jQuery.text; -find.isXML = jQuery.isXMLDoc; -find.selectors = jQuery.expr; -find.support = jQuery.support; -find.uniqueSort = jQuery.uniqueSort; - - /* eslint-enable */ - -} )(); - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (trac-9521) - // Strict HTML recognition (trac-11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to jQuery#find - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.error ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the error, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getErrorHook ) { - process.error = jQuery.Deferred.getErrorHook(); - - // The deprecated alias of the above. While the name suggests - // returning the stack, not an error instance, jQuery just passes - // it directly to `console.warn` so both will work; an instance - // just better cooperates with source maps. - } else if ( jQuery.Deferred.getStackHook ) { - process.error = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the primary Deferred - primary = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - primary.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( primary.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return primary.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); - } - - return primary.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error -// captured before the async barrier to get the original error cause -// which may otherwise be hidden. -jQuery.Deferred.exceptionHook = function( error, asyncError ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, - error.stack, asyncError ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See trac-6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (trac-9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see trac-8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (trac-14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (trac-11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (trac-14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (trac-13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
      " ], - col: [ 2, "", "
      " ], - tr: [ 2, "", "
      " ], - td: [ 3, "", "
      " ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (trac-12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (trac-13208) - // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (trac-13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", true ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, isSetup ) { - - // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add - if ( !isSetup ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - if ( !saved ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - this[ type ](); - result = dataPriv.get( this, type ); - dataPriv.set( this, type, false ); - - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - - return result; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering - // the native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved ) { - - // ...and capture the result - dataPriv.set( this, type, jQuery.event.trigger( - saved[ 0 ], - saved.slice( 1 ), - this - ) ); - - // Abort handling of the native event by all jQuery handlers while allowing - // native handlers on the same element to run. On target, this is achieved - // by stopping immediate propagation just on the jQuery event. However, - // the native event is re-wrapped by a jQuery one on each level of the - // propagation so the only way to stop it for jQuery is to stop it for - // everyone via native `stopPropagation()`. This is not a problem for - // focus/blur which don't bubble, but it does also stop click on checkboxes - // and radios. We accept this limitation. - event.stopPropagation(); - event.isImmediatePropagationStopped = returnTrue; - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (trac-504, trac-13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - which: true -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - - function focusMappedHandler( nativeEvent ) { - if ( document.documentMode ) { - - // Support: IE 11+ - // Attach a single focusin/focusout handler on the document while someone wants - // focus/blur. This is because the former are synchronous in IE while the latter - // are async. In other browsers, all those handlers are invoked synchronously. - - // `handle` from private data would already wrap the event, but we need - // to change the `type` here. - var handle = dataPriv.get( this, "handle" ), - event = jQuery.event.fix( nativeEvent ); - event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; - event.isSimulated = true; - - // First, handle focusin/focusout - handle( nativeEvent ); - - // ...then, handle focus/blur - // - // focus/blur don't bubble while focusin/focusout do; simulate the former by only - // invoking the handler at the lower level. - if ( event.target === event.currentTarget ) { - - // The setup part calls `leverageNative`, which, in turn, calls - // `jQuery.event.add`, so event handle will already have been set - // by this point. - handle( event ); - } - } else { - - // For non-IE browsers, attach a single capturing handler on the document - // while someone wants focusin/focusout. - jQuery.event.simulate( delegateType, nativeEvent.target, - jQuery.event.fix( nativeEvent ) ); - } - } - - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - var attaches; - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, true ); - - if ( document.documentMode ) { - - // Support: IE 9 - 11+ - // We use the same native handler for focusin & focus (and focusout & blur) - // so we need to coordinate setup & teardown parts between those events. - // Use `delegateType` as the key as `type` is already used by `leverageNative`. - attaches = dataPriv.get( this, delegateType ); - if ( !attaches ) { - this.addEventListener( delegateType, focusMappedHandler ); - } - dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 ); - } else { - - // Return false to allow normal processing in the caller - return false; - } - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - teardown: function() { - var attaches; - - if ( document.documentMode ) { - attaches = dataPriv.get( this, delegateType ) - 1; - if ( !attaches ) { - this.removeEventListener( delegateType, focusMappedHandler ); - dataPriv.remove( this, delegateType ); - } else { - dataPriv.set( this, delegateType, attaches ); - } - } else { - - // Return false to indicate standard teardown should be applied - return false; - } - }, - - // Suppress native focus or blur if we're currently inside - // a leveraged native-event stack - _default: function( event ) { - return dataPriv.get( event.target, type ); - }, - - delegateType: delegateType - }; - - // Support: Firefox <=44 - // Firefox doesn't have focus(in | out) events - // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 - // - // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 - // focus(in | out) events fire after focus & blur events, - // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order - // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 - // - // Support: IE 9 - 11+ - // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch, - // attach a single handler for both events in IE. - jQuery.event.special[ delegateType ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - dataHolder = document.documentMode ? this : doc, - attaches = dataPriv.get( dataHolder, delegateType ); - - // Support: IE 9 - 11+ - // We use the same native handler for focusin & focus (and focusout & blur) - // so we need to coordinate setup & teardown parts between those events. - // Use `delegateType` as the key as `type` is already used by `leverageNative`. - if ( !attaches ) { - if ( document.documentMode ) { - this.addEventListener( delegateType, focusMappedHandler ); - } else { - doc.addEventListener( type, focusMappedHandler, true ); - } - } - dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - dataHolder = document.documentMode ? this : doc, - attaches = dataPriv.get( dataHolder, delegateType ) - 1; - - if ( !attaches ) { - if ( document.documentMode ) { - this.removeEventListener( delegateType, focusMappedHandler ); - } else { - doc.removeEventListener( type, focusMappedHandler, true ); - } - dataPriv.remove( dataHolder, delegateType ); - } else { - dataPriv.set( dataHolder, delegateType, attaches ); - } - } - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (trac-8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Re-enable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - - // Unwrap a CDATA section containing script contents. This shouldn't be - // needed as in XML documents they're already not visible when - // inspecting element contents and in HTML documents they have no - // meaning but we're preserving that logic for backwards compatibility. - // This will be removed completely in 4.0. See gh-4904. - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew jQuery#find here for performance reasons: - // https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var rcustomProp = /^--/; - - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (trac-8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - // - // Support: Firefox 70+ - // Only Firefox includes border widths - // in computed dimensions. (gh-4529) - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; - tr.style.cssText = "box-sizing:content-box;border:1px solid"; - - // Support: Chrome 86+ - // Height set through cssText does not get applied. - // Computed height then comes back as 0. - tr.style.height = "1px"; - trChild.style.height = "9px"; - - // Support: Android 8 Chrome 86+ - // In our bodyBackground.html iframe, - // display for all div elements is set to "inline", - // which causes a problem only in Android 8 Chrome 86. - // Ensuring the div is `display: block` - // gets around this issue. - trChild.style.display = "block"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + - parseInt( trStyle.borderTopWidth, 10 ) + - parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - isCustomProp = rcustomProp.test( name ), - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, trac-12537) - // .css('--customProperty) (gh-3144) - if ( computed ) { - - // Support: IE <=9 - 11+ - // IE only supports `"float"` in `getPropertyValue`; in computed styles - // it's only available as `"cssFloat"`. We no longer modify properties - // sent to `.css()` apart from camelCasing, so we need to check both. - // Normally, this would create difference in behavior: if - // `getPropertyValue` returns an empty string, the value returned - // by `.css()` would be `undefined`. This is usually the case for - // disconnected elements. However, in IE even disconnected elements - // with no styles return `"none"` for `getPropertyValue( "float" )` - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( isCustomProp && ret ) { - - // Support: Firefox 105+, Chrome <=105+ - // Spec requires trimming whitespace for custom properties (gh-4926). - // Firefox only trims leading whitespace. Chrome just collapses - // both leading & trailing whitespace to a single space. - // - // Fall back to `undefined` if empty string returned. - // This collapses a missing definition with property defined - // and set to an empty string but there's no standard API - // allowing us to differentiate them without a performance penalty - // and returning `undefined` aligns with older jQuery. - // - // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED - // as whitespace while CSS does not, but this is not a problem - // because CSS preprocessing replaces them with U+000A LINE FEED - // (which *is* CSS whitespace) - // https://www.w3.org/TR/css-syntax-3/#input-preprocessing - ret = ret.replace( rtrimCSS, "$1" ) || undefined; - } - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0, - marginDelta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - // Count margin delta separately to only add it after scroll gutter adjustment. - // This is needed to make negative margins work with `outerHeight( true )` (gh-3982). - if ( box === "margin" ) { - marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta + marginDelta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - animationIterationCount: true, - aspectRatio: true, - borderImageSlice: true, - columnCount: true, - flexGrow: true, - flexShrink: true, - fontWeight: true, - gridArea: true, - gridColumn: true, - gridColumnEnd: true, - gridColumnStart: true, - gridRow: true, - gridRowEnd: true, - gridRowStart: true, - lineHeight: true, - opacity: true, - order: true, - orphans: true, - scale: true, - widows: true, - zIndex: true, - zoom: true, - - // SVG-related - fillOpacity: true, - floodOpacity: true, - stopOpacity: true, - strokeMiterlimit: true, - strokeOpacity: true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (trac-7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug trac-9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (trac-7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // Use proper attribute retrieval (trac-12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classNames, cur, curValue, className, i, finalValue; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classNames = classesToArray( value ); - - if ( classNames.length ) { - return this.each( function() { - curValue = getClass( this ); - cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - for ( i = 0; i < classNames.length; i++ ) { - className = classNames[ i ]; - if ( cur.indexOf( " " + className + " " ) < 0 ) { - cur += className + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - this.setAttribute( "class", finalValue ); - } - } - } ); - } - - return this; - }, - - removeClass: function( value ) { - var classNames, cur, curValue, className, i, finalValue; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classNames = classesToArray( value ); - - if ( classNames.length ) { - return this.each( function() { - curValue = getClass( this ); - - // This expression is here for better compressibility (see addClass) - cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - for ( i = 0; i < classNames.length; i++ ) { - className = classNames[ i ]; - - // Remove *all* instances - while ( cur.indexOf( " " + className + " " ) > -1 ) { - cur = cur.replace( " " + className + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - this.setAttribute( "class", finalValue ); - } - } - } ); - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var classNames, className, i, self, - type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - classNames = classesToArray( value ); - - return this.each( function() { - if ( isValidValue ) { - - // Toggle individual class names - self = jQuery( this ); - - for ( i = 0; i < classNames.length; i++ ) { - className = classNames[ i ]; - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (trac-14686, trac-14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (trac-2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, parserErrorElem; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) {} - - parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; - if ( !xml || parserErrorElem ) { - jQuery.error( "Invalid XML: " + ( - parserErrorElem ? - jQuery.map( parserErrorElem.childNodes, function( el ) { - return el.textContent; - } ).join( "\n" ) : - data - ) ); - } - return xml; -}; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (trac-9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (trac-6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ).filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ).map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // trac-7653, trac-8125, trac-8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - -originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes trac-9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (trac-10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket trac-12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // trac-9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script but not if jsonp - if ( !isSuccess && - jQuery.inArray( "script", s.dataTypes ) > -1 && - jQuery.inArray( "json", s.dataTypes ) < 0 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (trac-11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // trac-1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see trac-8605, trac-14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // trac-14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - diff --git a/staticfiles/js/rapport.js b/staticfiles/js/rapport.js deleted file mode 100644 index b0f0e6d..0000000 --- a/staticfiles/js/rapport.js +++ /dev/null @@ -1,102 +0,0 @@ -if ('serviceWorker' in navigator) { - window.addEventListener('load', function() { - navigator.serviceWorker.register('{% static "sw.js" %}').then(function(reg) { - console.log('Service worker registered.', reg); - }).catch(function(err) { - console.warn('Service worker registration failed:', err); - }); - }); -} - -const couleursOrange = ['#b35400', '#ff9f1c', '#ffc107', '#ffb84d', '#ffcc80']; -const departementLabels = {{ departement_labels|safe }}; -const departementCounts = {{ departement_counts|safe }}; -const sexeLabels = {{ sexe_labels|safe }}; -const sexeCounts = {{ sexe_counts|safe }}; -const projetLabels = {{ projet_labels|safe }}; -const projetCounts = {{ projet_counts|safe }}; -const ticketsLabels = ["Traités", "Non traités"]; -const ticketsCounts = [{{ tickets_traite }}, {{ tickets_non_traite }}]; -const domaineLabels = {{ domaine_labels|safe }}; -const domaineCounts = {{ domaine_counts|safe }}; - -new Chart(document.getElementById("chartDepartement"), { - type: 'pie', - plugins: [ChartDataLabels], - data: { - labels: departementLabels, - datasets: [{ data: departementCounts, backgroundColor: couleursOrange }] - }, - options: { - plugins: { - legend: { position: 'bottom' }, - datalabels: { color: '#fff', font: { weight: 'bold', size: 14 }, formatter: v => v } - } - } -}); - -new Chart(document.getElementById("chartSexe"), { - type: 'doughnut', - plugins: [ChartDataLabels], - data: { - labels: sexeLabels, - datasets: [{ data: sexeCounts, backgroundColor: couleursOrange }] - }, - options: { - plugins: { - legend: { position: 'bottom' }, - datalabels: { color: '#fff', font: { weight: 'bold', size: 14 }, formatter: v => v } - } - } -}); - -new Chart(document.getElementById("chartProjets"), { - type: 'bar', - plugins: [ChartDataLabels], - data: { - labels: projetLabels, - datasets: [{ label:'Nombre de projets', data: projetCounts, backgroundColor: couleursOrange }] - }, - options: { - responsive: true, - plugins: { - legend: { display: false }, - datalabels: { anchor:'end', align:'top', color:'#000', font:{ weight:'bold', size:16 }, formatter:v => v } - }, - scales: { - y: { beginAtZero:true, ticks:{ stepSize:1, precision:0 }, title:{ display:true, text:'Nombre de projets' } }, - x: { title:{ display:true, text:'' } } - } - } -}); - -new Chart(document.getElementById("chartDomaine"), { - type: 'bar', - plugins: [ChartDataLabels], - data: { - labels: domaineLabels, - datasets: [{ label:'Nombre de projets', data: domaineCounts, backgroundColor: couleursOrange }] - }, - options: { - responsive: true, - plugins: { - legend: { display: false }, - datalabels: { anchor:'end', align:'top', color:'#000', font:{ weight:'bold', size:14 }, formatter:v => v } - }, - scales: { - y: { beginAtZero:true, title:{ display:true, text:'Nombre de projets' }, ticks:{ precision:0, stepSize:1 } }, - x: { - ticks:{ autoSkip:false, maxRotation:100, minRotation:30, callback: function(value){ return this.getLabelForValue(value); } } - } - } - } -}); - -document.getElementById('btnVoirRapport').addEventListener('click', function() { - const projetId = document.getElementById('projetId').value; - if(!projetId) return alert("Veuillez sélectionner un projet."); - fetch(`/rapports/projet/${projetId}/`) - .then(resp => { if(!resp.ok) throw new Error("Projet non trouvé"); return resp.text(); }) - .then(html => { document.getElementById('contenuRapportProjet').innerHTML = html; }) - .catch(err => { document.getElementById('contenuRapportProjet').innerHTML = "

      Erreur lors du chargement.

      "; console.error(err); }); -}); \ No newline at end of file diff --git a/staticfiles/js/sirh-index.js b/staticfiles/js/sirh-index.js deleted file mode 100644 index 242fed3..0000000 --- a/staticfiles/js/sirh-index.js +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - -> - - -{% endif %} - - - - - - \ No newline at end of file diff --git a/staticfiles/styles.css b/staticfiles/styles.css deleted file mode 100644 index 3b4d9ff..0000000 --- a/staticfiles/styles.css +++ /dev/null @@ -1,278 +0,0 @@ -/* === Print === */ -@media print { - nav, .btn, .sidebar, .form-select, .form-control { - display: none !important; - } - body { - font-size: 12pt; - color: black; - } - table { - border-collapse: collapse; - } -} - - -@media (max-width: 768px) { - main { - margin-left: 0; - } -} - -/* === Body & Container === */ -body { - background-color: #e4dccc; - background-attachment: fixed; -} - -.dashboard-container { - background-color: #ffffff; - box-shadow: 0 0 10px rgba(0,0,0,0.05); - border-radius: 8px; - padding: 20px; - margin: 30px auto; - max-width: 1200px; -} - - - - -.sidebar { - position: fixed; - width: 220px; -} -main { - margin-left: 220px; -} - - - - - -/* === Sidebar === */ -.sidebar { - background: linear-gradient(180deg, #b35400, #993d00); /* dégradé orange foncé */ - color: white; - min-height: 100vh; /* prend toute la hauteur */ - top: 0; - z-index: 1000; - overflow-y: auto; - padding: 1rem; -} - -.sidebar .nav-link { - color: white; - font-weight: 700; -} - -.sidebar .nav-link:hover { - background-color: rgba(255, 255, 255, 0.1); - border-radius: 5px; - color: white; -} - -.sidebar .dropdown-menu { - display: none; - position: relative; - left: 10px; - top: -5px; - border: none; - padding-left: 1rem; - box-shadow: none; -} - -.sidebar .dropdown:hover .dropdown-menu { - display: block; -} - -.sidebar a { - color: white; -} - -.sidebar a:hover { - color: white; -} - -/* === Navbar / Logo / Profil === */ -.logo { - max-width: 80px; -} - -.img-profil { - width: 80px !important; - height: 80px !important; - object-fit: cover; - border-radius: 50%; -} - -/* === Cards === */ -.card { - border: 1px solid #dee2e6; - box-shadow: 0 2px 4px rgba(0,0,0,0.05); - border-radius: 8px; - transition: transform 0.3s ease; -} - -.card:hover { - transform: scale(1.02); -} - -.card-header { - background-color: #f8f9fa; - font-weight: bold !important; - color: black !important; - font-size: 1rem; - border-bottom: none; -} - -.card-body h5 { - color: black !important; - font-weight: bold; - font-size: 2.2rem; -} - -/* === Stat cards === */ -.stat-card { - background: #fff; - padding: 20px; - border-radius: 8px; - box-shadow: 0 2px 5px rgba(113, 11, 11, 0.1); -} - -/* === Employé / Projet details === */ -.employe-detail { - background-color: #f9f9f9; - border-radius: 8px; - box-shadow: 0 2px 6px rgba(0,0,0,0.1); -} - -.employe-detail .card-title { - font-size: 1.8rem; - margin-bottom: 0.5rem; -} - -.employe-detail p { - margin-bottom: 0.4rem; - font-size: 1rem; -} - -.employe-detail a.btn { - font-weight: 500; -} - -.employe-card, .projet-card { - background-color: #fff; - border-radius: 10px; - box-shadow: 0 4px 12px rgba(0,0,0,0.1); - padding: 2.5rem; - max-width: 1400px; - margin: 0 auto; - font-size: 1.1rem; -} - -/* === Forms === */ -.form-wrapper { - max-width: 1000px; - margin: auto; - background-color: rgba(255, 255, 255, 0.95); -} - -form label { - font-weight: 600; - margin-top: 1rem; - display: block; -} - -form input, form select, form textarea { - width: 100%; - padding: 0.5rem; - margin-top: 0.3rem; - border-radius: 5px; - border: 1px solid #ccc; -} - -/* === Formation badges === */ -.formation-badge { - position: relative; - display: inline-block; -} - -.formation-actions { - position: absolute; - top: -5px; - right: -5px; - display: none; -} - -.formation-badge:hover .formation-actions { - display: inline-block; -} - -.formation-actions button { - background: none; - border: none; - color: #fff; - margin-left: 5px; - font-size: 0.9rem; -} - -/* === Context menu === */ -#contextMenu { - width: 150px; -} - -/* === Transitions / Animations === */ -.fade-out { - opacity: 0; - transition: opacity 0.5s ease; -} - -#main-content { - transition: opacity 0.3s ease; -} - - -.login-box { - background: linear-gradient(to right, #f5f7fa, #c3cfe2); - border-radius: 10px; - box-shadow: 0 0 10px rgba(0,0,0,0.3); - width: 100%; - max-width: 400px; -} - -/* === Responsive === */ -@media (max-width: 576px) { - .modal-dialog { - max-width: 100%; - margin: 0; - height: 100%; - } - - .modal-content { - height: 100%; - border-radius: 0; - } - - .modal-body { - overflow-y: auto; - } - - .modal-footer button { - width: 100%; - } - - .img-profil { - width: 50px; - height: 50px; - } - - .sidebar { - width: 100%; - padding: 0.5rem 1rem; - } - - .sidebar .nav-link { - font-size: 0.9rem; - padding: 0.5rem 1rem; - } -}