SPB Git

spb/uqo_cours

Public

IMM1033 TP2 refondu sur UQO Éval : quadruplex 2 étages (Cas 9 Quantity Survey, 64 lignes RSMeans 2026 T4 Gatineau), 11 ventes réelles, moteur de coût ; énoncé 20 p., gabarit v2, solutionnaire LaTeX + Excel vérifié (74/74), diapos séance 7, site

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Oct 29, 2026) parent 0ccd5b0 Browse files

44 changed files +14,285 −476

44 changed files
modified IMM1033-20_Methodes_du_cout/02_Slides/pdf/seance07_couts_directs.pdf +0 −0

Binary file not shown.

modified IMM1033-20_Methodes_du_cout/02_Slides/sources/seance07_couts_directs.tex +28 −36
@@ -1444,7 +1444,7 @@ Le coût obtenu par un constructeur en série n'est \textbf{pas toujours représ
1444 1444 \end{itemize}
1445 1445 \vspace{1mm}
1446 1446 \begin{notebox}[Préparation]
1447 −Compléter l'exercice d'estimation du bungalow et entamer le TP2 (le gabarit Excel et l'énoncé sont sur Moodle).
1447 +Compléter l'exercice d'estimation du bungalow et entamer le TP2 (énoncé et gabarit Excel sur Moodle et sur uqo-imm1033.app ; cas d'étude « Cas 9 » sur UQO Éval).
1448 1448 \end{notebox}
1449 1449 \end{frame}
1450 1450
@@ -1453,59 +1453,51 @@ Compléter l'exercice d'estimation du bungalow et entamer le TP2 (le gabarit Exc
1453 1453 \section{Travail pratique 2 (15\,\%) --- annonce}
1454 1454 % ======================================================================
1455 1455
1456 −\begin{frame}{TP2 --- Bordereau de coût de remplacement neuf (15\,\%)}
1457 −\small
1456 +\begin{frame}{TP2 --- Bordereau de coût de remplacement neuf avec UQO Éval (15\,\%)}
1457 +\footnotesize
1458 1458 \begin{importbox}[Mandat]
1459 −Un promoteur projette un \textbf{quadruplex locatif de 4\,800 pi\up{2}} à Gatineau. Vous montez le bordereau complet : coûts directs par composantes, indirects documentés (permis réel, GCR, intérêts intercalaires), profit --- puis validation contre les fourchettes Altus.
1459 +Un promoteur de Gatineau projette un \textbf{quadruplex de 2 étages} (18,3 $\times$ 10,4 m, 4 logements, sous-sol non fini, brique 80\,\%). Vous montez le bordereau complet à partir du \textbf{cas d'étude « Cas 9 » du module Quantity Survey d'UQO Éval} : plans, relevé des quantités, 64 lignes tarifées \textbf{RSMeans 2026 T4 localisées Gatineau} --- puis indirects réels, profit et validation par \textbf{11 ventes réelles de quadruplex neufs}.
1460 1460 \end{importbox}
1461 −\vspace{1.5mm}
1461 +\vspace{0.5mm}
1462 1462 \uqotitle{Objectifs pédagogiques :}
1463 1463 \begin{itemize}
1464 − \item Structurer les coûts directs par composantes et les contingences (séances 6--7)
1465 − \item Calculer les indirects réels : permis de Gatineau (\texttt{MAX}), GCR, intercalaires avec facteur ½ (séance 8)
1466 − \item Asseoir le profit entrepreneurial sur la bonne base et énoncer sa convention
1467 − \item Valider le \$/pi\up{2} contre les guides de coûts publiés
1464 + \item Reproduire 12 grandeurs du relevé depuis le plan et tarifer 64 lignes (conversion SI $\rightarrow$ RSMeans, coût unitaire nu, sous-totaux par division) --- séance 7
1465 + \item Passer des coûts nus aux coûts directs du cours (conditions générales, frais généraux, profit de l'entrepreneur), puis contingences
1466 + \item Calculer les indirects réels : permis de Gatineau (\texttt{MAX}), GCR, intercalaires avec facteur ½, honoraires --- séance 8
1467 + \item Asseoir le profit entrepreneurial, puis \textbf{extraire du marché} la valeur du bâtiment et le profit implicite ; comparer au moteur de coût d'UQO Éval et à Altus
1468 1468 \end{itemize}
1469 −\begin{notebox}[Données réelles]
1470 −\footnotesize Règlement 501-2005 de Gatineau (4,70\,\$/1\,000\,\$, min. 335\,\$/logement), grille GCR du 1\up{er} avril 2026 (2\,656,68\,\$/unité), préférentiel réel 4,45\,\%, taux CCQ 2025--2029, fourchettes Altus 2025-2026.
1469 +\begin{notebox}[Données réelles (29 octobre 2026)]
1470 +\footnotesize RSMeans 2026 T4 (Gatineau C57), règlement 501-2005 (4,70\,\$/1\,000\,\$, min. 335\,\$/logement), GCR 2026 (2\,656,68\,\$/unité), préférentiel 4,70\,\% (hausse du taux directeur du 28 octobre), 11 ventes 2024-2025 de quadruplex 2021-2024, moteur de coût UQO Éval, Altus 2026.
1471 1471 \end{notebox}
1472 1472 \end{frame}
1473 1473
1474 −\begin{frame}{TP2 --- Livrables, modalités et Dashboard}
1475 −\small
1474 +\begin{frame}{TP2 --- Livrables, modalités et gabarit}
1475 +\footnotesize
1476 1476 \begin{columns}[T]
1477 1477 \begin{column}{0.56\textwidth}
1478 −\uqotitle{Livrable (dépôt Moodle) :}
1478 +\uqotitle{Livrables (dépôt Moodle, 12 novembre 2026, 23 h 59) :}
1479 1479 \begin{itemize}
1480 − \item Gabarit Excel complété ({\small\texttt{TP2\_CodePermanent.xlsx}}) : bordereau chaîné, validation, dashboard
1480 + \item Gabarit Excel complété ({\small\texttt{TP2\_CodePermanent.xlsx}}) : relevé, bordereau chaîné, marché, dashboard
1481 + \item PDF de la \textbf{note au promoteur} (onglet Note)
1481 1482 \end{itemize}
1482 1483 \vspace{1mm}
1483 1484 \uqotitle{Modalités :}
1484 1485 \begin{itemize}
1485 − \item Individuel --- \textbf{remise : séance 9}
1486 − \item \textbf{Pondération : 15\,\%} (barème /100 dans l'énoncé)
1487 − \item Charpente \textbf{personnalisée} : $118\,000 + 400 \times B$
1488 − \item IA tolérée (chatbot du cours), \textbf{déclaration obligatoire}; toute réponse doit être ancrée dans les données du dossier
1486 + \item Individuel --- \textbf{remise : séance 9} ; \textbf{pondération : 15\,\%} (barème /100)
1487 + \item \textbf{Aucun paramètre personnalisé} : même cas réel pour tous ; la note récompense la rigueur de la chaîne et la lecture ; tout par formules chaînées (valeur tapée = demi-points)
1488 + \item IA tolérée (Éva, chatbot du cours), \textbf{déclaration obligatoire} ; réponses ancrées dans les cellules
1489 1489 \end{itemize}
1490 1490 \end{column}
1491 1491 \begin{column}{0.42\textwidth}
1492 −\uqotitle{Aperçu du gabarit Excel :}
1493 −\begin{center}
1494 −\begin{tikzpicture}[scale=0.72]
1495 − \draw[fill=uqoBleu, draw=none] (0,4.2) rectangle (5.6,4.8);
1496 − \node[text=white, font=\tiny\bfseries] at (2.8,4.5) {DASHBOARD};
1497 − \foreach \i in {0,1,2,3} \draw[fill=uqoBgClair, draw=uqoGrisClair] (\i*1.45,3.4) rectangle (\i*1.45+1.3,4.05);
1498 − \node[font=\tiny, color=uqoGris] at (2.8,3.72) {KPI par formules};
1499 − \draw[fill=white, draw=uqoGrisClair] (0,0.9) rectangle (2.7,3.15);
1500 − \draw[fill=white, draw=uqoGrisClair] (2.9,0.9) rectangle (5.6,3.15);
1501 − \foreach \i/\h in {0/0.5,1/0.9,2/1.35,3/1.1,4/1.6} \draw[fill=uqoBleuClair, draw=none] (0.25+\i*0.46,1.08) rectangle (0.58+\i*0.46,1.08+\h);
1502 − \draw[very thick, uqoOr] (3.15,1.35) -- (3.75,1.85) -- (4.35,1.65) -- (4.95,2.45) -- (5.4,2.65);
1503 − \draw[fill=uqoBgClair, draw=uqoGrisClair] (0,0) rectangle (5.6,0.7);
1504 − \node[font=\tiny, color=uqoGris, text width=5.2cm, align=center] at (2.8,0.35) {Verdict conditionnel + tableau récapitulatif};
1505 −\end{tikzpicture}
1506 −\end{center}
1507 −\vspace{1mm}
1508 −{\footnotesize Onglets : Accueil · Données · zones de travail · Dashboard.}
1492 +\uqotitle{Les onglets du gabarit :}
1493 +\begin{itemize}
1494 + \item \textbf{Données} : 11 tableaux réels (ne pas modifier)
1495 + \item \textbf{Relevé} : Q1-Q3 --- plan $\rightarrow$ quantités $\rightarrow$ 64 lignes RSMeans
1496 + \item \textbf{Bordereau} : Q4-Q8 --- directs du cours, contingences, permis, GCR, intercalaires, honoraires, profit, \$/pi\up{2}
1497 + \item \textbf{Marché} : Q9 --- extraction sur 11 ventes, moteur, Altus, profit extrait
1498 + \item \textbf{Dashboard} + \textbf{Note} : Q10 --- KPI, verdict, graphiques, note
1499 + \item Cas ouvert sur \texttt{uqo-eval.app/quantity-survey} : dupliquez-le
1500 +\end{itemize}
1509 1501 \end{column}
1510 1502 \end{columns}
1511 1503 \end{frame}
modified IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/README.md +2 −2
@@ -2,8 +2,8 @@
2 2
3 3 | TP | Pondération | Remise | Personnalisation (B = dernier chiffre du code permanent) |
4 4 |---|---|---|---|
5 −| TP1 — Évaluation d'un terrain | 10 % | Séance 5 | Prix vente 1 = 259 000 + 1 000 × B |
6 −| TP2 — Bordereau de coût neuf | 15 % | Séance 9 | Charpente = 118 000 + 400 × B |
5 +| TP1 — Évaluation d'un terrain avec UQO Éval | 10 % | Séance 5 | **Aucune** (depuis le 2026-09-24) : données réelles du 46, rue Michaud |
6 +| TP2 — Bordereau de coût neuf d'un quadruplex avec UQO Éval | 15 % | Séance 9 | **Aucune** (depuis le 2026-10-29) : même cas réel pour tous (Cas 9 UQO Éval, RSMeans 2026 T4, 11 ventes réelles) |
7 7 | TP3 — Ventilation de la dépréciation | 20 % | Séance 13 | Coût 2017 = 585 000 + 2 000 × B |
8 8
9 9 ## Structure de chaque dossier TP
modified IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/README.md +9 −6
@@ -1,7 +1,10 @@
1 −# IMM1033-20 · TP2 — Bordereau de coût de remplacement neuf : quadruplex (15 %)
1 +# IMM1033-20 · TP2 — Bordereau de coût de remplacement neuf d'un quadruplex avec UQO Éval (15 %)
2 2
3 −- Remise : séance 9 · Livrable étudiant : gabarit Excel complété (bordereau chaîné directs → indirects → profit → validation Altus).
4 −- Paramètres réels : permis Gatineau (règl. 501-2005), GCR 2026 (2 656,68 $/unité), préférentiel 4,45 %, CCQ, Altus 2026.
5 −- **Personnalisation** : Charpente = 118 000 + 400 × B. Référence : total ≈ 881 400-885 900 $ (≈ 184 $/pi², dans la fourchette Altus 180-330).
6 −- `enonce/` et `gabarit_excel/` : **à distribuer** · `solutionnaire_enseignant/` : **réservé** (solutions, table B = 0-9, barème /100, notes de correction).
7 −- Recompiler l'énoncé : `cd enonce && latexmk -lualatex *_enonce.tex` (dossier autonome).
3 +- Remise : séance 9 (12 novembre 2026, 23 h 59) · Livrables étudiants : gabarit Excel complété (renommé TP2_CodePermanent.xlsx) + PDF de la note au promoteur.
4 +- **Données 100 % réelles extraites de www.uqo-eval.app le 29 octobre 2026** : cas d'étude « Cas 9 — Quadruplex 2 étages, Gatineau (RSMeans 2026 T4) » du module Quantity Survey (`https://www.uqo-eval.app/quantity-survey/projets/97fa1d2a-06e1-4ed3-a580-0728616915ce`, créé pour ce TP par `scripts/qs-seed-cases.mts "Cas 9"` sur M2U64) : plans des 3 niveaux (`enonce/assets/plan-*.png`), fiche technique, relevé des quantités (49 mesures), révision r1 de 64 lignes tarifées RSMeans 2026 T4 localisées Gatineau (C57) → direct nu 471 085 $, total r1 611 823 $ ; 11 ventes réelles de quadruplex neufs (2021-2024) vendus 2024-2025 (Registre foncier ⋈ rôle) ; 2 quadruplex de 2020 en vigueur (280 Champlain, 335 Hippodrome, photos) ; moteur de coût UQO Éval (RCN 827 445 $) ; photos du 1151, rue Notre-Dame (vente Q11).
5 +- **Plus de personnalisation par code permanent** : même cas pour tous ; la note récompense la chaîne de calcul (conversions, assiettes, ordre des majorations) et la lecture (conventions, marché, limites).
6 +- 10 questions / 100 pts : méthode (6) · du plan au relevé, 12 grandeurs (10) · tarification des 64 lignes, SOMME.SI par division, top 3 (16) · coûts nus → directs du cours → contingences = r1 (8) · permis Gatineau MAX + GCR (8) · intercalaires 6,75 % × ½ (10) · honoraires, assurance, total indirects (8) · profit 11 %, coût total **759 115 $** (177,18 $/pi² hors sol, 189 779 $/logement) (8) · marché : bâtiment implicite médian 879 896 $, profit extrait 28,7 %, moteur −8,3 %, Altus (14) · dashboard + note (12).
7 +- `enonce/` et `gabarit_excel/` : **à distribuer** · `solutionnaire_enseignant/` : **réservé** (PDF + `IMM1033-20_TP2_solutionnaire.xlsx` : formules réelles, 74 cellules vérifiées par recalcul Excel) · `donnees/` : extraits bruts (JSON du cas, ventes, moteur, photos originales).
8 +- Scripts (`05_Ressources/scripts_gabarits_excel/`) : `build_tp2_donnees.py` (extraits JSON → `tp2_donnees.py`), `make_IMM1033_TP2.py` (gabarit v2 avec suivi de progression), `tp2_solutions.py` (valeurs de référence), `make_IMM1033_TP2_solution.py` + `verif_attendus_tp2.py` (solutionnaire Excel + vérification `verif_solution_xlsx.py`). Tableaux LaTeX longs générés par le script inclus dans `enonce/` (bloc python du 2026-10-29) → `tables_tp2*.tex`.
9 +- Recompiler : `cd enonce && latexmk -lualatex IMM1033-20_TP2_enonce.tex` (idem solutionnaire).
10 +- Rafraîchir : re-seed du cas sur M2U64 (`zsh -lc 'npx tsx scripts/qs-seed-cases.mts "Cas 9"'`), export `tmp/export-cases.mts` → `donnees/qs-cas9/`, requêtes ventes (`/tmp/q_quad.py` du 2026-10-29 : `units.nb_logements=4`, `annee_construction>=2021`, ventes ≥ 2023), moteur (`POST /api/cost/estimate`), puis `build_tp2_donnees.py` → gabarit → solution → vérification → PDF.
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/photos/champlain-280-2.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/photos/champlain-280.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/photos/hippodrome-335.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/photos/nd-1151-cuisine.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/photos/nd-1151-ext.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/photos/nd-1151-salon.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/qs-cas9/E_tage.png +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/qs-cas9/Rez_de_chausse_e.png +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/qs-cas9/Sous_sol.png +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/qs-cas9/data.json +7078 −0
Large diff (7,079 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/qs-cas9/localisation.json +3514 −0
Large diff (3,515 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/uqo_eval_bordereau_quadruplex_4097.json +1 −0
Large diff (2 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/uqo_eval_bordereau_quadruplex_4097_requete.json +1 −0
Large diff (2 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/donnees/uqo_eval_quadruplex_ventes.json +1 −0
Large diff (2 lines) is not loaded by default to keep the page fast.Load diff
modified IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/IMM1033-20_TP2_enonce.pdf +0 −0

Binary file not shown.

modified IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/IMM1033-20_TP2_enonce.tex +391 −133
Large diff (638 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/assets/champlain-280.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/assets/hippodrome-335.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/assets/nd-1151-cuisine.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/assets/nd-1151-ext.jpg +0 −0

Binary file not shown.

deleted IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/assets/photo-chantier.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/assets/plan-etage.png +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/assets/plan-rdc.png +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/assets/plan-sous-sol.png +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/tables_tp2.tex +140 −0
Large diff (140 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/tables_tp2_div.tex +19 −0
Large diff (19 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/tables_tp2_moteur.tex +22 −0
Large diff (22 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/enonce/tables_tp2_ventes.tex +17 −0
Large diff (17 lines) is not loaded by default to keep the page fast.Load diff
modified IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/gabarit_excel/IMM1033-20_TP2_gabarit.xlsx +0 −0

Binary file not shown.

modified IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/solutionnaire_enseignant/IMM1033-20_TP2_solutionnaire.pdf +0 −0

Binary file not shown.

modified IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/solutionnaire_enseignant/IMM1033-20_TP2_solutionnaire.tex +83 −60
Large diff (230 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/solutionnaire_enseignant/IMM1033-20_TP2_solutionnaire.xlsx +0 −0

Binary file not shown.

deleted IMM1033-20_Methodes_du_cout/03_Travaux_pratiques/TP2_Bordereau_de_cout_neuf/solutionnaire_enseignant/assets/photo-chantier.jpg +0 −0

Binary file not shown.

added IMM1033-20_Methodes_du_cout/05_Ressources/scripts_gabarits_excel/build_tp2_donnees.py +142 −0
Large diff (142 lines) is not loaded by default to keep the page fast.Load diff
modified IMM1033-20_Methodes_du_cout/05_Ressources/scripts_gabarits_excel/make_IMM1033_TP2.py +727 −237
Large diff (1,017 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/05_Ressources/scripts_gabarits_excel/make_IMM1033_TP2_solution.py +206 −0
Large diff (206 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/05_Ressources/scripts_gabarits_excel/tp2_donnees.py +1756 −0
Large diff (1,756 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/05_Ressources/scripts_gabarits_excel/tp2_solutions.py +122 −0
Large diff (122 lines) is not loaded by default to keep the page fast.Load diff
added IMM1033-20_Methodes_du_cout/05_Ressources/scripts_gabarits_excel/verif_attendus_tp2.py +24 −0
Large diff (24 lines) is not loaded by default to keep the page fast.Load diff
modified _Site_web/build/courses.py +2 −2
Large diff (17 lines) is not loaded by default to keep the page fast.Load diff
Menu

Theme